这是我给公司的同事培训C#时同事的提问的问题,我把问题归纳后写了出来。
问题
C#和VB.NET 都是.NET 中的一种编程语言,而对于.NET 本身来说,无论用那种语言编写的程序,在编译器中都会转化成中间语言,而他们所使用的底层类库和支持服务都为一样的,都是建立和运行在Microsoft .NET Framework SDK 之上的程序,所以我觉得对于C#和VB.NET只是语言不用,实现和具体编码的不同,相对于VB.NET来数,C#只是完全面向对象,别的几乎没有大的区别。
那为什么有人认为VB.NET是垃圾,是一个中间的东西,高不高,低不低,这个我们应该怎样解释和认识Microsoft的.NET体系,并用什么样的态度来学习Microsoft .NET,还有我们要作那些必要的准备,而对于编码技术方面,我们要怎样从代码和思想上来全面的认识学习完全面向对象的C#编程,同时如果我是一个VB 6.0的程序员,我应该怎样从VB 6.0 的编程思想中解放出来,是学习VB.NET 还是 学习 C#的好,又如果我是一个VB.NET 的程序员,我又没有必要再去学习C#?
自从微软推出Microsoft .NET Framework SDK开发平台的之后,所有基于Microsoft .NET Framework SDK发开平台的开发语言已经与Microsoft .NET Framework SDK之前的语言有了本质性的变化,在Microsoft .NET Framework SDK之前VB语言是通过解释运行的模式进行程序处理,但是在Microsoft .NET Framework SDK之上,所有的语言都编成一种工具,这些工具为程序员提供了不同的选择,让不同开发风格的程序员可以利用不同的编成语言来做同样一种事情。在Microsoft .NET Framework SDK之下,所有的编成语言都被处理成中间语言,Microsoft .NET Framework SDK运行的是中间语言。在Microsoft .NET Framework SDK上,开发语言就像我们所说的话,不同国家的人可以有不同的语言,有日语,中文等等。但是我们之间的交流都不会有问题,那是因为我们在交流时交流的是思想,不是语言本身。Microsoft .NET Framework SDK所处理的就是从不同的编程语言中以一顶的规范来提取程序思想,然后进行处理。
该以何种态度去认识Microsoft .NET Framework SDK以及Microsoft .NET Framework SDK所提供的语言,从程序员的角度来开,开发语言就是我们我们与计算机交流的一种工具,但是我们因该认识到一点,开发的主体不在于开发语言,而是开发本身所要处理的业务等中心思想。开发语言的不同或许可以让我们通往成功的目的有一个捷径,但不是开发语言决定了开发的成功与否。所以不论是VB 6.0还是C#的程序员都应该明确一点,我们要更多的关注于业务和程序逻辑本省,开发语言不是决定性因素。
以前我很少接触VB,我自身的开发大部分都借助于C#。两者从语言角度上说的确不同。但是从VB被推出的第一天,VB就不应该被认为是垃圾,而且VB应该是一门十分成功的开发语言,或许VB可能的功能可能比C/C++要少,有时候要借助于C/C++才可以实现,但是从微软公司推出了VB开发平台之后,就向所有的程序员展示了快速开发平台的模型,这不能说不是一种成功的模型,而且快速开发平台一直被沿用到了Microsoft Visual Studio .NET 2003上。在开发的时候,往往会根据业务的需要和开发的周期来决定选择某一种开发语言和开发平台。如果所要进行Web方面的开发,asp(vb),php等都是不错的选择,如果硬要选择C/C++进行开发,或许会得不偿失。
前段时间关于.net和java的争论,如果说C#是抄袭了java,倒不如说C#是站在巨人的肩膀上。.net在Microsoft .NET Framework SDK上提供的一系列解决方案不能不说微软公司具有前瞻性,虽然有人评击说net过于依赖平台,但是这不能不承认微软的野心和在技术上的领导。.net可以说是微软吹响分布式应用程序的一个前奏曲。让更多的程序员在开发商用软件时更多的关注业务,而不是如何实现。
在.net中微软已经扩展了VB,在保持有原先语言风格的基础上,让Vb的功能更强大。但是由于VB留有多年演化的痕迹和现在的改进,所以不能完全在Microsoft .NET Framework SDK上照搬以前VB的代码。