網(wǎng)站建設的程序設計語(yǔ)言及優(yōu)勢
在計算機行業(yè),硬件設備的更新、軟件版本的換代、參考資料的出版體現了著(zhù)名的Gorden Moore定律(1965):18~24個(gè)月?lián)Q一個(gè)版本或提升一個(gè)速度或空間的數量級。當今,計算機軟件技術(shù)發(fā)展的總趨勢是:全球化、網(wǎng)絡(luò )化、服務(wù)化。作為IT領(lǐng)域的教育、管理、研究與開(kāi)發(fā)人員,掌握一到兩門(mén)程序設計語(yǔ)言,設計與開(kāi)發(fā)一些應用領(lǐng)域(桌面上或企業(yè)級)中的程序與系統,既是對我們的基本要求,也是一種挑戰。本文就當前主流的程序設計語(yǔ)言的歷史、定位、發(fā)展、應用、版本及開(kāi)發(fā)工具等方面做個(gè)簡(jiǎn)介、分析與比較。這些觀(guān)點(diǎn)僅代表個(gè)人,學(xué)識和能力有限,所講之內容有不當之處,還望各位不吝指正,講的問(wèn)題也不全面,希望得到大家的補充和完善,以達到共同學(xué)習的目的。
一、C++與VC++
1970年, Ken Thompson開(kāi)發(fā)出B語(yǔ)言,并以此做出了DEC公司PDP-7小型機上的Unix。1972年,Bell實(shí)驗室的Dennis Ritchie和Brian Kernighan在B的基礎上補充和完善,開(kāi)發(fā)出了C語(yǔ)言。1987年發(fā)布了美國國家標準ANSI C87。該語(yǔ)言的最大貢獻就是,做出了劃時(shí)代的三個(gè)操作系統Unix、MS-DOS和Windows。1980年,Bell實(shí)驗室的Bjarne Stroustrup對C進(jìn)行改進(jìn)和擴充,成了最初被命名為“帶類(lèi)的C”——面向對象的C,1983年正式定名為C++,1994年出現ANSI C++草稿。1991年微軟的VC++隨Visual Studio發(fā)布。
1、定位 C++與VC++是當今域最主流的高級程序設計和面向對象的開(kāi)發(fā)語(yǔ)言,其定位為:
l 真正的面向對象的程序設計語(yǔ)言;
l 支持底層的復雜系統程序設計,而又不失C的效率;
l 支持大型應用系統的開(kāi)發(fā)。
事實(shí)上,只有C++真正實(shí)現了同時(shí)對高低層次的支持,基于此,C++得到了廣泛的使用:從嵌入式系統(工業(yè)控制)到超大型應用系統(如美國電信網(wǎng)絡(luò )系統)的應用開(kāi)發(fā),C++的應用已經(jīng)彌漫到IT行業(yè)的各個(gè)角落。全世界大約有1500萬(wàn)C++程序員。
2、發(fā)展 對系統級的程序員來(lái)說(shuō),C++的地位是不可替代的,C++還將繼續存在而且有旺盛的生命力。俗話(huà)說(shuō):“真正的程序員用C++”。國內優(yōu)秀的C++程序員不多(沒(méi)有兩年以上的實(shí)際編程經(jīng)驗,成不了優(yōu)秀的VC++程序員),優(yōu)秀的企業(yè)級C++架構設計師更是屈指可數。為了適應微軟的.Net戰略,其最新版本為VC++ 7.0則改名為VC++.NET。
3、應用 2000年前,我國金融業(yè)的核心系統、電信業(yè)的核心系統以及許多政府部門(mén)的應用系統,采用C/C++/VC++(原來(lái)用C做了些系統)開(kāi)發(fā),Java虛擬機JVM、金山詞霸、WPS Office、超級解霸、網(wǎng)絡(luò )螞蟻Netants,湖南交通廳的Intranet的部分子系統等。
4、開(kāi)發(fā)工具 VC++6.0,1998年隨Visual Studio 6 一同發(fā)布。最新的版本是2002年2月發(fā)布的VS.NET中的VC++.NET。常用的IDE還有Borland 公司的C++ Builder。
二、Java
1990年,以Sun Microsystem公司的James Gosling為首的小組,設計開(kāi)發(fā)了一種平臺獨立的語(yǔ)言Oak,主要用于為各種家用電器的編寫(xiě)程序。1995年1月,Oak被改名為Java 并發(fā)布Java1.0和HotJava瀏覽器。1996年,Sun推出Java開(kāi)發(fā)工具包JDK、數據庫連接接口標準JDBC。同年,IBM、Macrosoft、Apple、HP、NEC、Hitachi、Toshiba等公司將Java嵌入到起操作系統中或獲得了Java許可證,加拿大的北方電訊宣布將Java技術(shù)應用到其電話(huà)機等通信設備中。
1、定位 一種解決應用領(lǐng)域問(wèn)題的語(yǔ)言:
l 語(yǔ)法簡(jiǎn)潔;
l 滿(mǎn)足Web應用、分布式系統、開(kāi)放性體系、平臺無(wú)關(guān)、安全的發(fā)展趨勢;
l 企業(yè)級的電子商務(wù)應用;
l 嵌入式設備中的應用。
嵌入式設備:具有微處理器、存儲器,為特定功能設計制作的設備。
Java借鑒了C/C++中的許多思想,如:類(lèi)、繼承等,
1)與C++的不同點(diǎn)
l 語(yǔ)法簡(jiǎn)單;
l 運行在虛擬環(huán)境之中(JVM);
l 沒(méi)有指針類(lèi)型;
l 只有單繼承無(wú)多繼承。
相對于C++而言,Java的優(yōu)勢是開(kāi)發(fā)周期短、代碼安全(因為沒(méi)有指針),以及平臺無(wú)關(guān)性等。然而對于底層開(kāi)發(fā),Java還是不夠理想。另一方面,Java語(yǔ)言在PDA、手機、信息家電、IC卡等嵌入系統式中也有較好的應用,這正是VC++、VB語(yǔ)言需要補充和改進(jìn)之處。
2)運行機制如下:
Java源文件
Java編譯器
字節碼文件
Java Aplet Java應用程序
支持Java的瀏覽器執行 Java解釋器執行
字節碼文件:與平臺無(wú)關(guān)的二進(jìn)制碼文件,執行時(shí)由解釋器解釋成本地機器碼,運行一行解釋一行。
Java提供了豐富的WFC類(lèi)庫,提供了多線(xiàn)程標準、JDBC標準、GUI標準,而這些標準在C++中是不存在的。因為C++并不是直接面向解決應用問(wèn)題的用戶(hù)。
2、發(fā)展 1998年,Sun公司發(fā)布Java 2,包括三個(gè)部分:J2EE、J2SE、J2ME
l J2EE:Java 2 Enterprise Edition,面向基于J2EE(Java 2 Enterprise Edition)框架的大型電子商務(wù)平臺與應用,EJB(Enterprise JavaBeans)等是其使用的主要技術(shù)。1999年,Sun公司推出一種動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)——JSP(Java Script Page),該技術(shù)基于Java Servlet(Web服務(wù)器端運行的Java)和Java體系。
JSP與ASP的主要區別:
? 腳本語(yǔ)言:ASP以JavaScript和VBScript為腳本,JSP則以Java為腳本;
? 數據庫接口:ASP使用ODBC通過(guò)ADO連接數據庫,Java通過(guò)標準的JDBC連接數據庫。通過(guò)免費的JDBC—ODBC橋,Java可以轉化JDBC訪(fǎng)問(wèn)為ODBC訪(fǎng)問(wèn)。
l J2SE:Java 2 Standard Edition,面向普通PC應用;
l J2ME:Java 2 Micro Editioin,針對嵌入式設備、消費類(lèi)電器的應用。
作為一門(mén)正處于發(fā)展高峰期的程序設計語(yǔ)言,在可以預見(jiàn)的未來(lái)3年內,Java將進(jìn)一步鞏固其在服務(wù)器端確立的戰略?xún)?yōu)勢并同時(shí)向嵌入式系統等應用中延伸,形成規?;?/span>Java應用。
2002年12月,SUN公司又發(fā)布了最新的J2EE、J2ME面向移動(dòng)終端規范。
3、應用 在Web網(wǎng)頁(yè)中,經(jīng)??梢钥吹?/span>Java的應用——JSP。交通運輸管理行業(yè)的最大軟件開(kāi)發(fā)商——亞橋(Asiabridge)國際信息技術(shù)開(kāi)發(fā)公司,在道路運輸管理、物流網(wǎng)的設計和規劃中,均是采用J2EE構架。此外,SUN公司稱(chēng),全世界已經(jīng)有至少5000萬(wàn)部Java手機。世界主要的計算機公司、移動(dòng)通信公司、我國的移動(dòng)、聯(lián)通等,均支持或已經(jīng)采用了Java技術(shù)。
4、開(kāi)發(fā)工具 Java2,開(kāi)發(fā)工具有VJ++ 、J Builder 及SUN公司的免費開(kāi)發(fā)工具JDK1.4,JDBC3.0。
三、Delphi
1971年,瑞士的N.Wirth教授設計開(kāi)發(fā)出基于Algol60、Algol68的通用程序高級語(yǔ)言,并以法國數學(xué)家Pascal命名。該語(yǔ)言是世界上第一個(gè)結構化程序設計語(yǔ)言——E.W.Dijkstra、C.A.R.Hoare提出的思想,也是80年代到90年代初計算機專(zhuān)業(yè)的首選學(xué)習語(yǔ)言。1991年,Borland公司將該語(yǔ)言擴充成Object Pascal,并以此為基礎發(fā)布了著(zhù)名的Delphi。
1、定位
l 基于Windows APIs 的C++與Java開(kāi)發(fā)應用系統的一個(gè)中間產(chǎn)物;
l 比C++簡(jiǎn)單,比運行于JVM的Java效率高;
l 可視化程度比VB、VC++好,但學(xué)習難度比VC++低;
l 可以實(shí)現VC++的全部功能。
Delphi最大的特色是豐富的類(lèi)庫——VCL和其他的組件庫。該元件庫提供比VC++、VB等常見(jiàn)的開(kāi)發(fā)工具好用的對象組件庫,并容易由程序員自己設計開(kāi)發(fā)出VCL。此外,C++Builder使用與Delphi相同的VCL,即Delphi開(kāi)發(fā)的代碼或元件,可以輕松地在C++Builder中使用。全球有100萬(wàn)的Delphi使用者。
2、發(fā)展 Delphi在未來(lái)一段時(shí)間將繼續存在。當前,Delphi仍然是首選的C/S應用系統的開(kāi)發(fā)工具、是數據庫應用系統的開(kāi)發(fā)工具。Delphi不僅在Windows客戶(hù)端具有RAD優(yōu)勢,還且增強了如下幾個(gè)方面的功能:
l 支持XML、SOAP等工業(yè)標準,提供可視化的快速Web開(kāi)發(fā)環(huán)境;
l 內建對Linux的跨平臺支持;
l 對Windowx XP、.NET的支持與開(kāi)發(fā)。
長(cháng)遠來(lái)看Delphi將受到C#、Java等的挑戰:C#的WebService應用開(kāi)發(fā)、Java的運行效率。
Kylix:以Object Pascal為基礎語(yǔ)言,開(kāi)發(fā)Linux應用程序的IDE。Delphi本質(zhì)上是基于Windows APIs,而Kylix則是基于OOP可視組件庫CLX(Component Library for CrossPlatform——一組基于QT(Linux中的OOP DLL庫)。
3、應用 著(zhù)名的Foxmail、Windows優(yōu)化大師、網(wǎng)絡(luò )伴侶等均是Delphi的杰作。我系參與開(kāi)發(fā)的“省級公路運輸管理局的汽車(chē)維修管理系統”、“省級道路運輸行業(yè)駕駛員培訓管理系統”、“省級道路客運班線(xiàn)牌管理系統”、“基于WEB平臺的統計報表合并及處理系統”等也是使用Delphi編寫(xiě)的。
4、開(kāi)發(fā)工具 2001年6月,發(fā)布Delphi 6.0,2002年8月發(fā)布Delphi 7.0 Studio,增強了網(wǎng)絡(luò )方面的VCL,整合了Kylix 3,第一個(gè)中立開(kāi)發(fā)公司發(fā)布的支持.NET技術(shù)平臺。有四個(gè)版本:Framework、Enterprise、Professional、Personal,前三個(gè)版本含Kylix 3。
四、.NET
2000年6月,微軟正式宣布.NET構架。當時(shí)的微軟中國研究院院長(cháng)李開(kāi)復博士被比爾·蓋茨委以重任,調往美國微軟,負責微軟歷史上最重要的一次變革:.NET戰略。微軟著(zhù)名的利器——Visual Studio 6是1998年發(fā)布的。4年后的今天,發(fā)布了全新的基于.NET開(kāi)發(fā)工具包——Visual Studio .NET,足見(jiàn)微軟的寶壓在.NET上了。
.NET是微軟的XML Web服務(wù)平臺,包含了建立和運行基于XML的軟件所需要的全部部件。在.NET中,程序員設計編寫(xiě)的是XML Web服務(wù),而不再是服務(wù)器或客戶(hù)端的獨立應用程序。
1、.NET程序設計語(yǔ)言框架
C#、VB、C++、JScript、滿(mǎn)足CLS的語(yǔ)言
.NET中間語(yǔ)言編譯器
C++ 中間語(yǔ)言 IL:Intermediate Language
編譯器 JIT編譯器:Just in Time即時(shí)編譯器
EXE 可執行文件
現有OS 通用語(yǔ)言運行時(shí)刻庫 CLR
機器硬件 現有操作系統 機器硬件
.NET沒(méi)有象Java一樣使用JVM(虛擬機)技術(shù),運行于.NET上的軟件被完全編譯,并象C代碼一樣運行在機器硬件級。當.NET運行時(shí)刻庫CLR(Comman Language Runtime)執行一個(gè)被轉換為IL的程序時(shí),使用JITer編譯器將IL快速地編譯成本地代碼。其中,CLR部分位于硬件之上,部分位于現有OS之上,為組件與計算機或機器OS交換提供所有服務(wù)。
2、CLR與.NET的關(guān)系
C#、C++、VB、JScript、滿(mǎn)足CLS的語(yǔ)言
通用語(yǔ)言規范CLS
WebService 用戶(hù)接口
數據和XML
基礎類(lèi)庫
通用語(yǔ)言運行時(shí)刻庫CLR
.NET應用系統的數據由XML封裝,通過(guò)HTTP協(xié)議傳輸,依照SOAP(Small Object Access Protocol)與其他WebService對話(huà)與溝通。
3、.NET的核心組成
.NET是一種全新的平臺,它將對現有的所有代碼產(chǎn)生影響。蓋茨說(shuō):“微軟所有的產(chǎn)品都會(huì )被涉及。我們的整個(gè)戰略是圍繞這個(gè)平臺展開(kāi)的?!?/span> ,其核心為三部分:CLR、統一的編程類(lèi)庫和一個(gè)被稱(chēng)為ASP+的高級ASP版本:
1)通用語(yǔ)言運行庫CLR
實(shí)際上每一種編程語(yǔ)言都已包含一個(gè)運行庫:VB有VBRun,VC++有MSVCRT。此外,像VFP、PB等都有運行庫。.NET提供了一個(gè)跨所有編程語(yǔ)言的統一環(huán)境,其基礎是通用語(yǔ)言規范CLS。
2)統一編程類(lèi)庫
C++使用MFC,Java使用WindowsFC,VB使用VB APIs,Delphi 使用VCL。.NET框架類(lèi)為開(kāi)發(fā)人員提供了一套可以使用的統一的面向對象、異步、層次結構的可擴展類(lèi)庫。從JScript 到C++的所有編程語(yǔ)言,對于.NET框架都是相互等同的,開(kāi)發(fā)人員可以自由地選擇他們想使用的任何語(yǔ)言。
3)ASP+
ASP+提供了一個(gè)Web應用程序模型,該模型由一組控件和一個(gè)基本結構組成。有了它,Web應用程序的構建變得非常容易。開(kāi)發(fā)人員可以直接使用ASP+控件集,該控件集封裝了公共的、用于超文本標識語(yǔ)言(HTML)用戶(hù)界面的各種組件(諸如文本框、下拉選單等等)。
4、解決的核心問(wèn)題
l 互操作性(Interoperability)、集成性(Integration)和應用程序的可擴展性(extensibility)太難實(shí)現而且代價(jià)很高。Microsoft .NET依靠XML(一個(gè)由World Wide Web Consortium(W3C)管理的開(kāi)放標準)消除了數據共享和軟件集成的障礙;
l Microsoft .NET建立在一個(gè)開(kāi)放的標準上,它包含了所有編程語(yǔ)言;
l WebService模式 MS-DOS使得個(gè)人電腦上廣為接受;Windows增強了用戶(hù)的圖形界面,使其成為首選的與軟件交互方式,最終使得圖形界面成為個(gè)人電腦的主流。而.NET則要把XML Web服務(wù)變成日后的主流計算模式。
五、C#語(yǔ)言
對C/C++程序員來(lái)說(shuō),使用VB、Delphi等RAD工具,工作效率高,但犧牲了C/C++程序員熟悉的靈活性。對他們而言,最好的解決方案是:快速開(kāi)發(fā)RAD、滿(mǎn)足Web應用、保持底層編碼能力和C/C++的靈活性。這就是C#的目標。該系統的主要研制者——Anders Hejlsberg,就是鼎鼎有名的Delphi的研制者之一。
1、定位
l 微軟在.NET平臺上的Java的語(yǔ)言;
l Web Services應用系統的主要語(yǔ)言;
l 能使C++程序員快速開(kāi)發(fā)程序;
l 具有底層控制能力。
C#對于從高層商用軟件到系統級應用程序的多種組件構造都是合適的選擇,C#本來(lái)的意思就是C++++,如果熟悉了C++,那么學(xué)習C#要比學(xué)習Java要容易得多。
2、特點(diǎn)
1)與C++比較 自C/C++演變而來(lái),但簡(jiǎn)化與更新了C++中的類(lèi),降低了C++的復雜性,拋棄了C++的一些無(wú)用功能。具有垃圾回收功能,使得程序員不需要對內存進(jìn)行手動(dòng)管理;
2)管理機構 C#不是由微軟來(lái)管理,而是由ECMA(歐洲計算機制造聯(lián)合會(huì ))來(lái)管理,和Jscript、CLS一樣(ECMA是一個(gè)獨立的實(shí)體);
3、發(fā)展
隨著(zhù)Windows操作系統2000、XP及未來(lái)的NET版本,C#將成為微軟公司基于Windows、Web等主要開(kāi)發(fā)語(yǔ)言及工具。VS.NET中的C#為第一個(gè)版本。
六、VB.NET
在可視化RAD開(kāi)發(fā)工具中,內核語(yǔ)言以BASIC的歷史最長(cháng),1955年隨Fortran出現后的第一個(gè)適合初學(xué)者的高級程序設計語(yǔ)言。它是一個(gè)解釋型弱數據類(lèi)型語(yǔ)言,其True BASIC、QBASIC、Turbo BASIC等曾風(fēng)行一時(shí),目前仍然有人在使用DOS平臺下的QBASIC。1991年發(fā)布VB1.0后,隨著(zhù)應用的發(fā)展,先后衍生出了VB、VBA、VBScript等語(yǔ)言。
1、定位
l 比C/C++易學(xué)好用的快速開(kāi)發(fā)工具,搶占由Delphi、PB等RAD占領(lǐng)的技術(shù)領(lǐng)域,
l 擴展到Back Office、Web等應用領(lǐng)域。
l 創(chuàng )建Windows客戶(hù)端的應用程序;
l 創(chuàng )建XML Web服務(wù)應用程序。
從技術(shù)角度而言,VB不能算是一個(gè)純粹面向對象的程序設計語(yǔ)言,這方面它大大落后于Borland Delphi、Object Pascal (Pascal的Delphi版本)。由于衍自Microsoft的皇家血統,所以VB、VBA、VBScript在應用系統、Web網(wǎng)絡(luò )方面獲得了可靠的持續性發(fā)展能力,但與Delphi相比,其并不具備技術(shù)上的競爭優(yōu)勢。
2、發(fā)展 1998年VB6.0發(fā)布后,經(jīng)過(guò)4年,微軟發(fā)布了其升級版本VB.NET,該版本的結構調整較大,有了質(zhì)的變化。該版本將統一VB、VBA、VBScript。
3、應用 VB在東亞,特別是在日本應用非常普遍。除核心的程序代碼外,Windows XP中大約2億行代碼是Micorsoft公司用VB寫(xiě)成的,而不是C++/VC++(事實(shí)上,Bill Gates 是一個(gè)Basic的頂級高手)
4、開(kāi)發(fā)工具 VB.6,1998年隨Visual Studio一同發(fā)布。最新的VB7.0,2002年2月,則改稱(chēng)為VB.NET。
七、結論
Delphi、C++Builder、Visual C++、VB等,能在市場(chǎng)上立足,肯定都是有自己的過(guò)人之處的,而且一個(gè)人精通數種開(kāi)發(fā)語(yǔ)言、數種開(kāi)發(fā)工具是不可能的事情。對于計算機語(yǔ)言來(lái)說(shuō),未來(lái)真正重要的通用主流語(yǔ)言只有三種C++、Java和C#。
1、底層開(kāi)發(fā)與學(xué)習語(yǔ)言C++
C++將更適合于編寫(xiě)圖形界面系統GUI、虛擬機(比如Java虛擬機)、殺毒軟件或者其他的盒裝軟件(比如說(shuō)Photoshop、Dreamweaver)、底層設計與開(kāi)發(fā)應用。同時(shí),C++適合做學(xué)習之用,為進(jìn)一步學(xué)習掌握Java、C#打下基礎。
2、Web應用語(yǔ)言C#、Java
如果開(kāi)發(fā)為客戶(hù)定制的應用系統,包括桌面應用和Web應用,Java、C#是更好的選擇。
3、客戶(hù)端應用語(yǔ)言Delphi
如果虛擬機的執行效率趕不上Delphi,它就有存在的理由,從長(cháng)遠來(lái)看Delphi可能不那么樂(lè )觀(guān)。當前,在Windows客戶(hù)端,設計開(kāi)發(fā)應用系統VCL無(wú)疑最好的。
那么最終誰(shuí)會(huì )贏(yíng)呢?多贏(yíng)的可能性大一些。有文分析,到2005年,企業(yè)級開(kāi)發(fā)平臺的霸權之爭將是一場(chǎng)“半斤對八兩的雙雄會(huì )”,Java和.NET將各占領(lǐng)40%左右的市場(chǎng)。大多數大企業(yè)組織將同時(shí)采用這二種平臺,它們已經(jīng)成為業(yè)界事實(shí)上的標準。如果數據庫DBMS一樣,最終語(yǔ)言將如何整合、發(fā)展,是否有新的設計語(yǔ)言或規范出來(lái),將有市場(chǎng)來(lái)決定。
真正的程序員用VC++,聰明的程序員用Delphi,未來(lái)的程序員用Java和C#。每當新的硬件設備、軟件開(kāi)發(fā)平臺及開(kāi)發(fā)工具出現時(shí)(尤其在IT領(lǐng)域中),既給我們帶來(lái)了挑戰,更給我們帶來(lái)了機遇。抓住機遇、與時(shí)俱進(jìn)、迎接挑戰。
準備不充分、內容不全面、講得不好,請多多指教,謝謝。