站在这个瞬息千变的时代,我是战战兢兢的。尤其是电脑软件的各种技术层出不穷,新的业界标准新的编程语言新的概念甚至是悄悄酝酿的新一波软件革命,知觉的或不知觉的打我眼皮子下走过,我很想努力捕捉一些线索或眉目,却觉眼花缭乱,一眨眼那些热腾腾的新鲜名词已经走远,更新鲜的陆续来着。
繁华也许只是一种假象,那是因为你看不透他们背后相同的本质。
所以我静下心来,尝试整理自己的定位:2005年,我并不完全待在软件工程的领域。我的工作只有一半是在软件工程里头,另一半在文本和语义的研究和实验。虽然说所有的研究和实验是为了语义学的应用软件的核心技术,我总觉得自己在编程或软件的技术上没什么长足的进步。我再回顾2005年里关于软件的领域我的身影:由于公司的项目关系,我完全没接触到microsoft的技术,我荒废了dotnet平台,也没有跟进他的最新发展。我罔顾MS SQL资料库,不曾追踪longhorn和其XAML的发展,甚至对Herb Shutter 和 Stan Lippman 改进的基于dotnet平台的C++/CLI语言也只是匆匆掠过。google 等致力推行的AJAX,我也不曾好好研究。OMG当红的软件开发框架MDA (Model Driven Architecture)我也迟至近几个月才稍微了解。MDA也许是下一波编程革命,就像当年pascal等第三代编程语言对汇编的冲击。MDA的影响也许更大,那些只能够把设计文档转变成源代码的程序员在MDA的架构里的也许无处可站。我身为一个程序员,必然要对这种趋势思量一番,接纳和消化其带来的思维上的冲击。还有书桌上那本几近封尘的Design Patterns工具书,物件导向的发展已经去到模型导向了,我却还没有好好摸索物件导向的设计模式。是技术的前进步伐太快,还是我的脚步太慢?去年曾经拍下胸口说要学以致用的template programming,泛型(generic), STL库,boost库等等没一件做到。
还好,没接触到microsoft的日子让我亲近了linux。公司里的开发都基于一台64-bits的Itanium伺服器,所以我接触了GCC 编译器,makefile 指令,gdb 除错器等等unix社区熟悉的工具。为了方便在windows和linux平台下编写程序还尝试了IBM的开源软件,Eclipse,从此不再用Borland C++ Builder,直接以Eclipse + GCC + msys 编写通用linux 和 windows的 C++和Java程式。我开始了解32-bits 和 64-bits 编程的一些不同之处。并在一些处理大量生物基因数据的项目里学到一些低阶至bit单位的处理和压缩技巧。也有幸学了python这个高效率的动态语言,虽只是初级的运用,已经能够感受到她在国外流行的魅力了。
就是这样,学到的永远比没学到的少。但这是必然的,创新和生产是一大群人努力的成果,吸收到自己的脑袋是一个人的事情,而时间的流量却是一样的。
当了程序员三年,期间常听见身旁的人说:程序员不能够长久做下去,一定要逐步跳跃至管理层的位置,摆脱写源代码的工作内容。我问为什么,他们说那才能够挣得高收入啊。有时候我一笑置之,有时候我会说一些自身的理念。我说了传承的重要性。
我想编程是一种不停进步的技艺,要到达一定的高度必然需要一段长时间的锻炼和累积,如果只做了五年十年就转入管理层而不事编程的话,又怎么能够有高质量的编程专才诞生?没有高质量的编程专才,也就没有高质量的软件。所以我们第三世界的软件工业其实不是软件工业,因为我们没有产生核心技术,我们只是运用别人的核心技术来生产应用软件,整体上的软件工业可说是偏向服务性质的。他们可以在c++ 0x 标准里增加或删减一些C++的特性或库,他们可以在未来的互联网标准semantic web 设定新的语言 OWL (Web Ontology Language)。我们只能够跟随,并在他们发现先前的设计缺陷而发布新的标准后怨声载道但还是乖乖追随。我们只能够在他们的牵引下走一些已经大概被设定好的路径,用他们提供的工具做一些多只能够在区域内销售的应用软体。我们跨不过那个门褴和他们站在同一条线上有更宽阔的视野,甚至打不开门,他们稳稳把持着那扇门的钥匙。为什么他们有这样子的实力?我想这是环境和教育的缘故。环境来说,他们有很多超过10年经验的优秀程序员,这些优秀的程序员备受重视,除了担任技术或软件项目的管理人之外也勃勃不倦的埋首新技术或写源代码,这直接或间接的也灌溉了其它的年轻程序员。教育来说,他们的大学注重研究,政府也大量拨款各学术机构做各种专门项目的研究,这样子的循环造成了源源不绝的创意和专利的核心技术。这一年里我做研究时常常上网搜寻相关的研究报告或论文,找到的多数是西方大学的,也有少数是亚洲的,譬如中国韩国台湾日本甚至新加坡,就是没有马来西亚的。我不敢下什么定论,也许是我们的研究题目冷门。
新的一年里,我为自己做了一些期许:
1。学习一个新的编程语言,就学dotnet 平台的 C++/CLI吧。
2。多了解MDA。
3。善用python。
4。继续去年的期许:学以致用的template 和好好阅读design patterns。
5。多读业界的杂志和期报,以开拓自己的视野。
共勉之。
0 comments:
張貼留言