哪種編程語言最有「錢途」?

科學技術工程數學(STEM)人才供不應求、薪水豐厚,這早已不是什麼新聞。2007年至2012年,美國網上發布的軟體工作崗位增加了31%,增長速度是總體工作崗位的近3倍。美國勞工統計局可能,從2012年至2022年,軟體開發員崗位會繼續以22%的速度增加,截至2014年5月,應用軟體開發員的中位數年薪就達到95510美元。

如果你打算學習如何編寫代碼,會發現編程語言的絕對數量多得驚人,到底該學習哪門語言呢?本文比較了與不同編程語言有關的薪水、人氣和就業前景,希望對你有一些幫助。

哪種編程語言最有「錢途」?

編程語言概述

哪種編程語言最有「錢途」?

在我們開始比較編程語言之前,不妨先看一下將要介紹的幾門語言。

動態類型語言

通常認為動態類型語言對非編程人員來說更容易學用,因為它們很靈活。你不需要編寫太多行代碼,就能迅速從頭開始構建起一個應用程序;也沒有硬性規定表明如何編寫代碼,才能讓代碼以你想要的方式運行。動態類型語言常常是解釋型(非編譯),這意味著運行中的應用程序可迅速體現你所作的變化,可以為你節省時間。

一般來說,Web應用程序通常是用動態語言編寫的。

JavaScript


哪種編程語言最有「錢途」?

別將JavaScript與Java混為一談;JavaScript主要是一種客戶端腳本語言,用於前端開發。JavaScript在所有瀏覽器之間相互兼容,用來構建交互式Web應用程序,常常通過代碼庫(比如jQuery)和前端框架(比如AngularJS、Ember.js、React及更多框架)來構建。

JavaScript現在還可以通過Node.js平台,用作一種服務器端語言。雖然Node.js比較新,但社區的發展勢頭很猛。你還可以通過使用PhoneGap之類的框架,借助JavaScript來構建混合移動應用程序,而Facebook的React Native旨在讓你可以借助JavaScript來構建原生移動應用程序。

捎帶提一下,Facebook的React還支持JSX,這種JavaScript語法擴展可以像JavaScript那樣編譯。

Ruby


哪種編程語言最有「錢途」?

Ruby旨在讓開發員在高效工作的同時享有樂趣,它因Ruby on Rails框架而流行起來,這種全堆棧Web框架經過了優化,確保編程過程中不失樂趣。由於Ruby與英語語法很相似,Rails又有讓常見開發任務「在默認情況下」更容易完成的工具,許多人會建議將Ruby選為你的第一種編程語言。

Ruby最常用於後端開發;像Airbnb、Shopify、彭博社(Bloomberg)、Hulu、Slideshare及更多熱門網站就是用Ruby on Rails構建的。

Python

哪種編程語言最有「錢途」?

Python是強烈建議初學者上手的另一種語言,它也是美國知名大學最流行的入門語言。開發員使用Python來構建桌面應用程序和Web應用程序,它還有用於數據挖掘的優秀工具。此外,Python在學術界尤其備受歡迎,用於科學計算、數據分析和生物信息學等領域。

Google、Dropbox、Pinterest、Instagram、Reddit、BitTorrent、Civilization IV及更多網站就是用Python構建的。

PHP


哪種編程語言最有「錢途」?

PHP是一種服務器端腳本語言,通常被認為適合初學者上手,因為PHP代碼要完成的任務比較容易概念化,所以學起來不難上手。大多數網站是用PHP構建的,因為這種語言專門面向Web。

Facebook、維基百科、雅虎、Tumblr、WordPress及更多網站就是用PHP構建的。

靜態類型語言

眾所周知,用靜態類型語言構建的應用程序更易於擴展、更穩定、更易於維護。靜態語言通常比較苛嚴(通過類型檢查來發現錯誤),需要編寫更多的代碼來構建原型。遊戲引擎、移動應用程序和企業級後端通常是用靜態類型語言構建的。

Java


哪種編程語言最有「錢途」?


作為一種通用語言,Java用來構建安卓應用程序、桌面應用程序和遊戲。Java還常常用作一種服務器端語言,面向企業級後端開發:《財富》500強公司中90%使用Java。

此外,Hadoop是一種廣為流行的基於Java的框架,用來存儲和處理大數據,雅虎、Facebook和亞馬遜網路服務(AWS)等知名企業實施了該框架。

C


C常常用來編寫系統軟體,是諸多操作系統的通用語。

