天天看點

初探一個0代碼開發—iVX平台

原創公衆号:bigsai

前言

最近發現了一些新名詞——0代碼程式設計,和大家分享一下。并且這個和目前比較流行的前端架構React,谷歌的Go語言,Node這些最新技術關系很大,持續分享一下。

初探一個0代碼開發—iVX平台

最近一些年網際網路發展迅猛,應用從簡單架構向複雜架構發展,架構變向複雜之後相應的環境、平台等管理就變得複雜,例如利用docker容器來管理環境。也在發展中誕生了很多新技術和簡化代碼的工具和平台例如Jeecj這種代碼生成工具平台,各種腳手架平台簡化代碼量,但仍需編寫代碼。

在我以前的時候就想過會不會有一個工具之類能夠開發網站和app,就像PS一樣不懂圖像處理技術但是通過操作依然可以達到良好的效果。剛好筆者最近接觸到一個有趣的工具并自己試了一下,感覺非常有趣(iVX可自行百度一下)一個0代碼生成的平台。雖然尚不知道它能否成為未來的趨勢和熱點,讓一些不懂代碼的人也能嘗試開發屬于他們的app,讓一些懂代碼的人能夠簡化他們的網站開發。

這是第一篇的介紹,主要還是先将iVX官方的一些介紹歸納總結一下,後續可能會跟一些系類。主要是源于新奇,0代碼開發的平台和技術到底是怎麼樣的,通過近期的學習研究可以看一下,當然也歡迎有興趣的一起研究下。當然對于這種平台可能會有同類産品,以後可能會對比分析一下。

理論基礎

先介紹一下iVX的一些理論基礎,有些名詞我不是很熟,查閱了百科将他們翻譯下來。

一、低代碼開發平台(LCDP:Low-code development platform)

在維基百科中的的定義:A low-code development platform (LCDP) is software that provides an environment programmers use to create application software through graphical user interfaces and configuration instead of traditional computer programming.

可以看出低代碼開發,首先提供的是一套軟體,其次這個還是給程式員用的。隻是可以節省程式員開發的時間,提升開發效率(類似一些腳手架,逆向工程生成部分代碼)。

iVX提供是的“0代碼開發語言”,是以概念上還是很LCDP不太相同。

低代碼VS零代碼,對比兩者關系如下:

低代碼産品做的是工具,優化程式開發的過程,降低開發時間成本。

  • 适用人群:現有程式員,對他們過度和學習非常友好
  • 适用公司和場景:大型公司最友好(Mendix和Outsystem也是這麼做的),需要投入服務資源較多,适用公司BPM場景
  • 對現有體系影響:影響較小,公司現有研發資産過度容易
  • 解決問題:加快程式員開發速度,為公司降低開發成本
  • 收費方式:企業賬号收費;按應用收費;按公司規模收費
  • 最終産品形态:IDE(雲)
  • 生态:大B生态,B端生态

0代碼語言,除了加速開發,還改變程式設計習慣,0代碼工具本身就是新的開發語言。

  • 适用人群:想成為工程師的人+50%現有程式員(長期目标是90%現有程式員)
  • 适用公司和場景:大型公司BPM OA ERP業務+外包公司團隊+中心創業公司,幾乎所有應用開發場景,除了算法場景
  • 對現有體系影響:沖擊較大,是對整個研發體系的變革
  • 解決問題:提供一種全新的開發手段和體系,降低開發門檻和節省開發成本(我們認為這是技術發展方向)
  • 收費方式:應用複雜度收費;企業賬号收費;雲端資源收費;C端教育訓練收費
  • 最終産品形态:語言+IDE(雲)
  • 生态:C端+B端生态

二、可視化程式設計語言(VPL:Visual Programming Language)

可視化程式設計語言(維基百科),這個理念和我們産品應該是最接近的。Wiki中重點提到了類似Scratch的可以拖拽的文法塊,來生成目智語言程式這種方式;另外,還有類似Mendix或Outsystems的通過流程圖的方式自動生成目标可執行語言的方法。以上兩種均采用了面向過程的方法來進行設計整個邏輯過程。而iVX可以算是另外一類可視化程式設計語言,采用的是“事件觸發”邏輯。

而iVX提供以下程式開發配套工具(挺完整的):

  • 多人開發
  • 版本管理
  • Debug功能
  • 細顆粒可組合的前背景元件庫
  • 支援複雜邏輯的事件編輯面闆

多種可視化程式設計語言在适應的領域上:

  • Scratch、Blockly隻适合兒童程式設計,隻能生成非常簡單的應用;(WebApp,Flash)
  • Mendix等産品,隻适合企業場景,特别是BPM、OA場景的應用開發;(應用類型:WebApp)
  • iVX可以支援衆多場景的開發,企業場景、個人應用、遊戲等都支援。(應用類型:WebApp 手機原生應用 桌面原生應用 小程式)

三、快速應用開發(Rapid application development)

在維基百科中的的定義,Rapid-application development (RAD), also called rapid-application building (RAB), is both a general term, used to refer to adaptive software development approaches, as well as the name for Terry Barraclough’s approach to rapid development.

可以看出,它是一種軟體工程的理論方法和對應衍生産品,通常有IDE的界面和例如瀑布流、靈活開發等模型。它和iVX研究方向有關系,但不是我們目前讨論的重點,不在這裡詳述。

四、領域語言(DSL:domain-specific language)

相關理論:DSL由軟體大師Martin Fowler提出,我的了解是“設計一門特定範圍的語言(開發領域),使其有更出色的表現”。

