主流編程語言的介紹及特點
1.C/C++
一句話概括:大多數中國程序員的第一個語言
C 語言是面向過程語言在當代的魯殿靈光,常用於編寫操作系統。C++ 是 C 語言的一個超集,既有指針又有對象使它成為最復雜的語言。
C/C++ 的優勢:
幾乎所有現代編程語言都脫胎於 C/C++,因此了解了 C/C++,就了解了關於編程語言的一切,非常有利於快速掌握其他各類編程語言;C/C++ 可以被嵌入任何現代處理器中,幾乎所有操作系統都支持 C/C++,跨平台性非常好。
C/C++ 的不足:
據說 C/C++ 發明的時候為了提高入行門檻和行業收入水平刻意制造了學習難度;盡管 C 語言體型小巧,可最常使用的 C++ 規模可觀且擁有大量極為復雜的功能交互方式,容易造成資源浪費。
職業路線:
(1)首推 Unix/Linux 等操作系統軟件的開發和嵌入式開發。
(2)Android ROM 的定制,以及 Android App 的 NDK 開發。
(3)用 Cocos2d-x 開發游戲也是 C++ 程序員的好出路。
C
C 語言是一種通用的高級語言,最初是由丹尼斯·里奇在貝爾實驗室為開發 UNIX 操作系統而設計的。UNIX 操作系統,C編譯器,和幾乎所有的 UNIX 應用程序都是用 C 語言編寫的。由於各種原因,C 語言現在已經成為一種廣泛使用的專業語言。
C語言是一門面向過程的計算機編程語言,與C++、Java等面向對象編程語言有所不同。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、僅產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。C語言描述問題比匯編語言迅速,工作量小、可讀性好,易於調試、修改和移植,而代碼質量與匯編語言相當。C語言一般只比匯編語言代碼生成的目標程序效率低10%~20%。因此,C語言可以編寫系統軟件。
特點:
易於學習,進行結構化編程
c語言所產生的代碼運行速度與匯編語言編寫的代碼運行速度幾乎一樣
預編譯處理使C語言更有彈性
優點:
代碼量小
生成目標代碼質量高,運行速度快
功能強大
跨平台,可移植性強
使用指針,靈活性強
允許直接訪問物理地址,對硬件進行操作
缺點:
數據安全性有很大問題
語法限制不嚴格,映像程序安全性
指針太過靈活,初學難度有點大
c++
C++是C語言的繼承,它既可以進行C語言的過程化程序設計,又可以進行以抽象數據類型為特點的基於對象的程序設計,還可以進行以繼承和多態為特點的面向對象的程序設計。
特點:
支持數據封裝和數據隱藏
支持集成和重用
面向對象
支持多態性
C++ 是一種靜態類型的、編譯式的、通用的、大小寫敏感的、不規則的編程語言,支持過程化編程、面向對象編程和泛型編程。
優點:
類型檢查比c語言更加嚴格
增加了面向對象機制
增加了泛型編程機制
增加了函數重載和運算符重載
異常處理
提供了標准庫STL
缺點:
沒有垃圾回收機制,可能引起內存泄漏
2.Java
一句話概括:最長壽的語言
Java 是最典型的面向對象語言。Java 不僅吸收了 C++ 語言的各種優點,還摒棄了 C++ 里難以理解的多繼承、指針等坑爹概念。今明兩年畢業的大學生大多是 Java 的同齡人(1995 年)。
Java 的優勢:
Java 平台不斷迎來新功能,比如移動互聯網時代的 Android,大數據時代的 Hadoop,人工智能時代的 TensorFlow;Java 是世界上使用范圍最廣的語言——Java 環境安裝時那句 “3 Billion Devices Run Java” 誰沒見過?
Java 的不足:
國內 Java 及其衍生技術的就業環境被培訓班破壞得太厲害,培訓班 HR 曾問我:“Android 不吃香了,你能推薦幾個Hadoop 講師嗎?”Java 占用大量內存,並且啟動時間較長——搞 Android 的都被 Windows 系統中的 Android AVD 坑過。
特性:
-
純面向對象
-
支持分布式
-
跨平台,移植性強
-
是一門編譯性語言
-
支持多線程,高性能
優點:
-
面向對象
-
穩健、安全、可移植、高性能
-
跨平台
-
編譯型靜態語言
缺點:
-
編譯速度慢
3.Python
一句話概括:需要拿着游標卡尺學習的語言
Python 是一款服務器端解釋型開源非編譯腳本語言。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是 C/C++)很輕松地聯結在一起。
Python 的優勢:
Python 學習簡單,被譽為 “最易學習的語言”
Python 的不足:
Python 存在一些只在特定情況下才會出現(無法重現)的 bug
職業路線:
(1)用 Django 框架進行 Web 開發:和 Java 沒什么兩樣。
(2)用 PIL 框架進行圖形處理
(3)物聯網:Raspberry Pi 等物聯網平台都選擇了 Python 作為開發語言
(4)Python 有一個無所不能的 Hack 庫,如果認為 “打工時不可能打工的” 就去當一個自由的黑客吧
特性:
-
解釋性語言
-
擁有豐富的庫
-
跨平台
-
可移植、可擴展
-
支持GUI編程
-
可嵌入
優點:
-
簡單,易學
-
免費,開源
-
可移植性強
-
屬於解釋性的一門動態語言
-
面向對象
-
擁有豐富的庫
-
強制性縮進代碼使得代碼規范
缺點:
-
運行速度慢
-
國內市場小
-
中文資料匱乏
4.JavaScript
一句話概括:不是 Java 語言的語言。
JavaScript 是一種動態類型、弱類型、基於原型的直譯式腳本語言,也是使用頻率最高的給 HTML 網頁增加動態功能的語言。外行最常鬧的笑話是以為它是 Java 語言的分支。
JavaScript 的優勢:
作為腳本語言,JavaScript 可立即運行而無需等待服務器響應,速度非常出色;JavaScript 是動態類型語言,學習難度低。並且掌握了 JavaScript 語言就等於成為能同時開發網頁(HTML5)、后台(Node.js)、移動端(React Native、Weex)的全棧工程師。
JavaScript 的不足:
代碼在用戶電腦上運行,可能會被別有用心的壞人惡意利用;JavaScript 過於依賴瀏覽器,在不同的瀏覽器上有不同的表現。
職業路線:
(1)首選 HTML5 的初心:網站和手機站的前端頁面開發。
(2)用 Node.js 或 Bmob 雲端代碼進行后台開發
(3)基於 React Native、PhoneGap、Weex、HBuilder、AppCan 進行移動開發,只需寫一遍代碼,就有 Android 和 iOS 兩個軟件
(4)微信開發:包括微信公眾號、微信小游戲、微信小程序。不要把這個方向當成中國特色方向,國外的 Android 機也是需要 PWA開發的。
(5)如果以上四樣全能做到,那么你就是全棧工程師。
優點:
-
減少網絡數據傳輸
-
javascript可以方便的操縱HTML對象
-
支持分布式運算
缺點:
-
各瀏覽器對javascript支持程度不同
-
“web安全性”對javascript一些功能犧牲
5.SQL
一句話概括:數據庫離不開的語言
SQL 是一種專精於數據庫的特殊目的語言。用於存取數據以及查詢、更新和管理關系數據庫系統。
SQL 的優勢:
存儲過程可以重復使用, 可減少數據庫開發人員的工作量,開發速度快;SQL 可設定只有某此用戶才具有對指定存儲過程的使用權,安全性好。
SQL 的不足:
和 Java 語言的大多數設計模式一樣,SQL 開發速度是靠犧牲運行速度換來的;不同數據庫系統之間的 SQL 不能完全相互通用,可移植性差。
職業路線:
(1)掌握了 SQL 可以從事 DBA(Database Administrator,即數據庫管理員),主要負責業務數據庫從設計、測試到部署交付的全生命周期管理。
6.PHP
PHP 是一種通用開源腳本語言。語法吸收了 C 語言、Java 和 Perl 的特點,利於學習,使用廣泛,主要適用於 Web 開發領域。號稱 “世界上最好的語言”
PHP 的優勢:
PHP 學習簡單,易於快速上手;歷久彌新的 PHP 擁有龐大而活躍的官方社區,開發者面臨的大部分難題都有現成的解決方案,很多十幾年前的解決方案在當代也有指導意義。
PHP 的不足:
PHP 的運行速度比較慢;PHP 的錯誤處理機制比較糟糕,以為 PHP 需要支持大量舊版本的功能。
職業路線:
(1)適合進行 Web 開發,配合 Node.js 效果更佳。
特性:
獨特的語法:混合了c、java\perl以及php自創的新的語法
與其他編程語言相比,更快速的執行動態網頁
php支持幾乎所有流行的數據庫以及操作系統
可以用c、c++進行程序擴展
優點:
php是一個免費開源語言
開發快,運行快,語法簡單,方便學習
跨平台,效率高
具有很多成熟框架
有成熟社區支持php的開發
缺點:
php是個單進程的程序,不支持多線程
只支持做web開發,不方便做.exe問件、桌面應用程序、手機程序
不適合做爬蟲、自動運行腳本
后期維護比較困難,后期提速空間局限性大
7.C#
一句話概括:自稱不是 Java 的 Java 語言
C#是微軟看到 Java 太火了而發明的和 Java 語法差不多的語言。
C#的優勢:
C#的最大優勢在於全面集成.Net 庫,提供出色的功能與完美的庫訪問能力;VR 時代的到來讓 Unity-3d 開發者有很好的發展前景。
C#的不足:
由於集成.Net 庫造成跨平台能力太差;目前.Net 在國內就業環境不太好,收入較低。
職業路線:
(1)招聘網站上常見的 “招聘 C#開發” 和 “招聘.Net 開發” 指的都是狹義的 C#開發——基於.Net 框架的后台開發。
(2)Unity-3d 也用 C#作為開發語言,除了能開發 3D 游戲,在 VR 時代也會大放光芒。
8.JSP
JSP全稱Java Server Pages,是一種動態網頁開發技術。它使用JSP標簽在HTML網頁中插入Java代碼。
特點:
JSP可以直接在HTML網頁中動態嵌入元素
JSP 基於Java Servlet API,因此,JSP擁有各種強大的企業級Java API,包括JDBC,JNDI,EJB,JAXP等等。
JSP頁面可以與處理業務邏輯的 Servlet 一起使用,這種模式被Java servlet 模板引擎所支持。
優點:
一次編寫,到處運行。除了系統之外,代碼不用做任何更改。
跨平台,支持多種網頁格式,jsp標簽可擴展性
強大的可伸縮性。從只有一個小的Jar文件就可以運行Servlet/JSP,到由多台服務器進行集群和負載均衡,到多台Application進行事務處理,消息處理,一台服務器到無數台服務器,Java顯示了一個巨大的生命力。
具有非常多的免費優秀的開發工具,並且可以順利的運行於多平台
支持服務器端組件
缺點:
增加產品的復雜性
java的高效率運行需要占用大量的內存和硬盤空間
調試困難
9. go
go語言被設計成一門應用於搭載web服務器,存儲集群或巨型中央服務器的系統編程語言,在高性能分布式系統領域擁有着極其高效的開發效率
特點:
簡潔,快速,安全
自動垃圾回收
函數多返回值
並發編程
反射
語言交互
跨平台
開源
編譯型靜態語言
優點:
1.性能優越,go比python快30倍,比java快將近一倍
2. 編譯時間非常快
3. go編寫簡單,易於學習
4. 對 gPRC 和 protocol Buffers 具有一流支持
5. GOFMT,強制代碼格式
6. 天生支持並發編程
7. 強大的標准庫
8. 接近c的運行效率,接近php的開發效率
缺點:
沒有主要框架
錯誤處理機制太原始
垃圾回收器不完善
語法格式要求太過嚴格,禁止有未使用的變量和多余的import
對象沒有構造函數和析構函數
技術比較年輕,有待后續發展