电竞比分网-中国电竞赛事及体育赛事平台

分享

被哈佛掃地出門(mén),他發(fā)明了讓無(wú)數(shù)程序員痛不欲生的編程語(yǔ)言,獲得了計(jì)算機(jī)界最高獎(jiǎng)......

 芥子c1yw3tb42g 2024-08-20 發(fā)布于陜西

肯尼斯·艾弗森在哈佛大學(xué)當(dāng)了5年助教,沒(méi)有獲得終身教職。

圖片

院長(zhǎng)不提拔他的一個(gè)重要原因就是:這5年,除了一本小書(shū)之外,什么都沒(méi)出版!

那本小書(shū)后來(lái)幫助他獲得了計(jì)算機(jī)界最高獎(jiǎng):圖靈獎(jiǎng)。

圖片

這本小書(shū)的名字叫做《A Programming Language

圖片

(注:這個(gè)故事是另外一個(gè)圖靈獎(jiǎng)獲得者布魯克斯講的,我搜了一下,《A Programming Language》這本小書(shū)其實(shí)在哈佛大學(xué)的時(shí)候并沒(méi)有出版,艾弗森當(dāng)時(shí)只是發(fā)明了一套符號(hào)系統(tǒng),主要用于教學(xué))

A Programming Language 縮寫(xiě)是APL, 它真的是一個(gè)編程語(yǔ)言!

這個(gè)名字實(shí)在是搞笑,不由得讓人想起周星馳的電影《鹿鼎記》中的“有間客棧”。

圖片

圖片

一個(gè)編程語(yǔ)言,為什么有這么大的影響力,竟然能獲得圖靈獎(jiǎng)?

有人認(rèn)為APL是世界上最丑陋的編程語(yǔ)言,因?yàn)橛盟鼘?xiě)出的代碼實(shí)在是太難懂了。

下面是個(gè)康威生命游戲的代碼,一行就能實(shí)現(xiàn)極為復(fù)雜的功能。

圖片

看看這奇奇怪怪的符號(hào),甚至得配一個(gè)專(zhuān)用的鍵盤(pán),要不然你根本就敲不出來(lái)。

圖片

還有人認(rèn)為它是有史以來(lái)最重要的編程語(yǔ)言,它本質(zhì)上是函數(shù)式的,迫使程序員進(jìn)行并行思考,它支持任意形狀和大小的矩陣,提供了任何你能想象得到的運(yùn)算符進(jìn)行選擇,拆分,連接,投影,重塑等各種運(yùn)算,幾天內(nèi)就可以用APL寫(xiě)一個(gè)SQL解釋器,沒(méi)有任何語(yǔ)言能和它媲美。

其實(shí),艾弗森并不是為了編寫(xiě)計(jì)算機(jī)程序而設(shè)計(jì)APL的,他是為了更好地表達(dá)數(shù)學(xué)思想和算法,這使得APL具有一種非常獨(dú)特的符號(hào)體系,如希臘字母、箭頭、圓圈等。

比如數(shù)組a = [1,2,3,4] 在APL 中是這么表示的:

A1 2 3 4

兩個(gè)數(shù)組相加:

A ← 1 2 3 4B ← 5 6 7 8A + B ? 輸出 6 8 10 12

創(chuàng)建一個(gè)從1到5的數(shù)組:

n ← ? 5 ? n的值是[1,2,3,4,5]

把數(shù)組n的每個(gè)元素做平方:

n * 2     ? 結(jié)果是[1,4,9,16,25],APL中星號(hào)表達(dá)的是平方,不是乘法

對(duì)數(shù)組n中每個(gè)元素相加,求和:

+/ n ? 結(jié)果是 1+2+3+4+5 = 15 ,“/”是規(guī)約運(yùn)算,它使得左側(cè)的運(yùn)算符(+)應(yīng)用到右側(cè)所有元素

對(duì)數(shù)組n求平均值

(+/ n) ÷ ?n     ? ? 是求一個(gè)數(shù)組的個(gè)數(shù)

再來(lái)一個(gè)復(fù)雜一點(diǎn)兒的:生成6個(gè)隨機(jī)數(shù),范圍在1到999之間,并按照升序顯示

x [ ? x ← 6 ? 40 ]

APL對(duì)矩陣運(yùn)算和高維數(shù)組操作非常簡(jiǎn)潔和直觀,假設(shè)我們有兩個(gè)矩陣A和B

圖片

我們要計(jì)算兩個(gè)矩陣的乘積C = A  × B 

A ← 2 2 ? 1 2 3 4B ← 2 2 ? 5 6 7 8C ← A +.× B

解釋一下:

(1) 2 2 ? 1 2 3 4 將一維數(shù)組 1 2 3 4 重新排列為一個(gè) 2x2 的矩陣 A。? 是reshape的意思。

(2) 2 2 ? 5 6 7 8 將一維數(shù)組 5 6 7 8 重新排列為一個(gè) 2x2 的矩陣 B。

(3)  +.× 是APL的內(nèi)置運(yùn)算符,用于矩陣乘法。

圖片

一旦你記住了這些符號(hào),代碼就變得非常簡(jiǎn)潔。

