LowCode低码时代LowCode低码时代
  • 首页
  • 低代码/零代码动态
    低代码/零代码动态
    厂商融资信息、行业新闻、招投标、技术研究等动态
    Show More
    Top News
    浙江传媒学院,门户、办事大厅升级及无(低)代码开发平台,中标公告
    4年 ago
    广东烟草揭阳市有限公司低代码开发平台应用软件项目(3年)中标候选公示
    3年 ago
    为什么说对低代码的争论可以停止了
    3年 ago
    Latest News
    重磅!OpenAI开源首个Agent SDK,反击Manus
    1年 ago
    云计算巨头AI战略分化:谁将定义企业级AI的未来规则?
    1年 ago
    DeepSeek创造历史!登顶全球AI应用第2名,豆包排名第10
    1年 ago
    2025“赋能开发者”高峰论坛即将启幕,诚邀您报名参加!
    1年 ago
  • 市场研究
    市场研究Show More
    《Market Insight:中国低代码/零代码市场发展洞察 ( 2023 )》报告正式发布 | LowCode低码时代
    3年 ago
    国产大模型顶流「讯飞星火」:图片生成、代码生成,支持插件等重磅上线
    3年 ago
    报告 | 金现代:效能提升+内质跃迁,重塑电力IT领导者
    3年 ago
    Gartner:低代码的颠覆性力量
    3年 ago
    Gartner:什么是超级应用程序?
    3年 ago
  • 人物观点
    人物观点Show More
    原力CEO赵锐:ToDesk是国内唯一适合高精远程办公需求的解决方案
    2年 ago
    央视财经对话汪源:低代码最核心的是降低对写代码的人的要求
    3年 ago
    干货文章 | 低代码真的有价值吗?
    3年 ago
    壹沓科技融资近2亿元之后:以通用大语言模型赋能,构建数字机器人超级大脑
    3年 ago
    专访中银金科:数字营销成为新的增长引擎,未来业务转化是关键
    3年 ago
  • 活动
    活动
    最新活动,包含线上研讨会、技术预测峰会、线下峰会、…
    Show More
    Top News
    2022金博会 | RPA中国“金融科技超自动化论坛” 嘉宾议程确定
    3年 ago
    14年专注与沉淀,他们想做中国最好的RPA机器人
    3年 ago
    ISIG中国产业智能大会品牌介绍
    4年 ago
    Latest News
    2024第五届ISIG产业智能大会,四大科技峰会共掀数字化创新浪潮
    1年 ago
    参赛者必看 | 拯救者杯OPENAIGC开发者大赛最全攻略指南来啦~
    2年 ago
    2024第四届ISIG产业智能大会(RPA超级自动化、AIGC大模型、低代码/零代码、流程挖掘)
    2年 ago
    超自动化·智启高效运营|艺赛旗2023年春季产品发布会成功举办
    3年 ago
  • 关于低码时代
    • LowCode原创研究
Reading: 聊一聊轻舟低代码NASL编程语言
Share
Notification Show More
Latest News
30部佳作突围!2025 AI视听创作嘉年华晋级名单揭晓,总决赛11月25日启幕
未分类
《2025 AI 大模型开发生态白皮书》正式发布 | 算泥社区
未分类
“AI幻想·未来亦城”2025AI视听创作嘉年华作品征集来了!
未分类
120万奖池,寻找最具想象力的AI创意开发者!2025骁龙人工智能创新应用大赛正式启动!
未分类
2025-10-21
未分类
Aa
LowCode低码时代LowCode低码时代
Aa
  • 低代码/零代码动态
  • 最新市场研究
  • 活动
  • 人物观点
  • 首页
  • 低代码/零代码动态
  • 最新市场研究
  • 人物观点
  • 活动
  • 关于低码时代
Have an existing account? Sign In
  • LowCode低码时代
Copyright©2015-2022 北京企智未来科技有限公司 All Rights Reserved.
LowCode低码时代 > Blog > 底层技术研究 > 聊一聊轻舟低代码NASL编程语言
底层技术研究

聊一聊轻舟低代码NASL编程语言

