我们需要买c#的书吗?

    最近实验室正在开始一次IDE与开发语言的变迁。注意我这里把这次变迁分成了两类:IDE与开发语言。因为vc6与c/c++,c#与vb.net,vs.net2003与vs2005,Java与J2EE……这些词容易让很多刚刚进入实验室,还处在摸索阶段的同学们晕头转向,所以有必要解释一下。没办法,在这个时代,并不是技术决定技术,很多时候都是商业利益在发挥决定性的作用——其它很多领域也是如此。

    IDE的变迁基本上已经从vs6过渡到了.net。当然一些需要与底层打交道的windows应用还是需要vc++这个开发工具,用c++语言去实现。但在这个硬件技术突飞猛进,操作系统也飞速变化的时代,基于win32 API实现传统windows应用的时代已经接近尾声,就像10多年前DOS即将退出历史舞台一样,我们无须留恋,这都是历史发展的必然。

    现在一部分IS类(包括MIS/GIS)的项目已经转到了.net平台下面开发,IDE的选择也在我们不遗余力的推广下从vs.net2003向vs2005过渡。然而让我始终感觉别扭的是,MS不断推出的新版本IDE对我们来说究竟意味着什么?长久以来,恐怕更多的只是类库不断的丰富和访问数据库的方式(代码书写方式)的变化吧。其中所体现出的思想的变迁却并没有及时反应到工程实践中。还是那句话——都是MS害的,所谓快速应用开发(RAD)用于原型系统实现的确很快,但一个原型出来了,后面怎么办呢?MS并没有告诉开发人员如何重构原有的设计,更没说该重构成什么样子。MS衡量软件质量的标准始终停留在“能实现功能”这个最低标准上。由此造成的大量难以维护、难以扩展的项目代码该找谁去问责?我认为MS并不缺OO大师,但直到现在其IDE却一直不能从OO思想的高度给予程序员直接的支持。更糟糕的是,讲述MS技术的图书也大都停留在用OO语言书写PO程序的原始阶段。最近两年,从思想的高度去解释如何编程的书才慢慢出现,这很大程度上要归功于社区的力量。

    再说说语言吧。一度辉煌的vb仍然阴魂不散的在实验室中飘荡了近6年,并且随着.net平台进化成了vb.net。我时常想说:既然选择了.net平台,那么选择c#是再自然不过的了,为什么还要vb.net呢?但转念一想,反正都是.net平台,只要在托管环境下面开发,用c#和用vb.net区别并不大。可悲的是我后来发现其实大家并不关心.net平台与之前的开发有什么区别,也不关心什么托管、非托管,依然闷头用vb.net写着原来vb风格的程序,那个巨大的恐怖的public module是我挥之不去的梦魇。

    怎么说也在.net平台下面做开发好几年了,也该了解一下.net平台,了解一下什么是托管,了解一下CLR是怎么工作的了。求求你们了,不要再写那样的代码了,关注一下OO吧,关注一下Design Patterns吧,离软件设计的那个境界——“知道该在什么时候使用什么”——再近一些吧。

    如果了解.net平台,如果了解什么是托管编程,如果了解在.net平台下使用托管模式开发,语言之间的差异已经成为一种表象,如果知道“跨语言的集成能力”恰恰就是.net的卖点,等等,那么还会如此“正式”的从vb.net向c#迁移吗?

    如果真的熟悉vb.net,那么根本就不需要再买c#的书,MSDN已经足够了。

    其实IDE和语言都不重要,重要的是思想,是在恰当的时候使用恰当的范型(paradigm)把领域问题建模成计算机能够处理的问题的能力。我认为所谓“编程能力”应该指的就是这个吧。

posted on 2007-04-09 00:04  合金枪头  阅读(429)  评论(2编辑  收藏  举报