C影響了我們在本文中要介紹的幾乎所有編程語言,尤其是Objective-C和C++。所以,如果你很熟悉C,其他流行語言學起來恐怕難度不大。由於C需要編寫更複雜的代碼來執行簡單任務,如果初學者選擇它作為第一種語言,可能很難保持十足的勁頭。不過,掌握C方面的知識對於編程工作肯定大有幫助。

Objective-C / Swift(面向iOS開發)


哪種編程語言最有「錢途」?

Objective-C是基於C語言上的一層,讓它具有靜態性,但它也可以用於動態類型。蘋果的Swift是一種靜態語言,旨在與Objective-C兼容,但其靜態類型讓它對錯誤有更強的適應性。

Swift的靈感源自Python,旨在讓編程新手易學易用。由於Swift比較新,我們在本文中主要介紹Objective-C。

C++


C++是一種基於C的強大語言。它是為編寫系統軟體而設計的,不過也用來構建遊戲/遊戲引擎、桌面應用程序、移動應用程序和Web應用程序。C++功能強、速度快,所以連Facebook也用它開發了幾個高性能高可靠性的組件。

許多款軟體是用C++構建的,包括Adobe Systems、Amazon、Paypal、Chrome及更多軟體。C++酷似C,通常被認為初學者自學起來比較難。

C#


C#是為了用於微軟的.NET框架而開發的,這種框架主要在微軟Windows上運行。

C#用於Web開發、遊戲開發和一般的微軟開發。雖然微軟在過去並不以跨平台兼容出名,不過初創公司Xamarin也在開發一個名為Mono的開源項目,旨在將C#移植到其他平台上,為廣大Linux開發員帶去更好的開發工具。最近,你還可以通過Xamarin,使用C#來構建面向iOS和安卓的原生移動應用程序。

其他語言

SQL


哪種編程語言最有「錢途」?


SQL(結構化查詢語言)是一種用來與數據庫進行聯繫的查詢語言。雖然SQL無法用來構建應用程序,但可以用來管理使用關係數據庫管理系統(RDBMS)的應用程序中的數據。

哪種編程語言最有「錢途」?

就業機會

哪種編程語言最有「錢途」?

好了,現在你對編程語言有了一點了解,可能對它們所謂的難度也有了一點了解。不過,並非所有語言都有一樣的需求或薪水。如果你學習編程的目的是獲得就業機會,也不會被別人說某種語言學起起來多難打消念頭,下面這些可以幫助你弄清楚應該學哪種語言。

從來自indeed.com網站分析招聘廣告的薪水可能數來看,我們基本上可以將編程語言分為六檔:

哪種編程語言最有「錢途」?

從這個結果來看,似乎Objective C的吸金能力最強,而Java、Ruby、Python、C++和C也是不錯的選擇。此外,如果薪水是你關注的方面,那麼JavaScript、C#、SQL和PHP似乎不是理想的選擇。

平均薪水會受到許多因素的影響,比如需求(有多少工作崗位)、供給(有多少開發員掌握該語言),以及資歷(初級開發員的薪水自然低於高級開發員),所以有必要在下任何結論之前,更深入地分析一下這些因素。

就業趨勢

憑借你熟悉的那種編程語言,找到工作的可能性有多大?這裡簡要分析了來自indeed.com的就業趨勢:

哪種編程語言最有「錢途」?

我們可以從中看到,Java、JavaScript和SQL這三類開發員供不應求。尤其是,JavaScript在這幾年的發展相當迅猛,它在2010年超過了C#,如今與Java不相上下。

相比其他語言,面向C#開發員的工作崗位仍很多;對其他開發員的需求似乎相差無幾。C++開發員的相對需求有所減少。

不過,如果你的目的是供職於初創公司,那麼來自indeed.com的就業趨勢不是準確的指標。AngelList可以說是初創公司發布工作崗位的首選網站,於是我們根據AngelList上的軟體開發員廣告,分析一下對編程技能的需求。

哪種編程語言最有「錢途」?

同樣,JavaScript是需求量最大的技能,但初創公司似乎更青睞Python和Ruby(on Rails),而不是Java、C、C++或C#。

開發員供給市場

不妨看一下在線編程教練平台Codementor上的教練們擅長哪種語言:

哪種編程語言最有「錢途」?

當然,這絕對無法正確反映實際市場,但是應該讓你可以大致了解情況。如你所見,Objective-C專家非常稀缺,不過這一段時間來,移動應用程序行業一直很火爆。由於優秀的Objective-C開發員供不應求,他們的薪水自然比較高。

