從 NASL 說開:低代碼編程語言能飯否(低代碼用什么語言)

1從 NASL 說開:低代碼編程語言能飯否

Gartner說,低代碼是應(yīng)用開發(fā)的未來。在國內(nèi),目前市場普遍認(rèn)為低代碼的核心價(jià)值在于低成本、低門檻,而在開發(fā)的世界,這往往意味著需求簡單、擴(kuò)展困難。但偏偏一家叫做網(wǎng)易數(shù)帆的公司,直言要用低代碼來開發(fā)復(fù)雜企業(yè)應(yīng)用,并推出了一個(gè)NASL語言,這意味著把低代碼和編程語言緊密結(jié)合。那么,低代碼的新式編程語言,能帶來新的飯碗嗎?就從NASL原理來一探究竟吧。

風(fēng)口之上,國內(nèi)的低代碼、無代碼方案數(shù)不勝數(shù)。如下圖所示,對于網(wǎng)易數(shù)帆推出的輕舟低代碼平臺(tái),NASL是其中的關(guān)鍵,也是最大的差異化。NASL全稱是NetEase(Normal)Application Specific Language,是輕舟低代碼平臺(tái)提供給用戶的應(yīng)用建模語言。對于NASL,網(wǎng)易數(shù)帆內(nèi)部有過爭論,有人強(qiáng)調(diào)NASL是一種DSL,有人則強(qiáng)調(diào)是一門編程語言,深入探討后團(tuán)隊(duì)發(fā)現(xiàn)這兩種說法都有道理,認(rèn)知差異主要來自于看待問題的不同視角。

從 NASL 說開:低代碼編程語言能飯否(低代碼用什么語言)

從模型驅(qū)動(dòng)說起

正確理解模型驅(qū)動(dòng)

模型驅(qū)動(dòng)思想(MDSD/MDA)通常被認(rèn)為是低代碼核心思想。簡單理解模型驅(qū)動(dòng),就是開發(fā)者參照一個(gè)抽象模型,將應(yīng)用需求通過建模方式來實(shí)現(xiàn)的過程。但國內(nèi)由于“表單驅(qū)動(dòng)”和“模型驅(qū)動(dòng)”概念流行,以至于很多同學(xué)把模型驅(qū)動(dòng)中“模型”簡單理解成“數(shù)據(jù)模型”,這其實(shí)是不準(zhǔn)確的。

要準(zhǔn)確理解模型驅(qū)動(dòng),需要了解MDSD(模型驅(qū)動(dòng)軟件開發(fā))和對象管理組織(OMG)在2001年提出MDA(模型驅(qū)動(dòng)架構(gòu))。MDA使得開發(fā)人員可以使用UML(Unified Modeling Language)可視化設(shè)計(jì)PIM(Platform Independent Model),然后由工具自動(dòng)執(zhí)行針對特定平臺(tái)和實(shí)現(xiàn)語言的映射規(guī)則,將PIM轉(zhuǎn)換為對應(yīng)的PSM(Platform Specific Model),并最終生成可執(zhí)行的應(yīng)用程序代碼。

MDA可以認(rèn)為是MDSD思想的一種實(shí)現(xiàn)標(biāo)準(zhǔn),它規(guī)范了很多術(shù)語、對工具集有清晰的定義。MDSD則更偏向思想或方法論,旨在通過抽象來提高復(fù)雜任務(wù)的易處理性,進(jìn)而提升開發(fā)效率和質(zhì)量(跟低代碼目標(biāo)是不是很像)。MDA由于其整個(gè)標(biāo)準(zhǔn)體系復(fù)雜性和僅有部分平臺(tái)實(shí)現(xiàn)、同時(shí)沒有提供面向互聯(lián)網(wǎng)應(yīng)用特定問題域的好的解決方案(比如高并發(fā)、UI編程等問題),因此在互聯(lián)網(wǎng)技術(shù)浪潮中存在感并不強(qiáng)。但是MDSD思想?yún)s對廣大開發(fā)者有著深刻的影響,互聯(lián)網(wǎng)領(lǐng)域眾多流行的編程框架本質(zhì)上都體現(xiàn)了MDSD思想,低代碼可以被認(rèn)為是其中的一種實(shí)踐。

模型與框架的關(guān)系

簡單來說,模型是一種抽象,框架是它的一種具體實(shí)現(xiàn)。也可以說框架為應(yīng)用開發(fā)者提供了一種可落地的模型(如下圖)。說到框架,大家首先想到肯定是是react,springboot這種被廣泛使用的前后端框架,低代碼框架本質(zhì)上跟他們類似,差別在于,低代碼框架通常支持從前后端到數(shù)據(jù)庫的全棧模型實(shí)現(xiàn),而且封裝程度更高。— 說"抽象"是站在應(yīng)用場景的視角,說"封裝"站在通用編程語言的視角。

