亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747


 

有著20年編程經(jīng)驗(yàn)的資深程序員,以自己多年來的經(jīng)歷,總結(jié)出程序員的編程語言切換規(guī)律,做了一個(gè)主流編程語言的進(jìn)階流程圖,展示不同編程語言之間的承接關(guān)系、程序員選擇編程語言的方向和路徑。

鐵打的程序員,流水的編程語言。時(shí)代在發(fā)展,編程語言也與時(shí)俱進(jìn),不斷有新的、更好或者更時(shí)髦的語言出現(xiàn),程序員也會(huì)或主動(dòng)、或被動(dòng)去學(xué)習(xí)一門新的、”更好“的編程語言。

Tailscale_io聯(lián)合創(chuàng)始人Avery Pennarun,一位有著20年編程經(jīng)驗(yàn)的資深程序員,以自己多年來的經(jīng)歷,總結(jié)出程序員的編程語言切換規(guī)律,做了一個(gè)主流編程語言的進(jìn)階流程圖,展示不同編程語言之間的承接關(guān)系、程序員選擇編程語言的方向和路徑。

Avery這個(gè)人,很像是小說、人物報(bào)道里的典型程序員,有點(diǎn)偏執(zhí),喜歡搞怪。曾經(jīng)做過7年的Debian開發(fā),或許這段經(jīng)歷能夠說明一些問題。因?yàn)锳very資歷深涉獵廣,我們也能夠從這篇文章中,了解到編程語言發(fā)展過程的一些有趣的歷史傳承。

我們看到,圖中總共有4條主線,分別是:

  1. 低級(jí)語言,即匯編和C那一支
  2. 商用或者教學(xué)用語言,即BASIC那一支
  3. 專為數(shù)學(xué)和科學(xué)開發(fā)的語言,即R那一支
  4. 腳本、膠水語言,即Shell那一支

或許有人會(huì)說這張圖里缺少了html、css、Haskell和Lisp,這不重要,因?yàn)锳very并沒打算展開去講它們。

Avery提到,最初的時(shí)候,4類語言有一個(gè)比較明確的邊界。低階語言編程的程序員使用C,匯編或者Turbo Pascal,商用大型程序員使用VB(當(dāng)然那個(gè)時(shí)候的“大型”,和現(xiàn)在的“大型”完全不在一個(gè)量級(jí)),數(shù)值計(jì)算人員使用Fortran,R或MATLAB,膠水編程使用Shell或Perl。

程序員不會(huì)用Perl來寫操作系統(tǒng),也不會(huì)用VB寫大數(shù)相乘。現(xiàn)代語言則模糊了相互之間的邊界,很多R寫的程序,也可以用Python實(shí)現(xiàn)。語言之間的轉(zhuǎn)換主要在于挑選不同的風(fēng)格。

低級(jí)編程語言

先來看看傳說中的匯編。用匯編寫程序是相當(dāng)困難的,但即使在人工智能蓬勃發(fā)展的今天,某些場景下匯編仍然是不可替代的最佳編程語言,而且,所有編譯語言的代碼都會(huì)被轉(zhuǎn)成匯編或者機(jī)器語言。

從匯編開始出現(xiàn)了3個(gè)分支,在風(fēng)格上有明顯的差異,不過我們先看C這一支。Pascal特點(diǎn)是有"begin...end";而C是用{}。花括號(hào)的風(fēng)格影響了后世很多語言,雖然討厭花括號(hào)的程序員群體也不在少數(shù)。

而且C有一種魔力,一旦你開始使用就很容易形成一種習(xí)慣,不管最終的效率高低,你總會(huì)想用C去實(shí)現(xiàn)一切。而且C也是為數(shù)不多的能合理實(shí)現(xiàn)所有上述四類編程問題的語言之一,而且速度也還可以。

C再往下,是C++和Python 2。C++雖然名字看起來好像是C的進(jìn)階,然而風(fēng)格卻大不相同。Avery吐槽”用C++是因?yàn)楹芏嘧錾逃么笮统绦蜷_發(fā)的程序員別無選擇“。

而膠水編程就好辦多了,直接上手Python 2。雖然Python很慢,同時(shí)代的Perl也有不少簇?fù)怼5鳛橐幻鸆語言選手,Avery認(rèn)為Perl的語法風(fēng)格只能用怪誕來形容。相比之下,更接近C的Python顯然是更好的選擇。

不需要花費(fèi)太多精力就能很快適應(yīng)Python的語法;在Python里調(diào)用C函數(shù)的成本比JAVA以及其他語言低多了!唯一的缺點(diǎn)就是慢,但你可以調(diào)用C模塊來緩解啊。

后來Java出現(xiàn)了,大批C和C++程序員迅速投入Java懷抱,以至于很長一段時(shí)間Java都霸占著編程語言No 1的位子。

Java的缺點(diǎn)是運(yùn)行時(shí)很慢,然而相比C++超慢的編譯速度、讓人頭大的header文件、超弱的跨平臺(tái)性…這點(diǎn)缺點(diǎn)不算什么了。

