在近期的一次訪談中,庫(kù)克反復(fù)強(qiáng)調(diào)了學(xué)習(xí)編程的重要性。學(xué)會(huì)編程不僅是為了適應(yīng)現(xiàn)在的就業(yè)市場(chǎng),從長(zhǎng)遠(yuǎn)來(lái)看,隨著我們的世界日益數(shù)字化,它也是每一個(gè)人學(xué)習(xí)、理解新技術(shù)的基石。Alexander Petkov是一個(gè)優(yōu)質(zhì)IT求職社區(qū)的創(chuàng)始人,不久前,他以行業(yè)人的眼光預(yù)測(cè)了2018年的十大流行編程語(yǔ)言,為新手上路提供了有力參考。
注:本文排名受用戶基數(shù)影響較大,因此未出現(xiàn)C#和Go,這并不是說(shuō)它們不好,事實(shí)上現(xiàn)在C#算得上是就業(yè)市場(chǎng)上最廣泛流行的語(yǔ)言。另外發(fā)展勢(shì)頭驚人的Kotlin也沒(méi)有出現(xiàn)在列表中??偟膩?lái)說(shuō),文章內(nèi)容較為嚴(yán)謹(jǐn),但讀者還是要根據(jù)自己的職業(yè)規(guī)劃參考著自主選擇。
首先,我要聲明一點(diǎn),本文不是那些所謂的圍繞搜索關(guān)鍵詞、引用量、流行語(yǔ)的“Top 10編程語(yǔ)言排名”,這是一份基于2018年初IT行業(yè)狀況、趨勢(shì)和近期保守預(yù)測(cè)的客觀實(shí)用評(píng)估。它基于各種來(lái)源可靠的統(tǒng)計(jì)數(shù)據(jù),并且是為期兩周深入研究的結(jié)果。毫不夸張地說(shuō),這是每一位想在2018年選擇正確編程語(yǔ)言、開(kāi)啟自己工程師職業(yè)生涯的讀者必讀的權(quán)威指南!
本文的出發(fā)點(diǎn)在于幫助讀者更好地契合就業(yè)市場(chǎng),包括推薦值得花精力和時(shí)間的利基市場(chǎng)、為有志于成為軟件開(kāi)發(fā)者的人選擇最具優(yōu)勢(shì)的語(yǔ)言,以及推薦平均薪資水平最高的編程語(yǔ)言。眾所周知,當(dāng)一個(gè)人開(kāi)始決定選取哪種語(yǔ)言作為自己的第一語(yǔ)言時(shí),他會(huì)著重考慮這幾個(gè)因素:
高薪;
人氣——是否有大量的就業(yè)機(jī)會(huì)且工作內(nèi)容多元;
前景廣大;
易于上手,工作舒心。
因此,對(duì)于下文中列出的每一種語(yǔ)言,我們都會(huì)考評(píng)它們的這些維度:
一個(gè)簡(jiǎn)短的介紹,讓你了解這門(mén)語(yǔ)言,并知道它的就業(yè)選擇和技術(shù)優(yōu)勢(shì);
根據(jù)TIOBE和GitHub Octoverse得到的語(yǔ)言流行度圖;
根據(jù)Indeed.com和StackOverflow的2017年調(diào)查數(shù)據(jù)進(jìn)行薪酬對(duì)比;
根據(jù)Google趨勢(shì)得出的過(guò)去五年中該語(yǔ)言的市場(chǎng)需求變化趨勢(shì);
一段簡(jiǎn)短的代碼示例,讓你建立對(duì)它的初步理解。
排名中的后4種語(yǔ)言知名度不高,但在過(guò)去幾年中它們的普及速度非??捎^,因此我們可以預(yù)見(jiàn)到它們?cè)?018年的發(fā)展和需求提升。
1. JavaScript
根據(jù)StackOverflow的年度調(diào)查,JavaScript是現(xiàn)在最流行的語(yǔ)言,62.5%的受訪者稱自己正在使用它。因此它毫無(wú)疑問(wèn)是網(wǎng)絡(luò)的主流語(yǔ)言,在過(guò)去的十年中,JavaScript發(fā)展迅猛。如果你對(duì)此持有異議,請(qǐng)環(huán)顧四周,看看周?chē)С諮avaScript的網(wǎng)絡(luò)設(shè)備有多少。拿Stack Overflow的聯(lián)合創(chuàng)始人Jeff Atwood的話說(shuō),就是:
任何可以用JavaScript編寫(xiě)的應(yīng)用程序最終都將用JavaScript編寫(xiě)。
考慮到這個(gè)因素,我們可以肯定一點(diǎn),就是在2018年及之后的幾年內(nèi),就業(yè)市場(chǎng)不會(huì)缺少JavaScript工作機(jī)會(huì)。
一些開(kāi)發(fā)者基于JavaScript開(kāi)發(fā)了許多前端框架,如Angular、React、Ember、Backbone等。另一個(gè)與區(qū)塊鏈開(kāi)發(fā)關(guān)系緊密的運(yùn)行環(huán)境Node.js,和JavaScript也有千絲萬(wàn)縷的關(guān)系,有了它,我們就能高效地在后端運(yùn)行js代碼。去年StackOverflow曾給出了一份關(guān)于2017年四大最流行框架的排名,而基于JavaScript的框架在其中占了三席。
如果你喜歡那種可以馬上看到工作成果的語(yǔ)言,例如制作交互式Web組件,那么JavaScript絕對(duì)算得上是一個(gè)首選。不過(guò)需要注意的一點(diǎn)是,JavaScript的一個(gè)重要學(xué)習(xí)前提是你必須有相當(dāng)?shù)腍TML和CSS基礎(chǔ),畢竟它們都和網(wǎng)頁(yè)設(shè)計(jì)相關(guān)。
一些工具,如Apache Cordova、React Native允許開(kāi)發(fā)者在移動(dòng)應(yīng)用程序中使用JavaScript。有時(shí)我們甚至也能通過(guò)Electron等項(xiàng)目把它用于游戲開(kāi)發(fā)。
讓我們來(lái)看看把JavaScript排名第一的數(shù)據(jù)支撐:
TIOBE RATING:第6名
TIOBE RATING是一項(xiàng)關(guān)于編程語(yǔ)言流行度的排名,它的計(jì)算主要基于這幾個(gè)數(shù)據(jù):全球掌握這門(mén)語(yǔ)言的工程師人數(shù)、語(yǔ)言開(kāi)課數(shù)、第三方使用機(jī)構(gòu)和搜索引擎結(jié)果。
GitHub Octoverse:第1名
GitHub是全球最大的開(kāi)源軟件開(kāi)發(fā)與管理社區(qū),它每年都會(huì)推出“Octoverse”報(bào)告以列出一些趨勢(shì)。如上圖所示JavaScript是社區(qū)2017年評(píng)選出的最流行的編程語(yǔ)言。
US Salary in Indeed:平均水平
Indeed是一個(gè)全球性的與就業(yè)相關(guān)的搜索引擎,它也是美國(guó)流量最高的就業(yè)網(wǎng)站。上圖顯示了各編程語(yǔ)言在美國(guó)的平均薪資水平。
Salary in StackOverflow:平均水平
StackOverfllow可以說(shuō)是最大的開(kāi)發(fā)者社區(qū),每月流量超過(guò)5000萬(wàn)。上圖是StackOverfllow 2017年對(duì)超過(guò)六萬(wàn)四千名開(kāi)發(fā)者進(jìn)行調(diào)查后得出的薪資水平結(jié)果。
綜合以上數(shù)據(jù),JavaScript無(wú)疑是2018年及以后最受歡迎的語(yǔ)言之一。由于涉及大量初級(jí)職位,和另一些高級(jí)職位較多的冷門(mén)語(yǔ)言相比,它很難在薪水排名上高居榜首。
JavaScript五年來(lái)的流行度趨勢(shì):穩(wěn)步增長(zhǎng)
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發(fā)布的一種相對(duì)較新的編程語(yǔ)言,主要用于開(kāi)發(fā)iOS或MacOS應(yīng)用程序。與Objective-C相比,很多人認(rèn)為Swift在可用性和性能上都有明顯改進(jìn)——曾經(jīng)Apple iOS和OS X上的APP都是用Objective-C寫(xiě)的。
事實(shí)上,青睞Swift的開(kāi)發(fā)者為數(shù)眾多,繼2015年在Stack Overflow的調(diào)查報(bào)告中問(wèn)鼎“最受喜愛(ài)的編程語(yǔ)言”第一后,它在2017年的榜單中仍高居第四。所以如果你選擇Swift作為自己的入門(mén)語(yǔ)言,你很可能也會(huì)在學(xué)習(xí)過(guò)程中慢慢愛(ài)上它。
當(dāng)然,如果你有志于進(jìn)入移動(dòng)開(kāi)發(fā)領(lǐng)域,懂一點(diǎn)Swift會(huì)使你在高薪崗位競(jìng)爭(zhēng)中更具優(yōu)勢(shì)。市場(chǎng)已經(jīng)證明,iOS的APP通常比Android的吸金能力更強(qiáng)一些。
TIOBE Rating:第12名(2018年1月)
GitHub Octoverse:第13名
US Salary in Indeed.com:高
Salary in StackOverflow:高于平均水平
對(duì)于iOS和MacOS應(yīng)用程序,Swift是一種新的、看起來(lái)更好的語(yǔ)言,它比它的前身Objective-C更出色。在短短幾年內(nèi),Swift就獲得了很高的聲譽(yù),并在大多數(shù)排名中擊敗了Objective-C。這種語(yǔ)言被開(kāi)發(fā)人員所喜愛(ài),但也意味著要付出高昂的代價(jià)——除了iOS,你還能找到哪些用武之地?
Swift五年來(lái)的流行度趨勢(shì):急劇增長(zhǎng)
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是一種通用語(yǔ)言,現(xiàn)在你幾乎可以在任何地方找到它的身影:網(wǎng)絡(luò)應(yīng)用程序、桌面應(yīng)用程序、網(wǎng)絡(luò)服務(wù)器、機(jī)器學(xué)習(xí)、媒體工具……NASA和谷歌是Python的實(shí)力擁躉,Guido van Rossum為什么能在谷歌待8年?主要原因就是……他是Python的作者。
這是一種代碼整潔、可讀性高、結(jié)構(gòu)良好的編程語(yǔ)言,對(duì)于Python,適當(dāng)?shù)目s進(jìn)不僅是為了美觀,它還決定了代碼的執(zhí)行情況。一些基于Python的Web開(kāi)發(fā)框架,如Django和Flask,現(xiàn)在已經(jīng)越來(lái)越受歡迎。而在機(jī)器學(xué)習(xí)領(lǐng)域,它還配備了各種高質(zhì)量的庫(kù),如Scikit-learn和Pandas等,幾乎稱得上是一家獨(dú)大。
總體而言,Python在就業(yè)崗位上有很多拓展空間,上手難度低,因此它對(duì)初學(xué)者而言是個(gè)不錯(cuò)的選擇。
TIOBE Rating:第4名(2018年1月)
GitHub Octoverse:第2名
US Salary in Indeed:高
Salary in StackOverflow:高
綜上數(shù)據(jù),選擇成為一名Python專(zhuān)家無(wú)疑是當(dāng)今和未來(lái)最好的選擇之一。這門(mén)語(yǔ)言幾乎在每個(gè)領(lǐng)域都名列前茅。
Python五年來(lái)的流行度趨勢(shì):增長(zhǎng)明顯
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可以說(shuō)是普及率最高的編程語(yǔ)言,因?yàn)?0%的世界500強(qiáng)公司都在用它。它的口號(hào)是:“一次編譯,隨處運(yùn)行。”(Writeonce, run anywhere.)這句話抓住了Java的精髓——強(qiáng)大的JVM(Java虛擬機(jī))使它具有其他語(yǔ)言難以企及的跨平臺(tái)兼容性。
在工作中,需要常常用到Java的人有后端開(kāi)發(fā)人員、大數(shù)據(jù)開(kāi)發(fā)人員、嵌入式系統(tǒng)工程師和Android開(kāi)發(fā)人員等。雖然它并不是目前最“流行”的語(yǔ)言,但它的使用頻率非常高,以至于我們幾乎可以確信在未來(lái)十年甚至更長(zhǎng)時(shí)間內(nèi),Java仍會(huì)在IT行業(yè)占據(jù)重要的一席之地。
正因?yàn)槿绱耍覀円餐耆梢韵逻@么一個(gè)結(jié)論:每個(gè)IT產(chǎn)業(yè)發(fā)達(dá)的城市都會(huì)有大量的Java工作崗位。對(duì)于列表中的一些冷門(mén)語(yǔ)言,我們不敢這么下定論;但對(duì)于Java,它有這個(gè)底氣。如果你對(duì)Java感興趣,那找到合適的工作只是時(shí)間問(wèn)題。
TIOBE Rating:第1名(2018年1月)
GitHub Octoverse:第2名
US Salary in Indeed:平均水平
Salary in StackOverflow:高于平均水平
Java的工作范圍覆蓋很廣,且多年來(lái)已經(jīng)積累了大量高價(jià)值經(jīng)驗(yàn),因此它在薪資排名中也能名列前茅。
Java五年來(lái)的流行度趨勢(shì):下降
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++是一種高效且靈活的語(yǔ)言,它“出生”于1985年。雖然已經(jīng)完全稱不上是新語(yǔ)言了,但因其高性能和高可靠性,且能被用于各種環(huán)境,它的市場(chǎng)缺口還是很大。關(guān)于這一點(diǎn),我們可以看看到現(xiàn)在還在用C++創(chuàng)建和維護(hù)系統(tǒng)的大型公司:Microsoft、Oracle、PayPal和Adobe。它們都是C++的忠實(shí)粉絲。
談及C++的使用場(chǎng)景,常見(jiàn)的有開(kāi)發(fā)桌面應(yīng)用程序,尤其是性能密集型任務(wù)。雖然很復(fù)雜,但熟練掌握C++能幫你建立對(duì)編程語(yǔ)言的系統(tǒng)認(rèn)識(shí),讓你知道它是怎么工作的,例如讓你直接管理內(nèi)存。
TIOBE Rating:第3名(2018年1月)
GitHub Octoverse:第6名
US Salary in Indeed:高
Salary in StackOverflow:高
總的來(lái)說(shuō),C++的流行度還是很高的,如果你選擇它,你的就業(yè)前景會(huì)非常廣大,而且可能得到更高的發(fā)展機(jī)遇。它的薪資水平也處于高位。
C++五年來(lái)的流行度趨勢(shì):起伏不定
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是最受開(kāi)發(fā)者喜愛(ài)的編程語(yǔ)言之一。它的口號(hào)是“程序員最好的朋友”,所以它的使用體驗(yàn)非常舒適友好,且能為開(kāi)發(fā)者帶來(lái)心情“加成”。
這是一種高級(jí)語(yǔ)言,它的目標(biāo)是write less , do more,也就是通過(guò)幾行干凈可讀的代碼就能實(shí)現(xiàn)很多功能。因此在編寫(xiě)過(guò)程中,你可能需要耗費(fèi)大量精力——“和其他流行編程語(yǔ)言相比,Ruby在寫(xiě)作效率上相對(duì)過(guò)慢——但它絕對(duì)能提高你的工作效率”。
寫(xiě)得非常優(yōu)美的Ruby代碼看起來(lái)幾乎就是純英文句子,所以它很適合母語(yǔ)是英語(yǔ)的開(kāi)發(fā)者。而把Ruby作為自己的入門(mén)語(yǔ)言也有一些優(yōu)勢(shì),之前提到了,它能給開(kāi)發(fā)者帶來(lái)更多快感,并且就業(yè)內(nèi)整體薪資水平而言,Ruby的工資處于較高位置。
當(dāng)然,選擇Ruby也有一些缺點(diǎn),其中最主要的一點(diǎn)是和上述語(yǔ)言相比,它還是太冷門(mén)了,所以即便是在某些IT行業(yè)較發(fā)達(dá)的城市,Ruby的崗位也不好找。
TIOBE Rating:第11名(2018年1月)
GitHub Octoverse:第4名
US Salary in Indeed:高
Salary in StackOverflow:高
Ruby是一個(gè)很好的職業(yè)選擇,因?yàn)樗膱?bào)酬很高,而且語(yǔ)言本身很有趣。它的缺點(diǎn)是不如其他競(jìng)爭(zhēng)對(duì)手那么受歡迎,而且職位數(shù)量大大受限。但是,請(qǐng)注意一點(diǎn),就是許多允許遠(yuǎn)程辦公的美國(guó)初創(chuàng)企業(yè)會(huì)很喜歡招用Ruby(和Ruby on Rails)的人。
Ruby五年來(lái)的流行度趨勢(shì):下降
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是編程語(yǔ)言界的一張新面孔,它首次出現(xiàn)于2010年,并在當(dāng)年就廣受歡迎,因此我們對(duì)它的未來(lái)一致看好。在StackOverflow的調(diào)查中,它已經(jīng)連續(xù)兩年被開(kāi)發(fā)者選為“最受喜愛(ài)的編程語(yǔ)言”(2016,2017)。
Rust由Mozilla主導(dǎo)開(kāi)發(fā),因?yàn)槭且环N編譯型編程語(yǔ)言,所以開(kāi)發(fā)者們往往喜歡拿它和C做比較。兩者的主要區(qū)別在于Rust的內(nèi)存安全性更高。在C代碼中,我們經(jīng)常會(huì)遇到懸掛指針、緩沖區(qū)溢出以及其他類(lèi)型的內(nèi)存錯(cuò)誤,但Rust不會(huì)。確切地說(shuō),它就是為了避免這些錯(cuò)誤而出現(xiàn)的——在編譯期間(調(diào)試前)它就會(huì)向你指出:你在這里寫(xiě)的代碼是錯(cuò)的。
對(duì)于一個(gè)初學(xué)者,Rust為了安全可以放棄一切的“死板”做法可能會(huì)打擊人的靈活性,但有經(jīng)驗(yàn)的開(kāi)發(fā)者還是對(duì)它青睞有加。正因?yàn)槿绱耍琑ust在未來(lái)幾年內(nèi)的市場(chǎng)需求可能還會(huì)不斷攀升。2017年StackOverflow的一份調(diào)查報(bào)告顯示。Rust的總體薪資水平非常高,在全球范圍內(nèi)排名第二。
另外,選擇Rust的另一個(gè)理由是——為Mozilla的情懷打滿分。
Rust五年來(lái)的流行度趨勢(shì):增長(zhǎng)
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是一種首次出現(xiàn)于2011年的新語(yǔ)言,和Rust一樣,它一經(jīng)推出也收獲了廣泛好評(píng)。
這種語(yǔ)言的靈感來(lái)自Erlang——這是愛(ài)立信于二十世紀(jì)八十年代開(kāi)發(fā)的一種語(yǔ)言,可以說(shuō)是用于高并發(fā)需求的最佳工具之一。Elixir的作者JoséValim自己說(shuō)他非常喜歡Erlang,但也看到了改進(jìn)的余地。對(duì)于開(kāi)發(fā)者來(lái)說(shuō),Erlang最大的缺點(diǎn)在于怪異的語(yǔ)法和可用性,它缺乏直接的包管理。
為此,Elixir誕生了——作為Ruby和Erlang的結(jié)合體。
Elixir現(xiàn)在還是被主要用于網(wǎng)絡(luò)開(kāi)發(fā),雖然收入可觀,但上限不高。StackOverflow的調(diào)查數(shù)據(jù)顯示,它的薪資水平在全球排名第三。值得強(qiáng)調(diào)的一點(diǎn)是,Elixir的流行度正一年比一年上升。
Elixir五年來(lái)的流行度趨勢(shì):增長(zhǎng)
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的設(shè)計(jì)初衷是實(shí)現(xiàn)可伸縮的語(yǔ)言,它是“重寫(xiě)Java”并改進(jìn)其缺點(diǎn)的眾多嘗試之一,可以在JVM上編譯。鑒于LinkedIn、Twitter和The Guardian等大公司都在其代碼庫(kù)中使用Scala,Scala在市場(chǎng)上取得的成功毋庸置疑。
對(duì)于初學(xué)者來(lái)說(shuō),直接上手Scala可能有些太復(fù)雜了,但如果能精通,它會(huì)為你提高職業(yè)發(fā)展天花板。因?yàn)槲磥?lái)就業(yè)市場(chǎng)對(duì)Scala開(kāi)發(fā)者的需求肯定會(huì)越來(lái)越多。根據(jù)2017年StackOverflow的報(bào)告,Scala在薪金調(diào)查中名列前茅,位居全球前十名,且在美國(guó)居第一位。
Scala五年來(lái)的流行度趨勢(shì):增長(zhǎng)
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是用于統(tǒng)計(jì)、圖形表示和數(shù)據(jù)分析的編程語(yǔ)言和環(huán)境。這是數(shù)據(jù)科學(xué)家的首選編程語(yǔ)言之一。如果你覺(jué)得自己對(duì)這個(gè)領(lǐng)域感興趣,那么選擇R將是一個(gè)穩(wěn)定而明確的舉措。
R五年來(lái)的流行度趨勢(shì):增長(zhǎng)
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! ")
}
}
小結(jié)
以上就是我總結(jié)的“2018年最適合學(xué)習(xí)的十大最佳編程語(yǔ)言”。選擇一門(mén)正確的語(yǔ)言意味著一個(gè)好的開(kāi)始,但有一個(gè)好的開(kāi)始絕不等同于你已經(jīng)足夠優(yōu)秀并能勝任各種高薪職位。
最后,我想給每個(gè)初學(xué)者一個(gè)建議:你可以通過(guò)買(mǎi)書(shū)自學(xué)、上網(wǎng)絡(luò)公開(kāi)課甚至參加專(zhuān)門(mén)的培訓(xùn)機(jī)構(gòu)等各種途徑來(lái)學(xué)習(xí)編程語(yǔ)言,但在你的時(shí)間、精力和金錢(qián)投入進(jìn)去后,請(qǐng)不要就這樣照本宣科,學(xué)習(xí)語(yǔ)言最好的方法絕對(duì)是自己做點(diǎn)東西,然后用它來(lái)吸引用戶,甚至吸引一幫粉絲。等你積累足夠多獨(dú)立開(kāi)發(fā)經(jīng)驗(yàn)后,面對(duì)面試官,你才有更多的自信向他解釋自己是怎么做的、自己為什么要這么做——這通常比你的其他回答更令人印象深刻。
-
JAVA
+關(guān)注
關(guān)注
19文章
2952瀏覽量
104495 -
編程語(yǔ)言
+關(guān)注
關(guān)注
10文章
1931瀏覽量
34553 -
區(qū)塊鏈
+關(guān)注
關(guān)注
110文章
15559瀏覽量
105625
原文標(biāo)題:2018年最適合學(xué)習(xí)的十大最佳編程語(yǔ)言
文章出處:【微信號(hào):jqr_AI,微信公眾號(hào):論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論