APL的核心就是數(shù)組,它甚至可以叫做“Array Programming Language”。

我們回過(guò)頭來(lái)說(shuō)艾弗森,他“黯然”離開(kāi)哈佛大學(xué)以后,加入了IBM的研究院,薪水也翻了一番。

在IBM,弗雷德·布魯克斯(System/360架構(gòu)師,圖靈獎(jiǎng)獲得者,《人月神話》作者)建議他:堅(jiān)持做你真正想做的事情,管理層非常需要新想法,只要不是非常瘋狂的想法,都會(huì)得到支持。

于是艾弗森就繼續(xù)發(fā)展自己在哈佛大學(xué)創(chuàng)建的符號(hào)系統(tǒng),這一發(fā)展不得了,竟然變成了一門(mén)計(jì)算機(jī)編程語(yǔ)言。

1964年,IBM推出著名的大型機(jī)System/360,APL也在System/360上實(shí)現(xiàn)了。

圖片

當(dāng)時(shí)的編程語(yǔ)言,基本上都是批處理的,就是說(shuō)把代碼輸入計(jì)算機(jī),“等半天”后查看運(yùn)行結(jié)果。

圖片

但是APL是一套完整的交互式編程環(huán)境,程序員可以輸入 APL 語(yǔ)句并立即得到響應(yīng)。

程序可以在數(shù)十人同時(shí)使用的計(jì)算機(jī)上定義、調(diào)試、運(yùn)行和保存。

對(duì)于許多曾經(jīng)飽受使用打孔卡進(jìn)行批處理編程之苦的程序員來(lái)說(shuō),APL絕對(duì)是一大福音。

IBM肯定不會(huì)放過(guò)這樣的商業(yè)機(jī)會(huì),開(kāi)發(fā)了很多軟件和庫(kù),吸引用戶(hù)使用APL,比如

Starmap :一組繪制恒星和行星位置的函數(shù)

IBGS:交互式商業(yè)模擬游戲

Graphpak:交互式圖形包

MINIPERT:項(xiàng)目管理的關(guān)鍵路徑方法 (CPM) 系統(tǒng)

APL 財(cái)務(wù)規(guī)劃系統(tǒng)

APL 計(jì)量經(jīng)濟(jì)學(xué)規(guī)劃語(yǔ)言

......

一旦掌握APL,編寫(xiě)程序的速度就非??欤@讓它在建模和原型方面有重要價(jià)值。

1973年,Continental Can公司需要給旗下的21家制造廠提供一個(gè)庫(kù)存管理程序,他們的FORTRAN程序員干了一年也沒(méi)搞定,后來(lái)STSC公司的一個(gè)銷(xiāo)售出馬,用APL Plus一周內(nèi)就把一個(gè)可用的工作模型給弄好了。

可以說(shuō),在20世紀(jì)60年代末到80年代初的大型機(jī)上,APL編程語(yǔ)言占有重要的一席之地。

1980年,在IBM工作了20年的艾弗森離開(kāi)IBM,回到加拿大,加入IP Sharp Associates公司,從事APL語(yǔ)言的咨詢(xún)和服務(wù)工作。

1990年,為了解決APL中的特殊字符問(wèn)題,艾弗森和華裔科學(xué)家Roger Hui一起發(fā)明了J語(yǔ)言,J語(yǔ)言完全使用基本ASCII字符集。

圖片

80年代以后,隨著個(gè)人計(jì)算機(jī)的興起,Basic、Pascal、C語(yǔ)言等新貴開(kāi)始統(tǒng)治市場(chǎng),APL慢慢地退居到了科學(xué)計(jì)算、統(tǒng)計(jì)、保險(xiǎn)精算和金融等領(lǐng)域,APL的符號(hào)性質(zhì)和數(shù)組功能使其受到領(lǐng)域?qū)<液蛿?shù)據(jù)科學(xué)家的歡迎,他們不具備程序員的技能。

那么,都2024年了,APL值得我們?nèi)チ私鈫幔?nbsp;

首屆圖靈獎(jiǎng)獲得者Alan J. Perlis說(shuō)過(guò):一門(mén)語(yǔ)言如果不能影響你編程的思維方式,是不值得了解的。

而APL就是一門(mén)能影響你編程思維的語(yǔ)言,強(qiáng)烈建議去Try APL這個(gè)網(wǎng)站去玩一下:https:///

全文完,覺(jué)得不錯(cuò)的話點(diǎn)個(gè)或者在看吧!

近期爆文

千萬(wàn)別去外企!
這兩個(gè)大齡程序員,打算搞垮一個(gè)世界軟件巨頭!
這兩個(gè)程序員要花100萬(wàn),徹底重寫(xiě)世界上最復(fù)雜的軟件
世界上最大的盜版網(wǎng)站,遇到麻煩了!
美國(guó)的頂尖程序員,深夜都在狂玩兒這個(gè)游戲!
這個(gè)女生寫(xiě)的軟件,解決了無(wú)數(shù)程序員最頭疼的問(wèn)題!
你們程序員為什么不靠自己的項(xiàng)目謀生?而必須為其他人打工?
擺了個(gè)攤,日銷(xiāo)930元,80后女產(chǎn)品經(jīng)理不再焦慮了


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多