常用的編程語(yǔ)言

文章目錄

C

C++

Java

Python

PHP

JSP

C

C 語(yǔ)言是一種通用的高級(jí)語(yǔ)言,最初是由丹尼斯·里奇在貝爾實(shí)驗(yàn)室為開(kāi)發(fā) UNIX 操作系統(tǒng)而設(shè)計(jì)的。C 語(yǔ)言最開(kāi)始是于 1972 年在 DEC PDP-11 計(jì)算機(jī)上被首次實(shí)現(xiàn)。

在 1978 年,布萊恩·柯林漢(Brian Kernighan)和丹尼斯·里奇(Dennis Ritchie)制作了 C 的第一個(gè)公開(kāi)可用的描述,現(xiàn)在被稱為 K&R 標(biāo)準(zhǔn)。

UNIX 操作系統(tǒng),C編譯器,和幾乎所有的 UNIX 應(yīng)用程序都是用 C 語(yǔ)言編寫(xiě)的。由于各種原因,C 語(yǔ)言現(xiàn)在已經(jīng)成為一種廣泛使用的專業(yè)語(yǔ)言。

特點(diǎn)

易于學(xué)習(xí)

結(jié)構(gòu)化語(yǔ)言

它產(chǎn)生高效率的程序

它可以處理底層的活動(dòng)

它可以在多種計(jì)算機(jī)平臺(tái)上編譯

關(guān)于C

C 語(yǔ)言是為了編寫(xiě) UNIX 操作系統(tǒng)而被發(fā)明的。

C 語(yǔ)言是以 B 語(yǔ)言為基礎(chǔ)的,B 語(yǔ)言大概是在 1970 年被引進(jìn)的。

C語(yǔ)言標(biāo)準(zhǔn)是于 1988 年由美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI,全稱 American National Standard

Institute)制定的。

截至 1973 年,UNIX 操作系統(tǒng)完全使用 C 語(yǔ)言編寫(xiě)。

目前,C 語(yǔ)言是最廣泛使用的系統(tǒng)程序設(shè)計(jì)語(yǔ)言。

大多數(shù)先進(jìn)的軟件都是使用 C 語(yǔ)言實(shí)現(xiàn)的。

當(dāng)今最流行的 Linux 操作系統(tǒng)和 RDBMS(Relational Database Management System:關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)) MySQL 都是使用 C 語(yǔ)言編寫(xiě)的。

為什么要使用C

C 語(yǔ)言最初是用于系統(tǒng)開(kāi)發(fā)工作,特別是組成操作系統(tǒng)的程序。由于 C 語(yǔ)言所產(chǎn)生的代碼運(yùn)行速度與匯編語(yǔ)言編寫(xiě)的代碼運(yùn)行速度幾乎一樣,所以采用 C 語(yǔ)言作為系統(tǒng)開(kāi)發(fā)語(yǔ)言。下面列舉幾個(gè)使用 C 的實(shí)例:

操作系統(tǒng)

語(yǔ)言編譯器

匯編器

文本編輯器

打印機(jī)

網(wǎng)絡(luò)驅(qū)動(dòng)器

現(xiàn)代程序

數(shù)據(jù)庫(kù)

語(yǔ)言解釋器

實(shí)體工具

C++

C++ 是一種中級(jí)語(yǔ)言,它是由 Bjarne Stroustrup 于 1979 年在貝爾實(shí)驗(yàn)室開(kāi)始設(shè)計(jì)開(kāi)發(fā)的。C++ 進(jìn)一步擴(kuò)充和完善了 C 語(yǔ)言,是一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言。C++ 可運(yùn)行于多種平臺(tái)上,如 Windows、MAC 操作系統(tǒng)以及 UNIX 的各種版本。

特點(diǎn)

C++ 是一種靜態(tài)類型的、編譯式的、通用的、大小寫(xiě)敏感的、不規(guī)則的編程語(yǔ)言,支持過(guò)程化編程、面向?qū)ο缶幊毯头盒途幊獭?/p>

C++ 被認(rèn)為是一種中級(jí)語(yǔ)言,它綜合了高級(jí)語(yǔ)言和低級(jí)語(yǔ)言的特點(diǎn)。

