從 NASL 說開:低代碼編程語言能飯否(低代碼用什么語言)
1從 NASL 說開:低代碼編程語言能飯否
Gartner說,低代碼是應用開發(fā)的未來。在國內(nèi),目前市場普遍認為低代碼的核心價值在于低成本、低門檻,而在開發(fā)的世界,這往往意味著需求簡單、擴展困難。但偏偏一家叫做網(wǎng)易數(shù)帆的公司,直言要用低代碼來開發(fā)復雜企業(yè)應用,并推出了一個NASL語言,這意味著把低代碼和編程語言緊密結(jié)合。那么,低代碼的新式編程語言,能帶來新的飯碗嗎?就從NASL原理來一探究竟吧。
風口之上,國內(nèi)的低代碼、無代碼方案數(shù)不勝數(shù)。如下圖所示,對于網(wǎng)易數(shù)帆推出的輕舟低代碼平臺,NASL是其中的關(guān)鍵,也是最大的差異化。NASL全稱是NetEase(Normal)Application Specific Language,是輕舟低代碼平臺提供給用戶的應用建模語言。對于NASL,網(wǎng)易數(shù)帆內(nèi)部有過爭論,有人強調(diào)NASL是一種DSL,有人則強調(diào)是一門編程語言,深入探討后團隊發(fā)現(xiàn)這兩種說法都有道理,認知差異主要來自于看待問題的不同視角。
從模型驅(qū)動說起
正確理解模型驅(qū)動
模型驅(qū)動思想(MDSD/MDA)通常被認為是低代碼核心思想。簡單理解模型驅(qū)動,就是開發(fā)者參照一個抽象模型,將應用需求通過建模方式來實現(xiàn)的過程。但國內(nèi)由于“表單驅(qū)動”和“模型驅(qū)動”概念流行,以至于很多同學把模型驅(qū)動中“模型”簡單理解成“數(shù)據(jù)模型”,這其實是不準確的。
要準確理解模型驅(qū)動,需要了解MDSD(模型驅(qū)動軟件開發(fā))和對象管理組織(OMG)在2001年提出MDA(模型驅(qū)動架構(gòu))。MDA使得開發(fā)人員可以使用UML(Unified Modeling Language)可視化設計PIM(Platform Independent Model),然后由工具自動執(zhí)行針對特定平臺和實現(xiàn)語言的映射規(guī)則,將PIM轉(zhuǎn)換為對應的PSM(Platform Specific Model),并最終生成可執(zhí)行的應用程序代碼。
MDA可以認為是MDSD思想的一種實現(xiàn)標準,它規(guī)范了很多術(shù)語、對工具集有清晰的定義。MDSD則更偏向思想或方法論,旨在通過抽象來提高復雜任務的易處理性,進而提升開發(fā)效率和質(zhì)量(跟低代碼目標是不是很像)。MDA由于其整個標準體系復雜性和僅有部分平臺實現(xiàn)、同時沒有提供面向互聯(lián)網(wǎng)應用特定問題域的好的解決方案(比如高并發(fā)、UI編程等問題),因此在互聯(lián)網(wǎng)技術(shù)浪潮中存在感并不強。但是MDSD思想?yún)s對廣大開發(fā)者有著深刻的影響,互聯(lián)網(wǎng)領(lǐng)域眾多流行的編程框架本質(zhì)上都體現(xiàn)了MDSD思想,低代碼可以被認為是其中的一種實踐。
模型與框架的關(guān)系
簡單來說,模型是一種抽象,框架是它的一種具體實現(xiàn)。也可以說框架為應用開發(fā)者提供了一種可落地的模型(如下圖)。說到框架,大家首先想到肯定是是react,springboot這種被廣泛使用的前后端框架,低代碼框架本質(zhì)上跟他們類似,差別在于,低代碼框架通常支持從前后端到數(shù)據(jù)庫的全棧模型實現(xiàn),而且封裝程度更高。— 說"抽象"是站在應用場景的視角,說"封裝"站在通用編程語言的視角。
模型抽象時,我們通常需要通過分層、分解、切面等思維拆解復雜度;框架實現(xiàn)時,通常要用擴展(extends)、實現(xiàn)(implements)、hook、表達式填充等技術(shù)體現(xiàn)開放性。
低代碼框架核心就是要抽象一種編程模型:它既要能簡單及高效的支撐用戶編程意圖的表達,又要能具備足夠的通用性靈活性(但又不用做到MDA的程度)。要達到這樣的目標,需要具備以下一些條件:
- 首先,需要在應用軟件開發(fā)領(lǐng)域具備非常豐富的知識和經(jīng)驗。具體點來說要對各種通用編程語言、框架和各種編程模式優(yōu)缺點有清晰的認知,對傳統(tǒng)研發(fā)模式影響效率和質(zhì)量的因素有清晰的認識,只有如此才能給出有價值的設計。這也是很多低代碼平臺宣傳“by developer for developer”的原因。– 如果考慮的是如何打造完整平臺,還需要對現(xiàn)代軟件工程需要的配套設施,包括是云原生技術(shù)體系有清晰完整的認知。
- 其次,要對低代碼框架的使用者有清晰界定和認知,框架設計要盡可能貼近這個人群的認知模型,同時要把復雜度控制在這個人群普遍能接受的程度。– 模型可以針對不同人群體現(xiàn)不同的可變性,比如mendix通過Mendix Studio和Mendix Studio Pro為專業(yè)開發(fā)者和非專業(yè)開發(fā)者提供低、無代碼兩種開發(fā)模式??勺冃圆盍康脑O計在這篇文章 https://zhuanlan.zhihu.com/p/64004026里有比較深入的解讀。
- 最后,也是最重要一點是要有上帝視角。對很多程序員來說從框架使用者轉(zhuǎn)變成框架設計者是一個非常大的跨越,需要有非常強抽象思維和站在更高的視角才能做到。
發(fā)起輕舟低代碼項目的技術(shù)團隊有著十多年數(shù)百個業(yè)務系統(tǒng)開發(fā)經(jīng)驗,同時團隊在多年實踐中培養(yǎng)了多位編程框架設計專家,這是輕舟團隊在低代碼領(lǐng)域創(chuàng)新所具備的優(yōu)勢。
NASL是輕舟低代碼框架的建模語言
低代碼框架實現(xiàn)了一個編程模型,NASL是這個模型的建模語言,用于描述模型中可變性的那部分。NASL根據(jù)編程模型來設計,通過框架來實現(xiàn)。
從這個角度來說,NASL就是一組DSL(這其實是《領(lǐng)域編程語言》對DSL的標準定義)。
— 稍微擴展一下,因為所有低代碼(包括零代碼)產(chǎn)品都可以被認為是基于MDSD思想實現(xiàn)的,因此從這個角度來說,NASL就是稍微復雜一點schema,它并不能凸顯出輕舟低代碼跟其他零代碼平臺的差異(但模型本身凸顯了差異)。參考《聊一聊低代碼和零代碼的差異》
點擊查看原文,獲取更多福利!
https://developer.aliyun.com/article/1086584?utm_content=g_1000365202
版權(quán)聲明:本文內(nèi)容由阿里云實名注冊用戶自發(fā)貢獻,版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔相應法律責任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務協(xié)議》和《阿里云開發(fā)者社區(qū)知識產(chǎn)權(quán)保護指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進行舉報,一經(jīng)查實,本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。