從現(xiàn)在主流的觀點來看,計算機語言一共分為1-5代。 https://m.toutiao.com/is/RqFgYyy/?=從低代碼到無代碼 最早的計算機,是通過修改其電路或設(shè)置物理控制組來編程的,這時候的計算機還用不到任何語言,完全依靠硬件線路來進行計算。 最早的計算機 第一代編程語言(1GL):這時的程序基本采用機器語言編寫,程序大多采用十進制或二進制編寫。通過打孔卡、紙帶、磁帶等硬件輔助讀取程序的內(nèi)容。 計算機通過紙帶讀取程序 第二代編程語言(2GL)也叫匯編語言,它們?nèi)匀慌c特定計算機的指令集和體系結(jié)構(gòu)密切相關(guān),但匯編語言使程序更具可讀性,并使程序員從繁瑣且容易出錯的地址計算中解脫出來。 我們所說的第三代編程語言就叫做高級編程語言了,如果放寬界限來看,現(xiàn)在大部分主流的編程工具都采用第三代編程語言。首先是ALGOL[1]和LISP[2],然后是用于數(shù)據(jù)計算的Fortran[3]和面向?qū)ο蟮腟malltalk[4],C語言是從 1969 年開始開發(fā),到 1973 年間完成的,C語言不僅作為Unix[5]操作系統(tǒng)的系統(tǒng)編程語言,至今還能夠一直保持流行,主要原因還是與硬件聯(lián)系緊密。所以直到今天,C語言一直在擔負和硬件打交道重要職責。 C語言 迪杰斯特拉(Edsger Dijkstra)是荷蘭著名的計算機學家,是把計算機從工具層面提升到計算機科學層面的重要奠基者。他的貢獻覆蓋了計算機科學的各個領(lǐng)域,包括編譯器、操作系統(tǒng)、分布式、編程范式、編程語言(他和wirth一起參與發(fā)明了Algol語言)計算機算法等多個領(lǐng)域,很多算法都是以他的名字命名?,F(xiàn)在軟件的教科書中都有Dijkstra關(guān)于最短路徑計算的算法以及他的程序“死鎖”的案例。 Edsger Dijkstra是荷蘭人,與Wirth開發(fā)ALGOL(ALGOrithmic Language) Dijkstra是最早提出軟件架構(gòu)的科學家,他從多個角度強調(diào),結(jié)構(gòu)正確對軟件成敗至關(guān)重要。在他的不斷堅持下,編程語言中清除了Goto語句,使得后續(xù)語言都形成了結(jié)構(gòu)化語言的編程風格。 隨著Dijkstra對語言結(jié)構(gòu)化的努力,Alan Kay等人發(fā)明了面向?qū)ο蟮木幊谭椒?。C++, JAVA、PHP、Python等語言逐步成為了高級語言的核心。 軟件架構(gòu)師必讀:面向?qū)ο缶幊趟枷耄∣OP)的由來與本質(zhì) 我認為現(xiàn)代程序員都應(yīng)該感謝Dijkstra,正是因為他的努力,才把編程這一工作從一門“手藝”變成一門“學問”??墒?,大師都慢慢離我們遠去,我們正在把編程從一門“學問”變回一門“手藝”。 多種高級語言 隨著CPU和內(nèi)存等硬件不斷高速發(fā)展,軟件需求也變得越來越復(fù)雜。我們當前使用的程序語言中有很多類庫,使得程序員不必陷入重復(fù)造輪子的體力勞動中,當程序員要系統(tǒng)運行某個功能時,只需要發(fā)出指令,計算機就知道要調(diào)用并運行對應(yīng)的代碼。 CPU等硬件快速發(fā)展 第四代編程語言的提出者當屬 James Martin[7],他是IBM的著名專家,在《不使用程序員的應(yīng)用程序開發(fā)》一書中首次正式使用術(shù)語 4GL(第四代編程語言) 來指代具備一定自動生成程序能力的語言。隨著圖形化界面的進一步的普及和發(fā)展,可視化編程語言逐漸普及,如果在第四代編程語言的基礎(chǔ)上,把系統(tǒng)運行的過程以更視覺化的方式呈現(xiàn)出來,例如圖標、表格、圖表等形態(tài)。那就可以做到低代碼編程甚至實現(xiàn)無代碼平臺。 James Martin最早是IBM的高級軟件顧問 當時4GL主要包括以下內(nèi)容: 1、數(shù)據(jù)庫表驅(qū)動(低代碼)編程,通常與框架和庫一起運行。開發(fā)人員不使用編碼,而是采用可視化的操作形成各種所需表單,例如著名的PowerBuilder[8]。實際上,在后來的微軟的Visual Basic 和 Borland 的Delphi上,大家已經(jīng)體會到了什么是低代碼開發(fā)的高效率?,F(xiàn)在的低代碼只是那些工具的瀏覽器升級版本。 2、數(shù)據(jù)報告生成器的編程。這些語言對數(shù)據(jù)格式和將要生成的報告進行描述,并從中直接生成所需的報告或生成程序來生成報告。其實我們現(xiàn)在應(yīng)用最廣泛的SQL語言,就是在用英文說我們要什么數(shù)據(jù)。此外,還有如SAS[9]、SPSS[10]和Stat等數(shù)據(jù)分析工具,數(shù)據(jù)管理類的4GL操作界面,主要用于生成報告和統(tǒng)計分析。當前低代碼有一部分也是數(shù)據(jù)分類別的工具。 3、軟件模型化的工作成果。軟件工程CASE[11]工具以及可能還有一些附加處理邏輯的規(guī)范中,自動生成程序框架甚至整個系統(tǒng)。例如OMG標準組織的BPMN2.0,眾多低代碼的流程工具正是源于此類成果。 4GL主要內(nèi)容 從第四語言的發(fā)展來看,我們都可以從當前“低代碼”軟件中看到這些軟件發(fā)展方向的延續(xù)。低代碼正是第四代語言的延續(xù),無代碼將是第四代語言的終點。 第五代語言旨在讓計算機在沒有程序員的情況下解決給定的問題。這樣,用戶只需關(guān)心需要解決什么問題,需要滿足什么條件,而不必擔心如何實現(xiàn)一個程序或算法來解決它們。從 1982年到1993 年之間,日本在第五代計算機系統(tǒng)項目中投入了大量研究和資金,希望使用這些工具設(shè)計一個龐大的計算機網(wǎng)絡(luò)。但事實證明,在給定一組定義特定問題的約束下,推導(dǎo)出一個有效解決問題的算法,本身就是一個非常困難的問題。 5GL需要人工智能助力 從軟件編程的歷史來看,第五代語言顯然為時過早。人工智能的研究沒能為第五代語言插上智能的翅膀,反倒是第五代語言的失敗直接導(dǎo)致了“符號派”人工智能領(lǐng)域的沒落,因此在編程語言方面的進展就更慢了,大多數(shù)計算機科學家都認為短期內(nèi)此路不通。雖然,五代機后期趕上互聯(lián)網(wǎng)的崛起,分散了技術(shù)的注意力。雖然第五代語言失敗了,但也真正地為編程語言探索一把“未來”! 【博士聊IT】,感興趣,加關(guān)注。 「博士聊IT」一文看懂編程的本質(zhì),程序員有前途么? |
|