浅谈当前主流的程序设计语言在计算机行业,硬件设备的更新、软件版本的换代、参考资料的出版体现了著名的GordenMoore定律(1965):18~24个月换一个版本或提升一个速度或空间的数量级。当今,计算机软件技术发展的总趋势是:全球化、网络化、服务化。作为IT领域的教育、管理、研究与开发人员,掌握一到两门程序设计语言,设计与开发一些应用领域(桌面上或企业级)中的程序与系统,既是对我们的基本要求,也是一种挑战。本文就当前主流的程序设计语言的历史、定位、发展、应用、版本及开发工具等方面做个简介、分析与比较。这些观点仅代表个人,学识和能力有限,所讲之内容有不当之处,还望各位不吝指正,讲的问题也不全面,希望得到大家的补充和完善,以达到共同学习的目的。一、C++与VC++1970年,KenThompson开发出B语言,并以此做出了DEC公司PDP-7小型机上的Unix。1972年,Bell实验室的DennisRitchie和BrianKernighan在B的基础上补充和完善,开发出了C语言。1987年发布了美国国家标准ANSIC87。该语言的最大贡献就是,做出了划时代的三个操作系统Unix、MS-DOS和Windows。1980年,Bell实验室的BjarneStroustrup对C进行改进和扩充,成了最初被命名为“带类的C”——面向对象的C,1983年正式定名为C++,1994年出现ANSIC++草稿。1991年微软的VC++随VisualStudio发布。1、定位C++与VC++是当今域最主流的高级程序设计和面向对象的开发语言,其定位为:真正的面向对象的程序设计语言;支持底层的复杂系统程序设计,而又不失C的效率;支持大型应用系统的开发。事实上,只有C++真正实现了同时对高低层次的支持,基于此,C++得到了广泛的使用:从嵌入式系统(工业控制)到超大型应用系统(如美国电信网络系统)的应用开发,C++的应用已经弥漫到IT行业的各个角落。全世界大约有1500万C++程序员。2、发展对系统级的程序员来说,C++的地位是不可替代的,C++还将继续存在而且有旺盛的生命力。俗话说:“真正的程序员用C++”。国内优秀的C++程序员不多(没有两年以上的实际编程经验,成不了优秀的VC++程序员),优秀的企业级C++架构设计师更是屈指可数。为了适应微软的.Net战略,其最新版本为VC++7.0则改名为VC++.NET。3、应用2000年前,我国金融业的核心系统、电信业的核心系统以及许多政府部门的应用系统,采用C/C++/VC++(原来用C做了些系统)开发,Java虚拟机JVM、金山词霸、WPSOffice、超级解霸、网络蚂蚁Netants,湖南交通厅的Intranet的部分子系统等。4、开发工具VC++6.0,1998年随VisualStudio6一同发布。最新的版本是2002年2月发布的VS.NET中的VC++.NET。常用的IDE还有Borland公司的C++Builder。二、Java1990年,以SunMicrosystem公司的JamesGosling为首的小组,设计开发了一种平台独立的语言Oak,主要用于为各种家用电器的编写程序。1995年1月,Oak被改名为Java并发布Java1.0和HotJava浏览器。1996年,Sun推出Java开发工具包JDK、数据库连接接口标准JDBC。同年,IBM、Macrosoft、Apple、HP、NEC、Hitachi、Toshiba等公司将Java嵌入到起操作系统中或获得了Java许可证,加拿大的北方电讯宣布将Java技术应用到其电话机等通信设备中。1、定位一种解决应用领域问题的语言:语法简洁;满足Web应用、分布式系统、开放性体系、平台无关、安全的发展趋势;企业级的电子商务应用;嵌入式设备中的应用。嵌入式设备:具有微处理器、存储器,为特定功能设计制作的设备。Java借鉴了C/C++中的许多思想,如:类、继承等,1)与C++的不同点语法简单;运行在虚拟环境之中(JVM);没有指针类型;只有单继承无多继承。相对于C++而言,Java的优势是开发周期短、代码安全(因为没有指针),以及平台无关性等。然而对于底层开发,Java还是不够理想。另一方面,Java语言在PDA、手机、信息家电、IC卡等嵌入系统式中也有较好的应用,这正是VC++、VB语言需要补充和改进之处。2)运行机制如下:Java源文件Java编译器字节码文件JavaApletJava应用程序支持Java的浏览器执行Java解释器执行字节码文件:与平台无关的二进制码文件,执行时由解释器解释成本地机器码,运行一行解释一行。Java提供了丰富的WFC类库,提供了多线程标准、JDBC标准、GUI标准,而这些标准在C++中是不存在的。因为C++并不是直接面向解决应用问题的用户。2、发展1998年,Sun公司发布Java2,包括三个部分:J2EE、J2SE、J2MEJ2EE:Java2EnterpriseEdition,面向基于J2EE(Java2EnterpriseEdition)框架的大型电子商务平台与应用,EJB(EnterpriseJavaBeans)等是其使用的主要技术。1999年,Sun公司推出一种动态网页技术——JSP(JavaScriptPage),该技术基于JavaServlet(Web服务器端运行的Java)和Java体系。JSP与ASP的主要区别:脚本语言:ASP以JavaScript和VBScript为脚本,JSP则以Java为脚本;数据库接口:ASP使用ODBC通过ADO连接数据库,Java通过标准的JDBC连接数据库。通过免费的JDBC—ODBC桥,Java可以转化JDBC访问为ODBC访问。J2SE:Java2StandardEdition,面向普通PC应用;J2ME:Java2MicroEditioin,针对嵌入式设备、消费类电器的应用。作为一门正处于发展高峰期的程序设计语言,在可以预见的未来3年内,Java将进一步巩固其在服务器端确立的战略优势并同时向嵌入式系统等应用中延伸,形成规模化的Java应用。2002年12月,SUN公司又发布了最新的J2EE、J2ME面向移动终端规范。3、应用在Web网页中,经常可以看到Java的应用——JSP。交通运输管理行业的最大软件开发商——亚桥(Asiabridge)国际信息技术开发公司,在道路运输管理、物流网的设计和规划中,均是采用J2EE构架。此外,SUN公司称,全世界已经有至少5000万部Java手机。世界主要的计算机公司、移动通信公司、我国的移动、联通等,均支持或已经采用了Java技术。4、开发工具Java2,开发工具有VJ++、JBuilder及SUN公司的免费开发工具JDK1.4,JDBC3.0。三、Delphi1971年,瑞士的N.Wirth教授设计开发出基于Algol60、Algol68的通用程序高级语言,并以法国数学家Pascal命名。该语言是世界上第一个结构化程序设计语言——E.W.Dijkstra、C.A.R.Hoare提出的思想,也是80年代到90年代初计算机专业的首选学习语言。1991年,Borland公司将该语言扩充成ObjectPascal,并以此为基础发布了著名的Delphi。1、定位基于WindowsAPIs的C++与Java开发应用系统的一个中间产物;比C++简单,比运行于JVM的Java效率高;可视化程度比VB、VC++好,但学习难度比VC++低;可以实现VC++的全部功能。Delphi最大的特色是丰富的类库——VCL和其他的组件库。该元件库提供比VC++、VB等常见的开发工具好用的对象组件库,并容易由程序员自己设计开发出VCL。此外,C++Builder使用与Delphi相同的VCL,即Delphi开发的代码或元件,可以轻松地在C++Builder中使用。全球有100万的Delphi使用者。2、发展Delphi在未来一段时间将继续存在。当前,Delphi仍然是首选的C/S应用系统的开发工具、是数据库应用系统的开发工具。Delphi不仅在Windows客户端具有RAD优势,还且增强了如下几个方面的功能:支持XML、SOAP等工业标准,提供可视化的快速Web开发环境;内建对Linux的跨平台支持;对WindowxXP、.NET的支持与开发。长远来看Delphi将受到C#、Java等的挑战:C#的WebService应用开发、Java的运行效率。Kylix:以ObjectPascal为基础语言,开发Linux应用程序的IDE。Delphi本质上是基于WindowsAPIs,而Kylix则是基于OOP可视组件库CLX(ComponentLibraryforCrossPlatform——一组基于QT(Linux中的OOPDLL库)。3、应用著名的Foxmail、Windows优化大师、网络伴侣等均是Delphi的杰作。我系参与开发的“省级公路运输管理局的汽车维修管理系统”、“省级道路运输行业驾驶员培训管理系统”、“省级道路客运班线牌管理系统”、“基于WEB平台的统计报表合并及处理系统”等也是使用Delphi编写的。4、开发工具2001年6月,发布Delphi6.0,2002年8月发布Delphi7.0Studio,增强了网络方面的VCL,整合了Kylix3,第一个中立开发公司发布的支持.NET技术平台。有四个版本:Framework、Enterprise、Professional、Personal,前三个版本含Kylix3。四、.NET2000年6月,微软正式宣布.NET构架。当时的微软中国研究院院长李开复博士被比尔·盖茨委以重任,调往美国微软,负责微软历史上最重要的一次变革:.NET战略。微软著名的利器——VisualStudio6是1998年发布的。4年后的今天,发布了全新的基于.NET开发工具包——VisualStudio.NET,足见微软的宝压在.NET上了。.NET是微软的XMLWeb服务平台,包含了建立和运行基于XML的软件所需要的全部部件。在.NET中,程序员设计编写的是XMLWeb服务,而不再是服务器或客户端的独立应用程序。1、.NET程序设计语言框架C#、VB、C++、JScript、满足CLS的语言.NET中间语言编译器C++中间语言IL:IntermediateLanguage编译器JIT编译器:JustinTime即时编译器EXE可执行文件现有OS通用语言运行时刻库CLR机器硬件现有操作系统机器硬件.NET没有象Java一样使用JVM(虚拟机)技术,运行于.NET上的软件被完全编译,并象C代码一样运行在机器硬件级。当.NET运行时刻库CLR(CommanLanguageRuntime)执行一个被转换为IL的程序时,使用JITer编译器将IL快速地编译成本地代码。其中,CLR部分位于硬件之上,部分位于现有OS之上,为组件与计算机或机器OS交换提供所有服务。2、CLR与.NET的关系C#、C++、VB、JScript、满足CLS的语言通用语言规范CLSWebService用户接口数据和XML基础类库通用语言运行时刻库CLR.NET应用系统的数据由XML封装,通过HTTP协议传输,依照SOAP(SmallObjectAccessProtocol)与其他WebService对话与沟通。3、.NET的核心组成.NET是一种全新的平台,它将对现有的所有代码产生影响。盖茨说:“微软所有的产品都会被涉及。我们的整个战略是围绕这个平台展开的。”,其核心为三部分:CLR、统一的编程类库和一个被称为ASP+的高级ASP版本:1)通用语言运行库CLR实际上每一种编程语言都已包含一个运行库:VB有VBRun,VC++有MSVCRT。此外,像VFP、PB等都有运行库。.NET提供了一个跨所有编程语言的统一环境,其基础是通用语言规范CLS。2)统一编程类库C++使用MFC,Java使用WindowsFC,V