文章目錄
C 語言是一種通用的高級語言踢星,最初是由丹尼斯·里奇在貝爾實(shí)驗(yàn)室為開發(fā) UNIX 操作系統(tǒng)而設(shè)計的蜂大。C 語言最開始是于 1972 年在 DEC PDP-11 計算機(jī)上被首次實(shí)現(xiàn)梁钾。
在 1978 年柑土,布萊恩·柯林漢(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一個公開可用的描述爆土,現(xiàn)在被稱為 K&R 標(biāo)準(zhǔn)。
UNIX 操作系統(tǒng)贬丛,C編譯器扇救,和幾乎所有的 UNIX 應(yīng)用程序都是用 C 語言編寫的。由于各種原因橙垢,C 語言現(xiàn)在已經(jīng)成為一種廣泛使用的專業(yè)語言本砰。
特點(diǎn)
易于學(xué)習(xí)
結(jié)構(gòu)化語言
它產(chǎn)生高效率的程序
它可以處理底層的活動
它可以在多種計算機(jī)平臺上編譯
關(guān)于C
C 語言是為了編寫 UNIX 操作系統(tǒng)而被發(fā)明的。
C 語言是以 B 語言為基礎(chǔ)的钢悲,B 語言大概是在 1970 年被引進(jìn)的点额。
C語言標(biāo)準(zhǔn)是于 1988 年由美國國家標(biāo)準(zhǔn)協(xié)會(ANSI,全稱 American National Standard
Institute)制定的莺琳。
截至 1973 年还棱,UNIX 操作系統(tǒng)完全使用 C 語言編寫。
目前惭等,C 語言是最廣泛使用的系統(tǒng)程序設(shè)計語言珍手。
大多數(shù)先進(jìn)的軟件都是使用 C 語言實(shí)現(xiàn)的。
當(dāng)今最流行的 Linux 操作系統(tǒng)和 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫管理系統(tǒng)) MySQL 都是使用 C 語言編寫的。
為什么要使用C
C 語言最初是用于系統(tǒng)開發(fā)工作琳要,特別是組成操作系統(tǒng)的程序寡具。由于 C 語言所產(chǎn)生的代碼運(yùn)行速度與匯編語言編寫的代碼運(yùn)行速度幾乎一樣,所以采用 C 語言作為系統(tǒng)開發(fā)語言稚补。下面列舉幾個使用 C 的實(shí)例:
操作系統(tǒng)
語言編譯器
匯編器
文本編輯器
打印機(jī)
網(wǎng)絡(luò)驅(qū)動器
現(xiàn)代程序
數(shù)據(jù)庫
語言解釋器
實(shí)體工具
C++ 是一種中級語言童叠,它是由 Bjarne Stroustrup 于 1979 年在貝爾實(shí)驗(yàn)室開始設(shè)計開發(fā)的。C++ 進(jìn)一步擴(kuò)充和完善了 C 語言课幕,是一種面向?qū)ο蟮某绦蛟O(shè)計語言厦坛。C++ 可運(yùn)行于多種平臺上,如 Windows乍惊、MAC 操作系統(tǒng)以及 UNIX 的各種版本杜秸。
特點(diǎn)
C++ 是一種靜態(tài)類型的、編譯式的润绎、通用的撬碟、大小寫敏感的、不規(guī)則的編程語言莉撇,支持過程化編程小作、面向?qū)ο缶幊毯头盒途幊獭?/p>
C++ 被認(rèn)為是一種中級語言,它綜合了高級語言和低級語言的特點(diǎn)稼钩。
C++ 進(jìn)一步擴(kuò)充和完善了 C 語言顾稀,最初命名為帶類的C,后來在 1983 年更名為 C++坝撑。
C++ 是 C 的一個超集静秆,事實(shí)上,任何合法的 C 程序都是合法的 C++ 程序巡李。
面向?qū)ο蟪绦蛟O(shè)計
C++ 完全支持面向?qū)ο蟮某绦蛟O(shè)計抚笔,包括面向?qū)ο箝_發(fā)的四大特性:
封裝
抽象
繼承
多態(tài)
標(biāo)準(zhǔn)庫
標(biāo)準(zhǔn)的 C++ 由三個重要部分組成:
核心語言,提供了所有構(gòu)件塊侨拦,包括變量殊橙、數(shù)據(jù)類型和常量,等等狱从。
C++ 標(biāo)準(zhǔn)庫膨蛮,提供了大量的函數(shù),用于操作文件季研、字符串等敞葛。
標(biāo)準(zhǔn)模板庫(STL),提供了大量的方法与涡,用于操作數(shù)據(jù)結(jié)構(gòu)等惹谐。
學(xué)習(xí)C++
學(xué)習(xí) C++持偏,關(guān)鍵是要理解概念,而不應(yīng)過于深究語言的技術(shù)細(xì)節(jié)氨肌。
學(xué)習(xí)程序設(shè)計語言的目的是為了成為一個更好的程序員鸿秆,也就是說,是為了能更有效率地設(shè)計和實(shí)現(xiàn)新系統(tǒng)怎囚,以及維護(hù)舊系統(tǒng)卿叽。
C++ 支持多種編程風(fēng)格。您可以使用 Fortran桩了、C、Smalltalk 等任意一種語言的編程風(fēng)格來編寫代碼埠戳。每種風(fēng)格都能有效地保證運(yùn)行時間效率和空間效率井誉。
C++的使用
基本上每個應(yīng)用程序領(lǐng)域的程序員都有使用 C++。
C++ 通常用于編寫設(shè)備驅(qū)動程序和其他要求實(shí)時性的直接操作硬件的軟件整胃。
C++ 廣泛用于教學(xué)和研究颗圣。
任何一個使用蘋果電腦或 Windows PC 機(jī)的用戶都在間接地使用 C++,因?yàn)檫@些系統(tǒng)的主要用戶接口是使用 C++ 編寫的屁使。
Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計語言和Java平臺的總稱在岂。由James Gosling和同事們共同研發(fā),并在1995年正式推出蛮寂。
主要特性
Java語言是簡單的
Java語言的語法與C語言和C++語言很接近蔽午,使得大多數(shù)程序員很容易學(xué)習(xí)和使用。另一方面酬蹋,Java丟棄了C++中很少使用的及老、很難理解的、令人迷惑的那些特性范抓,如操作符重載骄恶、多繼承、自動的強(qiáng)制類型轉(zhuǎn)換匕垫。特別地僧鲁,Java語言不使用指針,而是引用象泵。并提供了自動的廢料收集寞秃,使得程序員不必為內(nèi)存管理而擔(dān)憂。
Java語言是面向?qū)ο蟮?/b>
Java語言提供類偶惠、接口和繼承等面向?qū)ο蟮奶匦酝筛茫瑸榱撕唵纹鹨娤捶。恢С诸愔g的單繼承芋肠,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)逊谋。Java語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定绢淀∮┿玻總之,Java語言是一個純的面向?qū)ο蟪绦蛟O(shè)計語言皆的。
Java語言是分布式的
Java語言支持Internet應(yīng)用的開發(fā)覆履,在基本的Java應(yīng)用編程接口中有一個網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫费薄,包括URL硝全、URLConnection、Socket楞抡、ServerSocket等伟众。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開發(fā)分布式應(yīng)用的重要手段。
Java語言是健壯的
Java的強(qiáng)類型機(jī)制召廷、異常處理凳厢、垃圾的自動收集等是Java程序健壯性的重要保證。對指針的丟棄是Java的明智選擇竞慢。Java的安全檢查機(jī)制使得Java更具健壯性先紫。
Java語言是安全的
Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此筹煮,Java提供了一個安全機(jī)制以防惡意代碼的攻擊遮精。除了Java語言具有的許多安全特性以外,Java對通過網(wǎng)絡(luò)下載的類具有一個安全防范機(jī)制(類ClassLoader)败潦,如分配不同的名字空間以防替代本地的同名類仑鸥、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵变屁。
Java語言是體系結(jié)構(gòu)中立的
Java程序(后綴為java的文件)在Java平臺上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件)眼俊,然后可以在實(shí)現(xiàn)這個Java平臺的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)粟关。
Java語言是可移植的
這種可移植性來源于體系結(jié)構(gòu)中立性疮胖,另外,Java還嚴(yán)格規(guī)定了各個基本數(shù)據(jù)類型的長度闷板。Java系統(tǒng)本身也具有很強(qiáng)的可移植性澎灸,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的遮晚。
Java語言是解釋型的
如前所述性昭,Java程序在Java平臺上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個Java平臺的任何系統(tǒng)中運(yùn)行县遣。在運(yùn)行時糜颠,Java平臺中的Java解釋器對這些字節(jié)碼進(jìn)行解釋執(zhí)行汹族,執(zhí)行過程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。
Java是高性能的
與那些解釋型的高級腳本語言相比其兴,Java的確是高性能的顶瞒。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來越接近于C++元旬。
Java語言是多線程的
在Java語言中榴徐,線程是一種特殊的對象,它必須由Thread類或其子(孫)類來創(chuàng)建匀归。通常有兩種方法來創(chuàng)建線程:其一坑资,使用型構(gòu)為Thread(Runnable)的構(gòu)造子類將一個實(shí)現(xiàn)了Runnable接口的對象包裝成一個線程,其二穆端,從Thread類派生出子類并重寫run方法袱贮,使用該子類創(chuàng)建的對象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口徙赢,因此字柠,任何一個線程均有它的run方法探越,而run方法中包含了線程所要運(yùn)行的代碼狡赐。線程的活動由一組方法來控制。Java語言支持多個線程的同時執(zhí)行钦幔,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)枕屉。
Java語言是動態(tài)的
Java語言的設(shè)計目標(biāo)之一是適應(yīng)于動態(tài)變化的環(huán)境。Java程序需要的類能夠動態(tài)地被載入到運(yùn)行環(huán)境鲤氢,也可以通過網(wǎng)絡(luò)來載入所需要的類搀擂。這也有利于軟件的升級。另外卷玉,Java中的類有一個運(yùn)行時刻的表示哨颂,能進(jìn)行運(yùn)行時刻的類型檢查。
Python是一種解釋型相种、面向?qū)ο笸铡討B(tài)數(shù)據(jù)類型的高級程序設(shè)計語言。
Python由Guido van Rossum于1989年底發(fā)明寝并,第一個公開發(fā)行版發(fā)行于1991年箫措。
像Perl語言一樣, Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議。
特點(diǎn)
易于學(xué)習(xí):Python有相對較少的關(guān)鍵字衬潦,結(jié)構(gòu)簡單斤蔓,和一個明確定義的語法,學(xué)習(xí)起來更加簡單镀岛。
易于閱讀:Python代碼定義的更清晰弦牡。
易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的友驮。
一個廣泛的標(biāo)準(zhǔn)庫:Python的最大的優(yōu)勢之一是豐富的庫,跨平臺的喇伯,在UNIX喊儡,Windows和Macintosh兼容很好。
互動模式:互動模式的支持稻据,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語言艾猜,互動的測試和調(diào)試代碼片斷。
可移植:基于其開放源代碼的特性捻悯,Python已經(jīng)被移植(也就是使其工作)到許多平臺匆赃。
可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫一些不愿開放的算法今缚,你可以使用C或C++完成那部分程序算柳,然后從你的Python程序中調(diào)用。
數(shù)據(jù)庫:Python提供所有主要的商業(yè)數(shù)據(jù)庫的接口姓言。
GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用瞬项。
可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力何荚。
免費(fèi)囱淋、開源 : Python 是 FLOSS(自由/開放源碼軟件)之一。簡單地說餐塘,你可以自由地發(fā)布這個軟件的拷貝妥衣、閱讀它的源代碼、對它做改動戒傻、把它的一部分用于新的自由軟件中税手。FLOSS 是基于一個團(tuán)體分享知識的概念。這是為什么 Python 如此優(yōu)秀的原因之一——它是由一群希望看到一個更加優(yōu)秀的 Python 的人創(chuàng)造并經(jīng)常改進(jìn)著的需纳。
缺點(diǎn)
運(yùn)行速度芦倒,有速度要求的話,用 C++ 改寫關(guān)鍵部分吧不翩。
國內(nèi)市場較斜铩(國內(nèi)以 Python 來做主要開發(fā)的,目前只有一些 web2.0 公司)慌盯。但時間推移周霉,目前很多國內(nèi)軟件公司,尤其是游戲公司亚皂,也開始規(guī)模使用他俱箱。
中文資料匱乏(好的 Python 中文資料屈指可數(shù),現(xiàn)在應(yīng)該變多了)灭必。托社區(qū)的福狞谱,有幾本優(yōu)秀的教材已經(jīng)被翻譯了乃摹,但入門級教材多,高級內(nèi)容還是只能看英語版跟衅。
構(gòu)架選擇太多(沒有像 C# 這樣的官方 .net 構(gòu)架孵睬,也沒有像 ruby 由于歷史較短,構(gòu)架開發(fā)的相對集中伶跷。Ruby on Rails 構(gòu)架開發(fā)中小型web程序天下無敵)掰读。不過這也從另一個側(cè)面說明,python比較優(yōu)秀叭莫,吸引的人才多蹈集,項目也多。
PHP 是一種創(chuàng)建動態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言雇初。
PHP 是免費(fèi)的拢肆,并且使用非常廣泛。同時靖诗,對于像微軟 ASP 這樣的競爭者來說郭怪,PHP 無疑是另一種高效率的選項。
PHP能做什么刊橘?
PHP 可以生成動態(tài)頁面內(nèi)容
PHP 可以創(chuàng)建鄙才、打開、讀取伤为、寫入咒循、關(guān)閉服務(wù)器上的文件
PHP 可以收集表單數(shù)據(jù)
PHP 可以發(fā)送和接收 cookies
PHP 可以添加据途、刪除绞愚、修改您的數(shù)據(jù)庫中的數(shù)據(jù)
PHP 可以限制用戶訪問您的網(wǎng)站上的一些頁面
PHP 可以加密數(shù)據(jù)
通過 PHP,您不再限于輸出 HTML颖医。您可以輸出圖像位衩、PDF 文件,甚至 Flash 電影熔萧。您還可以輸出任意的文本糖驴,比如 XHTML 和 XML。
為什么使用PHP佛致?
PHP 可在不同的平臺上運(yùn)行(Windows贮缕、Linux、Unix俺榆、Mac OS X 等)
PHP 與目前幾乎所有的正在被使用的服務(wù)器相兼容(Apache感昼、IIS 等)
PHP 提供了廣泛的數(shù)據(jù)庫支持
PHP 是免費(fèi)的,可從官方的 PHP 資源下載它:?www.php.net
PHP 易于學(xué)習(xí)罐脊,并可高效地運(yùn)行在服務(wù)器端
缺點(diǎn)
函數(shù)命名不規(guī)范 駝峰法和下滑線定嗓,傳參位置不一
單線程 PHP本身蜕琴,一直以來php就是個單進(jìn)程的程序,雖然php的pthreads擴(kuò)展早就有了宵溅。但是它不夠穩(wěn)定凌简,運(yùn)行運(yùn)行著就會莫名其妙的自己掛掉,php的擴(kuò)展都是C寫的恃逻,這也就意味著任何一個擴(kuò)展出現(xiàn)線程競爭資源控制問題都能讓整個掛掉
核心異步網(wǎng)絡(luò)不支持(當(dāng)然在linux只有同步非阻塞網(wǎng)絡(luò)模型)雏搂。卻少了這個使得很難開發(fā)一個能夠承受大并發(fā)的網(wǎng)絡(luò)應(yīng)用。傳統(tǒng)的網(wǎng)絡(luò)模型和io都阻塞的寇损。這樣基本的編程的做法就是一個進(jìn)程(或者線程)響應(yīng)一個用戶鏈接請求畔派。因此無法完成像實(shí)時網(wǎng)游那樣需要成千上萬網(wǎng)絡(luò)連接的任務(wù)。盡管php也有Libevent润绵、eio擴(kuò)展對此算是某種程度上面的彌補(bǔ)线椰,但是感覺都不是那么完善
只支持web開發(fā),不方便做 .exe文件,不方便做桌面應(yīng)用程序. 不方便做手機(jī)程序.
不適合做爬蟲尘盼、自動運(yùn)行腳本.科學(xué)運(yùn)算項目,這語言基本構(gòu)架就不適合憨愉,雖然有很多方法實(shí)現(xiàn)。
后期維護(hù)困難卿捎。后期提速空間局限性較大配紫。
JSP全稱Java Server Pages,是一種動態(tài)網(wǎng)頁開發(fā)技術(shù)午阵。它使用JSP標(biāo)簽在HTML網(wǎng)頁中插入Java代碼躺孝。標(biāo)簽通常以<%開頭以%>結(jié)束。
JSP是一種Java servlet底桂,主要用于實(shí)現(xiàn)Java web應(yīng)用程序的用戶界面部分植袍。網(wǎng)頁開發(fā)者們通過結(jié)合HTML代碼、XHTML代碼籽懦、XML元素以及嵌入JSP操作和命令來編寫JSP于个。
JSP通過網(wǎng)頁表單獲取用戶輸入數(shù)據(jù)、訪問數(shù)據(jù)庫及其他數(shù)據(jù)源暮顺,然后動態(tài)地創(chuàng)建網(wǎng)頁厅篓。
JSP標(biāo)簽有多種功能,比如訪問數(shù)據(jù)庫捶码、記錄用戶選擇信息羽氮、訪問JavaBeans組件等,還可以在不同的網(wǎng)頁中傳遞控制信息和共享信息惫恼。
JSP的優(yōu)勢
與ASP相比:JSP有兩大優(yōu)勢档押。首先,動態(tài)部分用Java編寫,而不是VB或其他MS專用語言汇荐,所以更加強(qiáng)大與易用洞就。第二點(diǎn)就是JSP易于移植到非MS平臺上。
與純 Servlet 相比:JSP可以很方便的編寫或者修改HTML網(wǎng)頁而不用去面對大量的println語句掀淘。
與SSI相比:SSI無法使用表單數(shù)據(jù)旬蟋、無法進(jìn)行數(shù)據(jù)庫鏈接。
與JavaScript相比:雖然JavaScript可以在客戶端動態(tài)生成HTML革娄,但是很難與服務(wù)器交互倾贰,因此不能提供復(fù)雜的服務(wù),比如訪問數(shù)據(jù)庫和圖像處理等等拦惋。
與靜態(tài)HTML相比:靜態(tài)HTML不包含動態(tài)信息匆浙。