另一方面,PHP方面的人才似乎供給充足,這意味著雇主們會有更多的選擇,因而在薪水方面有更大的議價能力,但是我們發現它的需求量不如Java、SQL或JavaScript來得大。因此,PHP開發員的薪水較低。

JavaScript的情況比較特殊。盡管人才供給最多,但它在薪水檔次中並非墊底,我們會在文章後面分析一下JavaScript。

薪水區間

你已大致了解了每種語言的供需情況,不妨根據來自工作廣告的薪水信息,看一下你有望獲得的潛在薪水。數據基於來自gooroo.io的數據,薪水通常作為每份工作廣告提供的薪水區間的平均值而獲得。

哪種編程語言最有「錢途」?

你在這裡可以看到,熟悉Python、Ruby、C++或Objective C的開發員似乎有更高的起薪,但是漲薪空間也比較有限。Python和C++往往處於潛在薪水區間的較高端。

Java和JavaScript的最低所出薪水與最高所出薪水之間的差異都很大。尤其是,截至2015年4月,JavaScript為熟練開發員提供的潛在薪水最高,目前為188168美元。

特殊情況:JavaScript框架

從上述數據來看,我們知道,JavaScript開發員需求量很大,他們也有最高的潛在薪水,所以JavaScript開發員之間的標準差相當大。因而,僅僅拿JavaScript語言與其他編程語言作一番比較無法準確反映出如果你掌握JavaScript,能拿多少薪水。

正如在編程語言概述中提到的,JavaScript是一個大類。許多框架是為了便於前端網站開發而開發的,所以如果你光知道JavaScript和jQuery,所拿的薪水可能不如熟知JavaScript框架的其他JavaScript開發員。

不妨看一下美國不同JavaScript框架開發員的平均薪水(React和Backbone是庫,而不是框架):

哪種編程語言最有「錢途」?

當然,這僅僅供你了解概況,indeed.com的可能數略有不同。不過,我們可以從這裡看到,熟知這些框架的開發員的薪水平均超過102000美元。只有掌握了JavaScript才能學習這些框架,因而掌握JavaScript是一項相當有「錢途」的技能。

再不妨看一下對掌握這些框架的開發員的需求:

哪種編程語言最有「錢途」?

Node.js是一種後端平台,如果如果僅僅說到前端框架,你能看到AngularJS顯然是贏家,需求猛增。因而,如果你想從事前端JavaScript開發,也許應該學習AngularJS。

另一方面,React是一項相當新的技術,所以它仍處於起勢的階段,可能會變得更搶手。從indeed.com來看,React開發員的平均薪水為117000美元。

哪種編程語言最有「錢途」?

編程資源

哪種編程語言最有「錢途」?

如果你對開發界有所了解,那麼可能知道得到其他開發員的幫助確實很重要、很有幫助,如果你打算自學的話更是如此。

加入相互幫助的社區無疑會你讓未來的開發工作變得更輕鬆。

StackOverflow

StackOverflow是全球廣大開發員使用的最大的開發者社區,旨在幫助其他編程員或得到他們的幫助,所以我們自然會分析一種編程語言有多流行,同時也會分析這些語言的相應社區幫助有多大。

語言的人氣

從StackOverflow上的標籤關注者(tag follower)來看,我們能看出一種語言在當下的總人氣:

哪種編程語言最有「錢途」?

我們在分析就業趨勢後已經知道,Java和JavaScript開發員的需求量最大,所以它們的標籤關注者最多也就不足為奇。尤其是,Java仍是StackOverflow中使用最多的標籤,不過JavaScript似乎很有希望超過它。

SQL、Ruby和Objective-C的關注者數量最少。由於蘋果發布了Swift,Objective-C在今後幾年可能發展有限。

StackOverflow回答率

StackOverflow有一條不成文的規定:你提出的問題得「措辭得當」,否則別人懶得回答。考慮到這一點,不妨看一下就每種語言而言你的問題被回答的可能性有多大:

哪種編程語言最有「錢途」?

從上述信息來看,雖然較少的StackOverflow用戶關注C、SQL和C++,但60%以上的相關問題得到了回答。那些懂行的人可能認為,C和C++是高級語言,這意味著提問題的用戶可能在編程方面比較有經驗,知道如何以更適當的措辭提問題。另一方面,SQL並不用來構建應用程序。

值得一提的是,StackOverflow上的Python專家非常樂於助人。誰都知道初學者正確地提問題有難度;如上所述,Python常常是推薦初學者上手的語言。不過,盡管如此,盡管是一種比較受歡迎的語言,Python在30天內的回答率仍超過60%。(Python的頭號回答者Martijn Pieters也是Codementor編程教練。)

