C語言:
C語言是介於匯編語言和高級語言之間的語言,屬於高級語言,也稱為中級語言,是集匯編和高級語言優點於一身的程序設計語言。於1972年在美國貝爾實驗室里問世。早期的C語言主要用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了九十年代,C語言開始進入其他操作系統,並很快在各類大、中、小和微型計算機上得到廣泛的應用。成為當代最優秀的程序設計語言之一。
C的特點
1. 是一種結構化語言。層次清晰,便於按模塊化方式組織程序,易於調試和維護。
2. C語言的表現能力和處理能力極強。不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構,它還可以直接訪問內存的物理地址,進行位級別的操作。
3. 由於C語言實現對硬件的編程操作,所以既可用於系統軟件的開發,也適合於應用軟件的開發。C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類計算機上,從而形成了多種版本的C語言。
4. 由於C語言允許直接對位、字節和地址進行操作,能實現匯編語言的大部分功能。
5. 目標代碼質量高,程序執行效率高。
總體上來說,C語言的優點是簡潔、緊湊、使用方便、靈活、易於學習和應用。僅有32個關鍵字。9種控制語句,程序的書寫形式也很自由。
C語言的弱點:非強類型;語法限制不嚴格,使得編程者無法過多地依賴C編譯程序去查錯;缺少實時檢查,如數組越界等。
從嚴格上來說,C語言是塊結構語言,這是因為它在結構上類似於ALGOL、Pascal和Modula-2。從技術上講,塊結構語言允許在過程和函數中定義過程和函數。因為C語言不允許在函數中定義函數,所以不能稱為通常意義上的塊結構語言。
C語言作為一門面向過程的計算機語言,至今已有三十多年歷史,應用廣泛,無論是Windows還是Linux,你所看到的底層都是用C寫的。大部分的網絡協議也都是用C實現的。你看到的最漂亮的游戲畫面也是用C實現的,工業控制程序也是用C實現的。不過C不是萬能,只是某些方面它適用而已。
C++語言
C++是於1986年由AT&T貝爾實驗室開發的,語言開發的目的在於通過數據封裝減少程序變量的副作用,從而降低程序的復雜性並提高程序的可靠性。(筆者曾經聽到的開發C++的目的是由於懂得C語言的人越來越多,所以需要再出一門更難的、比C語言強大的語言,才能保住飯碗,so。C++出世啦)C++是C語言的直接擴展,C++的多繼承機制能更好地描述對象的屬性和行為。
C++是C的擴展,但C++可以作為一種全新的語言來看。
C++的特點:面向對象、繼承、封裝、多態性。
由於C++是C的擴展,所以也具有C的特點。
C++在C的基礎上,加入了面向對象編程思想,也就決定了C++的效率在某一方面是不如C的。比如定義一種類型,C++用類(Class)來封裝,而C可能就直接幾個變量的組合就成了一個結構體(Struct),類不僅具有成員變量,還具有成員函數等,在精細的比較其效率時,C會比C++的效率要高。但由於時代的發展,項目或工程的龐大化,基於面向對象的思想顯然更能適應。即C++在這方面能比C要做得更漂亮。現在不少系統級編程都是用C++實現,許多應用級別的軟件也是用C++實現。
這里要注意一點,就是C++並不是完全的面向對象語言。它是提供了面向對象的模型以及思路,但是同時兼容了面向過程的模型。
Java語言
Java語言來自於Sun公司的一個叫Green的項目,其原先的目的是為家用消費電子產品開發一個分布式代碼系統,這樣我們就可以把email發給電冰箱、電視機等家用電器。對他們進行控制和信息交流。開始,准備用C++,但C++太復雜,安全性差,最后用一種新的語言Oak(Java的前身),Oak是一種用於網絡的精巧而安全的語言,Sun公司曾依此投標一個交互式電視項目,但被SGI打敗。可憐的Oak幾乎無家可歸,恰巧這時Mark Ardreesen開發的Mosaic和Netscape啟發了Oak項目組成員,他們用(Java)編制了HotJava瀏覽器,得到了Sun首席執行官Scott McNealy的支持,觸發了Java進軍Internet。Java的取名有一段趣聞:有一天,幾位Java成員組的會員正在討論給這個新的語言取什么名字,當時他們正在咖啡館喝着Java(爪哇)咖啡,有一個人靈機一動說就叫Java怎樣,得到了其他人的贊賞,於是,Java這個名字就這樣傳開了。
Java的特點:
1. 簡單性:風格類似於C++,Java摒棄了C++中容易引發程序錯誤的地方,如指針和內存管理。
2. 面向對象:Java是一種完全面向對象語言。從這點來看,Java類似於SmallTalk,但其特性、尤其是適用於分布式計算環境的特性遠遠超越了SmallTalk。
3. 分布式:Java包括一個支持HTTP和FTP等基於TCP/IP協議的子庫。因此,Java應用程序可憑借URL打開並訪問網絡上的對象,其訪問方式與訪問本地文件系統幾乎完全相同。
4. 健壯:Java致力於檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發早期出現的錯誤。Java自己操縱內存減少了內存出錯的可能性。
5. 結構中立:Java將程序編譯成一種結構中立的中間文件格式。只要有Java運行系統的機器都執行這種中間代碼。這種中間語言被設計在虛擬機上運行,由機器相關的運行調試器實現執行。
6. 安全:
1)刪除了香指針和手動釋放內存等功能,避免了非法內存操作。
2)當Java用來創建瀏覽器時,語言功能和瀏覽器本身提供的功能結合起來。
Java在機器上執行前,要經過很多測試,它經過代碼校驗,檢查代碼段的格式,檢測指針操作,對象操作是否過分以及試圖改變一個對象的類型。
7. 可移植的:同體系結構無關的特性使得Java應用程序可以在配備Java解釋器和運行環境的任何計算機系統上運行。任何Java代碼會被解釋成一種中間語言,然后通過不同機子的特定環境(如機器指令)運行程序。實現方便移植的特點。
8. 解釋性。Java解釋器能直接運行目標代碼指令。鏈接程序通常比編譯程序所需資源少。
9. 高性能。如果解釋器速度不慢,Java可以在運行時直接將目標代碼翻譯成機器指令。Sun用直接解釋器一秒鍾內可調用300,000個過程。
10. 多線程:Java提供的多線程功能使得在一個程序里可同時執行多個小任務。多線程帶來的更大好處是更好的交互性能和實時控制性能。
11. 動態:動態特性允許程序動態地裝入運行過程中所需要的類。在運行時確定引用的好處是可以使用已被更新的類,而不必擔心會影響原有的代碼。如果程序連接了網絡中另一系統中的某一類,該類的所有者也可以自由地對該類進行更新,而不會使任何引用該類的程序崩潰。
Java在誕生之后不久,便受到廣大群眾的歡迎,甚至有人說出有了Java,可以不要C/C++了。一度把Java提到了很高的地位。這當然是對Java的一種贊賞,只是有點過了。到今天,Java依然不能取代C,C++,而且還出現了新的對手――.Net(后面將會介紹)。
Java目前主要應用:Web瀏覽器、網絡應用系統。
C#語言。
C#是一種精確、簡單、類型安全、面向對象的語言。說到C#,就不得不先簡單介紹一下.net。到底什么是.net呢,按照微軟總裁兼首席執行官Steve Ballrner把它定義為:.Net代表一個集合,一個環境,它可以作為平台支持下一代Internet的可編程結構。C#是.net的代表語言。
C#的特點:
1. 完全面向對象。
2. 支持分布式,之所以有C#,是因為微軟相信分布式應用程序是未來的趨勢,即處理過程分布在客戶機和服務器上。所以C#一出生就注定了能很好解決分布式問題。
3. 跟Java類似,C#代碼經過編譯后,成為了一種IL(中間語言)。在運行時,再把IL編譯為平台專用的代碼。
4. 健壯,C#在檢查程序錯誤和編譯與運行時錯誤一點也不遜於Java,C#也用了自動管理內存機制。
5. C#不像Java那樣完全摒棄了指針和手動內存管理。C#默認情況下是不能使用指針的,程序員在有必要時可以打開指針來使用。這樣可以保證編程的靈活性。
6. 安全性:C#的安全性是有.net平台來提供的。C#代碼編譯后成為IL語言。是一種受控代碼,.net提供類型安全檢查等機制保證代碼是安全的。
7. 可移植性:由於C#使用類似Java的中間語言機制。使得C#也跟Java類似,可以很方便的移植到其他系統。在運行時,再把中間代碼編譯為適合特定機器的代碼。
8. 解釋性:C#也是一種特殊的解釋性語言。
9. 高性能:C#把代碼編譯成中間語言后,可以高效的執行程序。
10. 多線程:與Java類似,可以由一個主進程分出多個執行小任務的多線程。
11. 組件模式:C#很適合組件開發。各個組件可以由其他語言實現的,然后集成在.net中。
C#是在Java流行起來后所誕生的一種新的語言。由於微軟在操作系統上占有很大的優勢。在以往的開發中累積了不少經驗,所形成的.net平台,所以C#在Windows方面可以說比Java具有更大的優勢。如果單純從技術上來講,C#在網絡編程上可以與Java匹敵。C#還在Windows Forms也有一定的優勢。
C#是一種非常類似於C++的語言,風格是更接近於Java,不管是C++程序員還是Java程序員,都可以很方便的轉到C#上來。
C#的強大是依賴於.net的發展,而.net的發展是看微軟在.net上的決心和投入有多少。從Windows 2003和Vista系統可以看出(前者內置.net1.1,后者內置.net2.0。).Net在Windows編程中具有重要的戰略意義。
C#目前主要是應用在網絡編程上,其他領域比如數據庫、窗體編程,都逐漸在增大。
一句話概括:需要拿着游標卡尺學習的語言
Python 是一款服務器端解釋型開源非編譯腳本語言。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是 C/C++)很輕松地聯結在一起。
Python 的優勢:
Python 學習簡單,被譽為 “最易學習的語言”
Python 的不足:
Python 存在一些只在特定情況下才會出現(無法重現)的 bug
職業路線:
(1)用 Django 框架進行 Web 開發:和 Java 沒什么兩樣。
(2)用 PIL 框架進行圖形處理
(3)物聯網:Raspberry Pi 等物聯網平台都選擇了 Python 作為開發語言
(4)Python 有一個無所不能的 Hack 庫,如果認為 “打工時不可能打工的” 就去當一個自由的黑客吧
特性:
-
解釋性語言
-
擁有豐富的庫
-
跨平台
-
可移植、可擴展
-
支持GUI編程
-
可嵌入
優點:
-
簡單,易學
-
免費,開源
-
可移植性強
-
屬於解釋性的一門動態語言
-
面向對象
-
擁有豐富的庫
-
強制性縮進代碼使得代碼規范
缺點:
-
運行速度慢
-
國內市場小
-
中文資料匱乏