在近期的一次訪談中,庫克反復強調了學習編程的重要性。學會編程不僅是為了適應現在的就業市場,從長遠來看,隨著我們的世界日益數字化,它也是每一個人學習、理解新技術的基石。Alexander Petkov是一個優質IT求職社區的創始人,不久前,他以行業人的眼光預測了2018年的十大流行編程語言,為新手上路提供了有力參考。
注:本文排名受用戶基數影響較大,因此未出現C#和Go,這并不是說它們不好,事實上現在C#算得上是就業市場上最廣泛流行的語言。另外發展勢頭驚人的Kotlin也沒有出現在列表中。總的來說,文章內容較為嚴謹,但讀者還是要根據自己的職業規劃參考著自主選擇。
首先,我要聲明一點,本文不是那些所謂的圍繞搜索關鍵詞、引用量、流行語的“Top 10編程語言排名”,這是一份基于2018年初IT行業狀況、趨勢和近期保守預測的客觀實用評估。它基于各種來源可靠的統計數據,并且是為期兩周深入研究的結果。毫不夸張地說,這是每一位想在2018年選擇正確編程語言、開啟自己工程師職業生涯的讀者必讀的權威指南!
本文的出發點在于幫助讀者更好地契合就業市場,包括推薦值得花精力和時間的利基市場、為有志于成為軟件開發者的人選擇最具優勢的語言,以及推薦平均薪資水平最高的編程語言。眾所周知,當一個人開始決定選取哪種語言作為自己的第一語言時,他會著重考慮這幾個因素:
高薪;
人氣——是否有大量的就業機會且工作內容多元;
前景廣大;
易于上手,工作舒心。
因此,對于下文中列出的每一種語言,我們都會考評它們的這些維度:
一個簡短的介紹,讓你了解這門語言,并知道它的就業選擇和技術優勢;
根據TIOBE和GitHub Octoverse得到的語言流行度圖;
根據Indeed.com和StackOverflow的2017年調查數據進行薪酬對比;
根據Google趨勢得出的過去五年中該語言的市場需求變化趨勢;
一段簡短的代碼示例,讓你建立對它的初步理解。
排名中的后4種語言知名度不高,但在過去幾年中它們的普及速度非常可觀,因此我們可以預見到它們在2018年的發展和需求提升。
1. JavaScript
根據StackOverflow的年度調查,JavaScript是現在最流行的語言,62.5%的受訪者稱自己正在使用它。因此它毫無疑問是網絡的主流語言,在過去的十年中,JavaScript發展迅猛。如果你對此持有異議,請環顧四周,看看周圍支持JavaScript的網絡設備有多少。拿Stack Overflow的聯合創始人Jeff Atwood的話說,就是:
任何可以用JavaScript編寫的應用程序最終都將用JavaScript編寫。
考慮到這個因素,我們可以肯定一點,就是在2018年及之后的幾年內,就業市場不會缺少JavaScript工作機會。
一些開發者基于JavaScript開發了許多前端框架,如Angular、React、Ember、Backbone等。另一個與區塊鏈開發關系緊密的運行環境Node.js,和JavaScript也有千絲萬縷的關系,有了它,我們就能高效地在后端運行js代碼。去年StackOverflow曾給出了一份關于2017年四大最流行框架的排名,而基于JavaScript的框架在其中占了三席。
如果你喜歡那種可以馬上看到工作成果的語言,例如制作交互式Web組件,那么JavaScript絕對算得上是一個首選。不過需要注意的一點是,JavaScript的一個重要學習前提是你必須有相當的HTML和CSS基礎,畢竟它們都和網頁設計相關。
一些工具,如Apache Cordova、React Native允許開發者在移動應用程序中使用JavaScript。有時我們甚至也能通過Electron等項目把它用于游戲開發。
讓我們來看看把JavaScript排名第一的數據支撐:
TIOBE RATING:第6名
TIOBE RATING是一項關于編程語言流行度的排名,它的計算主要基于這幾個數據:全球掌握這門語言的工程師人數、語言開課數、第三方使用機構和搜索引擎結果。
GitHub Octoverse:第1名
GitHub是全球最大的開源軟件開發與管理社區,它每年都會推出“Octoverse”報告以列出一些趨勢。如上圖所示JavaScript是社區2017年評選出的最流行的編程語言。
US Salary in Indeed:平均水平
Indeed是一個全球性的與就業相關的搜索引擎,它也是美國流量最高的就業網站。上圖顯示了各編程語言在美國的平均薪資水平。
Salary in StackOverflow:平均水平
StackOverfllow可以說是最大的開發者社區,每月流量超過5000萬。上圖是StackOverfllow 2017年對超過六萬四千名開發者進行調查后得出的薪資水平結果。
綜合以上數據,JavaScript無疑是2018年及以后最受歡迎的語言之一。由于涉及大量初級職位,和另一些高級職位較多的冷門語言相比,它很難在薪水排名上高居榜首。
JavaScript五年來的流行度趨勢:穩步增長
JavaScript示例代碼片段:
document.addEventListener("DOMContentLoaded", function(event) {
var e = document.getElementById("myForm");
var msg = "";
// Wait for user to click the button
e.addEventListener("change", function () {
var myColor = this.color.value;
if (myColor == "Blue") {
msg = "Just like the sky!";
} elseif (myColor == "Red") {
msg = "Quite daring!";
} elseif (myColor == "Green") {
msg = "Like... grass?";
}
// Output message
document.getElementById("msg").innerHTML = msg;
}, false);
});
2. Swift
Swift是2014年由Apple發布的一種相對較新的編程語言,主要用于開發iOS或MacOS應用程序。與Objective-C相比,很多人認為Swift在可用性和性能上都有明顯改進——曾經Apple iOS和OS X上的APP都是用Objective-C寫的。
事實上,青睞Swift的開發者為數眾多,繼2015年在Stack Overflow的調查報告中問鼎“最受喜愛的編程語言”第一后,它在2017年的榜單中仍高居第四。所以如果你選擇Swift作為自己的入門語言,你很可能也會在學習過程中慢慢愛上它。
當然,如果你有志于進入移動開發領域,懂一點Swift會使你在高薪崗位競爭中更具優勢。市場已經證明,iOS的APP通常比Android的吸金能力更強一些。
TIOBE Rating:第12名(2018年1月)
GitHub Octoverse:第13名
US Salary in Indeed.com:高
Salary in StackOverflow:高于平均水平
對于iOS和MacOS應用程序,Swift是一種新的、看起來更好的語言,它比它的前身Objective-C更出色。在短短幾年內,Swift就獲得了很高的聲譽,并在大多數排名中擊敗了Objective-C。這種語言被開發人員所喜愛,但也意味著要付出高昂的代價——除了iOS,你還能找到哪些用武之地?
Swift五年來的流行度趨勢:急劇增長
Swift示例代碼片段:
importUIKit
classViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController!.navigationBar.barTintColor = UIColor.yellow
self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.black]
let navBgImage:UIImage = UIImage(named: "bg_blog_navbar_reduced.jpg")!
self.navigationController!.navigationBar.setBackgroundImage(navBgImage, for: .default)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
3. Python
Python是一種通用語言,現在你幾乎可以在任何地方找到它的身影:網絡應用程序、桌面應用程序、網絡服務器、機器學習、媒體工具……NASA和谷歌是Python的實力擁躉,Guido van Rossum為什么能在谷歌待8年?主要原因就是……他是Python的作者。
這是一種代碼整潔、可讀性高、結構良好的編程語言,對于Python,適當的縮進不僅是為了美觀,它還決定了代碼的執行情況。一些基于Python的Web開發框架,如Django和Flask,現在已經越來越受歡迎。而在機器學習領域,它還配備了各種高質量的庫,如Scikit-learn和Pandas等,幾乎稱得上是一家獨大。
總體而言,Python在就業崗位上有很多拓展空間,上手難度低,因此它對初學者而言是個不錯的選擇。
TIOBE Rating:第4名(2018年1月)
GitHub Octoverse:第2名
US Salary in Indeed:高
Salary in StackOverflow:高
綜上數據,選擇成為一名Python專家無疑是當今和未來最好的選擇之一。這門語言幾乎在每個領域都名列前茅。
Python五年來的流行度趨勢:增長明顯
Python示例代碼片段:
import itertools
def iter_primes():
# an iterator of all numbers between 2 and +infinity
numbers = itertools.count(2)
# generate primes forever
whileTrue:
# get the first number from the iterator (always a prime)
prime = numbers.next()
yield prime
# this code iteratively builds up a chain of
# filters...slightly tricky, but ponder it a bit
numbers = itertools.ifilter(prime.__rmod__, numbers)
for p in iter_primes():
if p > 1000:
break
print p
4. Java
Java可以說是普及率最高的編程語言,因為90%的世界500強公司都在用它。它的口號是:“一次編譯,隨處運行。”(Writeonce, run anywhere.)這句話抓住了Java的精髓——強大的JVM(Java虛擬機)使它具有其他語言難以企及的跨平臺兼容性。
在工作中,需要常常用到Java的人有后端開發人員、大數據開發人員、嵌入式系統工程師和Android開發人員等。雖然它并不是目前最“流行”的語言,但它的使用頻率非常高,以至于我們幾乎可以確信在未來十年甚至更長時間內,Java仍會在IT行業占據重要的一席之地。
正因為如此,我們也完全可以下這么一個結論:每個IT產業發達的城市都會有大量的Java工作崗位。對于列表中的一些冷門語言,我們不敢這么下定論;但對于Java,它有這個底氣。如果你對Java感興趣,那找到合適的工作只是時間問題。
TIOBE Rating:第1名(2018年1月)
GitHub Octoverse:第2名
US Salary in Indeed:平均水平
Salary in StackOverflow:高于平均水平
Java的工作范圍覆蓋很廣,且多年來已經積累了大量高價值經驗,因此它在薪資排名中也能名列前茅。
Java五年來的流行度趨勢:下降
Java示例代碼片段:
publicclassStandardDeviation {
publicstaticvoid main(String[] args) {
double[] numArray = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
double SD = calculateSD(numArray);
System.out.format("Standard Deviation = %.6f", SD);
}
publicstaticdouble calculateSD(double numArray[]) {
double sum = 0.0, standardDeviation = 0.0;
for(double num : numArray) {
sum += num;
}
double mean = sum / 10;
for(double num: numArray) {
standardDeviation += Math.pow(num - mean, 2);
}
returnMath.sqrt(standardDeviation / 10);
}
}
5. C++
C++是一種高效且靈活的語言,它“出生”于1985年。雖然已經完全稱不上是新語言了,但因其高性能和高可靠性,且能被用于各種環境,它的市場缺口還是很大。關于這一點,我們可以看看到現在還在用C++創建和維護系統的大型公司:Microsoft、Oracle、PayPal和Adobe。它們都是C++的忠實粉絲。
談及C++的使用場景,常見的有開發桌面應用程序,尤其是性能密集型任務。雖然很復雜,但熟練掌握C++能幫你建立對編程語言的系統認識,讓你知道它是怎么工作的,例如讓你直接管理內存。
TIOBE Rating:第3名(2018年1月)
GitHub Octoverse:第6名
US Salary in Indeed:高
Salary in StackOverflow:高
總的來說,C++的流行度還是很高的,如果你選擇它,你的就業前景會非常廣大,而且可能得到更高的發展機遇。它的薪資水平也處于高位。
C++五年來的流行度趨勢:起伏不定
C++示例代碼片段:
#include
#include
usingnamespace std;
float calculateSD(float data[]);
int main() {
int i;
float data[10];
cout << "Enter 10 elements: ";
for(i = 0; i < 10; ++i)
cin >> data[i];
cout << endl << "Standard Deviation = " << calculateSD(data);
return0;
}
float calculateSD(float data[]) {
float sum = 0.0, mean, standardDeviation = 0.0;
int i;
for(i = 0; i < 10; ++i) {
sum += data[i];
}
mean = sum / 10;
for(i = 0; i < 10; ++i)
standardDeviation += pow(data[i] - mean, 2);
return sqrt(standardDeviation / 10);
}
6. Ruby
Ruby是最受開發者喜愛的編程語言之一。它的口號是“程序員最好的朋友”,所以它的使用體驗非常舒適友好,且能為開發者帶來心情“加成”。
這是一種高級語言,它的目標是write less , do more,也就是通過幾行干凈可讀的代碼就能實現很多功能。因此在編寫過程中,你可能需要耗費大量精力——“和其他流行編程語言相比,Ruby在寫作效率上相對過慢——但它絕對能提高你的工作效率”。
寫得非常優美的Ruby代碼看起來幾乎就是純英文句子,所以它很適合母語是英語的開發者。而把Ruby作為自己的入門語言也有一些優勢,之前提到了,它能給開發者帶來更多快感,并且就業內整體薪資水平而言,Ruby的工資處于較高位置。
當然,選擇Ruby也有一些缺點,其中最主要的一點是和上述語言相比,它還是太冷門了,所以即便是在某些IT行業較發達的城市,Ruby的崗位也不好找。
TIOBE Rating:第11名(2018年1月)
GitHub Octoverse:第4名
US Salary in Indeed:高
Salary in StackOverflow:高
Ruby是一個很好的職業選擇,因為它的報酬很高,而且語言本身很有趣。它的缺點是不如其他競爭對手那么受歡迎,而且職位數量大大受限。但是,請注意一點,就是許多允許遠程辦公的美國初創企業會很喜歡招用Ruby(和Ruby on Rails)的人。
Ruby五年來的流行度趨勢:下降
Ruby示例代碼片段:
Node = Struct.new("Node", :parent, :coin, :total, :starting_coin)
def make_change(amount, coinage = [25, 10, 5, 1])
root = Node.new(nil, nil, 0, 0)
found_totals = { 0 => root }
queue = [root]
catch(:found) do
until queue.empty?
node = queue.shift
node.starting_coin.upto(coinage.size - 1) do |index|
coin = coinage[index]
new_total = node.total + coin
nextif new_total > amount || found_totals[new_total]
new_node = Node.new(node, coin, new_total, index)
found_totals[new_total] = new_node
throw :found if new_total == amount
queue << new_node
end
end
end
returnnilif found_totals[amount].nil?
result = []
cursor = found_totals[amount]
until cursor.coin.nil?
result << cursor.coin
cursor = cursor.parent
end
result.reverse!
end
7. Rust
Rust是編程語言界的一張新面孔,它首次出現于2010年,并在當年就廣受歡迎,因此我們對它的未來一致看好。在StackOverflow的調查中,它已經連續兩年被開發者選為“最受喜愛的編程語言”(2016,2017)。
Rust由Mozilla主導開發,因為是一種編譯型編程語言,所以開發者們往往喜歡拿它和C做比較。兩者的主要區別在于Rust的內存安全性更高。在C代碼中,我們經常會遇到懸掛指針、緩沖區溢出以及其他類型的內存錯誤,但Rust不會。確切地說,它就是為了避免這些錯誤而出現的——在編譯期間(調試前)它就會向你指出:你在這里寫的代碼是錯的。
對于一個初學者,Rust為了安全可以放棄一切的“死板”做法可能會打擊人的靈活性,但有經驗的開發者還是對它青睞有加。正因為如此,Rust在未來幾年內的市場需求可能還會不斷攀升。2017年StackOverflow的一份調查報告顯示。Rust的總體薪資水平非常高,在全球范圍內排名第二。
另外,選擇Rust的另一個理由是——為Mozilla的情懷打滿分。
Rust五年來的流行度趨勢:增長
Rust示例代碼片段:
macro_rules! calculate {
(eval $e:expr) => {{
{
let val: usize = $e;
println!("{} = {}", stringify!{$e}, val);
}
}};
(eval $e:expr, $(eval $es:expr),+) => {{
calculate! { eval $e }
calculate! { $(eval $es),+ }
}};
}
fn main() {
calculate! {
eval1 + 2,
eval3 + 4,
eval (2 * 3) + 1
}
}
8. Elixir
Elixir是一種首次出現于2011年的新語言,和Rust一樣,它一經推出也收獲了廣泛好評。
這種語言的靈感來自Erlang——這是愛立信于二十世紀八十年代開發的一種語言,可以說是用于高并發需求的最佳工具之一。Elixir的作者JoséValim自己說他非常喜歡Erlang,但也看到了改進的余地。對于開發者來說,Erlang最大的缺點在于怪異的語法和可用性,它缺乏直接的包管理。
為此,Elixir誕生了——作為Ruby和Erlang的結合體。
Elixir現在還是被主要用于網絡開發,雖然收入可觀,但上限不高。StackOverflow的調查數據顯示,它的薪資水平在全球排名第三。值得強調的一點是,Elixir的流行度正一年比一年上升。
Elixir五年來的流行度趨勢:增長
Elixir示例代碼片段:
defmodule Chaindo
def counter(next_pid) do
receive do
n ->
send next_pid, n + 1
end
end
def create_processes(n) do
last = Enum.reduce 1..n, self,
fn (_, send_to) ->
spawn(Chain, :counter, [send_to])
end
send last, 0
receive do
final_answer when is_integer(final_answer) ->
"Result is #{inspect(final_answer)}"
end
end
def run(n) do
IO.puts inspect :timer.tc(Chain, :create_processes , [n])
end
end
9. Scala
Scala的設計初衷是實現可伸縮的語言,它是“重寫Java”并改進其缺點的眾多嘗試之一,可以在JVM上編譯。鑒于LinkedIn、Twitter和The Guardian等大公司都在其代碼庫中使用Scala,Scala在市場上取得的成功毋庸置疑。
對于初學者來說,直接上手Scala可能有些太復雜了,但如果能精通,它會為你提高職業發展天花板。因為未來就業市場對Scala開發者的需求肯定會越來越多。根據2017年StackOverflow的報告,Scala在薪金調查中名列前茅,位居全球前十名,且在美國居第一位。
Scala五年來的流行度趨勢:增長
Scala示例代碼片段:
package examples.actors
import scala.actors._
import scala.actors.Actor._
objectMessage {
def main(args: Array[String]) {
val n = try {
Integer.parseInt(args(0))
}
catch {
case _ =>
println("Usage: examples.actors.Message
Predef.exit
}
val nActors = 500
val finalSum = n * nActors
Scheduler.impl = newSingleThreadedScheduler
def beh(next: Actor, sum: Int) {
react {
case value: Int =>
val j = value + 1; val nsum = sum + j
if (next == null && nsum >= finalSum) {
println(nsum)
System.exit(0)
}
else {
if (next != null) next ! j
beh(next, nsum)
}
}
}
def actorChain(i: Int, a: Actor): Actor =
if (i > 0) actorChain(i-1, actor(beh(a, 0))) else a
val firstActor = actorChain(nActors, null)
var i = n; while (i > 0) { firstActor ! 0; i -= 1 }
}
}
10. R
R是用于統計、圖形表示和數據分析的編程語言和環境。這是數據科學家的首選編程語言之一。如果你覺得自己對這個領域感興趣,那么選擇R將是一個穩定而明確的舉措。
R五年來的流行度趨勢:增長
R示例代碼片段:
readinteger <- function() {
n <- readline(prompt="Enter an integer: ")
if (!grepl("^[0-9]+$",n)) {
return(readinteger())
}
return(as.integer(n))
}
num <- round(runif(1) * 100, digits = 0)
guess <- -1
cat("Guess a number between 0 and 100. ")
while(guess != num) {
guess <- readinteger()
if (guess == num) {
cat("Congratulations,", num, "is right. ")
} elseif (guess < num) {
cat("It's bigger! ")
} elseif(guess > num) {
cat("It's smaller! ")
}
}
小結
以上就是我總結的“2018年最適合學習的十大最佳編程語言”。選擇一門正確的語言意味著一個好的開始,但有一個好的開始絕不等同于你已經足夠優秀并能勝任各種高薪職位。
最后,我想給每個初學者一個建議:你可以通過買書自學、上網絡公開課甚至參加專門的培訓機構等各種途徑來學習編程語言,但在你的時間、精力和金錢投入進去后,請不要就這樣照本宣科,學習語言最好的方法絕對是自己做點東西,然后用它來吸引用戶,甚至吸引一幫粉絲。等你積累足夠多獨立開發經驗后,面對面試官,你才有更多的自信向他解釋自己是怎么做的、自己為什么要這么做——這通常比你的其他回答更令人印象深刻。
-
JAVA
+關注
關注
19文章
2966瀏覽量
104707 -
編程語言
+關注
關注
10文章
1942瀏覽量
34715 -
區塊鏈
+關注
關注
111文章
15562瀏覽量
105946
原文標題:2018年最適合學習的十大最佳編程語言
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論