從 NASL 說開:低代碼編程語言能飯否(低代碼用什么語言)

模型抽象時(shí),我們通常需要通過分層、分解、切面等思維拆解復(fù)雜度;框架實(shí)現(xiàn)時(shí),通常要用擴(kuò)展(extends)、實(shí)現(xiàn)(implements)、hook、表達(dá)式填充等技術(shù)體現(xiàn)開放性。

低代碼框架核心就是要抽象一種編程模型:它既要能簡單及高效的支撐用戶編程意圖的表達(dá),又要能具備足夠的通用性靈活性(但又不用做到MDA的程度)。要達(dá)到這樣的目標(biāo),需要具備以下一些條件:

  • 首先,需要在應(yīng)用軟件開發(fā)領(lǐng)域具備非常豐富的知識(shí)和經(jīng)驗(yàn)。具體點(diǎn)來說要對各種通用編程語言、框架和各種編程模式優(yōu)缺點(diǎn)有清晰的認(rèn)知,對傳統(tǒng)研發(fā)模式影響效率和質(zhì)量的因素有清晰的認(rèn)識(shí),只有如此才能給出有價(jià)值的設(shè)計(jì)。這也是很多低代碼平臺(tái)宣傳“by developer for developer”的原因。– 如果考慮的是如何打造完整平臺(tái),還需要對現(xiàn)代軟件工程需要的配套設(shè)施,包括是云原生技術(shù)體系有清晰完整的認(rèn)知。
  • 其次,要對低代碼框架的使用者有清晰界定和認(rèn)知,框架設(shè)計(jì)要盡可能貼近這個(gè)人群的認(rèn)知模型,同時(shí)要把復(fù)雜度控制在這個(gè)人群普遍能接受的程度。– 模型可以針對不同人群體現(xiàn)不同的可變性,比如mendix通過Mendix Studio和Mendix Studio Pro為專業(yè)開發(fā)者和非專業(yè)開發(fā)者提供低、無代碼兩種開發(fā)模式??勺冃圆盍康脑O(shè)計(jì)在這篇文章 https://zhuanlan.zhihu.com/p/64004026里有比較深入的解讀。
  • 最后,也是最重要一點(diǎn)是要有上帝視角。對很多程序員來說從框架使用者轉(zhuǎn)變成框架設(shè)計(jì)者是一個(gè)非常大的跨越,需要有非常強(qiáng)抽象思維和站在更高的視角才能做到。

發(fā)起輕舟低代碼項(xiàng)目的技術(shù)團(tuán)隊(duì)有著十多年數(shù)百個(gè)業(yè)務(wù)系統(tǒng)開發(fā)經(jīng)驗(yàn),同時(shí)團(tuán)隊(duì)在多年實(shí)踐中培養(yǎng)了多位編程框架設(shè)計(jì)專家,這是輕舟團(tuán)隊(duì)在低代碼領(lǐng)域創(chuàng)新所具備的優(yōu)勢。

NASL是輕舟低代碼框架的建模語言

低代碼框架實(shí)現(xiàn)了一個(gè)編程模型,NASL是這個(gè)模型的建模語言,用于描述模型中可變性的那部分。NASL根據(jù)編程模型來設(shè)計(jì),通過框架來實(shí)現(xiàn)。

從 NASL 說開:低代碼編程語言能飯否(低代碼用什么語言)

從這個(gè)角度來說,NASL就是一組DSL(這其實(shí)是《領(lǐng)域編程語言》對DSL的標(biāo)準(zhǔn)定義)。

— 稍微擴(kuò)展一下,因?yàn)樗械痛a(包括零代碼)產(chǎn)品都可以被認(rèn)為是基于MDSD思想實(shí)現(xiàn)的,因此從這個(gè)角度來說,NASL就是稍微復(fù)雜一點(diǎn)schema,它并不能凸顯出輕舟低代碼跟其他零代碼平臺(tái)的差異(但模型本身凸顯了差異)。參考《聊一聊低代碼和零代碼的差異》

點(diǎn)擊查看原文,獲取更多福利!

https://developer.aliyun.com/article/1086584?utm_content=g_1000365202

版權(quán)聲明:本文內(nèi)容由阿里云實(shí)名注冊用戶自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,阿里云開發(fā)者社區(qū)不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。具體規(guī)則請查看《阿里云開發(fā)者社區(qū)用戶服務(wù)協(xié)議》和《阿里云開發(fā)者社區(qū)知識(shí)產(chǎn)權(quán)保護(hù)指引》。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,填寫侵權(quán)投訴表單進(jìn)行舉報(bào),一經(jīng)查實(shí),本社區(qū)將立刻刪除涉嫌侵權(quán)內(nèi)容。

相關(guān)新聞

聯(lián)系我們
聯(lián)系我們
公眾號
公眾號
在線咨詢
分享本頁
返回頂部