從現在主流的觀(guān)點(diǎn)來(lái)看,計算機語(yǔ)言一共分為1-5代。
https://m.toutiao.com/is/RqFgYyy/?=從低代碼到無(wú)代碼
最早的計算機,是通過(guò)修改其電路或設置物理控制組來(lái)編程的,這時(shí)候的計算機還用不到任何語(yǔ)言,完全依靠硬件線(xiàn)路來(lái)進(jìn)行計算。
最早的計算機
第一代編程語(yǔ)言(1GL):這時(shí)的程序基本采用機器語(yǔ)言編寫(xiě),程序大多采用十進(jìn)制或二進(jìn)制編寫(xiě)。通過(guò)打孔卡、紙帶、磁帶等硬件輔助讀取程序的內容。
計算機通過(guò)紙帶讀取程序
第二代編程語(yǔ)言(2GL)也叫匯編語(yǔ)言,它們仍然與特定計算機的指令集和體系結構密切相關(guān),但匯編語(yǔ)言使程序更具可讀性,并使程序員從繁瑣且容易出錯的地址計算中解脫出來(lái)。
我們所說(shuō)的第三代編程語(yǔ)言就叫做高級編程語(yǔ)言了,如果放寬界限來(lái)看,現在大部分主流的編程工具都采用第三代編程語(yǔ)言。首先是ALGOL[1]和LISP[2],然后是用于數據計算的Fortran[3]和面向對象的Smalltalk[4],C語(yǔ)言是從 1969 年開(kāi)始開(kāi)發(fā),到 1973 年間完成的,C語(yǔ)言不僅作為Unix[5]操作系統的系統編程語(yǔ)言,至今還能夠一直保持流行,主要原因還是與硬件聯(lián)系緊密。所以直到今天,C語(yǔ)言一直在擔負和硬件打交道重要職責。
C語(yǔ)言
迪杰斯特拉(Edsger Dijkstra)是荷蘭著(zhù)名的計算機學(xué)家,是把計算機從工具層面提升到計算機科學(xué)層面的重要奠基者。他的貢獻覆蓋了計算機科學(xué)的各個(gè)領(lǐng)域,包括編譯器、操作系統、分布式、編程范式、編程語(yǔ)言(他和wirth一起參與發(fā)明了Algol語(yǔ)言)計算機算法等多個(gè)領(lǐng)域,很多算法都是以他的名字命名?,F在軟件的教科書(shū)中都有Dijkstra關(guān)于最短路徑計算的算法以及他的程序“死鎖”的案例。
Edsger Dijkstra是荷蘭人,與Wirth開(kāi)發(fā)ALGOL(ALGOrithmic Language)
Dijkstra是最早提出軟件架構的科學(xué)家,他從多個(gè)角度強調,結構正確對軟件成敗至關(guān)重要。在他的不斷堅持下,編程語(yǔ)言中清除了Goto語(yǔ)句,使得后續語(yǔ)言都形成了結構化語(yǔ)言的編程風(fēng)格。
隨著(zhù)Dijkstra對語(yǔ)言結構化的努力,Alan Kay等人發(fā)明了面向對象的編程方法。C++, JAVA、PHP、Python等語(yǔ)言逐步成為了高級語(yǔ)言的核心。
軟件架構師必讀:面向對象編程思想(OOP)的由來(lái)與本質(zhì)
我認為現代程序員都應該感謝Dijkstra,正是因為他的努力,才把編程這一工作從一門(mén)“手藝”變成一門(mén)“學(xué)問(wèn)”??墒?,大師都慢慢離我們遠去,我們正在把編程從一門(mén)“學(xué)問(wèn)”變回一門(mén)“手藝”。

多種高級語(yǔ)言
隨著(zhù)CPU和內存等硬件不斷高速發(fā)展,軟件需求也變得越來(lái)越復雜。我們當前使用的程序語(yǔ)言中有很多類(lèi)庫,使得程序員不必陷入重復造輪子的體力勞動(dòng)中,當程序員要系統運行某個(gè)功能時(shí),只需要發(fā)出指令,計算機就知道要調用并運行對應的代碼。

CPU等硬件快速發(fā)展
第四代編程語(yǔ)言的提出者當屬 James Martin[7],他是IBM的著(zhù)名專(zhuān)家,在《不使用程序員的應用程序開(kāi)發(fā)》一書(shū)中首次正式使用術(shù)語(yǔ) 4GL(第四代編程語(yǔ)言) 來(lái)指代具備一定自動(dòng)生成程序能力的語(yǔ)言。隨著(zhù)圖形化界面的進(jìn)一步的普及和發(fā)展,可視化編程語(yǔ)言逐漸普及,如果在第四代編程語(yǔ)言的基礎上,把系統運行的過(guò)程以更視覺(jué)化的方式呈現出來(lái),例如圖標、表格、圖表等形態(tài)。那就可以做到低代碼編程甚至實(shí)現無(wú)代碼平臺。