C++ 進(jìn)一步擴(kuò)充和完善了 C 語(yǔ)言,最初命名為帶類的C,后來(lái)在 1983 年更名為 C++。

C++ 是 C 的一個(gè)超集,事實(shí)上,任何合法的 C 程序都是合法的 C++ 程序。

面向?qū)ο蟪绦蛟O(shè)計(jì)

C++ 完全支持面向?qū)ο蟮某绦蛟O(shè)計(jì),包括面向?qū)ο箝_(kāi)發(fā)的四大特性:

封裝

抽象

繼承

多態(tài)

標(biāo)準(zhǔn)庫(kù)

標(biāo)準(zhǔn)的 C++ 由三個(gè)重要部分組成:

核心語(yǔ)言,提供了所有構(gòu)件塊,包括變量、數(shù)據(jù)類型和常量,等等。

C++ 標(biāo)準(zhǔn)庫(kù),提供了大量的函數(shù),用于操作文件、字符串等。

標(biāo)準(zhǔn)模板庫(kù)(STL),提供了大量的方法,用于操作數(shù)據(jù)結(jié)構(gòu)等。

學(xué)習(xí)C++

學(xué)習(xí) C++,關(guān)鍵是要理解概念,而不應(yīng)過(guò)于深究語(yǔ)言的技術(shù)細(xì)節(jié)。

學(xué)習(xí)程序設(shè)計(jì)語(yǔ)言的目的是為了成為一個(gè)更好的程序員,也就是說(shuō),是為了能更有效率地設(shè)計(jì)和實(shí)現(xiàn)新系統(tǒng),以及維護(hù)舊系統(tǒng)。

C++ 支持多種編程風(fēng)格。您可以使用 Fortran、C、Smalltalk 等任意一種語(yǔ)言的編程風(fēng)格來(lái)編寫(xiě)代碼。每種風(fēng)格都能有效地保證運(yùn)行時(shí)間效率和空間效率。

C++的使用

基本上每個(gè)應(yīng)用程序領(lǐng)域的程序員都有使用 C++。

C++ 通常用于編寫(xiě)設(shè)備驅(qū)動(dòng)程序和其他要求實(shí)時(shí)性的直接操作硬件的軟件。

C++ 廣泛用于教學(xué)和研究。

任何一個(gè)使用蘋(píng)果電腦或 Windows PC 機(jī)的用戶都在間接地使用 C++,因?yàn)檫@些系統(tǒng)的主要用戶接口是使用 C++ 編寫(xiě)的。

Java

Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言和Java平臺(tái)的總稱。由James Gosling和同事們共同研發(fā),并在1995年正式推出。

主要特性

Java語(yǔ)言是簡(jiǎn)單的

Java語(yǔ)言的語(yǔ)法與C語(yǔ)言和C++語(yǔ)言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動(dòng)的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語(yǔ)言不使用指針,而是引用。并提供了自動(dòng)的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。

Java語(yǔ)言是面向?qū)ο蟮?/b>

Java語(yǔ)言提供類、接口和繼承等面向?qū)ο蟮奶匦?,為了?jiǎn)單起見(jiàn),只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實(shí)現(xiàn)機(jī)制(關(guān)鍵字為implements)。Java語(yǔ)言全面支持動(dòng)態(tài)綁定,而C++語(yǔ)言只對(duì)虛函數(shù)使用動(dòng)態(tài)綁定??傊?,Java語(yǔ)言是一個(gè)純的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言。

Java語(yǔ)言是分布式的

Java語(yǔ)言支持Internet應(yīng)用的開(kāi)發(fā),在基本的Java應(yīng)用編程接口中有一個(gè)網(wǎng)絡(luò)應(yīng)用編程接口(java net),它提供了用于網(wǎng)絡(luò)應(yīng)用編程的類庫(kù),包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(遠(yuǎn)程方法激活)機(jī)制也是開(kāi)發(fā)分布式應(yīng)用的重要手段。

Java語(yǔ)言是健壯的

Java的強(qiáng)類型機(jī)制、異常處理、垃圾的自動(dòng)收集等是Java程序健壯性的重要保證。對(duì)指針的丟棄是Java的明智選擇。Java的安全檢查機(jī)制使得Java更具健壯性。

Java語(yǔ)言是安全的