另一方面,雖然PHP是一種受到廣泛關注的語言,卻是回答率最低的語言之一。這意味著,許多人在提PHP方面的問題,但不是很多人的問題得到了回答。

Github

一旦你從事開發工作,最終會明白:盡量最好為你自己的項目使用現有的解決方案。你通常可以從開源項目得到現有解決方案,而Github就是絕佳去處。用戶可以啟動自己喜歡的項目,項目的星數越多,它可能越有用。

因而,分析來自Github的數據後,我們還能確定使用不同類型的語言開發項目的相對容易程度。我們還了解了一種語言在多快地推出創新的新技術。言歸正傳,下面這個簡單圖形可以表明Github流行項目的分布情況:

哪種編程語言最有「錢途」?

很顯然,JavaScript是最耀眼的新工具,即使你不考慮所有的風格指南和教程。眾所周知,JavaScript是一種發展極快的語言,就框架和新技術而言流失率很高,以至於開發員可能覺得難以跟上JavaScript不斷創新的步伐。此外,除了Node.js平台外,JavaScript主要用於前端開發,所以它與Ruby、Python、Java和PHP之類的其他後端語言並不直接「競爭」。有鑒於此,難怪JavaScript與其他編程語言之間會存在如此大的差距。

另一方面,Ruby和Objective-C也有許多開發工具和資源。有意思的是,我們在 StackOverflow比較中可以看出,這兩種語言都不如Java之類的語言來得流行,但開發員通常覺得開源項目更有用。如果你仔細看一下用每種語言編寫的總體項目,這對Objective-C來說尤為如此:

哪種編程語言最有「錢途」?

此外,用C/C++編寫的大多數開源項目並非面向C/C++開發本身――它們就是為了幫助普通開發而編寫的工具(比如說,最常用的Python解釋器是CPython,它是用C編寫的)。正如在編程語言引言部分中提到,C/C++用來開發系統應用程序,所以Github上的開源項目是系統應用程序有其道理。不過,你可以從開源項目中學到好多東西。

最後,盡管是一種廣泛使用的語言,但PHP在可用資源方面處於落後。至於C#,微軟並不以開源做法出名。

哪種編程語言最有「錢途」?

各種編程語言的前景

哪種編程語言最有「錢途」?

一種編程語言在未來有多重要?從目前已了解的趨勢來看,我們可以得到下列結論:

JavaScript

毫無疑問,JavaScript只會變得越來越流行,尤其是鑒於它可用於後端開發,甚至有可能構建原生移動應用程序(通過React Native)。JavaScript繼續以相當快的步伐獲得更多的工具和更新版,所以可以預計它在將來仍會極其重要。

Ruby

初創公司鐘愛Ruby on Rails。Airbnb、Twitch和Hulu等許多知名網站都是用Rails構建的,這意味著它們會需要Ruby開發員。此外,由於開發員以使用Rails為樂,又很容易上手,Rails會繼續受到編程新手們的追捧。

話雖如此,強勢崛起的Node.js肯定會對Ruby on Rails的人氣有所影響――Node.js在Github上已經趕超Rails。雖然這並不絕對表明Node.js會趕超Rails,但是我們應該指出,幾年前,Rails同樣趕超了Python最大的後端開發Web框架Django,而Rails的星數多過Django。

此外,「同構」(isomorphic)應用程序這股新趨勢可能會影響Rails的採用,因為據說這種開發方法可改善Web應用程序的性能。同構應用程序基本上需要在Node.js平台上運行,這個平台是用JavaScript編寫的。只要精通一種語言(JavaScript)的好處也許會讓一些潛在的新手不學Ruby。Google的Go也是得到一些人關注的另一種後端語言。

然而,由於Rails繼續經常得到更新版,它在一段時期內仍然很重要,尤其是由於它有一個忠誠的社區,成千上萬的實用工具有助於簡化開發工作。因而,盡管人氣下降,但Ruby仍會堅守地盤。

Python

Python頗受學術研究人員和數據科學家的歡迎;如前所述,許多學校選擇通過Python讓初學者學習編程知識。這意味著,Python會繼續穩步發展,依然很重要。因此,雖然Python不會像JavaScript那樣迅猛發展,或者在人氣和需求方面迎來同樣的迅猛增長,但是它繼續很強大――不用說,Google是建立在Python上的。

PHP

這幾年來,後端開發趨勢一直離PHP漸行漸遠,可是世界上80%的網站仍是用PHP構建的,這畢竟是一種為Web設計的語言。