LowCode低码时代
Last updated: 2022/09/11 at 9:40 上午
LowCode低码时代 4年 ago
Share
SHARE

前言

之前在《轻舟低代码产品化进阶之路》和多次分享中反复出现过下面这张图,这张图的重点是NASL,今天我们就来聊一聊NASL。NASL全称是NetEase(Normal)Application Specific Language,是轻舟低代码平台提供给用户的应用建模语言。围绕NASL团队早前有过争论,有人强调NASL是一种DSL,有人则强调是一门编程语言,深入探讨后大家发现这两种说法都有道理,认知差异主要来自于看待问题的不同视角。

从模型驱动说起

正确理解模型驱动

模型驱动思想(MDSD/MDA)通常被认为是低代码核心思想。简单理解模型驱动,就是开发者参照一个抽象模型,将应用需求通过建模方式来实现的过程。但国内由于“表单驱动”和“模型驱动”概念流行,以至于很多同学把模型驱动中“模型”简单理解成“数据模型”,这其实是不准确的。要准确理解模型驱动,需要了解MDSD(模型驱动软件开发)和OMG(对象管理组织)在2001年提出MDA(模型驱动架构)。MDA使得开发人员可以使用UML(Unified Modeling Language)可视化设计PIM(Platform Independent Model),然后由工具自动执行针对特定平台和实现语言的映射规则,将PIM转换为对应的PSM(Platform Specific Model),并最终生成可执行的应用程序代码。MDA可以认为是MDSD思想的一种实现标准,它规范了很多术语、对工具集有清晰的定义。MDSD则更偏向思想或方法论,旨在通过抽象来提高复杂任务的易处理性,进而提升开发效率和质量(跟低代码目标基本一致)。MDA由于其整个标准体系复杂性和仅有部分平台实现、同时没有提供面向互联网应用特定问题域的好的解决方案(比如高并发、UI编程等问题),因此在互联网技术浪潮中存在感并不强。但是MDSD思想却对广大开发者有着深刻的影响,互联网领域众多流行的编程框架本质上都体现了MDSD思想,低代码可以被认为是其中的一种实践。

模型跟框架的关系

简单来说,模型是一种抽象,框架是它的一种具体实现。也可以说框架为应用开发者提供了一种可落地的模型(如下图)。说到框架,大家首先想到肯定是是react,springboot这种被广泛使用的前后端框架,低代码框架本质上跟他们类似,差别在于,低代码框架通常支持从前后端到数据库的全栈模型实现,而且封装程度更高。
— 说”抽象”是站在应用场景的视角,说”封装”站在通用编程语言的视角。
模型抽象时,我们通常需要通过分层、分解、切面等思维拆解复杂度;框架实现时,通常要用扩展(extends)、实现(implements)、hook、表达式填充等技术体现开放性。
低代码框架核心就是要抽象一种编程模型:它既要能简单及高效的支撑用户编程意图的表达,又要能具备足够的通用性灵活性(但又不用受到MDA的束缚)。要达到这样的目标,需要具备以下一些条件:
  • 首先,需要在应用软件开发领域具备非常丰富的知识和经验。具体点来说要对各种通用编程语言、框架和各种编程模式优缺点有清晰的认知,对传统研发模式影响效率和质量的因素有清晰的认识,只有如此才能给出有价值的设计。这也是很多低代码平台宣传“by developer for developer”的原因。
    — 如果考虑的是如何打造完整平台,还需要对现代软件工程需要的配套设施,包括是云原生技术体系有清晰完整的认知。

    Contents
    前言正确理解模型驱动模型跟框架的关系NASL是轻舟低代码框架的建模语言
  • 其次,要对低代码框架的使用者有清晰界定和认知,框架设计要尽可能贴近这个人群的认知模型,同时要把复杂度控制在这个人群普遍能接受的程度。
    — 模型可以针对不同人群体现不同的可变性,比如mendix通过Mendix Studio和Mendix Studio Pro为专业开发者和非专业开发者提供低、无代码两种开发模式。可变性差量的设计在这篇文章 https://zhuanlan.zhihu.com/p/64004026里有比较深入的解读。

  • 最后,也是最重要一点是要有上帝视角。对很多程序员来说从框架使用者转变成框架设计者是一个非常大的跨越,需要有非常强抽象思维和站在更高的视角才能做到。

