从我开始写这个程序到现在半年过去了(中间穿插着毕业答辩等琐事),现在已基本完成。感觉自己在技术上有了些长进,把感受写下来吧,有没有人看无所谓,要的是这个过程。
我是学电出身,大学学了四年应用电子技术结果毕业时三极管都弄不太明白,相反,对单片机兴趣浓厚。研究生两年半除了找了个不错的老婆以外也没什么建树;大家都说我技术上还可以(不知道是不是真心话),但我却很知道我的半斤八两——我是属于“样样通样样松”那种类型的:本科时玩X86汇编、单片机,研究生时玩过DSP、FPGA,做过ISA卡、PCI卡,写过WDM驱动。这不,找了个工作却是个搞激光的单位,后来也不知道怎么的,就混入到写软件的人民队伍中来了。
也没办法,在这种说国企又不象国企,是企业却更像事业的单位里,就得那里需要那里上:需要程序员的时候我就得整天做在那儿狂敲代码;发设备时我就还得跟一民工似的去打包装....唉!算了!牢骚到此为止,下面言归正传。
直白的说,我喜欢VC的强大、高效,甚至喜欢它的复杂,能够很好的驾驭它我会有种满足感。而且我觉得它更适合我们——需要写程序却不是所谓“程序员”酱紫的人(从来不敢把自己和程序员联系起来,怕人笑话);用它可以写驱动(呵呵,我喜欢),这对于一个搞硬件出身的人尤为重要;用它可以做核心开发(前提是当你水平很高的时候。什么? 我? 呵呵,算了吧,差远了去了),进程、线程、端口、句柄、IRP、ISR、DPC等等等等....要什么有什么,你会感觉整个系统底层的东西都在你的掌控之下,这种感觉很爽。这就是我在读研期间一直追求的东西。
然而,当我到单位实习时接到的第一个工作却是纯粹的软件:三维编程、复杂的算法、复杂的数据结构(对我来说)这使我程序设计方面三脚猫的水平暴露无遗,我开始从头学起。程序有三维模型的显示,从来没接触过的东西,最开始尝试着用GDI做显示,速度太慢,后来用DDRAW双缓冲互换,还是慢,再后来用D3D,速度还可以,但需要DIRECTX9运行库,最后,用OPENGL。这就浪费了不少的时间。再有,程序的核心,顶点-三角形模型转点云,听起来很简单,立体几何的东西,但真正实现起来却不那么容易,不仅要求转换的准确性,而且要求速度,这就对程序算法的效率和大量(几十万上百万)数据的组织上提出了较高的要求——同样,这对我又是个难题。链表、双向链表、二维数组+双向链表都试过,最后用的是三维数组;算法上也走了很多弯路,所有能想到的都试过了(哎 ,回头想想,浪费了我多少脑细胞啊!);再有就是图像的抖动,这个相对来说简单些了,因为有现成的算法,但是转出来的图像效果始终不好(这个问题到现在也没解决呢)....
总结一下,首先,最主要的就是自己对程序的功能没有整体的概念,没有很好的抽象模型,写程序之前没有充分的分析。所以,每个类都是信手拈来,需要什么功能随时添加,类的封装很差,导致了代码混乱,维护起来很难,类内部的数据很多都暴露出来,相互牵连,相互羁绊,牵一发而动全局。
再有,就是自己的底子薄,对什么东西都是一知半解,所以,不管什么东西用起来都特别生疏。
但是,我想这些都是一个人成长过程中要经历的东西,所以,我不灰心!
现在的程序已经开始打包了,虽然还有太多令人不满意的地方。也许有朝一日我会把这个代码重新写一遍,那就不知道是什么时候的事了。
人总是在不停的折腾,不断的前进,虽然有的时候根本不知道那条路是正确的,但是还是要勇敢的往前走,对也罢,错也罢,只要活得精彩,败又何妨呢!
本文地址:http://com.8s8s.com/it/it21979.htm