什么是低代码(Low-Code)?
⼀前⾔
如果选择⽤⼀个关键词来代表即将过去的2020年,我相信所有⼈都会认同是“新冠”。疫情来得太快就像龙卷风,短短数⽉就阻断了全世界范围内⽆数⼈与⼈之间的物理连接。但好在,我们已经全⾯迈⼊互联⽹时代:N95⼝罩再厚,也阻挡不了信息⽐特流的顺畅流通(宅男:B站依然⾹);居家隔离再久,也妨碍不了钉钉消息的准时送达(社畜:⼯作依然苦)。逍遥⼦在9⽉份的云栖⼤会上说:“新技术代表的新⽣产⼒,⼀定是我们全速战胜疫情、开创未来最好的原动⼒。” 那么在后疫情时代,究竟需要什么样的新
技术,才能真正解放IT⽣产⼒,加速社会数字化转型,Make The World Great Again?我认为是低代码(Low-Code)。
基于经典的可视化和模型驱动理念,结合最新的云原⽣与多端体验技术,低代码能够在合适的业务场景下实现⼤幅度的提效降本,为专业开发者提供了⼀种全新的⾼⽣产⼒开发范式(Paradigm Shift)。另⼀⽅⾯,低代码还能让不懂代码的业务⼈员成为所谓的平民开发者(Citizen Developer),弥补⽇益扩⼤的专业⼈才缺⼝,同时促成业务与技术深度协作的终极敏捷形态(BizDevOps)。本⽂将重点介绍低代码相关背景知识,包括低代码的定义与意义、相关概念、⾏业发展等,期望能帮助⼤家更好地认识与理解低代码这个新兴领域。
⼆什么是低代码
“Low-Code”是什么?如果你是第⼀次听说,没准也会跟我当年从⽼板⼝中听到这个词后的内⼼戏⼀样:啥?“Low-
Code”?“Code”是指代码我知道,但这个“Low”字是啥意思?不会是⽼板发现我最近赶⼯写的代码很丑很“Low”吧... 想多了,⽼板怎么可能亲⾃review代码呢。那难道是指,“Low-level programming”⾥的“Low”?⽼板终于发现让我等编程奇才整天堆Java业务代码太浪费,要派我去闭关写⼀个⾼性能C语⾔⽹络库... 显然也不是,⽼板哪能有这技术情怀呢。那到底是什么意思?作为⼀名搜商⽐情商还⾼的
程序员,能问Google的绝不会问⽼板。于是我⼀顿操作后,不假思索地点开了第⼀条搜索结果。果不其然,这是⼀条充满⾃由芳⾹只有才能闻到的Wikipedia词条:Low-code development platform。
Wikipedia定义
从Wiki的这段定义中,我们可以提炼出⼏个关键信息:
低代码开发平台(LCDP)本⾝也是⼀种软件,它为开发者提供了⼀个创建应⽤软件的开发环境。看到“开发环境”⼏个字是不是很亲切?对于程序员⽽⾔,低代码开发平台的性质与IDEA、VS等代码IDE(集成开发环境)⼏乎⼀样,都是服务于开发者的⽣产⼒⼯具。
与传统代码IDE不同的是,低代码开发平台提供的是更⾼维和易⽤的可视化IDE。⼤多数情况下,开发者并不需要使⽤传统的⼿写代码⽅式进⾏编程,⽽是可以通过图形化拖拽、参数配置等更⾼效的⽅式完成开发⼯作。
Forrester定义
顺着Wiki的描述还能发现,原来“Low-Code”⼀词早在2014年就由Forrester提出了,它对低代码开发平
台的始祖级定义是这样的:
相⽐Wiki的版本,这个定义更偏向于阐明低代码所带来的核⼼价值:
低代码开发平台能够实现业务应⽤的快速交付。也就是说,不只是像传统开发平台⼀样“能”开发应⽤⽽已,低代码开发平台的重点是开发应⽤更“快”。更重要的是,这个快的程度是颠覆性的:根据Forrester在2016年的调研,⼤部分公司反馈低代码平台帮助他们把开发效率提升了5-10倍。⽽且我们有理由相信,随着低代码技术、产品和⾏业的不断成熟,这个提升倍数还能继续上涨。
低代码开发平台能够降低业务应⽤的开发成本。⼀⽅⾯,低代码开发在软件全⽣命周期流程上的投⼊都要更低(代码编写更少、环境设置和部署成本也更简单);另⼀⽅⾯,低代码开发还显著降低了开发⼈员的使⽤门槛,⾮专业开发者经过简单的IT基础培训就能快速上岗,既能充分调动和利⽤企业现有的各⽅⾯⼈⼒资源,也能⼤幅降低对昂贵专业开发者资源的依赖。
低代码核⼼能⼒
基于上述的定义和分析,不难总结出如下这3条低代码开发平台的核⼼能⼒:
全栈可视化编程:可视化包含两层含义,⼀个是编辑时⽀持的点选、拖拽和配置操作,另⼀个是编辑完成后所及即所得(WYSIWYG)的预览效果。传统代码IDE也⽀持部分可视化能⼒(如早年Visual Studio的MFC/WPF),但低代码更强调的是全栈、端到端的可视化编程,覆盖⼀个完整应⽤开发所涉及的各个技术层⾯(界⾯/数据/逻辑)。
全⽣命周期管理:作为⼀站式的应⽤开发平台,低代码⽀持应⽤的完整⽣命周期管理,即从设计阶段开始(有些平台还⽀持更前置的项⽬与需求管理),历经开发、构建、测试和部署,⼀直到上线后的各种运维(e.g. 监控报警、应⽤上下线)和运营(e.g. 数据报表、⽤户反馈)。
低代码扩展能⼒:使⽤低代码开发时,⼤部分情况下仍离不开代码,因此平台必须能⽀持在必要时通过少量的代码对应⽤各层次进⾏灵活扩展,⽐如添加⾃定义组件、修改主题CSS样式、定制逻辑流动作等。⼀些可能的需求场景包括:UI样式定制、遗留代码复⽤、专⽤的加密算法、⾮标系统集成。
不只是少写代码
回到最初那个直击⼼灵的⼩⽩问题:Low-Code中的“Low”,到底是啥意思?答案已经显⽽易见:既不
是指抽象程度很低(相反,低代码开发⽅式的抽象程度要⽐传统编程语⾔⾼⼀个level),也不是指代码很low(也相反,低代码所⽣成的代码⼀般都经过精⼼维护和反复测试,整体质量强于⼤部分⼿写代码),⽽是单纯的“少写代码” —— 只在少数需要的情况下才⼿写代码,其他⼤部分时候都能⽤可视化等⾮代码⽅式解决。
再往深⼀点⼉看,低代码不只是少写代码⽽已:代码写得少,bug也就越少(正所谓“少做少错”),因此开发环节的两⼤⽀柱性⼯作“赶需求”和“修bug”就都少了;要测的代码少了,那么测试⽤例也可以少写不少;除了开发阶段以外,平台还覆盖了后续的应⽤构建、部署和管理,因此运维操作也更少了(Low-Code → Low-Ops)。
然⽽,少并不是最终⽬的:如果单纯只是想达到少的效果,砍需求减⼈⼒、降低质量要求也是⼀样的。低代码背后的哲学,是少即是多(Less is More),或者更准确说是多快好省(Do More with Less) —— 能⼒更多、上线更快、质量更好,成本还更省,深刻践⾏了阿⾥“既要,⼜要,还要”的价值观精髓。
平台的职责与挑战
上⾯说的是低代码给开发者提供的能⼒与吸引⼒,那么作为服务的提供⽅与应⽤的承载者,低代码开发平台⾃⾝应该承担怎样的职责,其中⼜会遇到多⼤的挑战?是否就⼀定要如阿⾥云所主张的那样,“把复杂留给⾃⼰,把简单留给别⼈”?虽然这句话听起来很深明⼤义,但不知道⼤家有没有想过,为什么我们⼀定要抱着复杂不放,平⽩⽆故给⾃⼰事?就不能直接⼲掉复杂,也给咱阿⾥云⾃⼰的员⼯留点简单吗?是⼯作太容易就体现不出来KPI价值了,还是家⾥的饭菜不如公司的夜宵⾹?
冥思苦想许久后,我从热⼒学第⼀定律中到了答案:开发⼀个应⽤的总复杂度是恒定的,只能转移⽽不可能凭空消失。要想让开发者做的更少,安⼼享受简单的快乐,那么平台⽅就得做的更多,默默承担尽可能多的复杂度。就像⼀个满⾝腱⼦⾁的杂技男演员,四平⼋稳地托举着在⾼处旋转与跳跃的⼥搭档;上⾯的⼈显得越轻盈越毫不费⼒,下⾯的⼈就得越稳重越⽤尽全⼒。当然,不是说上⾯的⼥演员就很轻松没压⼒,只是他们各⾃的分⼯不同,所承担的复杂度也不⼀样。
根据《⼈⽉神话》作者Fred Brooks的划分,软件开发的复杂度可以划分为本质复杂度(Essential complexity )和偶然复杂度(Accidental complexity)。前者是解决问题时固有的最⼩复杂度,跟你⽤什么样的⼯具、经验是否丰富、架构好不好等都⽆关,⽽后者就是除此之外在实际开发过程中引⼊的复杂度。通常来说,本质复杂度与业务要解决的特定问题域强相关,因此这⾥我把它称为更好理解的“
业务复杂度”;这部分复杂度不是任何开发⽅法或⼯具能解决的,包括低代码。⽽偶然复杂度⼀般与开发阶段的技术细节强相关,因此我也相应把它称为“技术复杂度”;⽽这⼀部分复杂度,恰好就是低代码所擅长且适合解决的。
为开发者尽可能屏蔽底层技术细节、减少不必要的技术复杂度,并⽀撑其更好地应对业务复杂度(满⾜灵活通⽤的业务场景需求),这是⾝为⼀个低代码开发平台所应该尽到的核⼼职责。
在尽到上述职责的同时,低代码开发平台作为⼀个⾯向开发者的产品,还需要致⼒于为开发者提供简单直观的极致开发体验。这背后除了巨⼤的⼯作量,还得能在“强⼤”和“易⽤”这两个很难两全其美的⽭盾点之间,努⼒到⼀个符合⾃⼰产品定位与⽬标客户需求的平衡点—— 这也许是设计⼀个通⽤低代码开发平台所⾯临的最⼤挑战。
三低代码相关概念对⽐
纯代码(Pro-Code / Custom-Code)
“纯代码”可能算是我杜撰的⼀个词,更常见的说法是专业代码(Pro-Code)或定制代码(Custom-Code);但意思都⼀样,就是指传统的以代码为中⼼(Code-Centric)的开发模式。之所以我选择⽤“纯代码”,是因为如果⽤“专业代码”会显得似乎低代码就不专业了⼀样,⽽⽤“定制代码”⼜容易让⼈误解成低代码⽆法⽀持定制的⾃定义代码。
当然,更准确的称谓我认为是“⾼代码”(与低代码恰好对应,只是名字太难听,被我嫌弃了...),因为即便是使⽤传统的代码IDE,有些开发⼯作也⽀持(甚⾄更适合)以⾮代码⽅式完成,⽐如:iOS端开发时使⽤的SwiftUI界⾯设计器、服务端开发数据库应⽤时使⽤的PowerDesigner建模⼯具。不过这部分可视化⼯作在传统开发模式下只是起辅助作⽤,最后通常也是⽣成开发者可直接修改的代码;开发者仍然是以代码为中⼼来开展主要⼯作。
低代码与纯代码之间的关系,其实跟视频和⽂章之间很像:
低代码就像是现代的“视频”,⼤部分内容都由直观易理解、表达能⼒强的图⽚组成,因此更容易被⼤众所接受。但与此同时,视频也不是死板得只能有图⽚,完全可以添加少量⽂字(如字幕、标注)来弥补图⽚表达不够精确的问题。BTW,关于“图”和“⽂字”之间的辩证关系,可以进⼀步参考《架构制图:⼯具与⽅法论》[1]这篇⽂章中的相关描述。
纯代码则更像是传统的“⽂章”,虽然很久以来都⼀直是信息传播的唯⼀媒介,但⾃从视频技术诞⽣以及相应软硬件基础设施的普及以来,便逐渐开始被抢⾛了风头。如今,视频已成为⼤部分⼈获取信息的主要渠道(从电视电影到B站抖⾳),⽽经常读书读⽂章的⼈却越来越少。但不可否认的是,⽂章依然有它存在的意义和受众(不然我也不会费这劲敲这么多字了),即使“市场份额”⼀直在被挤压,但永远会有它⽴⾜的空间。
如果按上⾯这种类⽐关系推导,低代码未来也会遵循与视频类似的发展轨迹,超越纯代码成为主流开发模式。Gartner的预测也表达了相同的观点:到2024年,所有应⽤程序开发活动当中的65%将通过低代码的⽅式完成,同时75%的⼤型企业将使⽤⾄少四种低代码开发⼯具进⾏应⽤开发。
但同样地,就像是视频永远⽆法取代⽂章⼀样,低代码也永远⽆法彻底取代纯代码开发⽅式。未来低
代码和纯代码⽅式将以互补的形态长期共存,各⾃在其所适合的业务场景中发光发热。在后⾯的“低代码业务场景”章节,会详细列出哪些场景在现阶段更适合⽤低代码模式开发。
零代码(Zero-Code / No-Code)
从分类的完备性⾓度来看,有“纯代码”⾃然也应该有完全相反的“零代码”(也称为“⽆代码”)。零代码就是完全不需要写代码的应⽤开发平台,但这并不代表零代码就⽐低代码更⾼级和先进,它只是做了⼀个更极端的选择⽽已:彻底拥抱简单的图形可视化,完全消灭复杂的⽂本代码。选择背后的原因是,零代码开发平台期望能尽可能降低应⽤开发门槛,让⼈⼈都能成为开发者(注意:开发 ≠ 写代码),包括完全不懂代码的业务分析师、⽤户运营,甚⾄是产品经理(不懂装懂可不算懂)。
即便是专业开发者,在技术分⼯越来越精细的趋势下(前端/后端/算法/SRE/数据分析..),也很难招到⼀个能独⽴开发和维护整套复杂应⽤的全栈⼯程师。但零代码可以改变这⼀切:⽆论是Java和JavaScript傻傻分不清楚的技术⼩⽩,还是精通深度学习但没时间学习Web开发的算法⼤⽜,都可以通过零代码实现⾃⼰的技术梦或全栈梦。“改变世界的idea已有,就差⼀个程序员了”,这句玩笑话或许真的可以成真;哦不,甚⾄都⽤不着程序员,有idea的⼈⾃⼰就能上。
当然,所有选择都要付出代价,零代码也不例外。完全抛弃代码的代价,就是平台能⼒与灵活性受限:
⼀⽅⾯,可视化编辑器的表达能⼒远不及图灵完备的通⽤编程语⾔,不引⼊代码根本没法实现灵活的定制与扩展(当然,理论上也可以做成Scrach/Blockly那样的图形编程语⾔,但那样不过是换⼀种形式在⼿写代码⽽已)。
另⼀⽅⾯,由于⽬标受众是⾮专业开发⼈员,平台能⽀持的操作会更趋于“傻⽠化”(e.g. 页⾯只⽀持⼤块业务组件的简单堆叠,不⽀持细粒度原⼦组件和灵活的CSS布局定义),同时也只会透出相对“亲民化”的模型和概念(e.g. 使⽤“表格”表⽰数据,⽽不是⽤“数据库”),⽆法⽀撑强⼤专业的底层开发原语和编程理念。
虽然零代码与狭义上的低代码有着上述明显差异,但从⼴义上来说,零代码可以当作低代码的⼀个⼦集。Gartner在其相关调研报告中,就是将“No Code”划在了范围更⼴的低代码应⽤平台“LCAP”(Low-
Code Application Platform)中。⽽当前市⾯上很多通⽤的低代码开发平台,也都兼具⼀定程度的零代码能⼒;⽐如低代码领域领头⽺Mendix,既提供了简单易⽤的零代码Web IDE - Mendix Studio,也包括⼀个功能更强⼤的低代码桌⾯IDE - Mendix Studio Pro。
HpaPaaS(⾼⽣产⼒应⽤PaaS)
上⽂提到,“Low-Code”⼀词是拜Forrester所赐。作为同样是国际知名调研机构(a.k.a 造词⼩能⼿)的Gartner,显然不会轻易在这场可能决定低代码领域江湖地位的新概念作词⼤赛中认输,于是也于2017年发明了“HpaPaaS”(High-productivity application Platform as a Service)这个听上去更⾼⼤上的缩写词。
按照Gartner的定义,HpaPaaS是⼀种⽀持声明式、模型驱动设计和⼀键部署的平台,提供了云上的快速应⽤开发(RAD)、部署和运⾏特性;这显然与低代码的定义如出⼀辙。但事实证明,名字起得太专业并不见得是好事,“HpaPaas”最终还是败给了起源更早、更接地⽓也更顺⼝的“Low-Code”:从2019年开始,Gartner在其相关调研报告中也开始全⾯采⽤“Low-Code”⼀词(如LCAP),亲⼿
为“HpaPaaS”打上了 @deprecated 印记。
图源:blog.kintone/business-with-heart/difference-saas-iaas-paas-apaas-hpapaas
值得补充的是,“HpaPaaS“这个词也并⾮横空出世,⽽是传承⾃更早之前Gartner提出的“aPaaS”,它俩之间的关系是:HpaPaaS只是aPaaS的⼀个⼦类;除了HpaPaaS这种通过低代码实现的⾼⽣产⼒应⽤开发平台以外,aPaaS还包括⾯向纯代码的传统应⽤开发平台(High-control aPaaS,即可控度更⾼的纯代码开发⽅式)。
怎样写代码 自己做编程不值得但就想⼋卦⼀下的是,“aPaaS”这个词也⾮凭空捏造,⽽是与云计算的兴起渊源颇深。相信各位云道中⼈都已猜到,aPaaS与IaaS/PaaS/SaaS这些云计算远古概念是⼀脉相承的:aPaaS介于PaaS和SaaS之间,相⽐PaaS提供的服务更偏应⽤,但⼜不像SaaS⼀样提供现成的软件服务(更详细的说明可参考配图来源⽂章)。
四为什么需要低代码
低代码是什么可能并没那么重要,毕竟在这个信息爆炸的世界,永远不缺少新奇⽽⼜短命的事物。⼤
部分所谓的新技术都只是昙花⼀现:出现了,被看到了;⼤部分⼈“哦”了⼀声,已阅但表⽰不感兴趣;⼩部分⼈惊叹于它的奇思妙想,激动地点了个赞后,回过头来该⽤什么还是什么。真正决定新技术是否能转化为新⽣产⼒的,永远不是技术本⾝有多么优秀和华丽,⽽是它是否真的被需要,即:为什么需要低代码?如果⽤不同的主语填充上⾯这个问句(冷知识:这叫做“延迟主语初始化”),可以更全⾯地看待这个问题:
为什么「市场」需要低代码?
在这个⼤爷⼤妈都满嘴“互联⽹+”和“数字化转型”的时代,企业越来越需要通过应⽤(App)来改善企业内部的信息流转、强化与客户之间的触点连接。然⽽,诞⽣还不太久的IT信息时代,也正⾯临着与我国社会主义初级阶段类似的供需关系⽭盾:落后的软件开发⽣产⼒跟不上⼈民⽇益增长的业务需求。
Gartner预测,到2021年应⽤开发需求的市场增长将⾄少超过企业IT交付能⼒的5倍。⾯对如此巨⼤的IT缺⼝,如果没有⼀种⾰命性的“新⽣产⼒”体系,很难想象仅凭现有传统技术体系的发展延续就能彻底解决问题。⽽低代码技术正是带着这样的使命⽽降临,期望通过以下⼏个⽅⾯彻底⾰新应⽤开发⽣产⼒,拯救差⼀点就要迈⼊⽔深⽕热的IT世界:
提效降本 & 质量保障
虽然软件⾏业⼀直在⾼速发展,新的语⾔、框架和⼯具层出不穷,但作为从业者我们不得不承认:软件开发仍处于⼿⼯作坊阶段,效率低、⼈⼒成本⾼、质量不可控。项⽬延期交付已成为⾏业常态,⽽瓶颈⼏乎总是开发⼈员(对机器能解决的问题都不是问题);优秀的开发⼈才永远是稀缺资源,还贼贵;软件质量缺陷始终⽆法收敛,线上故障频发资损不断。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论