Java通常被用在網(wǎng)絡(luò)環(huán)境中,為此,Java提供了一個(gè)安全機(jī)制以防惡意代碼的攻擊。除了Java語(yǔ)言具有的許多安全特性以外,Java對(duì)通過(guò)網(wǎng)絡(luò)下載的類具有一個(gè)安全防范機(jī)制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節(jié)代碼檢查,并提供安全管理機(jī)制(類SecurityManager)讓Java應(yīng)用設(shè)置安全哨兵。

Java語(yǔ)言是體系結(jié)構(gòu)中立的

Java程序(后綴為java的文件)在Java平臺(tái)上被編譯為體系結(jié)構(gòu)中立的字節(jié)碼格式(后綴為class的文件),然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。這種途徑適合于異構(gòu)的網(wǎng)絡(luò)環(huán)境和軟件的分發(fā)。

Java語(yǔ)言是可移植的

這種可移植性來(lái)源于體系結(jié)構(gòu)中立性,另外,Java還嚴(yán)格規(guī)定了各個(gè)基本數(shù)據(jù)類型的長(zhǎng)度。Java系統(tǒng)本身也具有很強(qiáng)的可移植性,Java編譯器是用Java實(shí)現(xiàn)的,Java的運(yùn)行環(huán)境是用ANSI C實(shí)現(xiàn)的。

Java語(yǔ)言是解釋型的

如前所述,Java程序在Java平臺(tái)上被編譯為字節(jié)碼格式,然后可以在實(shí)現(xiàn)這個(gè)Java平臺(tái)的任何系統(tǒng)中運(yùn)行。在運(yùn)行時(shí),Java平臺(tái)中的Java解釋器對(duì)這些字節(jié)碼進(jìn)行解釋執(zhí)行,執(zhí)行過(guò)程中需要的類在聯(lián)接階段被載入到運(yùn)行環(huán)境中。

Java是高性能的

與那些解釋型的高級(jí)腳本語(yǔ)言相比,Java的確是高性能的。事實(shí)上,Java的運(yùn)行速度隨著JIT(Just-In-Time)編譯器技術(shù)的發(fā)展越來(lái)越接近于C++。

Java語(yǔ)言是多線程的

在Java語(yǔ)言中,線程是一種特殊的對(duì)象,它必須由Thread類或其子(孫)類來(lái)創(chuàng)建。通常有兩種方法來(lái)創(chuàng)建線程:其一,使用型構(gòu)為Thread(Runnable)的構(gòu)造子類將一個(gè)實(shí)現(xiàn)了Runnable接口的對(duì)象包裝成一個(gè)線程,其二,從Thread類派生出子類并重寫(xiě)run方法,使用該子類創(chuàng)建的對(duì)象即為線程。值得注意的是Thread類已經(jīng)實(shí)現(xiàn)了Runnable接口,因此,任何一個(gè)線程均有它的run方法,而run方法中包含了線程所要運(yùn)行的代碼。線程的活動(dòng)由一組方法來(lái)控制。Java語(yǔ)言支持多個(gè)線程的同時(shí)執(zhí)行,并提供多線程之間的同步機(jī)制(關(guān)鍵字為synchronized)。

Java語(yǔ)言是動(dòng)態(tài)的

Java語(yǔ)言的設(shè)計(jì)目標(biāo)之一是適應(yīng)于動(dòng)態(tài)變化的環(huán)境。Java程序需要的類能夠動(dòng)態(tài)地被載入到運(yùn)行環(huán)境,也可以通過(guò)網(wǎng)絡(luò)來(lái)載入所需要的類。這也有利于軟件的升級(jí)。另外,Java中的類有一個(gè)運(yùn)行時(shí)刻的表示,能進(jìn)行運(yùn)行時(shí)刻的類型檢查。

Python

Python是一種解釋型、面向?qū)ο?、?dòng)態(tài)數(shù)據(jù)類型的高級(jí)程序設(shè)計(jì)語(yǔ)言。

Python由Guido van Rossum于1989年底發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。

像Perl語(yǔ)言一樣, Python 源代碼同樣遵循 GPL(GNU General Public License)協(xié)議。

特點(diǎn)

易于學(xué)習(xí):Python有相對(duì)較少的關(guān)鍵字,結(jié)構(gòu)簡(jiǎn)單,和一個(gè)明確定義的語(yǔ)法,學(xué)習(xí)起來(lái)更加簡(jiǎn)單。