不過,如果你上網搜尋一下初學者應該學哪種編程語言,會發現開發員一般不推薦學PHP。實際上,許多開發員顯然很討厭它。

哪種編程語言最有「錢途」?

PHP社區在竭力擺脫名聲欠佳的形象,為此推出了新的準則,教人們如何正確編寫PHP代碼,並開發了新工具,但總的來說,截至2015年,PHP的未來似乎相當停滯不前(至少在美國是這樣)。

Java

安卓對於Java繼續是最受歡迎的編程語言起到了很大的推動作用,而大多數企業也喜歡Java,因為它比較穩定、比較容易擴展。

隨著Spark(使用Scala語言)和Cassandra(支持其他語言)這兩種大數據管理框架日漸崛起,很難說Hadoop保持最流行的大數據管理框架這個頭號還會多久,不過考慮到大企業通常不太願意求變,Hadoop不會消失。Java編程語言同樣如此。

因此,在未來幾年,Java會依然很強大,將是最重要的編程語言之一。

Objective-C

由於蘋果發布了Swift,Objective-C只用於蘋果產品,預計Objective-C在將來不會繼續流行。不過,這並不意味著你在今年不該學Objective-C,因為大多數面向iOS開發的開源項目仍是用Objective-C編寫的。通常來說,使用你不了解的語言可不是什麼好主意。

C

相比其他編程語言,C相當低級,但由於它是操作系統的通用語,仍會繼續流行,因為許多開發工具是用C編寫的,Linux也是用C編寫的。

SQL

SQL是數據庫管理員幾乎普遍知道的語言。曾經一度,隨著MongoDB和Redis等NoSQL服務大行其道,non-SQL使用大數據計算平台(比如Hadoop、Spark和Cassandra),SQL似乎淪為邊緣化。許多人哀號SQL將消亡。

顯然不再是這樣。因而,連NoSQL也不得不將自己定位成「不只是SQL」(Not Only SQL)。

由於大數據的興起,加上管理大數據有難度,SQL比以往更炙手可熱(你已經從就業趨勢中知道這一點)。Google最近也更新了其BigQuery服務,所以現在每秒每張表最多能消化吸收100000行,而BigQuery就使用SQL。自版本1.3以來,Spark也有Spark SQL模塊。

總之,SQL再次體現其重要性,因為管理(不是存儲)大數據離不開它。因而,不僅SQL無所不在,可以說SQL在未來一段時間會繼續很重要。

C++

從性能和功能方面來看,C++仍被認為是最強大的語言(即使相比Rust),它在某些領域可能會繼續很重要,比如需要高性能的(比如遊戲引擎)。最新標準(C++14)的重大修訂版預計會在2017年發布,所以它仍是一種不斷發展的語言。

將來,Rust在系統編程的一些方面有可能會取代C++,因為Rust旨在能夠開發出比C++更安全的軟體。此處(https://www.codementor.io/rust/tutorial/steve-klabnik-rust-vs-c-go-ocaml-erlang)進一步介紹了Rust與其他語言相比如何。眼下也是學習Rust的大好時機。

C#

在過去,局限於微軟平台和作為閉源語言對C#很不利,但是Mono基本上解決了那些問題(不過Mono存在性能問題,最近的更新版有所改進)。

用過C#的開發員似乎很喜歡C#編程語言,所以它有強大的社區。不用說,C#是Unity 3D的主要語言,這種頗受歡迎的遊戲引擎還可以用在iOS和Linux等操作系統上。

關於這一點,C#在美國之外的國家(比如英國)也比較受歡迎,用於企業開發。很顯然,微軟會讓C#存活一陣子,確保它對.NET平台來說很重要。

哪種編程語言最有「錢途」?

結束語

哪種編程語言最有「錢途」?

編程初學者應該學習哪種語言?很顯然,如果你想從事Web開發,免不了要學習JavaScript,不管你喜不喜歡它。

此外,如果你想挖掘網站分析數據,或者你有興趣成為數據科學家,那麼學Python這種語言很不錯。如果你想供職於大企業,那麼Java是不二的選擇。如果你對構建應用程序其實不是很感興趣,而對就業機會比較有興趣,那麼SQL可能是不錯的起點(如果你喜歡數學更是如此)。

總之,你在今年應該學習哪種編程語言最終將取決於你想要做什麼。

哪種編程語言最有「錢途」?

閱讀原文


關於作者:
CocoaChina蘋果開發中文社區官方微信,提供教程資源、app推廣行銷、招聘、外包及培訓信息、各類沙龍交流活動以及更多開發者服務。

微信號:cocoachinabbs