发起网易轻舟低代码项目的技术团队有着十多年数百个业务系统开发经验,同时团队在多年实践中培养了多位编程框架设计专家,这是轻舟团队在低代码领域创新所具备的优势。

NASL是轻舟低代码框架的建模语言

低代码框架实现了一个编程模型,NASL是这个模型的建模语,用于描述模型中可变性的那部分。NASL根据编程模型来设计,通过框架来实现。
从这个角度来说,NASL就是一组DSL(这其实是《领域编程语言》这本书中对DSL的标准定义)。
— 稍微扩展一下,因为所有低代码(包括零代码)平台都可以被认为是基于MDSD思想设计和实现的,因此从这个角度来说,NASL就是稍微复杂一点schema,他并不能凸显出轻舟低代码跟其他零代码平台的差异(但模型本身凸显了差异)。参考《聊一聊低代码和零代码的差异》
NASL是一门编程语言
NASL不仅是一组DSL,而是一门编程语言,主要基于两点:
  • 一是NASL支持全栈编程、且具有统一的静态类型系统。全栈是指通过NASL可实现数据表设计、服务端编程和多前端(H5/web/小程序)的编程。我们知道在传统编程中,数据库字段类型、JAVA中类型和TypeScript类型体系并不一致,但NASL为了确保编程体验,抽象了的统一的静态类型系统,并提供该类型系统转译到TS、JAVA和不同数据库数据类型的机制。

  • 第二个更明显的特征是我们为NASL实现了一套跟传统编程语言类似的工具链(如下图):

    • webIDE中实现了数据、逻辑和页面可视化设计器,负责NASL可视化编写。

    • NASL Language Server实现了NASL查找引用、跳转定义、类型检查(推断)、自动补全(推荐)等能力。后续可结合机器学习等技术进一步演进智能编程的能力(这会是个非常有意思的领域,很可能成为未来低代码产品核心竞争力)。

    • NASL仓库实现了NASL的存储,版本和分支管理。

    • 资产中心实现了相当于maven、npm的职能,可以以模版方式管理NASL代码片段,可以扩展库方式管理以JS和JAVA实现并以NASL声明的组件和逻辑。

    • 前后端翻译器(generator)负责将NASL代码翻译成JS(基于VUE)和JAVA代码(基于Springboot)

