早期首选VB,Delphi或者MFC开发界面,虽然也有用Foxpro、PowerBuilder,但现在基本都没了。
现在比较多的是 微软技术 –> .NET Window From,WPF,MFC,WTL,DirectX
JAVA技术-> Swing,AWT等
开源的-> QT, wxWidgets等
浅谈当前主流的程序设计语言
在计算机行业,硬件设备的更新、软件版本的换代、参考资料的出版体现了著名的Gorden Moore定律(1965):18~24个月换一个版本或提升一个速度或空间的数量级。当今,计算机软件技术发展的总趋势是:全球化、网络化、服务化。作为IT领域的教育、管理、研究与开发人员,掌握一到两门程序设计语言,设计与开发一些应用领域(桌面上或企业级)中的程序与系统,既是对我们的基本要求,也是一种挑战。本文就当前主流的程序设计语言的历史、定位、发展、应用、版本及开发工具等方面做个简介、分析与比较。这些观点仅代表个人,学识和能力有限,所讲之内容有不当之处,还望各位不吝指正,讲的问题也不全面,希望得到大家的补充和完善,以达到共同学习的目的。
一、C++与VC++
1970年, Ken Thompson开发出B语言(BCPL语言的简称),并以此做出了DEC公司PDP-7小型机上的Unix。1972年,Bell实验室的Dennis Ritchie和Brian Kernighan在B的基础上补充和完善,开发出了C语言。1987年发布了美国国家标准ANSI C87。该语言的最大贡献就是,做出了划时代的三个操作系统Unix、MS-DOS和Windows。1980年,Bell实验室的Bjarne Stroustrup对C进行改进和扩充,成了最初被命名为“带类的C”——面向对象的C,1983年正式定名为C++,1994年出现ANSI C++草稿。1991年微软的VC++随Visual Studio发布。
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、金山词霸、WPS Office、超级解霸、网络蚂蚁Netants,湖南交通厅的Intranet的部分子系统等。
4、开发工具 VC++6.0,1998年随Visual Studio 6 一同发布。最新的版本是2002年2月发布的VS.NET中的VC++.NET。常用的IDE还有Borland 公司的C++ Builder。
二、Java
1990年,以Sun Microsystem公司的James Gosling为首的小组,设计开发了一种平台独立的语言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编译器
字节码文件
Java Aplet Java应用程序
支持Java的浏览器执行 Java解释器执行
字节码文件:与平台无关的二进制码文件,执行时由解释器解释成本地机器码,运行一行解释一行。
Java提供了丰富的WFC类库,提供了多线程标准、JDBC标准、GUI标准,而这些标准在C++中是不存在的。因为C++并不是直接面向解决应用问题的用户。
2、发展 1998年,Sun公司发布Java 2,包括三个部分:J2EE、J2SE、J2ME
J2EE:Java 2 Enterprise Edition,面向基于J2EE(Java 2 Enterprise Edition)框架的大型电子商务平台与应用,EJB(Enterprise JavaBeans)等是其使用的主要技术。1999年,Sun公司推出一种动态网页技术——JSP(Java Script Page),该技术基于Java Servlet(Web服务器端运行的Java)和Java体系。
JSP与ASP的主要区别:
脚本语言:ASP以JavaScript和VBScript为脚本,JSP则以Java为脚本;
数据库接口:ASP使用ODBC通过ADO连接数据库,Java通过标准的JDBC连接数据库。通过免费的JDBC—ODBC桥,Java可以转化JDBC访问为ODBC访问。
J2SE:Java 2 Standard Edition,面向普通PC应用;
J2ME:Java 2 Micro Editioin,针对嵌入式设备、消费类电器的应用。
作为一门正处于发展高峰期的程序设计语言,在可以预见的未来3年内,Java将进一步巩固其在服务器端确立的战略优势并同时向嵌入式系统等应用中延伸,形成规模化的Java应用。
2002年12月,SUN公司又发布了最新的J2EE、J2ME面向移动终端规范。
3、应用 在Web网页中,经常可以看到Java的应用——JSP。交通运输管理行业的最大软件开发商——亚桥(Asiabridge)国际信息技术开发公司,在道路运输管理、物流网的设计和规划中,均是采用J2EE构架。此外,SUN公司称,全世界已经有至少5000万部Java手机。世界主要的计算机公司、移动通信公司、我国的移动、联通等,均支持或已经采用了Java技术。
4、开发工具 Java2,开发工具有VJ++ 、J Builder 及SUN公司的免费开发工具JDK1.4,JDBC3.0。
三、Delphi
1971年,瑞士的N.Wirth教授设计开发出基于Algol60、Algol68的通用程序高级语言,并以法国数学家Pascal命名。该语言是世界上第一个结构化程序设计语言——E.W.Dijkstra、C.A.R.Hoare提出的思想,也是80年代到90年代初计算机专业的首选学习语言。1991年,Borland公司将该语言扩充成Object Pascal,并以此为基础发布了著名的Delphi。
1、定位
基于Windows APIs 的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的跨平台支持;
对Windowx XP、.NET的支持与开发。
长远来看Delphi将受到C#、Java等的挑战:C#的WebService应用开发、Java的运行效率。
Kylix:以Object Pascal为基础语言,开发Linux应用程序的IDE。Delphi本质上是基于Windows APIs,而Kylix则是基于OOP可视组件库CLX(Component Library for CrossPlatform——一组基于QT(Linux中的OOP DLL库)。
3、应用 著名的Foxmail、Windows优化大师、网络伴侣等均是Delphi的杰作。我系参与开发的“省级公路运输管理局的汽车维修管理系统”、“省级道路运输行业驾驶员培训管理系统”、“省级道路客运班线牌管理系统”、“基于WEB平台的统计报表合并及处理系统”等也是使用Delphi编写的。
4、开发工具 2001年6月,发布Delphi 6.0,2002年8月发布Delphi 7.0 Studio,增强了网络方面的VCL,整合了Kylix 3,第一个中立开发公司发布的支持.NET技术平台。有四个版本:Framework、Enterprise、Professional、Personal,前三个版本含Kylix 3。
四、.NET
2000年6月,微软正式宣布.NET构架。当时的微软中国研究院院长李开复博士被比尔•盖茨委以重任,调往美国微软,负责微软历史上最重要的一次变革:.NET战略。微软著名的利器——Visual Studio 6是1998年发布的。4年后的今天,发布了全新的基于.NET开发工具包——Visual Studio .NET,足见微软的宝压在.NET上了。
.NET是微软的XML Web服务平台,包含了建立和运行基于XML的软件所需要的全部部件。在.NET中,程序员设计编写的是XML Web服务,而不再是服务器或客户端的独立应用程序。
1、.NET程序设计语言框架
C#、VB、C++、JScript、满足CLS的语言
.NET中间语言编译器
C++ 中间语言 IL:Intermediate Language
编译器 JIT编译器:Just in Time即时编译器
EXE 可执行文件
现有OS 通用语言运行时刻库 CLR
机器硬件 现有操作系统 机器硬件
.NET没有象Java一样使用JVM(虚拟机)技术,运行于.NET上的软件被完全编译,并象C代码一样运行在机器硬件级。当.NET运行时刻库CLR(Comman Language Runtime)执行一个被转换为IL的程序时,使用JITer编译器将IL快速地编译成本地代码。其中,CLR部分位于硬件之上,部分位于现有OS之上,为组件与计算机或机器OS交换提供所有服务。
2、CLR与.NET的关系
C#、C++、VB、JScript、满足CLS的语言
通用语言规范CLS
WebService 用户接口
数据和XML
基础类库
通用语言运行时刻库CLR
.NET应用系统的数据由XML封装,通过HTTP协议传输,依照SOAP(Small Object Access Protocol)与其他WebService对话与沟通。
3、.NET的核心组成
.NET是一种全新的平台,它将对现有的所有代码产生影响。盖茨说:“微软所有的产品都会被涉及。我们的整个战略是围绕这个平台展开的。” ,其核心为三部分:CLR、统一的编程类库和一个被称为ASP+的高级ASP版本:
1)通用语言运行库CLR
实际上每一种编程语言都已包含一个运行库:VB有VBRun,VC++有MSVCRT。此外,像VFP、PB等都有运行库。.NET提供了一个跨所有编程语言的统一环境,其基础是通用语言规范CLS。
2)统一编程类库
C++使用MFC,Java使用WindowsFC,VB使用VB APIs,Delphi 使用VCL。.NET框架类为开发人员提供了一套可以使用的统一的面向对象、异步、层次结构的可扩展类库。从JScript 到C++的所有编程语言,对于.NET框架都是相互等同的,开发人员可以自由地选择他们想使用的任何语言。
3)ASP+
ASP+提供了一个Web应用程序模型,该模型由一组控件和一个基本结构组成。有了它,Web应用程序的构建变得非常容易。开发人员可以直接使用ASP+控件集,该控件集封装了公共的、用于超文本标识语言(HTML)用户界面的各种组件(诸如文本框、下拉选单等等)。
4、解决的核心问题
互操作性(Interoperability)、集成性(Integration)和应用程序的可扩展性(extensibility)太难实现而且代价很高。Microsoft .NET依靠XML(一个由World Wide Web Consortium(W3C)管理的开放标准)消除了数据共享和软件集成的障碍;
Microsoft .NET建立在一个开放的标准上,它包含了所有编程语言;
WebService模式 MS-DOS使得个人电脑上广为接受;Windows增强了用户的图形界面,使其成为首选的与软件交互方式,最终使得图形界面成为个人电脑的主流。而.NET则要把XML Web服务变成日后的主流计算模式。
五、C#语言
对C/C++程序员来说,使用VB、Delphi等RAD工具,工作效率高,但牺牲了C/C++程序员熟悉的灵活性。对他们而言,最好的解决方案是:快速开发RAD、满足Web应用、保持底层编码能力和C/C++的灵活性。这就是C#的目标。该系统的主要研制者——Anders Hejlsberg,就是鼎鼎有名的Delphi的研制者之一。
1、定位
微软在.NET平台上的Java的语言;
Web Services应用系统的主要语言;
能使C++程序员快速开发程序;
具有底层控制能力。
C#对于从高层商用软件到系统级应用程序的多种组件构造都是合适的选择,C#本来的意思就是C++++,如果熟悉了C++,那么学习C#要比学习Java要容易得多。
2、特点
1)与C++比较 自C/C++演变而来,但简化与更新了C++中的类,降低了C++的复杂性,抛弃了C++的一些无用功能。具有垃圾回收功能,使得程序员不需要对内存进行手动管理;
2)管理机构 C#不是由微软来管理,而是由ECMA(欧洲计算机制造联合会)来管理,和Jscript、CLS一样(ECMA是一个独立的实体);
3、发展
随着Windows操作系统2000、XP及未来的NET版本,C#将成为微软公司基于Windows、Web等主要开发语言及工具。VS.NET中的C#为第一个版本。
六、VB.NET
在可视化RAD开发工具中,内核语言以BASIC的历史最长,1955年随Fortran出现后的第一个适合初学者的高级程序设计语言。它是一个解释型弱数据类型语言,其True BASIC、QBASIC、Turbo BASIC等曾风行一时,目前仍然有人在使用DOS平台下的QBASIC。1991年发布VB1.0后,随着应用的发展,先后衍生出了VB、VBA、VBScript等语言。
1、定位
比C/C++易学好用的快速开发工具,抢占由Delphi、PB等RAD占领的技术领域,
扩展到Back Office、Web等应用领域。
创建Windows客户端的应用程序;
创建XML Web服务应用程序。
从技术角度而言,VB不能算是一个纯粹面向对象的程序设计语言,这方面它大大落后于Borland Delphi、Object Pascal (Pascal的Delphi版本)。由于衍自Microsoft的皇家血统,所以VB、VBA、VBScript在应用系统、Web网络方面获得了可靠的持续性发展能力,但与Delphi相比,其并不具备技术上的竞争优势。
2、发展 1998年VB6.0发布后,经过4年,微软发布了其升级版本VB.NET,该版本的结构调整较大,有了质的变化。该版本将统一VB、VBA、VBScript。
3、应用 VB在东亚,特别是在日本应用非常普遍。除核心的程序代码外,Windows XP中大约2亿行代码是Micorsoft公司用VB写成的,而不是C++/VC++(事实上,Bill Gates 是一个Basic的顶级高手)
4、开发工具 VB.6,1998年随Visual Studio一同发布。最新的VB7.0,2002年2月,则改称为VB.NET。
七、结论
Delphi、C++Builder、Visual C++、VB等,能在市场上立足,肯定都是有自己的过人之处的,而且一个人精通数种开发语言、数种开发工具是不可能的事情。对于计算机语言来说,未来真正重要的通用主流语言只有三种C++、Java和C#。
1、底层开发与学习语言C++
C++将更适合于编写图形界面系统GUI、虚拟机(比如Java虚拟机)、杀毒软件或者其他的盒装软件(比如说Photoshop、Dreamweaver)、底层设计与开发应用。同时,C++适合做学习之用,为进一步学习掌握Java、C#打下基础。
2、Web应用语言C#、Java
如果开发为客户定制的应用系统,包括桌面应用和Web应用,Java、C#是更好的选择。
3、客户端应用语言Delphi
如果虚拟机的执行效率赶不上Delphi,它就有存在的理由,从长远来看Delphi可能不那么乐观。当前,在Windows客户端,设计开发应用系统VCL无疑最好的。
那么最终谁会赢呢?多赢的可能性大一些。有文分析,到2005年,企业级开发平台的霸权之争将是一场“半斤对八两的双雄会”,Java和.NET将各占领40%左右的市场。大多数大企业组织将同时采用这二种平台,它们已经成为业界事实上的标准。如果数据库DBMS一样,最终语言将如何整合、发展,是否有新的设计语言或规范出来,将有市场来决定。
真正的程序员用VC++,聪明的程序员用Delphi,未来的程序员用Java和C#。每当新的硬件设备、软件开发平台及开发工具出现时(尤其在IT领域中),既给我们带来了挑战,更给我们带来了机遇。抓住机遇、与时俱进、迎接挑战。
准备不充分、内容不全面、讲得不好,请多多指教,谢谢。