為什麼常說的「五代編程語言」(機器、彙編、面向過程、面向對象、智能)中沒有函數式語言的位置?

這種分法常見於國內一些入門級的編程教材的介紹部分,但為什麼其中沒有函數式語言?明明是很重要的一支,使用廣泛程度超過所謂的「第五代語言」。


這種代際劃分就是扯淡。

另外第五代是智能,誰能告訴我智能編程語言是什麼鬼。。巧合是日本曾經也搞過所謂第五代計算機項目,往Prolog之類的邏輯式編程語言上投入不少,結果也沒搞出什麼名堂。。看來開坑要避免5這個數字


因為這個分代是錯誤的


那個計算機系統和編程語言的分代,是上世紀日本科學家騙研究經費的說法,跟咱們的國產操作系統、中文編程語言什麼的可以類比的,不要太當真:)


「正統」的5GL倒不是國內的劃分方式,但是種很過時的劃分:Fifth-generation programming language

90年代開始這種劃分就過時了…

但是題主說的那5種根本不是原本的5代劃分嘛。「正統」版:

Third-generation programming language &<- FORTRAN, C, C++, Java都在這裡

Fourth-generation programming language &<- FORTH, Perl, Python, Ruby, JavaScript啥的在這裡

但「正統」版原本也挺亂七八糟的,指導意義不大,看了笑笑就好。


這個分代應該是錯誤的,而且編程語言泛型由來已久,實際上也分不出誰先誰後(可以參考編程范型)。Lisp是函數式語言的始祖,但也可以說函數式是一種上古的編程泛型。其基於lambda計算是圖靈等價的。面向對象泛型有些人(比如Ruby的作者松本行弘)認為,並不能算一種特殊的編程方法,只能算過程式(或者叫命令式)語言加上了一點抽象。

第五代編程語言應該是特指日本對於Prolog研究的投入,需要一個大義的名分(松本行弘曾在他的書中提過),實際上只有一個Prolog是第五代編程的說法,前4代在第五代編程語言這個這個概念提出之前也是沒人提過的。而且其實我們往往沒有注意,Prolog說的好聽是邏輯式編程語言,實際上只不過是聲明式編程語言的一種擴展(這有點像面向對象是過程式的擴展一樣)。而我們常用的SQL也是一種聲明式語言。


這個分代是命令式的分代,怎麼能有函數式的位置?


希望把這個教材的作者列出來,我好加入到黑名單里


按照編譯原理 (龍書)的劃分,第一代:機器語言,第二代:彙編語言,第三代:高級程序設計語言,第四代:特定程序設計語言。

lz這是什麼鬼?還是我買的盜版書?還是龍書已經過時了?


什麼鬼


這個智能就是指函數式編程:)


推薦閱讀:

設計一門編程語言的話,你認為最重要的一定要有的特性會是哪些?
怎樣用簡單的語言解釋 monad?
函數式編程中cps(continuation-passing style )是什麼意思?
函數式語言的缺陷是什麼?
為什麼 pattern matching 常常出現在函數式編程語言?

TAG:編程語言 | 編程 | 計算機 | 函數式編程 | Lisp |