锐志社区
锐意进取、志存高远
华大锐志软件开发涡轮式项目实训——2009大学生寒假集训,正在热招报名中!
编程语言之兵器谱(八)

 

          2003年,惊叹于杂志上类似如下的评论"如果还不学.Net,当有一天发现楼下看门的老大爷也会用.Net了的时候,你在编程行业就要完全落后于时代了"我当时在想.Net真的那么先进吗,.Net真的那么容易学吗,事实证明可能确实是这样的。      

 

传说中兵器谱中第一位是天机老人的天机棒,技艺超群,攻防俱佳,称霸武林。.Net在编程领域将是未来的主导,正如微软在很多技术上的后来居上,它可能掌握着"天机",.Net有朝一日将成为开发领域(不只是桌面应用,也在WEB平台上)的主宰,特将其排在兵器谱上的第一位。

 

当下决心给.Net定为第一时就有一个自圆其说的难题,.Net包含C#.Net, VB.Net, C++.Net, J#.Net等(目前已经加入.Net系列的语言要也有10个以上了吧)如此多的语言,何以称其为混然一体的天机棒,一定给个解释的话,只能拿.Net的CLR(Common Language Runtime)给自己掩护了,不论用何种语言,它们都转换成同样的MSIL(MS中间语言),真正实现了语言无差别,这众多的语言在.Net中就象一种语言一样用,通过即时编译运行。

 

