技術(shù)圈最沒有意義的問題之一當(dāng)屬:“誰才是最好的編程語言?”
很多人的啟蒙編程老師馬士兵曾經(jīng)說過:
你覺得最好的,并不一定適合所有人。同樣的,語言也一樣。在某種特定的問題之下,咱們得說解決什么問題。你解決驅(qū)動的問題,你只能是會匯編和 C 語言,你解決后臺的問題用匯編肯定就不合適了。相當(dāng)于拿一個小剃刀蓋一棟大樓房。不合適。所以沒有最好的語言,只有最合適的語言。
因此,我們今天不談哪種語言是最好的,我們只看,這些各擅勝場的語言,都有哪些干貨可以給大家分享學(xué)習(xí)。
Java
在歷經(jīng)多次跳票之后,Java 9 終于在千呼萬喚中正式發(fā)布。從這個版本開始,Java 將每半年發(fā)布一個版本。作為霸占編程語言排行榜鰲頭多年的老牌語言,Java 9 中有哪些不得不說的新特性?Java 語言的未來又將如何?
針對 Java 9 新特性的介紹已經(jīng)非常多了,這里不再做一個百科全書一樣的列表,希望從不同角度簡要點(diǎn)評部分特性。
從 1995 年第一個版本發(fā)布到現(xiàn)在,Java 語言已經(jīng)在跌宕起伏中走過了 22 年,最新的 Java 版本也已經(jīng)迭代到 Java 9。當(dāng)年 Java 語言的跨平臺優(yōu)勢如今看來也只不過是家常小菜,Go、Rust 等語言橫空出世,進(jìn)一步拓寬了編程語言的邊界。當(dāng)年發(fā)明 Java 語言的 Sun 公司早已被 Oracle 收購,Oracle 現(xiàn)在也正處于水深火熱的云計(jì)算浪潮當(dāng)中,甚至連 Java 之父 James Gosling 也加入了當(dāng)今世界最大的云計(jì)算公司 AWS。
Java 語言發(fā)展的這 20 年也正是全球互聯(lián)網(wǎng)迅猛發(fā)展的 20 年,Java 語言同時也見證了電商浪潮、移動互聯(lián)網(wǎng)浪潮、大數(shù)據(jù)浪潮、云計(jì)算浪潮,所以在現(xiàn)今各大互聯(lián)網(wǎng)公司身上都能看到 Java 的身影。TIOBE 的語言排行榜顯示,自 2016 年初 Java 語言就出現(xiàn)了明顯的下頹趨勢,開發(fā)者社區(qū)也出現(xiàn)了一些唱衰 Java 語言的論調(diào),編者心中也有些許疑問:Java 老矣,尚能『飯』否?基于這樣的背景,InfoQ 邀請到了 Java 資深專家張建鋒來為大家解讀 Java 語言的發(fā)展現(xiàn)狀以及未來。
Python
Stack Overflow 最近的調(diào)查顯示,Python 已經(jīng)成了發(fā)展最快的主流編程語言,也是 Stack Overflow 上來自高收入國家的訪問中,點(diǎn)擊量最高的標(biāo)簽。
為什么 Python 發(fā)展得這么快?Python 的應(yīng)用范圍非常廣,從網(wǎng)站開發(fā)到數(shù)據(jù)科學(xué),再到 DevOps,到處都可以看到它的身影。所以值得認(rèn)真研究一下 Python 最近到底是在哪些具體的方面應(yīng)用得更廣了。本文會從另一個角度解讀 Stack Overflow 的數(shù)據(jù),理解具體是哪些方面的 Python 應(yīng)用在增長,以及在什么樣的公司和組織中 Python 用得最多。
盡管 Python 有時被粗略地分類為“腳本語言”(script language),但是它具有最豐富和強(qiáng)大的類庫,以及良好的擴(kuò)展性,于是在工業(yè)和科研上獲得廣泛的使用。PyCon 是全世界最大的以 Python 編程語言 為主題的技術(shù)大會,大會由 Python 社區(qū)組織,每年舉辦一次。在 Python 2017 上,Instagram 的工程師們帶來了一個有關(guān) Python 在 Instagram 的主題演講,同時還分享了 Instagram 如何將整個項(xiàng)目運(yùn)行環(huán)境升級到 Python 3 的故事。
Instagram 的總注冊用戶達(dá)到 30 億,月活用戶超過 7 億 (作為對比,微信最新披露的月活躍用戶為 9.38 億)。而令人吃驚的是,這么高的訪問量背后,竟完全是由以速度慢著稱的 Python + Django 支撐。Python 雖然運(yùn)行很慢,不過,這對于 Instagram 不是問題,因?yàn)樗麄冋J(rèn)為:『Instagram 的最大瓶頸在于開發(fā)效率,而不是代碼的執(zhí)行效率』。
Go
今日頭條當(dāng)前后端服務(wù)超過 80% 的流量是跑在 Go 構(gòu)建的服務(wù)上。微服務(wù)數(shù)量超過 100 個,高峰 QPS 超過 700 萬,日處理請求量超過 3000 億,是業(yè)內(nèi)最大規(guī)模的 Go 應(yīng)用。
在 2015 年之前,頭條的主要編程語言是 Python 以及部分 C++。隨著業(yè)務(wù)和流量的快速增長,服務(wù)端的壓力越來越大,隨之而來問題頻出。今日頭條為何轉(zhuǎn)向 Go 語言,又是如何利用 Go 做技術(shù)搭建的?
2007 年 9 月 20 日,關(guān)于設(shè)計(jì)一門全新語言的討論正式開始,這門全新的語言,就是后來的 Go。時至今日,Go 語言已經(jīng)發(fā)布到 1.9 版本,走過了整整十年的歷程。在這十年間,Go 語言兩奪 TIOBE 年度語言大獎(2009/2016),許多初創(chuàng)公司在早期使用 Go 進(jìn)行開發(fā),包括現(xiàn)在的云計(jì)算巨頭 Docker,也由此催生出了 Kubernetes 這樣的項(xiàng)目。在大洋彼岸的中國,Google Trends 顯示 Go 的異常火爆更讓 Go 語言之父感到震驚。
PHP
新浪微博在 2016 年 Q2 季度公布月活躍用戶(MAU)較上年同期增長 33%,至 2.82 億;日活躍用戶(DAU)較上年同期增長 36%,至 1.26 億,總注冊用戶達(dá) 8 億多。PC 主站作為重要的流量入口,承載部分用戶訪問和流量落地,部分服務(wù)(如:頭條文章)承擔(dān)全網(wǎng)所有流量。在這樣的情況下,PC 主站升級為 PHP 7,有哪些技術(shù)細(xì)節(jié)可以分享?
淘寶首頁是淘寶的門面,承載著幾乎淘系所有業(yè)務(wù)的入口,流量很大,量級單位為億。近幾年無線端崛起,業(yè)務(wù)重點(diǎn)開始向無線終端偏移(目前不能叫偏移,基本以無線為主了),所以淘寶 PC 端首頁的流量也有削減,不過即便如此,它的日均 PV 依然相當(dāng)高。淘寶首頁一向是內(nèi)部平臺和技術(shù)的試驗(yàn)田,它一直在變化著。
Clojure
編程語言的圣戰(zhàn),除了語言種類之分,也有動靜門派之別。我們寫著靜態(tài)語言往往想著動態(tài)語言的靈活,寫著動態(tài)語言又容易想著靜態(tài)語言的穩(wěn)定和可靠。常聽到有人說,Clojure 確實(shí)優(yōu)美,但動態(tài)語言實(shí)在駕馭不了,怎么辦?
JavaScriptJavaScript 因?yàn)榛ヂ?lián)網(wǎng)而生,緊隨著瀏覽器的出現(xiàn)而問世。它被世界上的絕大多數(shù)網(wǎng)站所使用,也被世界主流瀏覽器(Chrome、IE、FireFox、Safari、Opera)支持。
除了樣式效果外,JavaScript 也被越來越多地應(yīng)用于軟件開發(fā),例如后端任務(wù)、Web 服務(wù)器以及數(shù)據(jù)處理。JavaScript 成型很快,起初只關(guān)注一個很小的目標(biāo),后來市場的力量改造了這門語言。