庐山回来后就没写过blog了,不过每天晚上跑步倒是一直在坚持。写blog的目的是对自己学习成长的记录、反省和促进,贵在坚持。上个星期用java写了个评估项目CPM的小程序,实践了hibernate、xDoclet,练习了反复Refactor+TDD的开发方式,感觉很爽。当做到PERT计算功能时发现需要查正态分布表,google查了查没找到第三方的java数学运算包。直到在图书管看书时才发现用编程进行复杂的函数运算的方法是属于《计算方法》课的,奇怪我们专业为什么不开这门课。发现自己知识结构上的一个空白。
前几天做操作系统作业,顺便看了看《Concurrent Programming in Java: Design Principles and Patterns》,确信《程序员》第三期上关于Mutex的一段代码完全是错误的,又给《程序员》编辑发了mail(上次发了mail后了无音讯)。没想很快到过了收到编辑和作者的回复,确认了错误。倒不是说出了错就说明作者水平不高,java相关技术太多了,软件开发相关技术就更多了。我想说的的是搞软件开发虽然是个智力活动,但终究谈不上需要极高的天赋才行(不像数学这样的基础理论学科)。作者也是人,当然也会犯错误。国外的那些软件大牛也是人,他们也是一步一步成长起来的,其实并不是在神坛上高不可攀。那为什么国内高手少呢?环境所致。记得好像是在白云上看过有个人说“Linus好牛,20岁就搞出了linux,我们20岁能干吗”,下面有个人回帖说“那是他在Stanford,要是把你丢在那,你说不定也能做出个XXX来”。
HeadStorm是我很钦佩的一位程序员,工作了几年后凭着不停的学习、实践对j2ee应用开发技术有了较高的造诣。在圈内取得一定成绩后又及时地认清了自己的目标,做一个全面的技术高手,要“往下走”,而不是安于“j2ee架构师”这个名头。说到“往上走”和“往下走”之争,想到两个不好笑的小笑话。第一个是有天听到几个同学谈论开发软件,一个同学说开发mis没意思,另一个同学就说:“那你去写汇编啊,写底层驱动啊,那个有技术含量。”第二个是有次听武大计算机系某老师说:“java有什么了不起,我用c一样可以实现多态、继承。”第一个笑话不加评论。第二个笑话让我想起以前一直流传的一句话:“学程序,什么语言都一样。”个人觉得这句话是带有很大的误导成分的。语法层面上,基本的顺序、选择、循环语句是差不多;但要你实际做开发应用呢,你还能说用啥都一样吗。不同的语言,设计者在最初设计语言特性时就决定了该语言最有效的应用领域。Ruby之类的动态语言现在大放光彩也是有其理由的。在“向上走”的时候也要注意提醒自己“勿筑高台于浮沙”。技术无尽的,时间是有限的,要学习什么,学到什么程度,得有清醒的头脑。
说到学习技术,决定开始研究Flex了,看了两天,感觉还不错。这才是程序员需要的表现层方案,拖放好控件,再编写用户交互的script就完了,至于很cool的页面表现效果的是如何做到的,那是Macromedia的事情。什么struts、webWork之流都是自娱自乐,并不能给用户带来多大的使用体验。JSF想法还不错,可有多少人支持呢。你说你表现层框架技术再先进,可表现出来的交互界面像yts一样,对用户来说还不如回到c/s的怀抱。js的登顶之作也就是Bindows了,还不就那样。一句话,非常看好Flex!Laszlo也还行,但终究没有Flex感觉好,而且是开源的,技术支持也没Flex强。Flex还有一个很好的可视化开发工具——FlexBuilder,大大加快了开发效率。