易于閱讀:Python代碼定義的更清晰。

易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的。

一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù):Python的最大的優(yōu)勢(shì)之一是豐富的庫(kù),跨平臺(tái)的,在UNIX,Windows和Macintosh兼容很好。

互動(dòng)模式:互動(dòng)模式的支持,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語(yǔ)言,互動(dòng)的測(cè)試和調(diào)試代碼片斷。

可移植:基于其開(kāi)放源代碼的特性,Python已經(jīng)被移植(也就是使其工作)到許多平臺(tái)。

可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫(xiě)一些不愿開(kāi)放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調(diào)用。

數(shù)據(jù)庫(kù):Python提供所有主要的商業(yè)數(shù)據(jù)庫(kù)的接口。

GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用。

可嵌入: 你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。

免費(fèi)、開(kāi)源 : Python 是 FLOSS(自由/開(kāi)放源碼軟件)之一。簡(jiǎn)單地說(shuō),你可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。FLOSS 是基于一個(gè)團(tuán)體分享知識(shí)的概念。這是為什么 Python 如此優(yōu)秀的原因之一——它是由一群希望看到一個(gè)更加優(yōu)秀的 Python 的人創(chuàng)造并經(jīng)常改進(jìn)著的。

缺點(diǎn)

運(yùn)行速度,有速度要求的話,用 C++ 改寫(xiě)關(guān)鍵部分吧。

國(guó)內(nèi)市場(chǎng)較?。▏?guó)內(nèi)以 Python 來(lái)做主要開(kāi)發(fā)的,目前只有一些 web2.0 公司)。但時(shí)間推移,目前很多國(guó)內(nèi)軟件公司,尤其是游戲公司,也開(kāi)始規(guī)模使用他。

中文資料匱乏(好的 Python 中文資料屈指可數(shù),現(xiàn)在應(yīng)該變多了)。托社區(qū)的福,有幾本優(yōu)秀的教材已經(jīng)被翻譯了,但入門級(jí)教材多,高級(jí)內(nèi)容還是只能看英語(yǔ)版。