.Net与JAVA之间的关系,从C#和JAVA语法间的类似就能看出,很有渊源,因为C#是师从JAVA的,正如JAVA师从C++的,出来混的,迟早要还的嘛。      

 

 在JAVA主导Web开发的时代里,微软试图加入JAVA开发市场,Visual Studio 中的Visual J++ 6.0就是微软的一次冲击,它在JAVA开发工具是非常优秀的一个,但它打上了微软的烙印,微软在JAVA语言中加入自己的特色,但没有实现一些JAVA的标准机能,比如RMI和JNI,却在JAVA中加入一些微软自己的东西,不符合JAVA标准,而最终没有流行起来。事实上Visual J++也是挺优秀的工具,但它是微软在JAVA外衣下,加入自己的元素来进军JAVA市场的工具,而做为不标准的JAVA开发工具,Visual J++退出了历史舞台(请记住Visual J++的创造者叫Anders Hejlsberg,他是后来的.Net的总构架师,C#语言的创造者,也是Borland公司的创始人之一,一个软件行业的天才),即使是如今.Net中的Visual J#.net也是用户不多。微软想进入这个成熟的JAVA市场并以自己的JAVA工具来统治它,这只是一个梦想,微软所需要的是推出一种全新的开发平台来对抗JAVA,它就是后来的.Net。它成功了吗?      

 

个人观点上.Net强于Java,所以把它放在第一位,这里大胆的把当今编程界两大主流技术进行一下对比(三局两胜制),以自我支持一下,同时讲述自己对的.Net的理解:

 

语言:JAVA平台上就是JAVA,编程语言的单一,语言本身所存在的不足是不可避免的(何况JAVA也不能算上史上最优秀的开发语言)。

 

.Net平台上有多种语言可用,就拿.Net平台上的三巨头来说吧,VB.Net为VB的改进版本,把VB改造成为一门完全的面向对象的语言(虽然VB老用户要经历一番学习来适应新的语言,但更多资深VB开发人员还是欢迎VB.Net的到来,终于VB和面向对象技术彻底的结合起来了, VB曾一度被认为不适合于开发大型的程序,关键也在于对在封装,继承等方面的不足,它需要OO技术的支持,如今理想实现了)。

 

C++.Net做为在.Net环境的C++,不仅具有C++的优点,更借助.Net开发环境带来的强大功能,让C++用的更加得心应手。

 

而C#.Net语言更是专门针对JAVA,学习其优点,并加以改进,誓当 JAVA Killer(有如DELPHI要当VB Killer)。

 

C#是全新的一门语言,它集成了多种语言的优点。比如继承了C&C++的C类型语法和面向对象的概念。再学习了JAVA,通过垃圾回收(GC)、自动的对象管理、内存管理简化了开发,增加了的编译时Check使程序运用时出错的机会减少,另一方面C#中可以写非托管的代码,可以使用指针,实现底层的开发(这是JAVA没有,以后也不会有的功能),C#是JAVA的一种改进版。在语法上它有很多对JAVA的改进,在张江听王老师讲课时,王老帅常以C#和JAVA对比,说明C#的优势所在,当时真是倍感JAVA语言的不足,当时的版本记得学的是JAVA 1.42和.Net 1.2。后来,JAVA和C#都推出了新的版本,语言上有了较大的改进,JAVA5.0反学了C#一把,把C#中一些优点学去了,C#2.0 VS JAVA 5时,发现它们在竞争中开始同化了,一些新特色是类似的,感觉在步调上,JAVA是落在C#后的,其语言方面个人认为(我感觉大多数人都会这么认为)JAVA不如.Net三巨头,况且.Net实现了跨语言,可在项目中充分结合此三种语言的优势。JAVA VS .Net第一局结束: 0:1。

 

 

开发环境:JAVA主要有JBuilder和NetBean,Eclipse等开发环境,Eclipse是最流行的,Eclipse可自由添加各种插件,再下载各种open Source框架,也有集成版,下载下来所有常用插件都集成了,象MyEclipse等工具。但JAVA的开发环境,并没有在易用上发挥到极致,功能上的丰富,不能代表使用上的方便。

 

对于.Net来说有Visual Studio .Net 2003,Visual Studio .Net.Net 2005和最新的Visual Studio .Net.Net 2008,安装下来都要数个G,可没白占空间,它们功能非常强大,在桌面应用开发上就不用说了,完全非JAVA可比,Web应用上,ASP.net也是非常易用,丰富的控件,为事件添加响应的编程方式(比Struts之类的JAVA框架要容易理解,更加直观,但事件驱动的方式客观上是加大了耦合,还是JAVA对Design Pattern更加讲究些),ADO.Net体现了数据库编程的强大的功能,有时我想JAVA为什么不能广泛采用ADO.net这样的对数据库操作的方式,相比较的ORM,JDO等还都比较麻烦些。传说中的最新的版本Visual Studio .Net 2008中,.Net Framework 最新版本3.5,大大加强了Web页面设计工具的功能,设计页面时,功能不差于DreamWeaver,语法上又增加了很多sugar,减少了用户键入,让程序更加直观,好写,好懂,也好改,还有其它技术如LINQ,Lamba更加简化了编程。

 

新技术SliverLight可以通过AJAX实现富客户端(AJAX不只属于JAVA,常看到.Net平台上模仿的JAVA的开源框架,只是在前面加个n,比如nAnt ,nHibernate,nUnit等)。.Net工具使用起来非常的容易,大大的加强了工作效率,每个版本都能给人以惊喜,在易用性上,微软总是走在前面。.Net开发工具,除了微软的.Net系列的开发环境,还有小型的开源的.Net开发工具,比如Sharp Develop,它的2.0功能也是足够强大,具备Visual Studio .Net 2005基本的功能,而大小上只有10几兆,如今它快要推出的新的3.0版本了。(注意它是开源的,其实.Net也是可以开源的,开源只是一种思想,思想上的进步,大家都可以效仿)。JAVA在开发工具没有Visual Studio .Net系列工具那样高效、易用,微软的东西总是非常的好用,让人很容易看到成果。JAVA VS .Net第二局结束: 0:2。

 

运行环境: JAVA是真正跨平台,一处开发,到处执行,相比之下.Net仍然对非windows平台的支持不够,恐怕并不是微软就不能做到跨平台,而是微软对自己的平台情有独钟,其在个人电脑上的绝对统治地位也不需要它立即为非Windows平台去多考虑,不是.Net平台不兼容于客户的机器,而是客户的机器不兼容于.Net平台,还请客户装微软的系统吧,可能这才是微软的主导方针。另一方面,.Net跨平台方面也是在努力中的,不少平台上也可以运行.Net应用了,.Net跨平台不只是口号,但跨平台上的比较,还是JAVA领先的。JAVA VS .Net第三局结束: 1:2。

 

 

 总结:且从语言,开发环境和运行环境方面来看这两大主流平台,JAVA只强在运行环境的广泛上;而开发环境和编程语言上来说,支持跨语言并且非常方便好用的.Net 开发环境有其优势。所以个人观点上更加看好.Net平台。       

 

不忘在张江的一年学习,下半年学了.Net,王老师教的非常生动和精彩的教学,表现出他对.Net平台的深刻见解,也有对编程领域未来发展方向的精确把握,对比JAVA ,C#在细节象很多处有青出于蓝而胜于蓝之处,还有VB.Net,ADO.Net, ASP.Net,每门课程都让人受益匪浅。     

 

 毕业后,在晟峰软件做了半年的C#开发,那个债权债务软件的开发中,感觉到.Net功能的强大。如今在ISSC,日语疯狂学习之中,拿出精巧的Sharp Develop 2.0,用C#给自己做个背单词工具,将所学日语教程的全部词汇输入电脑,用自编的工具来背诵单词,也为学习带来不少方便。以后,如果有更多的机会从事.Net项目的开发,一定会欣然同意,而且相信还会有这样一天。     

 

另外,开发.Net不象想像中必须买一套n张盗版光盘的Visual Studio .Net,微软网站上的Visual Studio .Net的Express版也是不错的选择,如果还太嫌大,可以使用Sharp Develop,如果做ASP.Net开发,可以使用Matrix,另外就是首先要装好.Net framework。这样做开发.Net的环境是非常容易建立起来的.

 

       从汇编到.Net,前后八篇,写到这里,整个兵器谱全部结束了。本贴仅代表个人观点,技术上难免存在问题,愿大家多指出。


发表于 07-28-2008 11:00 AM 作者 MarioDai

评论

leoking 写道 re: 编程语言之兵器谱(八)
on 07-28-2008 8:08 PM

mario对各语言的特点和历史真的是信手沾来,如数家珍。IT武林秘史轶事无所不知,真有一代宗师的风度啊。

假以时日,我相信,marioy 一定是中国程序届中一颗被铭记的星星。

上海锐学计算机科技有限公司
Powered by Community Server (Commercial Edition), by Telligent Systems