低代碼無代碼平臺的未來在哪里?編程語言的進化史告訴你答案(低代碼和無代碼是什么)
最近低代碼無代碼成為社會關注的焦點,但低代碼并不是憑空出現(xiàn)的。從編程語言的發(fā)展歷史來看,提高編碼效率是無數(shù)軟件前輩的初衷和心血凝結,也是編程語言不斷進化的結果。今天我們就來捋一捋計算機語言的發(fā)展歷史,其中既有令人嘖嘖贊嘆的成就,也有令人扼腕嘆息的失敗。
從現(xiàn)在主流的觀點來看,計算機語言一共分為1-5代。
最早的計算機,是通過修改其電路或設置物理控制組來編程的,這時候的計算機還用不到任何語言,完全依靠硬件線路來進行計算。
最早的計算機
第一代編程語言(1GL):這時的程序基本采用機器語言編寫,程序大多采用十進制或二進制編寫。通過打孔卡、紙帶、磁帶等硬件輔助讀取程序的內(nèi)容。
計算機通過紙帶讀取程序
第二代編程語言(2GL)也叫匯編語言,它們?nèi)匀慌c特定計算機的指令集和體系結構密切相關,但匯編語言使程序更具可讀性,并使程序員從繁瑣且容易出錯的地址計算中解脫出來。
我們所說的第三代編程語言就叫做高級編程語言了,如果放寬界限來看,現(xiàn)在大部分主流的編程工具都采用第三代編程語言。首先是ALGOL[1]和LISP[2],然后是用于數(shù)據(jù)計算的Fortran[3]和面向對象的Smalltalk[4],C語言是從 1969 年開始開發(fā),到 1973 年間完成的,C語言不僅作為Unix[5]操作系統(tǒng)的系統(tǒng)編程語言,至今還能夠一直保持流行,主要原因還是與硬件聯(lián)系緊密。所以直到今天,C語言一直在擔負和硬件打交道重要職責。
C語言
迪杰斯特拉(Edsger Dijkstra)是荷蘭著名的計算機學家,是把計算機從工具層面提升到計算機科學層面的重要奠基者。他的貢獻覆蓋了計算機科學的各個領域,包括編譯器、操作系統(tǒng)、分布式、編程范式、編程語言(他和wirth一起參與發(fā)明了Algol語言)計算機算法等多個領域,很多算法都是以他的名字命名?,F(xiàn)在軟件的教科書中都有Dijkstra關于最短路徑計算的算法以及他的程序“死鎖”的案例。
Edsger Dijkstra是荷蘭人,與Wirth開發(fā)ALGOL(ALGOrithmic Language)
Dijkstra是最早提出軟件架構的科學家,他從多個角度強調(diào),結構正確對軟件成敗至關重要。在他的不斷堅持下,編程語言中清除了Goto語句,使得后續(xù)語言都形成了結構化語言的編程風格。
隨著Dijkstra對語言結構化的努力,Alan Kay等人發(fā)明了面向對象的編程方法。C , JAVA、PHP、Python等語言逐步成為了高級語言的核心。
軟件架構師必讀:面向對象編程思想(OOP)的由來與本質(zhì)
我認為現(xiàn)代程序員都應該感謝Dijkstra,正是因為他的努力,才把編程這一工作從一門“手藝”變成一門“學問”。可是,大師都慢慢離我們遠去,我們正在把編程從一門“學問”變回一門“手藝”。
多種高級語言
隨著CPU和內(nèi)存等硬件不斷高速發(fā)展,軟件需求也變得越來越復雜。我們當前使用的程序語言中有很多類庫,使得程序員不必陷入重復造輪子的體力勞動中,當程序員要系統(tǒng)運行某個功能時,只需要發(fā)出指令,計算機就知道要調(diào)用并運行對應的代碼。
CPU等硬件快速發(fā)展
第四代編程語言的提出者當屬 James Martin[7],他是IBM的著名專家,在《不使用程序員的應用程序開發(fā)》一書中首次正式使用術語 4GL(第四代編程語言) 來指代具備一定自動生成程序能力的語言。隨著圖形化界面的進一步的普及和發(fā)展,可視化編程語言逐漸普及,如果在第四代編程語言的基礎上,把系統(tǒng)運行的過程以更視覺化的方式呈現(xiàn)出來,例如圖標、表格、圖表等形態(tài)。那就可以做到低代碼編程甚至實現(xiàn)無代碼平臺。
James Martin最早是IBM的高級軟件顧問
當時4GL主要包括以下內(nèi)容:
1、數(shù)據(jù)庫表驅動(低代碼)編程,通常與框架和庫一起運行。開發(fā)人員不使用編碼,而是采用可視化的操作形成各種所需表單,例如著名的PowerBuilder[8]。實際上,在后來的微軟的Visual Basic 和 Borland 的Delphi上,大家已經(jīng)體會到了什么是低代碼開發(fā)的高效率?,F(xiàn)在的低代碼只是那些工具的瀏覽器升級版本。
2、數(shù)據(jù)報告生成器的編程。這些語言對數(shù)據(jù)格式和將要生成的報告進行描述,并從中直接生成所需的報告或生成程序來生成報告。其實我們現(xiàn)在應用最廣泛的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ù),無代碼將是第四代語言的終點。
第五代語言旨在讓計算機在沒有程序員的情況下解決給定的問題。這樣,用戶只需關心需要解決什么問題,需要滿足什么條件,而不必擔心如何實現(xiàn)一個程序或算法來解決它們。從 1982年到1993 年之間,日本在第五代計算機系統(tǒng)項目中投入了大量研究和資金,希望使用這些工具設計一個龐大的計算機網(wǎng)絡。但事實證明,在給定一組定義特定問題的約束下,推導出一個有效解決問題的算法,本身就是一個非常困難的問題。
5GL需要人工智能助力
從軟件編程的歷史來看,第五代語言顯然為時過早。人工智能的研究沒能為第五代語言插上智能的翅膀,反倒是第五代語言的失敗直接導致了“符號派”人工智能領域的沒落,因此在編程語言方面的進展就更慢了,大多數(shù)計算機科學家都認為短期內(nèi)此路不通。雖然,五代機后期趕上互聯(lián)網(wǎng)的崛起,分散了技術的注意力。雖然第五代語言失敗了,但也真正地為編程語言探索一把“未來”!
[1] ALGOL是算法語言(ALGOrithmic Language)的簡稱。
[2] LISP是定位編號分離協(xié)議的英文Locator ID Separation Protocol的縮寫。實質(zhì)是一個IPinIP的協(xié)議。
[3] 公式翻譯器,是FormulaTranslation的中文翻譯。
[4] Smalltalk,被公認為歷史上第二個面向對象的程序設計語言,和第一個真正的集成開發(fā)環(huán)境(IDE)。Smalltalk由艾倫·凱,Dan Ingalls,Ted Kaehler,Adele Goldberg等于70年代初在Xerox PARC開發(fā)。
[5] Unix是20世紀70年代初出現(xiàn)的一個操作系統(tǒng),除了作為網(wǎng)絡操作系統(tǒng)之外,還可以作為單機操作系統(tǒng)使用。
[6] 艾茲格·W·迪科斯徹在1972年獲得過素有計算機科學界的諾貝爾獎之稱的圖靈獎。
[7] 詹姆斯·馬丁(James Martin),牛津大學計算機專業(yè)教授,博士,美國著名的管理和信息技術專家,馬丁顧問公司的主席。
[8] 它包含一個直觀的圖形界面和可擴展的面向對象的編程語言PowerScript,提供與當前流行的大型數(shù)據(jù)庫的接口,并通過ODBC與單機數(shù)據(jù)庫相連。是客戶機/服務器結構下,基于Windows3.x、Windows95和Windows NT的一個集成化開發(fā)工具。
[9] statistical analysis system統(tǒng)計分析系統(tǒng)。
[10] SPSS(Statistical Product and Service Solutions),“統(tǒng)計產(chǎn)品與服務解決方案”軟件。
[11] CASE工具原來指用來支持管理信息系統(tǒng)開發(fā)的、由各種計算機輔助軟件和工具組成的大型綜合性軟件開發(fā)環(huán)境,隨著各種工具和軟件技術的產(chǎn)生、發(fā)展、完善和不斷集成,逐步由單純的輔助開發(fā)工具環(huán)境轉化為一種相對獨立的方法論。
【博士聊IT】,感興趣,加關注。
「博士聊IT」一文看懂編程的本質(zhì),程序員有前途么?