主流編程語言的介紹及特色javascript
1.C/C++php
一句話歸納:大多數中國程序員的第一個語言前端
C 語言是面向過程語言在當代的魯殿靈光,經常使用於編寫操做系統。C++ 是 C 語言的一個超集,既有指針又有對象使它成爲最複雜的語言。java
C/C++ 的優點:python
幾乎全部現代編程語言都脫胎於 C/C++,所以瞭解了 C/C++,就瞭解了關於編程語言的一切,很是有利於快速掌握其餘各種編程語言;C/C++ 能夠被嵌入任何現代處理器中,幾乎全部操做系統都支持 C/C++,跨平臺性很是好。c++
C/C++ 的不足:程序員
聽說 C/C++ 發明的時候爲了提升入行門檻和行業收入水平刻意製造了學習難度;儘管 C 語言體型小巧,可最常使用的 C++ 規模可觀且擁有大量極爲複雜的功能交互方式,容易形成資源浪費。web
職業路線:數據庫
(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
對象沒有構造函數和析構函數
技術比較年輕,有待後續發展
本文同步分享在 博客"泰斗賢若如"(CNBlog)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。