低代碼:新風(fēng)口還是行業(yè)毒瘤?
譯文作為軟件工程師的你,一定聽(tīng)說(shuō)過(guò)低代碼(LCNC) 工具吧?來(lái)自谷歌的低代碼趨勢(shì)圖顯示,人們對(duì)“低代碼”一詞的興趣越來(lái)越濃厚。
圖 1:谷歌趨勢(shì)圖
此外,低代碼方面的相關(guān)投入也不斷加大,來(lái)自 Spreadsheetweb 的調(diào)查數(shù)據(jù)顯示如下:
圖 2:Spreadsheetweb 調(diào)查統(tǒng)計(jì)
盡管受全球經(jīng)濟(jì)形勢(shì)持續(xù)低迷的影響,低代碼相關(guān)投資熱度驟減,但是 Spreadsheetweb 預(yù)測(cè):到 2027 年,“低代碼開(kāi)發(fā)平臺(tái)市場(chǎng)”將達(dá)到 848 億美元(預(yù)測(cè)平均值)規(guī)模,前景非常樂(lè)觀。
圖 3:Spreadsheetweb 調(diào)查統(tǒng)計(jì)
不過(guò)數(shù)據(jù)歸數(shù)據(jù),回到低代碼本身,它真的對(duì)軟件開(kāi)發(fā)有幫助嗎?
本文從低代碼工具與開(kāi)發(fā)應(yīng)用程序的經(jīng)典方式,低代碼工具創(chuàng)建真正自定義應(yīng)用程序的功能,以及低代碼工具替代方案(網(wǎng)站模板和經(jīng)典 IDE)等方面,給低代碼市場(chǎng)的火熱潑一潑冷水。
1.什么是低代碼?
低代碼工具有望解決構(gòu)建 Web/移動(dòng)應(yīng)用程序所涉及的大量成本和時(shí)間問(wèn)題,盡量減少或干脆免去花費(fèi)在昂貴工程資源上的資金,至少?gòu)S商是這樣承諾的。
典型的低代碼工具試圖通過(guò)為用戶提供拖放式界面來(lái)開(kāi)發(fā) Web 應(yīng)用程序,即用戶將 UI 元素放在畫(huà)布上,將它們彼此連接后,再連接到數(shù)據(jù)源,并為某些元素添加某些操作,從而構(gòu)建應(yīng)用程序。
換句話說(shuō),低代碼工具為可視化軟件開(kāi)發(fā)提供了一個(gè)環(huán)境,而不是用工程師在 IDE 中編寫(xiě)代碼這種傳統(tǒng)方式。低代碼方法被認(rèn)為更高效,而且只需較少的專(zhuān)業(yè)技能即可。
以下是在谷歌上搜索“無(wú)代碼工具”時(shí),第一頁(yè)上提及的幾款低代碼工具:
圖 4:包括 Bubble、Retool、Microsoft Power Apps、Adalo、Webflow 和 Google Appsheet
2.低代碼繼承了可視化編程語(yǔ)言的弊端?
雖然被宣傳為一種全新的軟件開(kāi)發(fā)方法,實(shí)則低代碼工具并不新穎,在經(jīng)驗(yàn)豐富的工程師眼里它就是一種熟悉的“可視化編程語(yǔ)言”。
可視化創(chuàng)建程序的想法從編程早期就存在了,但由于一些原因,它從未被廣泛采用。
據(jù)維基百科解釋?zhuān)翱梢暬幊陶Z(yǔ)言(VPL)允許任何用戶通過(guò)圖形方式操作程序元素,而不是用文本方式?!?/p>
現(xiàn)在不妨將這句話與維基百科對(duì)低代碼開(kāi)發(fā)平臺(tái)的定義進(jìn)行比較:“低代碼開(kāi)發(fā)平臺(tái)允許程序員和非程序員采用圖形化用戶界面并進(jìn)行配置,并不非要用傳統(tǒng)的計(jì)算機(jī)編程方式來(lái)創(chuàng)建應(yīng)用軟件?!?/p>
這兩個(gè)解釋聽(tīng)起來(lái)是不是有些相似?還是完全相似?想要知道為什么低代碼并非我們想象般前景廣闊,有必要先分析一下可視化編程語(yǔ)言為何并未廣受歡迎。
Ivan Danyliuk 在其文章中表示:可視化編程最適合定義空間關(guān)系(圖形元素和 UI),而文本編程最適合定義時(shí)間關(guān)系(時(shí)間軸上的事件順序)。
換句話說(shuō),人腦很容易可視化映射空間的物理對(duì)象,而不是使用文本來(lái)描述它們;很容易以文本方式描述事件的順序(算法或指令),而不是繪制流程圖。這是人腦的一種自然屬性,因此不要逆著來(lái),最好適應(yīng)這樣的規(guī)律。
使用可視化編程的另一個(gè)問(wèn)題是,相對(duì)于更容易、更快將想法付諸實(shí)踐的用鍵盤(pán)打字,它實(shí)際上增加了另一層抽象(鼠標(biāo)和屏幕)。換句話說(shuō),打字比移動(dòng)鼠標(biāo)更快。
Ivan還認(rèn)為(我認(rèn)同):“可視化編程語(yǔ)言”從未廣泛流行起來(lái)的原因,在于人們希望以文本方式而不是以可視化方式給出指令。從我的角度來(lái)看,這與低代碼工具從長(zhǎng)遠(yuǎn)來(lái)看會(huì)失敗的原因一樣——算法更擅長(zhǎng)以文本形式讀寫(xiě)。低代碼/無(wú)代碼工具試圖像“可視化編程語(yǔ)言”那樣以可視化方式對(duì)待軟件開(kāi)發(fā),這同樣繼承了可視化編程語(yǔ)言的弱點(diǎn),在我看來(lái),注定落得同樣的命運(yùn)。
3.編寫(xiě)代碼在軟件行業(yè)永遠(yuǎn)不會(huì)過(guò)時(shí)
此外在我看來(lái),低代碼工具不是圖靈完備的——用低代碼工具只能達(dá)到有限的配置集。
如果一個(gè)系統(tǒng)能解決任何計(jì)算問(wèn)題,不管有多困難,只要它有足夠的時(shí)間和內(nèi)存以及相關(guān)的指令,就可以說(shuō)它是圖靈完備的。
由于指定指令(時(shí)間關(guān)系和事件順序)的最佳方式是文本形式,指定這些指令的能力將因低代碼工具的性質(zhì)而被削弱,因此使整個(gè)方法受到限制。
編程語(yǔ)言實(shí)際上是自然語(yǔ)言的計(jì)算機(jī)可讀版本,足以描述任何數(shù)量的對(duì)象之間的任何關(guān)系。
這意味著為了在低代碼工具中保持靈活性,要想構(gòu)建一個(gè)真正符合特定需求的應(yīng)用程序,用戶就要在低代碼工具中編寫(xiě)代碼(SQL 查詢、JavaScript 注入或模板等),這在前面提到的一些工具中已成為可能,最終使低代碼工具成為了 IDE。
看看下邊的邏輯:
- 我想構(gòu)建一個(gè)盡量減少代碼編寫(xiě)量的應(yīng)用程序;
- 我使用低代碼工具創(chuàng)建一個(gè)應(yīng)用程序;
- 我需要擴(kuò)展應(yīng)用程序以滿足我的特定要求,因此我在低代碼工具中編寫(xiě)代碼;
- 由于我已經(jīng)在編寫(xiě)代碼了,何不先安裝一個(gè) IDE,然后用正常的方式編寫(xiě)代碼?
因此,為了能夠構(gòu)建功能完備的軟件,低代碼工具需要與 IDE 融合,因此將與當(dāng)前產(chǎn)品(Visual Studio 和 JetBrains)競(jìng)爭(zhēng)。
從我的角度來(lái)看,向 IDE(即 UI 構(gòu)建器)添加低代碼功能比從頭開(kāi)始構(gòu)建新的復(fù)雜 IDE 來(lái)得容易。
此外,低代碼工具基于瀏覽器,因此 IDE 也必須基于瀏覽器,這限制了其功能。這就是為什么我認(rèn)為編寫(xiě)代碼在軟件行業(yè)永遠(yuǎn)不會(huì)過(guò)時(shí)。
4.為何沒(méi)人談?wù)撃0迨袌?chǎng)?
模板、入門(mén)工具包、主題、樣板,這些詞的含義非常相似,即一組文件和文件夾充當(dāng)應(yīng)用程序的起點(diǎn)。
有各種示例,比如 Github 上的免費(fèi)模板(比如 create-react-app 或 react-material-admin)、有大量 WordPress 主題的 ThemeForest、Template Monster、Creative-Tim 和 Flatlogic 以及專(zhuān)門(mén)面向 Web 模板的資源等。
自 2013 年發(fā)布以來(lái),僅 Flatlogic 就銷(xiāo)售了至少 20000 份許可證。Metronic 銷(xiāo)售的許可證超過(guò) 100000 份。免費(fèi)模板的使用則更廣泛。每天有多少用戶在使用 create-react-app?
在我看來(lái),模板創(chuàng)造了真正的價(jià)值。也許這是我的偏見(jiàn),但我不知道任何單單使用低代碼構(gòu)建的實(shí)際應(yīng)用程序。
最終,人們需要自定義應(yīng)用程序作為代碼,而不是作為服務(wù),因?yàn)閾碛写a為定制、擴(kuò)展和集成提供了無(wú)限的機(jī)會(huì)。
所以關(guān)鍵是模板市場(chǎng)是需要顛覆和創(chuàng)新的市場(chǎng),而低代碼市場(chǎng)不是這樣的市場(chǎng),因?yàn)樽罱K每個(gè)人都需要編寫(xiě)代碼。首先,模板市場(chǎng)很活躍。
可能最重要的玩家是 Envato,單單它一家的年收入就超過(guò) 2 億美元,盈利達(dá) 3600 萬(wàn)美元。
我估計(jì),就今天的整個(gè)市場(chǎng)規(guī)模而言,如今幾大市場(chǎng)玩家獲得的實(shí)際收入至少達(dá) 10 億美元。但是你從來(lái)沒(méi)有在新聞中聽(tīng)說(shuō)過(guò)這個(gè)市場(chǎng)。
我認(rèn)為低代碼工具方面的投入多得多,模板/主題方面卻沒(méi)有投入,這是由于向投資者推銷(xiāo)不用編程就能創(chuàng)建 Web 應(yīng)用程序的“靈丹妙藥”要容易得多,因?yàn)榇蠖鄶?shù)投資者并不通曉技術(shù),因此不明白本文中解釋的這些內(nèi)容。
各種“研究”預(yù)測(cè)幾年后低代碼市場(chǎng)規(guī)模可達(dá)到多少億美元也起到了造勢(shì)的效果,相反根本沒(méi)人談?wù)撃0迨袌?chǎng)。
這就是為什么我們創(chuàng)建了一個(gè)工具,可以根據(jù)一些輸入(比如技術(shù)堆棧、UI 設(shè)計(jì)和數(shù)據(jù)庫(kù)模式)生成全棧 Web 應(yīng)用程序的代碼庫(kù)。
我們并不在產(chǎn)品上貼上無(wú)代碼標(biāo)簽來(lái)緊跟潮流,而是解決實(shí)際市場(chǎng)的實(shí)際問(wèn)題。
作者:Philip Daineka
標(biāo)題:??Hard limits of low-code/no-code and what is an alternative solution??