DSL 語義模型 ----> 編譯器 ----> 系統識别語言 ----> 運作

| |

| |

| V

| 目标代碼

V

中間代碼

DSL實際上就是為了把語意表達和系統識别的語言解耦。但是在DSL理論中,認為隻适合特定場景,我們認為這種模式思維會有一定局限性。例如iVX在語言設計的時候,希望是沒有局限的,也就是适合任何應用開發場景。更加追求語言本身的通用性這一特點。

五、aPaaS,iPaaS(Cloud-based integration) & ​​PaaS​​​

這三個概念,就不在這裡細說了,都是雲計算領域的概念“平台即服務”的延伸,iVX符合這個定義。

六、無代碼程式設計/可逆計算

參考這兩篇知乎文章:

​​​ https://zhuanlan.zhihu.com/p/61288928​​ https://zhuanlan.zhihu.com/p/64004026

這兩篇文章探讨了,0代碼(無代碼)程式設計的可行性,以及開發無代碼程式設計産品體系所需要的相關技術和技術難點,并對比了和代碼開發的各自優略。

但是,我覺得這兩篇文章都是理論研究為主,漏掉了實際産品設計中非常苦難的問題,程式邏輯的0代碼編輯解決方案。

七、第四代程式設計語言(4GL),第五代程式設計語言(5GL),下一代程式設計語言

第四代程式設計語言(4GL):

可以參考​​維基百科​​給出的定義。總結以下幾個特點:1. 智能;2. 非過程化程度高;3. 面向問題,可用性高;4. 支援資料庫管理開發。詳見James Martin在其1981年的《沒有程式員的應用程式開發》

第五代程式設計語言(5GL):

最主要提到的一點就是:面向問題的,非程式員也可以操控的程式設計語言(這個正是iVX追求的目标,而且已經基本實作)

由于研發難度較大,第五代程式設計語言,後期的研究就基本處于停止狀态了。

八、AI程式設計

現在主要還是停留在前端階段,無邏輯部分。主要實作方式,就是把簡單的界面直接翻譯成JS代碼,可以識别按鈕等簡單界面控件。

這個以前學習JavaGUI插件拖動,還有一些安卓之類可能會設計到生成代碼。iVX也涉及到代碼自動生成,但是是前背景代碼的自動生成,原理和技術實作上和通過視覺分析生成按鈕控件有很大不同,就不在這裡細說。

開發過程篇

一、元件的抽象

構造通用的應用需要一些什麼元件,解決這個問題就意味着需要對現有的所有應用和可能的應用場景進行拆分和抽象。對于一個應用抽象或許還可以,但是把抽象出來元件反過來可以建構各種應用,這又是另外一回事兒了。這就類似于一個NP問題,也許永遠沒有一個最優解,但是通過不斷的努力和嘗試,iVX已經基本上可以建構任何應用了。

元件的抽象非常漫長,而且抽象的層次也非常關鍵,什麼是基礎元件,什麼是基礎元件之上抽象的擴充元件(這種元件更加實用,往往可以馬上表達某一功能),可能在之上還有模型和子產品的概念,在之上才是模闆和模闆複用。

之後,所有的元件都是對象化的封裝(包括事件本身),都有“三位一體”的表達,這就是“對象屬性”“觸發條件”“對象函數”。

比較難的是背景部分,前端還有一些庫的方法可以參考,背景抽象難度會更大一些。

初探一個0代碼開發—iVX平台

二、邏輯的抽象和表達

上一步比較難,是内容量太大,細節非常多,花的時間也就多。這一步是真的比較難~

所有的程式開發,抛開了界面和資料,剩下的就是邏輯,邏輯成應用的靈魂,也是最難0代碼表達的。

iVX創造了基于的“條件觸發式”的非代碼邏輯方式,以及為這個方式專門提供了一個事件編輯面闆,支援前端、中台、背景的邏輯編輯。

同時iVX支援MySQL的所有操作邏輯。

初探一個0代碼開發—iVX平台

三、形成完備的中間語言

總體來說,iVX是從WebApp開始研究和演進的,更多的使用了Web前後端流行技術。

iVX前端是使用React,生成的前端代碼也是React的Core。中台采用Node.js,直接解析JS代碼。背景和雲端基礎設施相連,采用了Go來架構,效率更高更穩定。

中間語言,隻的是通過前端拖拽元件和配置完事件之後,生成的中間代碼,類似描述性語言。這個語言必須我們自己構造,類似需要積累一個字典一樣,後續通過這個“字典”,将一個一個應用編輯成一篇“文章”。

初探一個0代碼開發—iVX平台

四、支援各種目标系統的編譯器

這個過程技術含量最高,需要做編輯器!這個領域現在已經很少年輕程式員涉足了。

例如,做支援微信小程式原生的編輯器,就需要把微信小程式“嚼爛”,然後再對應我們現有元件寫一次,然後把對應的文法翻譯成JS業務,最終通過編譯器編譯成微信小程式的代碼。現階段,我們支援iOS Android Windows Mac等原生應用和Web應用,是以編譯器的複雜度可想而知,還要速度快,這個活據我所知,技術含量極高。

初探一個0代碼開發—iVX平台

結語

這次的介紹就這麼多,看起來iVX不錯,我也在上簡單玩了一下,一些模闆和視訊教程講解的挺細緻的,希望它能為我以後寫快速網頁:

初探一個0代碼開發—iVX平台

繼續閱讀