幾種主流程式語言的優點和缺點
在初級程式設計師階段,每個人都不可避免遇到選擇程式語言和職業方向的難題。我挑選了幾個常見的程式語言,分析了優缺點和職業方向,以供想當程式設計師的人蔘考。
C/C++
一句話概括:大多數中國程式設計師的第一個語言
C語言是程式導向語言在當代的魯殿靈光,常用於編寫作業系統。C++是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++程式設計師的好出路。
Java
一句話概括:最長壽的語言
Java是最典型的面嚮物件語言。Java不僅吸收了C++語言的各種優點,還摒棄了C++裡難以理解的多繼承、指標等坑爹概念。今明兩年畢業的大學生大多是Java的同齡人(1995年)。
Java的優勢:Java平臺不斷迎來新功能,比如移動網際網路時代的Android,大資料時代的Hadoop,人工智慧時代的TensorFlow。
Java的不足:國內Java及其衍生技術的就業環境被培訓班破壞得太厲害,培訓班HR曾問我:“Android不吃香了,你能推薦幾個hadoop講師嗎?”
Java的優勢:Java是世界上使用範圍最廣的語言——Java環境安裝時那句“3 Billion Devices Run Java”誰沒見過?
Java的不足:Java佔用大量記憶體,並且啟動時間較長——搞Android的都被Windows系統中的Android AVD坑過。
職業路線:
(1)招聘網站上常見的“招聘Java開發”指的就是狹義的Java開發——基於JavaEE的後臺開發,以前一度流行過SSH框架和SSM框架,現在入門建議學習SpringMVC框架。
(2)在移動網際網路時代,Java可用於Android App開發。但Java之於Android的地位可能被Kotlin取代,並且近年培訓班造成了低水平Android程式設計師的泛濫。
(3)在大資料時代,Java可用於Hadoop的開發,前景非常廣闊,但可能有氾濫的趨勢。
(4)在人工智慧時代,Java可用於TensorFlow深度學習的開發。
C#
一句話概括:自稱不是Java的Java語言
C#是微軟看到Java太火了而發明的和Java語法差不多的語言。
C#的優勢:C#的最大優勢在於全面整合.Net庫,提供出色的功能與完美的庫訪問能力。
C#的不足:由於整合.Net庫造成跨平臺能力太差。
C#的優勢:VR時代的到來讓Unity-3d開發者有很好的發展前景。
C#的不足:目前.Net在國內就業環境不太好,收入較低。
職業路線:
(1)招聘網站上常見的“招聘C#開發”和“招聘.Net開發”指的都是狹義的C#開發——基於.Net框架的後臺開發。
(2)Unity-3d也用C#作為開發語言,除了能開發3D遊戲,在VR時代也會大放光芒。
JavaScript
一句話概括:不是Java語言的語言。
javascript是一種動態型別、弱型別、基於原型的直譯式指令碼語言,也是使用頻率最高的給HTML網頁增加動態功能的語言。外行最常鬧的笑話是以為它是Java語言的分支。
JavaScript的優勢:作為指令碼語言,JavaScript可立即執行而無需等待伺服器響應,速度非常出色。
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)如果以上四樣全能做到,那麼你就是全棧工程師。
SQL
一句話概括:資料庫離不開的語言
SQL是一種專精於資料庫的特殊目的語言。用於存取資料以及查詢、更新和管理關聯式資料庫系統。
SQL的優勢:儲存過程可以重複使用,可減少資料庫開發人員的工作量,開發速度快。
SQL的不足:和Java語言的大多數設計模式一樣,SQL開發速度是靠犧牲執行速度換來的。
SQL的優勢:SQL可設定只有某此使用者才具有對指定儲存過程的使用權,安全性好。
SQL的不足:不同資料庫系統之間的SQL不能完全相互通用,可移植性差。
職業路線:
(1)掌握了SQL可以從事DBA(Database Administrator,即資料庫管理員),主要負責業務資料庫從設計、測試到部署交付的全生命週期管理。
Python
一句話概括:需要拿著遊標卡尺學習的語言
python是一款伺服器端解釋型開源非編譯指令碼語言。它常被暱稱為膠水語言,能夠把用其他語言製作的各種模組(尤其是C/C++)很輕鬆地聯結在一起。
Python的優勢:Python學習簡單,被譽為“最易學習的語言”
Python的不足:Python存在一些只在特定情況下才會出現(無法重現)的bug
職業路線:
(1)用Django框架進行Web開發:和Java沒什麼兩樣。
(2)用PIL框架進行圖形處理
(3)物聯網:Raspberry Pi等物聯網平臺都選擇了Python作為開發語言
(4)Python有一個無所不能的Hack庫,如果認為“打工時不可能打工的”就去當一個自由的黑客吧
PHP
一句話概括:世界上最好的語言
php是一種通用開源指令碼語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。號稱“世界上最好的語言”
PHP的優勢:PHP學習簡單,易於快速上手。
PHP的不足:PHP的執行速度比較慢。
PHP的優勢:歷久彌新的PHP擁有龐大而活躍的官方社群,開發者面臨的大部分難題都有現成的解決方案,很多十幾年前的解決方案在當代也有指導意義。
PHP的不足:PHP的錯誤處理機制比較糟糕,以為PHP需要支援大量舊版本的功能。
職業路線:
(1)適合進行Web開發,配合Node.js效果更佳。
Objective-C和Swift
一句話概括:被培訓班害苦了的語言
objective-c和swift都是OS X和ios系統上的專用語言。Objective-C在三年前是國內收入最高的語言,從去年開始大量培訓班輸出了一大堆“三年經驗”的速成“iOS工程師”成了脈脈匿名區的笑話。
Objective-C的優勢:蘋果提供了豐富的工具和庫以便開發者使用Objective-C開發軟體。
Objective-C的不足:Objective-C擁有自己獨特的程式設計方法思路,與其他程式語言思路差別較大。
Swift的優勢:隨著時間推移,Swift在iOS和OS X軟體中佔的程式碼比例會越來越多。
Swift的不足:版本更迭太快,不同版本差別過大,近年發生過幾次“從精通到重新入門”的情況。
Objective-C和Swift的優勢:因為僅需要在少數平臺上執行,不容易遇到相容性問題。
Objective-C和Swift的不足:這倆語言的就業環境被培訓班徹底毀了,現在才開始學這兩種語言可能會有像2007年6000點時入市的散戶的結局。
職業路線:
(1)這兩種語言都是專為iOS和OS X服務的,入行前記得先準備一臺蘋果電腦和蘋果開發者賬號。近年培訓班造成了低水平Objective-C和Swift程式設計師的泛濫。
Kotlin
一句話概括:執行在JVM但不是Java的語言
Kotlin 是最新問世的一個基於JVM的程式語言,專用於開發Android。
Kotlin的優勢:和Java的互操作性極佳。其他JVM語言都實現了自己語言的標準庫。而Kotlin則使用Java的標準庫,只是對其進行了擴充。更輕巧,Apk更小。
Kotlin的不足:同時可能也繼承了Java比較坑爹的東西。
Kotlin的優勢:因為弱化了資料型別,學習成本較Java低。
Kotlin的不足:能且僅能在Android Studio 3.0上執行,這點有點像易語言。
職業路線:
(1)只能用來開發Android。即使你想幹點別的,除了Android Studio 3.0 還有別的編譯器嗎?
相關文章
- 幾種程式語言的優缺點
- Bash 和 Python 程式語言優缺點分析Python
- 通天塔導遊:各種程式語言的優缺點
- 幾款主流PHP框架的優缺點評比PHP框架
- 各大程式語言優缺點對比
- [轉載]通天塔導遊:各種程式語言的優缺點
- Oracle幾種表的優缺點總結Oracle
- 四大主流PHP框架的優點和缺點總結PHP框架
- Python語言的優缺點詳解!Python
- 繼承的優點和缺點繼承
- 和程式設計師約會的優點和缺點程式設計師
- 關於Python程式語言不得不說的優缺點!Python
- Java裡連線字串的幾種方式以及優缺點Java字串
- 執行緒和程式的優缺點執行緒
- 純函數語言程式設計的缺點函數程式設計
- JavaScript繼承的多種方式和優缺點JavaScript繼承
- mysql和Oracle的特點,優缺點MySqlOracle
- 6 大主流 Web 框架優缺點對比Web框架
- 主流Jquery彈出框優缺點對比jQuery
- 51. ajax幾種請求方式?他們的優缺點?
- iframe有哪些優點和缺點?
- 主流程式語言的介紹及特點
- css實現三欄佈局的幾種方法及優缺點CSS
- Java單例模式:缺點和優點Java單例模式
- JavaScript 深入之繼承的多種方式和優缺點JavaScript繼承
- JavaScript深入之繼承的多種方式和優缺點JavaScript繼承
- 資料庫索引的作用和優點缺點資料庫索引
- HTTP和RPC的優缺點HTTPRPC
- Python語言的前景、方向、優缺點、就業情況分析Python就業
- Docker的優缺點Docker
- 侃一侃主流的程式語言都各自有何特點?
- 節點快取的優缺點快取
- MyBatis的優缺點以及特點MyBatis
- 併發程式設計的優缺點程式設計
- RabbitMQ優缺點MQ
- js建立物件的各種方法以及優缺點JS物件
- 遊戲運營的十八種活動及優缺點遊戲
- ERP系統有哪些優點和缺點?