構(gòu)架選擇太多(沒(méi)有像 C# 這樣的官方 .net 構(gòu)架,也沒(méi)有像 ruby 由于歷史較短,構(gòu)架開(kāi)發(fā)的相對(duì)集中。Ruby on Rails 構(gòu)架開(kāi)發(fā)中小型web程序天下無(wú)敵)。不過(guò)這也從另一個(gè)側(cè)面說(shuō)明,python比較優(yōu)秀,吸引的人才多,項(xiàng)目也多。

PHP

PHP 是一種創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語(yǔ)言。

PHP 是免費(fèi)的,并且使用非常廣泛。同時(shí),對(duì)于像微軟 ASP 這樣的競(jìng)爭(zhēng)者來(lái)說(shuō),PHP 無(wú)疑是另一種高效率的選項(xiàng)。

PHP能做什么?

PHP 可以生成動(dòng)態(tài)頁(yè)面內(nèi)容

PHP 可以創(chuàng)建、打開(kāi)、讀取、寫(xiě)入、關(guān)閉服務(wù)器上的文件

PHP 可以收集表單數(shù)據(jù)

PHP 可以發(fā)送和接收 cookies

PHP 可以添加、刪除、修改您的數(shù)據(jù)庫(kù)中的數(shù)據(jù)

PHP 可以限制用戶訪問(wèn)您的網(wǎng)站上的一些頁(yè)面

PHP 可以加密數(shù)據(jù)

通過(guò) PHP,您不再限于輸出 HTML。您可以輸出圖像、PDF 文件,甚至 Flash 電影。您還可以輸出任意的文本,比如 XHTML 和 XML。

為什么使用PHP?

PHP 可在不同的平臺(tái)上運(yùn)行(Windows、Linux、Unix、Mac OS X 等)

PHP 與目前幾乎所有的正在被使用的服務(wù)器相兼容(Apache、IIS 等)

PHP 提供了廣泛的數(shù)據(jù)庫(kù)支持

PHP 是免費(fèi)的,可從官方的 PHP 資源下載它:?www.php.net

PHP 易于學(xué)習(xí),并可高效地運(yùn)行在服務(wù)器端

缺點(diǎn)

函數(shù)命名不規(guī)范 駝峰法和下滑線,傳參位置不一

單線程 PHP本身,一直以來(lái)php就是個(gè)單進(jìn)程的程序,雖然php的pthreads擴(kuò)展早就有了。但是它不夠穩(wěn)定,運(yùn)行運(yùn)行著就會(huì)莫名其妙的自己掛掉,php的擴(kuò)展都是C寫(xiě)的,這也就意味著任何一個(gè)擴(kuò)展出現(xiàn)線程競(jìng)爭(zhēng)資源控制問(wèn)題都能讓整個(gè)掛掉

核心異步網(wǎng)絡(luò)不支持(當(dāng)然在linux只有同步非阻塞網(wǎng)絡(luò)模型)。卻少了這個(gè)使得很難開(kāi)發(fā)一個(gè)能夠承受大并發(fā)的網(wǎng)絡(luò)應(yīng)用。傳統(tǒng)的網(wǎng)絡(luò)模型和io都阻塞的。這樣基本的編程的做法就是一個(gè)進(jìn)程(或者線程)響應(yīng)一個(gè)用戶鏈接請(qǐng)求。因此無(wú)法完成像實(shí)時(shí)網(wǎng)游那樣需要成千上萬(wàn)網(wǎng)絡(luò)連接的任務(wù)。盡管php也有Libevent、eio擴(kuò)展對(duì)此算是某種程度上面的彌補(bǔ),但是感覺(jué)都不是那么完善

只支持web開(kāi)發(fā),不方便做 .exe文件,不方便做桌面應(yīng)用程序. 不方便做手機(jī)程序.

不適合做爬蟲(chóng)、自動(dòng)運(yùn)行腳本.科學(xué)運(yùn)算項(xiàng)目,這語(yǔ)言基本構(gòu)架就不適合,雖然有很多方法實(shí)現(xiàn)。

后期維護(hù)困難。后期提速空間局限性較大。

JSP

JSP全稱Java Server Pages,是一種動(dòng)態(tài)網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。它使用JSP標(biāo)簽在HTML網(wǎng)頁(yè)中插入Java代碼。標(biāo)簽通常以<%開(kāi)頭以%>結(jié)束。

JSP是一種Java servlet,主要用于實(shí)現(xiàn)Java web應(yīng)用程序的用戶界面部分。網(wǎng)頁(yè)開(kāi)發(fā)者們通過(guò)結(jié)合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來(lái)編寫(xiě)JSP。

JSP通過(guò)網(wǎng)頁(yè)表單獲取用戶輸入數(shù)據(jù)、訪問(wèn)數(shù)據(jù)庫(kù)及其他數(shù)據(jù)源,然后動(dòng)態(tài)地創(chuàng)建網(wǎng)頁(yè)。

JSP標(biāo)簽有多種功能,比如訪問(wèn)數(shù)據(jù)庫(kù)、記錄用戶選擇信息、訪問(wèn)JavaBeans組件等,還可以在不同的網(wǎng)頁(yè)中傳遞控制信息和共享信息。

JSP的優(yōu)勢(shì)

與ASP相比:JSP有兩大優(yōu)勢(shì)。首先,動(dòng)態(tài)部分用Java編寫(xiě),而不是VB或其他MS專用語(yǔ)言,所以更加強(qiáng)大與易用。第二點(diǎn)就是JSP易于移植到非MS平臺(tái)上。

與純 Servlet 相比:JSP可以很方便的編寫(xiě)或者修改HTML網(wǎng)頁(yè)而不用去面對(duì)大量的println語(yǔ)句。

與SSI相比:SSI無(wú)法使用表單數(shù)據(jù)、無(wú)法進(jìn)行數(shù)據(jù)庫(kù)鏈接。

與JavaScript相比:雖然JavaScript可以在客戶端動(dòng)態(tài)生成HTML,但是很難與服務(wù)器交互,因此不能提供復(fù)雜的服務(wù),比如訪問(wèn)數(shù)據(jù)庫(kù)和圖像處理等等。

與靜態(tài)HTML相比:靜態(tài)HTML不包含動(dòng)態(tài)信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容