乾明 魚羊 邊策 發(fā)自 凹非寺
量子位 報道 | 公眾號
is the world.
這篇關于長文火了。
從的創(chuàng)建過程,到成為一個無所不在的語言,究竟經歷了一個怎樣的過程?
美國科技媒體ZDNet記者Nick Heath,詳細呈現了作為一款風靡全球的編程語言的發(fā)展歷程及其背后的故事。
真正體現了一個追求極致的程序員,單槍匹馬變革世界的理想主義精神。
不到一天時間,這篇文章就在 News上獲得了800多熱度以及800多評論。
從評論區(qū)中,也能看出人們對這一編程語言的態(tài)度,可以說是又愛又恨。
愛在于,其適用性極強,能夠簡單、快速地幫助自己完成任務。現在,無論是Web開發(fā),操作系統(tǒng)、運維、數據開發(fā)、機器學習等等,都離不開。
恨在于,功能還有不完善之處,主要還是希望十全十美,真正成為最好的語言。
總之,從來沒有一款編程語言,能像這樣,引起程序員心底的愛恨糾纏。
但這一切歸根溯源,還要從20世紀80年代末說起。
那些年
自創(chuàng)編程語言的念頭,來源于Guido van 對主流編程語言的不爽。當時,Guido正在CWI(荷蘭數學與計算機研究所)研究分布式計算系統(tǒng),使用C和Unix shell。
C不僅要求開發(fā)人員努力對付手動管理內存的復雜性,時時注意潛在錯誤的雷區(qū),還缺少用于日常開發(fā)任務的可重用代碼庫,開發(fā)人員不得不重復造輪子。
而Unix shell的問題在于,它的本質是調用命令,而不是真正的語言,運行速度太慢,無法處理復雜的邏輯。
1989年圣誕節(jié)期間,不想再忍受當時編程語言的不足,也為了打發(fā)假期時光,Guido下決心開展一個業(yè)余項目——開發(fā)一個新的腳本解釋程序。
創(chuàng)建自己的編程語言就像是從零開始造火箭,好在早先Guido就參加設計了一種教學語言——ABC。
Guido認為ABC優(yōu)美而強大,是專門為非專業(yè)程序員設計的。但ABC并沒有成功,Guido將其沒有成功的原因歸結為互聯網時代前的非開放。
在ABC誕生的年代,Guido和他的CWI同事們想要推廣這一種新的解釋型編程語言,得挨家挨戶地分發(fā)磁帶。
幸運的是,到80年代90年代之交,互聯網已經蓬勃地發(fā)展了起來。有機會避開這個坑了。
我想,“好吧,為什么我不創(chuàng)造自己的語言”,從ABC“竊取”idea,就可以把項目規(guī)模從三年壓縮到我自己一個人就可以完成的量,變成一個三個月的skunk works(臭鼬工程)。
就這樣,誕生了。
這個英文單詞的意思是蟒蛇,但編程語言名字的由來,并不是Guido對這種生物有什么特殊的偏愛。
之所以給自己的編程語言取名為c語言編輯器下載,是因為Guido是BBC電視劇蒙提·派森的飛行馬戲團(Monty ’s ) 的忠實愛好者。
從ABC發(fā)展而來,并結合了-2,Unix shell和C語言的習慣。
1991年,Guido發(fā)布了第一版,從那時起,就奠定了開放的基調。
Guido認為,與新興社區(qū)的互動,讓他意識到自己創(chuàng)造了一些可以成功的東西。
殺出重圍
不僅僅是,Perl、Tcl等編程語言也同樣誕生于80年代后期,但是卻只有締造了時代神話。
為什么能殺出重圍?
Guido認為,首先,天生能吸引開發(fā)人員,因為它就是為此而生的。在創(chuàng)造的過程中,Guido特意關注了語言易用性和能力之間的平衡,這種平衡正是開發(fā)者所期待的。
同時,十分易于閱讀。它強調可讀性和簡潔的語法,倡導用更少的代碼來表達清晰的想法,它讓編程語言與開發(fā)人員的“思想交流”變得更加容易。
并且,從早期的版本開始,就提供了一系列內置功能,被稱為“ (內置電池)”,擁有極其強大的標準庫,這一下子就讓它從眾多編程語言中脫穎而出。
而這也正得益于開放易拓展的屬性,整個社區(qū)的共同努力讓越來越強大。
還有一點也非常重要,那就是的源代碼是很容易維護的。
像Perl讓人詬病的一點,就是它過于靈活,源代碼常常難以閱讀,甚至被稱作write-only語言。當代碼量達到成百上千行的規(guī)模,想在Perl中進行維護,就需要大量的紀律約束。
而在中就沒有這個煩惱,顯得尤為優(yōu)美。
說起來,畢竟是把編程哲學嵌進靈魂的語言啊。
△之禪管理的正式化
突出重圍之后,的用戶越來越多,社區(qū)用戶顯著增長。
隨之而來的則是語言管理問題。
當時只有Guido一個人在管理,使用這一語言的開發(fā)者們一直擔心,哪天他被車撞了怎么辦,是不是就就完了?
這不是開玩笑,1994年的時候,真有人在社區(qū)發(fā)帖提出了這個問題。
之后,語言管理開始正式化:軟件基金會(PSF)的前身建立;更多的人加入了管理團隊,開發(fā)者放心了。
在1995年4月加入“美國國家研究推進機構”(CNRI)之后,Guido領導了一個小型開發(fā)團隊,開發(fā)程序,一個廣泛分布式系統(tǒng)(如)的移動代理。
當時業(yè)界知名的開發(fā)者如 、Roger Masse、Barry 、Ken 和Fred Drake等加入其中,這些人后來在社區(qū)中發(fā)揮了重要作用。
這一團隊創(chuàng)建了網站,包括管理核心代碼庫更改的CVS服務器,以及用于改進和維護語言的特殊興趣組的郵件列表。
1994年開始的兩年一度的研討會,也逐漸演變成更大的年度活動,最終成為PSF的年度PyCon,如今仍然非常活躍。
在過去的幾十年里,Guido一直在的改革過程中扮演著核心角色,被大家叫做“仁慈的獨裁者”。
但是現在的管理方式已經發(fā)生了重大改變。去年,Guido辭去了領導職務,因為公眾對分配表達式引入該語言有了分歧。
雖然管理者的目的是編寫更有效的代碼,但Guido在網上遭到了那些反對變革的人的嚴厲批評,有些人認為他們這樣做會使代碼的可讀性降低,難以維護。
這件事讓Guido認為,像改進功能這種事很難達成共識。他會選擇某種做法,而不去管別人同意不同意。
之后,每次新的功能發(fā)布后,指導委員會都會進行新的選舉。更多的核心開發(fā)人員社區(qū)也歡迎設立指導委員會。
一位核心開發(fā)人員認為此舉意味著朝著正確的方向邁出了一步。她說:“讓委員會做決定比一個人做決定更好。”
隨著管理團隊不斷完善,的發(fā)展有了穩(wěn)固的大本營。
隨之而來的便是——
吞噬世界的“巨蟒”
2003年以來,一直在TIOBE排行榜重最受歡迎的編程語言的前十位。
截至2018年12月,它是第三種受歡迎的語言,僅次于Java和C。
在2007年、2010年和2018年分別3次獲得了TIOBE年度最佳編程語言獎。該獎項是根據TIOBE指數,授予全年受歡迎程度最高的編程語言。
不僅是受個人開發(fā)者歡迎,也受到大公司青睞:包括、、亞馬遜在內的諸多知名公司都在使用它,包括、在內的大型應用,都是出自。
科研機構NASA還用來簡化航天飛機的任務流程設計,去探索太空。
的強大也離不開各種第三方軟件庫的支持,像NumPy、SciPy和這樣的庫允許用戶在中進行科學計算。
本身并不是為數值計算而設計的,但是因為有了這些軟件庫加入,可以替代甚至做得更好,而且這些軟件是完全開源免費的。
在科研領域,越來越多的人用來處理數據,最近發(fā)布的黑洞照片就是用編寫的算法進行拼接合成的。
不僅趕上了90年代末期互聯網崛起的第一波發(fā)展浪潮,近年來也是機器學習這一熱門領域的寵兒。
谷歌的使用的就是。更直接,從的名字來看就知道它和密不可分的聯系。
此外還有Keras、-learn等機器學習框架也都是用。
這些框架的支持下,甚至只用6行代碼,就能夠寫出一個機器學習程序。
目前主流的幾種操作系統(tǒng),比如Linux、macOS、等都在系統(tǒng)中包含了組件。
連一向封閉的微軟態(tài)度也逐漸軟化,今年他們在軟件商店中加入了安裝程序,并且給用戶提供從命令行安裝的快捷入口。
雖然越來越受歡迎,但也有不少隱憂。
の挑戰(zhàn)
現在,已經成為開發(fā)者群體中最熱門的語言,甚至出圈成為業(yè)余愛好者學習的首要編程語言。
但它吞噬世界,仍舊是正在進行時,它的覆蓋空白區(qū)、其未能吞噬之處——移動計算領域——重要性越來越強。
2016年,Guido在接受媒體采訪時,也承認了這一點。在他看來,移動仍是很難啃下來的平臺。
但他也給出了解決方案:找到懂得構建移動版本的人就行了。
因為標準的源代碼,幾乎可以編譯成能在安卓和iOS系統(tǒng)中運行的二進制文件。
而且社區(qū)中,已經有很多人在朝這方面努力。但3年后,依舊不容樂觀。
今年的語言峰會上,聯合創(chuàng)始人 Keith-Magee再次提出了警告,如果對移動和新Web平臺的支持沒有改善,那么將面臨“存在風險”。
他設想了這樣的一個場景:當iPad成為主流,筆記本電腦不過是細分設備時,會發(fā)生什么?
吞噬遠未成功,大家仍需努力。
而且,時變境遷,起于20世紀80年代的,在新的運行環(huán)境中,逐漸變得力有不逮。
為了修復缺陷,更好地適應新環(huán)境,讓更有生命力,社區(qū)做了一個非常有決斷的動作:
推出 3,不向后兼容。
這背后長痛不如短痛的想法,輕裝前行的理念等等, 大部分開發(fā)者都理解。
但版本割裂帶來的陣痛,還是成為了被詬病的一大重點。
2008年 3問世之時c語言編輯器下載,給 2.7定下的是2015年。
因為擔心大量現有代碼無法遷移到 3,這一時間又推遲到了2020年。
這12年中,也發(fā)布了程序,幫助開發(fā)者更好地將 2代碼轉換為 3。
但這也讓不少人糾結與徘徊。
現在, 2大限將至,躍遷將要完成,可局勢也變了。
遭遇強敵
在這期間,有不少新的編程語言出現,分食的領地。
比如谷歌2009年正式推出的Go,更是“明目張膽”地搶人——開發(fā)一款從 2.7到Go語言的編譯器。
而且,這一語言因為其開發(fā)速度、更加便捷、部署簡單、更好并行等方面的特性,贏得越來越多開發(fā)者青睞,在2016年被評為“TIOBE最佳語言”。
2019年,程序員社交平臺發(fā)起的一項調查結果顯示,Go是程序員最想學習的編程語言,而只排第三。
不少公司,也開始用腳投票。比如知乎,就舍棄了而用Go重構推薦系統(tǒng)。
還有Julia。這一源自MIT的新編程語言,創(chuàng)建于 3發(fā)布第二年,2012年公開發(fā)布。
截止2018年底,已經有300多萬下載量。
過去一年的時間中,Julia在上的標星在過去一年增長了一倍。也被Jeff Dean批注為“Julia +TPUs =快速且易于表達的機器學習計算”。
來勢洶洶,可見一斑。
根據Julia最新發(fā)布的官方報告,其主要的應用領域為數據分析、機器學習、物理學、數學、人工智能、信號與圖像處理等等。
而這些,當下都是發(fā)揮作用、面向未來的核心陣地。
不過,也沒有停下來發(fā)展的腳步,也在不斷推陳出新,面向未來編程。
比如PyPy的不斷優(yōu)化,SciPy和NumPy的不斷完善等等,都在放大的能量。
這個起于20世紀80年代一個業(yè)余項目的語言,到現在仍舊具備超強生命力,兼容并包,成為開發(fā)者手中的利器,不斷吞噬世界。
越來越多人開始認為:才是世界上最好的編程語言。
你同意嗎?
ZDNet記者Nick Heath的英文原作很長,但披露了相當多的發(fā)展細節(jié),我們僅引述了其中關鍵節(jié)點,建議大家前去拜讀完整原文^_^
參考鏈接:
— 完 —
直播 | Style-Gan的架構與實現
量子位 · 頭條號簽約作者
?'?' ? 追蹤AI技術和產品新動態(tài)
喜歡就點「在看」吧 !