从这两点来说,NASL就是一门编程语言。当然NASL不是一门严格意义上的编程语言(例如JAVA、C++),因为它没有实现编译器后端部分也没有自己的运行时。但如果大家能把TypeScript看成编程语言,那把NASL同等视之好像也不过分。
— 从编程语言的视角,NASL凸显了轻舟低代码跟零代码平台的差异。参考《聊一聊低代码和零代码的差异》
NASL可视化编写能力来自设计器
NASL理论上可以跟通用编程语言一样提供文本代码编写能力,但是基于降低难度、提升效率考虑,我们提供了可视化设计器。应用开发主要涉及UI、逻辑和数据三方面开发需求。
  • UI的可视化设计的价值很清楚,实现方案也有很多,这里不展开详细说。讲一下轻舟低代码UI可视化特点:轻舟UI组件属性具备类型的,因此按照从数据、逻辑到UI的应用设计流程,UI通常可以根据类型被推导出来。这也是后续轻舟低代码进一步实现智能化编程很重要的一个方向。

  • 数据可视化设计,在传统开发中也需要,只不过以往我们设计完ER之后,需要给出DDL让DBA去实施,低代码平台可以有设计自动生成DDL并部署到数据库中。此外数据查询这里低代码平台提供了可视化生成NASL,再解释成SQL并执行的能力。

  • 我们要重点探讨一下的是逻辑的可视化,这是很多人质疑可视化价值的地方。比如有同行提出过以下观点(参见文章https://zhuanlan.zhihu.com/p/451340998):
    “「命令式」代码无法实现可视化编辑,而可视化编辑是低代码唯一不可少的功能,所以我们可以得到结论:所有低代码平台必然只能采用「声明式」代码,这也是为什么所有低代码平台都会有内置的「DSL」。”
    虽然有道理,但个人觉得可能并不尽然。因为编程本质上是组织各种符号的过程,传统命令式编程中,我们需要记忆大量的符号,比如各种控制语句、操作符、变量、对象、方法等,还要理解各种上下文作用域,这其实是编程复杂性和易错性很大一个来源。虽然传统语言也有通过实现language server提供自动补全等能力来降低符号记忆和理解负担的机制,但这是否已经是最好的方案了呢?可能并不尽然,在大部分业务编程场景下,优秀的可视化设计可能可以更进一步降低这种负担、让开发者更加专注在符号的高效组织上。目前有三种逻辑可视化编写方式,逻辑图(outsystesm、轻舟低代码),mirco-flow(mendix),blockly(scratch),都具有进一步发展的潜力。不过也要看到逻辑可视化方式确实存在一些需要克服的问题,比如逻辑图信息密度太低,传统开发人员接受度较低等,所以后续轻舟低代码一方面会持续优化逻辑图绘制方式,另一方面也会考虑提供逻辑图和文本代码能够互转的编码方式。

NASL的可扩展性来自于框架
NASL可扩展性主要有两种情况,第一种是在不增加NASL符号的情况下,通过传统编码方式扩展UI组件、逻辑的能力。UI组件和逻辑是NASL中的两种对象。UI组件是NASL中基本对象,只能通过传统语言开发并声明到NASL。组件扩展是说组件可以不由平台提供,而是由开发者自行开发并声明到NASL中,这可以解决企业特殊UI或复杂角度的需求。逻辑在低代码平台中通常由低代码开发者通过NASL来创建,逻辑扩展是说,当遇到某些场景,开发者可以通过java语言开发然后声明到NASL中。这种扩展方式可解决复杂算法逻辑、或者引入企业存量资产到NASL中的需求。第二种是NASL符号本身扩展,这种目前还没有真实需求,我们也还没想清楚,所以不展开了。NASL的扩展性主要依托前后端翻译器实现,同时影响到可视化设计器和资产中心。
后记
随着轻舟低代码编程框架的逐步完善和语言工具链的逐步完善,NASL也将逐步趋于稳定和完善。希望NASL在不久的将来能为轻舟平台上的应用开发者带去丝滑的开发体验。

– END –

You Might Also Like

低代码没有做到的事情,ChatGPT做到了

贴吧低代码高性能规则引擎设计

vivo 低代码平台【后羿】的探索与实践

vivo游戏中心低代码平台的提效秘诀

LowCode低码时代 2022-09-08
Previous Article 华夏银行2022-2023年i助手,低代码应用项目征集公告
Next Article 低代码平台ELISE获得1450万欧元A轮融资,加速CAE工具产品设计效率
Leave a comment

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

about us

关注中国低代码(LowCode)无代码/零代码领域,包括行业研究、市场报告、技术选型和媒体报道,推进低代码的技术普及、生态建设发展和产业应用,重塑IT开发和自动化的未来。

  • 最新市场研究
  • 人物观点
  • 低代码/零代码动态
  • 活动
  • 联系我们
  • RPA中国
  • 数字金融网
  • 信创中国
  • Xverse元宇宙

最新专家访谈

原力CEO赵锐:ToDesk是国内唯一适合高精远程办公需求的解决方案
央视财经对话汪源:低代码最核心的是降低对写代码的人的要求
干货文章 | 低代码真的有价值吗?
壹沓科技融资近2亿元之后:以通用大语言模型赋能,构建数字机器人超级大脑
专访中银金科:数字营销成为新的增长引擎,未来业务转化是关键
实现技术普惠 网易数帆轻舟低代码的差异化竞争之道
LowCode低码时代LowCode低码时代

Copyright©2015-2022 北京企智未来科技有限公司 All Rights Reserved.
京ICP备19023145号-8

  • LowCode低码时代
订阅最新动态!

订阅最新低代码/零代码市场报告、研究咨询、分析师趋势以及市场活动

Zero spam,可随时取消订阅.

Removed from reading list

Undo
欢迎回来!

登录你的账号

Lost your password?