James Martin最早是IBM的高級軟件顧問(wèn)
當時(shí)4GL主要包括以下內容:
1、數據庫表驅動(dòng)(低代碼)編程,通常與框架和庫一起運行。開(kāi)發(fā)人員不使用編碼,而是采用可視化的操作形成各種所需表單,例如著(zhù)名的PowerBuilder[8]。實(shí)際上,在后來(lái)的微軟的Visual Basic 和 Borland 的Delphi上,大家已經(jīng)體會(huì )到了什么是低代碼開(kāi)發(fā)的高效率?,F在的低代碼只是那些工具的瀏覽器升級版本。
2、數據報告生成器的編程。這些語(yǔ)言對數據格式和將要生成的報告進(jìn)行描述,并從中直接生成所需的報告或生成程序來(lái)生成報告。其實(shí)我們現在應用最廣泛的SQL語(yǔ)言,就是在用英文說(shuō)我們要什么數據。此外,還有如SAS[9]、SPSS[10]和Stat等數據分析工具,數據管理類(lèi)的4GL操作界面,主要用于生成報告和統計分析。當前低代碼有一部分也是數據分類(lèi)別的工具。
3、軟件模型化的工作成果。軟件工程CASE[11]工具以及可能還有一些附加處理邏輯的規范中,自動(dòng)生成程序框架甚至整個(gè)系統。例如OMG標準組織的BPMN2.0,眾多低代碼的流程工具正是源于此類(lèi)成果。

4GL主要內容
從第四語(yǔ)言的發(fā)展來(lái)看,我們都可以從當前“低代碼”軟件中看到這些軟件發(fā)展方向的延續。低代碼正是第四代語(yǔ)言的延續,無(wú)代碼將是第四代語(yǔ)言的終點(diǎn)。
第五代語(yǔ)言旨在讓計算機在沒(méi)有程序員的情況下解決給定的問(wèn)題。這樣,用戶(hù)只需關(guān)心需要解決什么問(wèn)題,需要滿(mǎn)足什么條件,而不必擔心如何實(shí)現一個(gè)程序或算法來(lái)解決它們。從 1982年到1993 年之間,日本在第五代計算機系統項目中投入了大量研究和資金,希望使用這些工具設計一個(gè)龐大的計算機網(wǎng)絡(luò )。但事實(shí)證明,在給定一組定義特定問(wèn)題的約束下,推導出一個(gè)有效解決問(wèn)題的算法,本身就是一個(gè)非常困難的問(wèn)題。

5GL需要人工智能助力
從軟件編程的歷史來(lái)看,第五代語(yǔ)言顯然為時(shí)過(guò)早。人工智能的研究沒(méi)能為第五代語(yǔ)言插上智能的翅膀,反倒是第五代語(yǔ)言的失敗直接導致了“符號派”人工智能領(lǐng)域的沒(méi)落,因此在編程語(yǔ)言方面的進(jìn)展就更慢了,大多數計算機科學(xué)家都認為短期內此路不通。雖然,五代機后期趕上互聯(lián)網(wǎng)的崛起,分散了技術(shù)的注意力。雖然第五代語(yǔ)言失敗了,但也真正地為編程語(yǔ)言探索一把“未來(lái)”!
[1] ALGOL是算法語(yǔ)言(ALGOrithmic Language)的簡(jiǎn)稱(chēng)。
[2] LISP是定位編號分離協(xié)議的英文Locator ID Separation Protocol的縮寫(xiě)。實(shí)質(zhì)是一個(gè)IPinIP的協(xié)議。
[3] 公式翻譯器,是FormulaTranslation的中文翻譯。
[4] Smalltalk,被公認為歷史上第二個(gè)面向對象的程序設計語(yǔ)言,和第一個(gè)真正的集成開(kāi)發(fā)環(huán)境(IDE)。Smalltalk由艾倫·凱,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC開(kāi)發(fā)。
[5] Unix是20世紀70年代初出現的一個(gè)操作系統,除了作為網(wǎng)絡(luò )操作系統之外,還可以作為單機操作系統使用。
[6] 艾茲格·W·迪科斯徹在1972年獲得過(guò)素有計算機科學(xué)界的諾貝爾獎之稱(chēng)的圖靈獎。
[7] 詹姆斯·馬?。↗ames Martin),牛津大學(xué)計算機專(zhuān)業(yè)教授,博士,美國著(zhù)名的管理和信息技術(shù)專(zhuān)家,馬丁顧問(wèn)公司的主席。
[8] 它包含一個(gè)直觀(guān)的圖形界面和可擴展的面向對象的編程語(yǔ)言PowerScript,提供與當前流行的大型數據庫的接口,并通過(guò)ODBC與單機數據庫相連。是客戶(hù)機/服務(wù)器結構下,基于Windows3.x、Windows95和Windows NT的一個(gè)集成化開(kāi)發(fā)工具。
[9] statistical analysis system統計分析系統。
[10] SPSS(Statistical Product and Service Solutions),“統計產(chǎn)品與服務(wù)解決方案”軟件。
[11] CASE工具原來(lái)指用來(lái)支持管理信息系統開(kāi)發(fā)的、由各種計算機輔助軟件和工具組成的大型綜合性軟件開(kāi)發(fā)環(huán)境,隨著(zhù)各種工具和軟件技術(shù)的產(chǎn)生、發(fā)展、完善和不斷集成,逐步由單純的輔助開(kāi)發(fā)工具環(huán)境轉化為一種相對獨立的方法論。
【博士聊IT】,感興趣,加關(guān)注。
「博士聊IT」一文看懂編程的本質(zhì),程序員有前途么?
七步成詩(shī),軟件是如何把人類(lèi)思維翻譯成機器代碼的
軟件架構師必讀:面向對象編程思想(OOP)的由來(lái)與本質(zhì)
中國為什么沒(méi)有自己的編程語(yǔ)言?哲學(xué)、數學(xué)和語(yǔ)言學(xué)基礎是關(guān)鍵
聯(lián)系客服