当前位置: 首页 > 科技观察

从前端智能的角度看“Low-code-No-code”

时间:2023-03-20 16:38:29 科技观察

一、概念1什么是low-code/no-code开发?业界对低代码/无代码开发还有其他不同的理解吗?业界流行的观点是,低代码是一种更易于使用的构建系统,而无代码是图形化和可视化的编程。这种观点将低代码和无代码开发分别放在UI和逻辑上,用工具属性来定义构建和可视化编程要解决的问题。另一种观点是将low-code/no-code看成是一种方法的两个阶段,就像自动驾驶的L0~L5的六个不同阶段。人机协同编程的概念分为低代码/无代码两个阶段。我比第一个更认同第二种观点,不仅仅是因为我提出来的,还因为第二种观点是从软件工程的统一角度来定义、分析和解决问题,而第一种观点只是局部和过程优化,而不是而不是颠覆性创新。如今的“人机协同编程方式”,将软件工程从组装UI、编写业务逻辑中解放出来,逐步过渡到业务能力、基础能力、底层能力等高科技工作。更多信息,请参考《前端智能化:思维转变之路》[2]。2低代码开发和无代码开发有什么区别?按照上面的回答,由于low-code和no-code属于“人机协同编程”的两个阶段,low-code是stage1,no-code是stage2,对应“人机协同”和“人机协作”。协作和协同最大的区别在于有默契。不管低代码还是无代码,都有一个服务对象:用户。无论用户是程序员还是非程序员,都有一个目标:生成代码。无论是源代码开发,低代码还是无代码,程序都是以不同的方式描述的,包括代码、图形、DSL……等。在“人机协作”阶段,这些描述有各种限制和约束,应用的业务场景也比较狭窄。在“人机协作”阶段,限制和约束减少,应用的业务场景也更加广阔。“谈心”是指:通过AI学习和理解描述,从而减少限制和束缚,适应更多的业务场景。因此,传统的low-code/no-code与“人机协同编程”生成的代码最大的区别就是有意和无意,机器有意平台无意。2背景1低代码/无代码开发和软件工程领域的一些经典思想、方法和技术,如软件复用和组件组装、软件产品线、DSL(领域特定语言)、可视化快速开发工具、可定制的工作流程,与之前业界流行的中台等概念有何关系?从库、框架、脚手架开始,软件工程走上了追求效率的道路。在这条道路上,低代码和无代码的开发方式被视为一种愿望。复用、组件化和模块化、DSL、可视化、流程编排……都是在实现抱负过程中的尝试,或在不同的环节,或以不同的方式,但仍是软件工程领域的思考。中台的概念更多的是从业务的角度提出的,在软件工程和技术领域类似的概念更多的叫作:平台。无论是中台还是平台,都不仅仅是过程中的尝试,而是全面、系统的创新尝试。我提出前端智能“人机协同编程”应该属于软件工程与技术领域。在类似于中台的业务领域,我提出了一种新的“需求+生产”的业务研发模式,属于业务领域。这些概念无非就是:左右、上下、新旧关系。2另外,低代码/无代码开发和DevOps、云计算和云原生架构有什么关系?DevOps、云计算……都是基础技术,基础技术的变化必然带来上层应用层技术的变化。没有云计算的容器化和弹性伸缩,构建分布式系统是非常困难的,尤其是在CI/CD、部署、运维、监控、调优等方面。什么是南北分布、远程多活、并行扩展性、高可用……都需要注意。但是,云计算、DevOps等基础技术的发展,已经内化并自动解决了上述问题,大大降低了关注和使用成本。它还可以适应各种复杂的场景。三种思路1支持低代码/无代码开发的核心技术是什么?我认为以前低代码/无代码开发的核心技术是“复用”,但今天是AI驱动的“人机协同编程”。过去,低代码/无代码开发大多着眼于提高研发效率,而如今AI驱动的“人机协同编程”则从提高交付效率着手。因此,如果说低代码/无代码开发以“人机协同编程”为主要实现手段,人工智能是其核心技术。2对低代码/无代码开发的热衷是软件开发技术的重要变革和突破,还是经典软件工程思想、方法和技术随着技术的不断发展和业务积累的新生?从计算机仅掌握在少数人手中的时代开始,如今几乎每个人都拥有一台微型计算机:智能手机。它原本是程序员和所谓“技术人员”的专利,但现在,几乎人人都能操作和使用电脑。但是,人们对计算机的操作是间接的,需要专业人员和企业事先编写软件,人们通过软件来使用计算机的各种功能。随着计算机计算能力和功能的不断发展,随着社会的数字化、信息化,今天的人们越来越难以满足于预先定制的软件。低代码/无代码开发赋予人们创造软件的能力,进而帮助人们低成本、实时、高效地直接生产出满足自己需求的软件,进而操作许多复杂的电子设备,并与数字世界。在我看来,这是一个不可逆转的趋势,也是低代码/无代码开发的大方向。4现状与进展1低代码/无代码开发发展到什么程度了?imgcook2w多用户,6w多模块,0前端参与双十一等大促营销活动研发,70%阿里前端在用79.26%线上代码无人工参与率,90.9%还原度、图标识别准确率83%、组件识别85%、版面还原92.1%、版面手动修改概率75%研发效率提升68%uicook营销活动及大促场景ui智能生成比例超过90%日常渠道导购业务ui智能一代覆盖核心业务纯UI智能化、个性化带来的业务价值增长超过8%。bizcook已经初步完成了基于NLP的需求标注和理解系统。基于NLP的服务注册理解系统初步完成了基于NLP的胶层业务逻辑代码生成能力。资金流失防控自动化扫描,CV和AI自动识别资金流失风险和舆情问题并测试UI自动化测试,数据渲染和Mock驱动的业务自动化验证,同学共建,AICodereview共建工程团队基于代码分析和理解,结合线上Runtime的识别和分析,自动发现和定位问题,提高CodereviewDatacook社区化运营开源项目的效率和质量,合并Defo.js及其作者共同建立Datacook项目,全链路、端到端解决AI领域数据采集、存储、处理等问题,尤其是海量数据、数据集组织、以及深度学习和机器学习领域数据质量评估。能力媲美HDF5、Pandas等。Python专业库GoogleTensorflow.js团队开发维护TFData库,作为Datacook的核心技术和基础,共同打造数据集生态和数据集易用性。pipcook开源了pipcook[3]纯前端机器学习框架,使用Boa打通Python技术生态,原生支持导入流行的Python包和库,原生支持Python数据类型和数据结构,方便跨语言共享数据和调用API。使用PipcookCloud打通流行的云计算平台,帮助前端智能实现CDML,形成数据和算法工程闭环,帮助开发者打造工业级可用服务和线上线下算法能力2什么成熟的低端有代码/无代码开发平台吗?3个低代码/无代码开发能在多大程度上改变当前的软件开发方式?随着计算机计算能力和功能的不断发展,随着社会的数字化和信息化,今天的人们越来越难以满足于预先定制的软件。低代码/无代码开发赋予人们创建软件的能力,然后帮助人们低成本、实时、高效地直接生产出满足他们需求的软件,然后操作许多复杂的电子设备,与它们建立连接数字世界。在我看来,这是一个不可逆转的趋势,也是低代码/无代码开发的大方向。最终,软件开发势必会从专业程序员手中转移到普罗大众手中,像今天操作电脑一样成为基本生存技能之一。因此,软件开发方式将带来本质的变化,从完全交付到部分交付,从整体业务交付到业务能力交付……5展望未来1低代码/无代码开发的未来发展方向是什么?在我看来,低代码/无代码开发未来的发展方向一定是:人工智能驱动的“人机协同编程”,将把一个软件的完整开发变成提供部分软件功能,类似于苹果的“捷径”》,由用户决定如何将这些部分软件功能组装成用户友好的软件交付给最终用户。AI驱动提供了两方面的价值:降低开发成本以往开发软件时,有PRD、交互稿、设计稿、设计文档等一系列需求规范,然后用技术和工程方法根据这些要求规范来实施。然而,低代码/无代码开发交付的是部分功能和半成品,它们将被无法列举的目的和环境使用。既然不能枚举,就不能用Switch...Case的方式写代码,不然会累死的。人工智能的特点是根据特征和环境进行预测,而预测的基础是对规律和本质的理解。就像AI认猫一样,不管猫在什么环境,在什么光照条件下,不管猫是什么品种,AI都能比人类更准确地识别它。试想一下,作为程序员用一个程序来判断猫的开发成本有多高?降低使用成本如今的构建系统本质上是用构建的思想重构编程过程。工作内容没有变,成本从程序员转移到了运营、产品、设计师身上。这是第二件事。现在的平台都是从技术角度来搭建的,充满了运营、产品、设计等非技术人员看得一头雾水的概念。花在回答问题和教他们如何在页面上自定义搜索框的时间,实现源代码的时间比我和他们沟通后花的时间更长,而且我在编码时经常被打断……基于AI的“人-计算机协同编程》不需要透露任何技术概念、操作、产品、设计……等非技术人员不改变自己的工作习惯,用熟悉的工具和概念来描述自己的需求。人工智能负责识别和理解这些需求,然后将其转化为编程和技术工程领域的概念,然后生成代码并交付,从而大大降低使用成本。举个例子:如果你的英语写作能力不好,你怎么能一边用兰道词典翻译拼词,一边写出高质量的英文文章?或者我应该用中文写文章,然后使用谷歌翻译将整篇文章高质量地翻译成英文?你自己试试就知道了。原因是你只有用你熟悉的语言和概念才能清楚地表达自己。2低代码/无代码开发存在哪些技术挑战需要学术界和产业界共同探索?我最初在D2上提出并分享“前端智能”概念时,提出了识别、理解、表达的核心流程。我始终认为,实现AI驱动的“人机协同编程”的关键路径是:识别、理解、表达。为此,我们围绕AI识别、AI理解、AI表达与国内外知名高校开展广泛合作。识别需求识别:通过NLP、知识图谱、图神经网络、结构化机器学习等AI技术,识别用户需求、产品需求、设计需求、运营需求、营销需求、研发需求、工程需求等。,识别概念及概念之间的关系设计稿的识别:通过CV、GAN、物体识别、语义分割等AI技术,识别设计稿中的元素、元素之间的关系、设计语言、以及设计系统,设计意图UI的识别:通过用户用脚投票的结果进行回归,后验分析识别UI对用户行为的影响程度、效果、频率、时间等,以及识别UI的可变性识别计算机程序之间的关系以及这些用户行为的影响:t通过对代码、AST...等原始数据的分析,借助NLP技术识别语言的表达能力、语言的结构、语言中的逻辑、??语言和日志的识别通过API交互和来自外部系统的数据:通过日志和数据的NLP、回归和统计分析,识别程序可用性、性能和易用性等指标,并识别影响这些指标的因素。日志和数据从哪里来,找出它们之间的关系,理解横向和跨领域的理解:对识别出的概念进行降维,从而在底层找到更多不同领域的概念之间的映射关系抽象维度,从而实现对不同领域概念的类比,进而在某一领域理解其他领域的概念。纵向跨层次理解:利用机器学习和深度学习的AI算法能力,放松不同层次概念之间的组成关系,实现对低层次概念的跨层次理解常识和技术的一般理解以及业务能力供给和使用机会:基于常识和常识构建的知识图谱,将人工智能面临的开放性问题进行领域化,将常识和常识作为理解的基础,而不是推测和猜想,而是基于一个理论基础来理解和表达个性化:利用大数据和算法实现用户与软件功能的匹配,利用AI降低生成能力领先于千人的研发成本,从而真正实现个性化软件服务能力,将软件作为服务推向极致Empathy:使用终端智能在用户侧部署算法模型,不仅可以解决用户隐私保护问题,还可以为用户提供千变万化的情绪、诉求、场景及时学习和响应,让软件可以急用户所急,想用户之所想,从程序功能的角度去换位思考,引起用户共鸣。比如:我用iPhone进地铁站的时候,因为现在需要查健康码,所以每次进地铁站,iOS都会给我推荐支付宝快捷方式。不用再找支付宝打开显示健康码了。感觉iOS很聪明,很贴心。这是同理心。六后记前端智能的概念提出到现在已经三年了。起初,我们保持着“让前端跟上AI发展的浪潮”的初心,然后走上了“解决一线研发问题”的道路[4],然后“给前端-endreliablemachinelearningframework》开源[3],一路走来,几近不眠。真正从本质上颠覆现在的编程模式和研发模式,谈何容易?在这个过程中,我们从一群纯前端程序员变成了跨界的前端和AI程序员。开发方式从写代码变成了机器生成,周围的人也从围观变成了主动参与。低代码/无代码开发方兴未艾,大量的技术和科研人员都在朝着这个方向努力。没有方法是Silverbullet,也没有绝对正确的理论。只要找到自己热爱的东西,坚持研究和实践,最终会让每个人都可以定制软件来操作越来越复杂和强大的硬件设备,最终会让每个人更方便、更直接、更有效地接入数字世界,并最终从本质上重新定义了软件开发和软件工程领域!共勉!