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