小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

被哈佛掃地出門,他發(fā)明了讓無數(shù)程序員痛不欲生的編程語言,獲得了計算機界最高獎......

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

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

圖片

院長不提拔他的一個重要原因就是:這5年,除了一本小書之外,什么都沒出版!

那本小書后來幫助他獲得了計算機界最高獎:圖靈獎。

圖片

這本小書的名字叫做《A Programming Language

圖片

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

A Programming Language 縮寫是APL, 它真的是一個編程語言!

這個名字實在是搞笑,不由得讓人想起周星馳的電影《鹿鼎記》中的“有間客?!?。

圖片

圖片

一個編程語言,為什么有這么大的影響力,竟然能獲得圖靈獎?

有人認為APL是世界上最丑陋的編程語言,因為用它寫出的代碼實在是太難懂了。

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

圖片

看看這奇奇怪怪的符號,甚至得配一個專用的鍵盤,要不然你根本就敲不出來。

圖片

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

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

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

A1 2 3 4

兩個數(shù)組相加:

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

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

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

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

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

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

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

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

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

再來一個復(fù)雜一點兒的:生成6個隨機數(shù),范圍在1到999之間,并按照升序顯示

x [ ? x ← 6 ? 40 ]

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

圖片

我們要計算兩個矩陣的乘積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 重新排列為一個 2x2 的矩陣 A。? 是reshape的意思。

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

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

圖片

一旦你記住了這些符號,代碼就變得非常簡潔。

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

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

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

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

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

圖片

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

圖片

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

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

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

IBM肯定不會放過這樣的商業(yè)機會,開發(fā)了很多軟件和庫,吸引用戶使用APL,比如

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

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

Graphpak:交互式圖形包

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

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

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

......

一旦掌握APL,編寫程序的速度就非???,這讓它在建模和原型方面有重要價值。

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

可以說,在20世紀60年代末到80年代初的大型機上,APL編程語言占有重要的一席之地。

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

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

圖片

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

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

首屆圖靈獎獲得者Alan J. Perlis說過:一門語言如果不能影響你編程的思維方式,是不值得了解的

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

全文完,覺得不錯的話點個或者在看吧!

近期爆文

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


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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多