Go剛出現(xiàn)的時(shí)候,有人稱其為C++和Java的終結(jié)者,結(jié)果并沒有。Avery說,想當(dāng)年Go最輝煌的那陣子是因?yàn)镻ython 2程序員發(fā)現(xiàn)它跑的比Python快,RAM占用比Python少,寫代碼的難度相當(dāng)。

雖然現(xiàn)在認(rèn)為Go是一門“系統(tǒng)”語言,但Avery認(rèn)為本質(zhì)上,Go其實(shí)還是一個(gè)膠水兒語言。

商用編程語言

BASIC是基于讓“新手能夠輕松掌握”的目的開發(fā)的,但是學(xué)院派發(fā)現(xiàn)有BASIC編程經(jīng)驗(yàn)的學(xué)生,很難教好他編程,這實(shí)在是有點(diǎn)諷刺。當(dāng)然他們也沒選擇C,而是選擇了更適合教學(xué)用的Pascal。

后來微軟將BASIC轉(zhuǎn)變成Visual Basic,這可能是JS出現(xiàn)之前最受歡迎的編程語言了。選擇我們?nèi)匀辉贓xcel中使用VB,只不過它改名叫宏。

后來Turbo Pascal的作者創(chuàng)建了一門新的語言Delphi,口碑很不錯(cuò),再后來還開發(fā)了C#。相反,VB.NET則可以說是非常失敗了。

Avery還不忘給出很有殺傷力一擊:我其實(shí)很想在VB后面再加一個(gè)箭頭,但不好意思,我的確不知道這幫程序員后來去哪兒了。可能轉(zhuǎn)行做網(wǎng)頁了?或者去搞Excel的宏?

膠水編程語言

Avery說,膠水語言的鼻祖要數(shù)Unix的Shell。Unix的設(shè)計(jì)哲學(xué)倡導(dǎo)一次只做一件事,并將其做到極致。這些功能單一、但是極致好用的小模塊,通過pipeline鏈接起來,就能合力完成一件復(fù)雜的“大任務(wù)”,頗有點(diǎn)螞蟻群的味道。

理想雖然美好,無奈敗給了現(xiàn)實(shí),這樣看成完美的小程序模塊很難實(shí)現(xiàn)。于是有了awk,一個(gè)和C語法相似的解釋語言。

接下來有了Perl,Perl對(duì)互聯(lián)網(wǎng)的興起起到了非常大的推動(dòng)作用,同時(shí)也借助互聯(lián)網(wǎng)Perl收獲了超贊的口碑。人們使用Perl來運(yùn)行web的CGI腳本,接受HTML請(qǐng)求,然后進(jìn)行解析。

你知道Perl最讓人印象深刻的是什么嗎?讓人眼花繚亂的標(biāo)點(diǎn)符號(hào)!

當(dāng)然,你之砒霜可能是他人之良藥。有人覺得Perl語法丑陋(比如Avery),那么他可能之后會(huì)選擇使用Python;相反,有人愛死Perl的風(fēng)格,那么可能會(huì)選擇Ruby。

所以,如果你還在用Perl寫Web CGI腳本,那么請(qǐng)繼續(xù)吧;或者,你可以考慮一下“全世界最好的語言”php。

前端編程語言

JavaScript是一門編程語言,現(xiàn)在應(yīng)該已經(jīng)是一個(gè)不爭的事實(shí)了。然而,Avery指出,正因?yàn)镴S是一個(gè)大雜燴,把HTML、CSS、面向?qū)ο蟆⒑瘮?shù)式編程、動(dòng)態(tài)語言、JIT等等所有涉及到HTML請(qǐng)求的概念,統(tǒng)統(tǒng)囊括進(jìn)來,導(dǎo)致這個(gè)語言特別丑。

而且你能相信一門在20多年前,僅僅花了10天時(shí)間就做出來的語言嗎?顯然它存在著很大的缺陷和一些無法修復(fù)的嚴(yán)重錯(cuò)誤。

我們回頭再看這張圖,注意一下右下角Python 3和JS:

你會(huì)看到Python和JS形成了一個(gè)循環(huán)。為什么會(huì)這兩個(gè)會(huì)出現(xiàn)糾纏反復(fù)呢?Avery說因?yàn)橛肑S久了容易變得不正常,需要通過Python治療一下。(hmmmm...)

接下來的TypeScript,可能因?yàn)樽髡呤荄elphi的開發(fā)者,Avery對(duì)TypeScript給予了很高的評(píng)價(jià)。

在node.js出現(xiàn)之前,JS被認(rèn)為就是一門前端語言。而現(xiàn)在成為了一門前端+后端+命令行的一條龍語言。

最后,Avery也沒放過Python 3。他說在Python 3中編寫系統(tǒng)程序,你會(huì)發(fā)現(xiàn)自己經(jīng)常搞亂unicode轉(zhuǎn)換,甚至連文件名都會(huì)搞亂!

善有善報(bào),惡有惡報(bào)。

所有,親愛的新智元讀者們,你們?cè)趺纯茨?請(qǐng)留言表達(dá)你們對(duì)Avery這個(gè)路線圖的態(tài)度。

參考鏈接:

https://apenwarr.ca/log/20190318

分享到:
標(biāo)簽:編程
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績?cè)u(píng)定