低代碼開發簡史

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"低代碼開發可以說是最近技術圈的頂流,16年之前還沒有 ","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}},{"type":"strong","attrs":{}}],"text":"低代碼","attrs":{}},{"type":"text","text":" 這個術語,19年之前幾乎沒人關注低代碼,但從19年到現在(2021年5月)的2年時間,低代碼的搜索指數增長了10倍,可見這個領域的受關注程度正在與日俱增。Medium上的這篇文章(A Brief History Of Low-Code Development)介紹了低代碼開發的歷史,副標題是","attrs":{}},{"type":"text","marks":[{"type":"italic","attrs":{}},{"type":"strong","attrs":{}}],"text":"回到可視化編程的源頭","attrs":{}},{"type":"text","text":",回顧歷史可以讓我們更好的把握未來發展的趨勢,看清那些在技術演進過程中不變的東西。","attrs":{}}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"italic","attrs":{}}],"text":"以下爲正文:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"“低代碼”是一種可視化編程方法,允許企業不必通過編寫代碼而是通過圖形界面快速搭建應用程序。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雖然“低代碼開發”這個術語是在2016年由一家市場研究機構爲了描述這一類服務提供商而創造的,但低代碼背後的想法並不新鮮。在這篇文章中,我們將看到這種模式是如何隨着時間的推移而發展的,以及它所面臨的問題。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"目錄","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1970年代-1990年代:第四代編程語言(4GL,Fourth-Generation Programming Language)","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1990年代:快速應用程序開發(RAD,Rapid Application Development)","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2001:模型驅動架構(MDA,Model-Driven Architecture)","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2007:移動平臺(Mobile Platform)","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2016:低代碼與低代碼開發平臺","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2020:數字化轉型的迫切需要","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"低代碼從歷史中學到了什麼?","attrs":{}}]}]}],"attrs":{}}],"attrs":{}},{"type":"horizontalrule","attrs":{}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"1970年代-1990年代:第四代編程語言(4GL,Fourth-Generation Programming Language)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"低代碼開發平臺可以追溯到第四代編程語言——這個概念是在20世紀70年代到90年代發展起來的,與第三代編程語言(3GL)的大部分開發重疊。","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第三代編程語言:C, C++, Java, Python, PHP, Perl, C#, BASIC, Pascal, Fortran, ALGOL, COBOL","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第四代編程語言:ABAP, Unix Shell, SQL, PL/SQL, Oracle Reports, R","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"James Martin在他1982年出版的《Applications Development Without Programmers》中,認爲4GL技術(如RAMIS和FOCUS)向更廣泛的人羣開放了開發環境,並使非程序員能夠自己創建應用程序。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"第四代編程語言指的是非過程的高級規範語言,包括支持數據庫管理、報告生成、數學優化、圖形用戶界面(GUI)開發和web開發。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"1990年代:快速應用程序開發(RAD,Rapid Application Development)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作爲對瀑布模型的響應,當使用Visual Basic、Delphi和Oracle Forms等可視化編程工具“組裝”桌面應用程序的概念開始流行時,我們看到快速應用程序開發(RAD)在20世紀90年代獲得良好的發展勢頭。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"瀑布模型是軟件開發行業長期使用的計劃驅動過程,它是在20世紀七八十年代發展起來的,基於傳統的工程模式:","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/85/851a4bc68482ebcd880dcf29e789dcf6.webp","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"size","attrs":{"size":9}}],"text":"瀑布模型","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"RAD工具作爲易於學習的開發環境而表現突出,其核心理念是:最終用戶應該首先關注GUI,並逐步添加業務邏輯。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"UI和邏輯都可以存儲爲組件面板中的組件。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bc/bcd259b3a92fb35049cf031250990910.webp","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"size","attrs":{"size":9}}],"text":"James Martin定義的RAD開發階段","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而,RAD工具有其侷限性:","attrs":{}}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"它們通常是私有的商業軟件,這意味着綁定在特定的開發環境中。目標環境通常是指定的,例如VB/Delphi開發的程序通常只能在Microsoft Windows、Oracle應用服務器和Oracle Forms數據庫的環境中運行。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因爲缺乏模塊化,團隊在一個應用程序上一起合作開發是比較困難的,或者說有很多限制條件。","attrs":{}}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"RAD工具(如Visual Cafe和Borlands JBuilder)在速度和資源需求方面遇到了困難。它們是用Java寫的,這在當時意味着對資源的巨大需求。","attrs":{}}]}]}],"attrs":{}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"2001:模型驅動架構(MDA,Model-Driven Architecture)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了減少部門和開發之間的距離,對象管理組織(OMG,Object Management Group)在2001年推出了模型驅動架構(MDA)。作爲一種軟件設計方法,它提供了一組指導方針,用於將規範構建和表示爲模型。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"模型支持域的整體視圖,綜合考慮技術和業務需求,隨後轉換爲可執行代碼。在開發和運行時使用生成器和解釋器來生成或解釋模型中的代碼。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着MDA和微軟軟件工廠的出現,模型驅動軟件開發(MDSD,Model-Driven Software Development)吸引了很多使用UML(統一建模語言,Unified Modeling Language)和BPMN(業務流程建模符號,Business Process Modeling Notation)等工具的程序員的興趣。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"2007:移動平臺(Mobile Platform)","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着蘋果在2007年發佈iPhone iOS進入移動設備市場,以及一年後谷歌的Android問世,各種移動平臺應運而生。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"開發者積極使用Android Studio和Xcode等可視化編輯器在本地開發Android和iOS應用。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這是桌面應用程序在移動設備上的復興。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然而,響應式網頁設計以及增強型Web應用(PWA,Progressive Web APPs)等技術已經威脅到了移動應用,因爲它們能夠爲小型設備提供具有良好用戶體驗(UX)的網頁應用,並且不需要依賴特定的移動開發平臺。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"2016:低代碼與低代碼開發平臺","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2016年,弗雷斯特集團(Forrester Group)發表了一篇文章,此後“低代碼”(low-code)一詞成爲顯學。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們已經看到了低代碼開發平臺(LCDP,Low-Code Development Platform)的出現——它的起源可以追溯到2011年——其目標是將盡可能多的概念整合到一個平臺上,從而使編寫代碼變得不必要或至少顯著減少。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"低代碼平臺包含RAD和MDSD過程,並將ALM(應用程序生命週期管理,Application Life Cycle Management)以及持續集成(CI,Continuous Integration)或持續部署(CD,Continuous Deployment)集成到開發、測試和生產環境中。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了支持整個環境的“拖放”創建,必須有PaaS(平臺即服務,Platform as a Service)的支持。通常使用公有云服務提供的PaaS,但也可以使用企業內部服務(如基於OpenShift的容器平臺)。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/74/740aef2468d086b0c853ac65c1438735.webp","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":"center","origin":null},"content":[{"type":"text","marks":[{"type":"size","attrs":{"size":9}}],"text":"低代碼平臺的組件和架構","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"aPaaS(應用平臺即服務,Application Platform as a Service)提供了應用程序整個生命週期所需的一切:從一開始的規劃階段一直到開發、驗收和運維。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"2020:數字化轉型的迫切需要","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2020年,新冠疫情的大爆發暴露了許多企業在數字化方面已經落後了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"爲了保持他們的業務運作並滿足他們的員工和客戶的需求,他們被迫升級他們的應用程序,並構建新的應用程序來填補現有的流程空白。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此,低代碼的普及程度得到了提升。這一勢頭將持續到2021年。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"低代碼從歷史中學到了什麼?","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"像幾十年前流行的4GL這樣的技術,曾承諾能迅速滿足客戶的需求,但由於一些限制因素,最終失敗了,而且它們的流行程度自推出以來就不斷的在減弱。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"進入21世紀,許多RAD開發環境已經銷聲匿跡了。隨着爲web編寫應用程序成爲趨勢,Swing和SWT等“經典”UI工具包變得越來越沒有意義。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"UI設計越來越多地使用HTML、CSS和JavaScript來完成,這爲網頁設計師創造了越來越多的工作機會。不同的網頁瀏覽器、操作系統(如Linux、macOS)以及從PC到智能手機再到可穿戴設備的都被當作目標系統。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我們注意當前的低代碼服務提供商大多數都學習過歷史。他們知道困擾4GL和RAD的問題,並試圖在他們的系統中修復這些問題。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着企業轉向人工智能、機器人、機器學習和物聯網等新技術,低代碼解決方案也在不斷髮展,以提供這些能力。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"size","attrs":{"size":9}},{"type":"strong","attrs":{}}],"text":"封面圖片:灰色金屬立方體裝飾,來自Pexels","attrs":{}},{"type":"text","marks":[{"type":"size","attrs":{"size":9}}],"text":" 上 ","attrs":{}},{"type":"text","marks":[{"type":"size","attrs":{"size":9}},{"type":"strong","attrs":{}}],"text":"Oleg Magni","attrs":{}},{"type":"text","marks":[{"type":"size","attrs":{"size":9}}],"text":" 拍攝的圖片","attrs":{}}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章