我們?yōu)槭裁匆_發(fā)iVX?—iVX嘗試用“圖形化”的方式解決編程的問題

信息化觀察網(wǎng)
劉藝
現(xiàn)在無論是前端還是后臺,還是云計算,技術(shù)迭代的速度都非???,需要設(shè)計一個通用的架構(gòu),保證有新技術(shù)出現(xiàn)的時候可以快速迭代進來,這點非常重要。

高級編程語言誕生已經(jīng)過去了大半個世紀(jì)了,在我們看來,什么都在進步,但是編程語言的發(fā)展卻有些緩慢了。雖然現(xiàn)在語言更加豐富,框架更多,但是最基本的編程方式還是沒有任何改變,就是“寫代碼”,其實在英文中“Programming”和“Coding”是兩個單詞,有沒有可能,我們只“編程”而不“寫代碼”?

由于我個人比較喜歡圖形化的思維方法,在我學(xué)習(xí)代碼以后,就一直在思考一個問題:有沒有另一種實現(xiàn)代碼邏輯的方法?這種方式可以“抹平”各種編程語言/框架之間的差異,實現(xiàn)“去掉程序語法,保留程序邏輯”。我們嘗試去探索一條“應(yīng)用開發(fā)的最短路徑”,這條路經(jīng)涵蓋了從“開發(fā)”——“測試”——“上線”——“運維”的全過程,自動生成全棧代碼(包括前端/后臺/數(shù)據(jù)庫代碼),甚至嘗試給用戶提供“最直觀”“一眼就能想到”的編程實現(xiàn)方法。

圖形化的編程思路,在幾十年前就有許多公司和團隊想到過,并且構(gòu)思出了很多優(yōu)秀的產(chǎn)品,一些是“圖形+代碼”快速生成某種編程語言的產(chǎn)品,例如Visual Basic、Dreamweaver、Delphi、C++Builder、JBuilder等等;再到硬件設(shè)備圖形化編程產(chǎn)品Labview;以及科學(xué)計算領(lǐng)域大名鼎鼎的Matlab;都能看到圖形化編程的影子。

但是,以往的圖形化編程方式,或多或少都有一些問題:例如,圖形化了一部分UI,核心邏輯無法圖形化表達(還是要寫大量代碼);又例如,一些圖形化方案,嘗試構(gòu)造完整的代碼邏輯空間,圖形化設(shè)計過程過于復(fù)雜;還有一些框架過于陳舊,并沒有實現(xiàn)面向?qū)ο蟮慕M件設(shè)計;還有一些圖形化方案本身并不適合表達特別復(fù)雜的邏輯,例如Scratch,導(dǎo)致無法實現(xiàn)“通用”的應(yīng)用開發(fā)。

要想做一種新的編程方式(新范式),幾乎需要面對所有程序員(開發(fā)者)的檢驗,這是一件非常困難的事情,甚至比設(shè)計一門新的代碼編程語言更加困難。

設(shè)計新的圖形化編程語言的主要挑戰(zhàn)

一 需要軟件工程理論上的創(chuàng)新(編程語言的設(shè)計只是很一小部分)

在OOP面向?qū)ο罄碚摮霈F(xiàn)以后,已經(jīng)過去了好幾十年,雖然也有“敏捷開發(fā)/精益開發(fā)”、“CI/CD持續(xù)集成/持續(xù)部署”、“DevOps”、“DDD領(lǐng)域驅(qū)動設(shè)計”等,但在本身的開發(fā)范式上并沒有太大的創(chuàng)新,都是沿用“代碼開發(fā)范式”。在我看來,這套范式整個使用路徑,隨著領(lǐng)域的不斷擴展,各種軟件產(chǎn)品公司的加入,變得越來越復(fù)雜,對于初學(xué)者很不友好,已經(jīng)成為進一步擴大“軟件”生產(chǎn)力的“核心”阻力。

以前端為例,以下是網(wǎng)上流傳需要掌握的知識圖譜:

1.png

前端學(xué)習(xí)路徑圖(來自互聯(lián)網(wǎng))

這僅僅只是前端需要掌握的知識,后臺和運維需要掌握的內(nèi)容一點也不比前端的少。就光前端開發(fā)這一項技能,沒有好幾年的時間,很難達到一定水平。

如果想要在一個圖形化界面里面同時支持“前端開發(fā)”+“后臺/數(shù)據(jù)庫開發(fā)”+“運維”+“軟件全生命周期管理”,難度可想而知。

另一方面,這種新的編程方式,相比傳統(tǒng)代碼編程方式,要能實現(xiàn)以下四個評價關(guān)鍵點中至少三點,才有意義。

這四個評價要點為(相比傳統(tǒng)代碼編程方式):

(1)更高的學(xué)習(xí)效率;

(2)更快的開發(fā)效率;

(3)更方便的運維;

(4)更快的運行速度;(表現(xiàn)為生成的代碼質(zhì)量)

1.png

iVX的四個評價關(guān)鍵點

二 需要底層技術(shù)的創(chuàng)新

首先要保證產(chǎn)品本身的架構(gòu)的靈活性?,F(xiàn)在無論是前端還是后臺,還是云計算,技術(shù)迭代的速度都非???,需要設(shè)計一個通用的架構(gòu),保證有新技術(shù)出現(xiàn)的時候可以快速迭代進來,這點非常重要??v觀很多具有IDE(整合開發(fā)環(huán)境)的產(chǎn)品,就是由于架構(gòu)比較固化,無法引入新的技術(shù),最終被新產(chǎn)品/新技術(shù)淘汰。

其次,圖形化編程語言本身的設(shè)計以及和現(xiàn)有編程語言的轉(zhuǎn)化,是另外一個難點。圖形化編程語言的AST(抽象語法樹)如何設(shè)計?語義空間(關(guān)鍵字)有多大?如何才能生成流行且大家熟悉使用的編程語言和代碼框架?后臺數(shù)據(jù)庫以及后臺資源如何接入并保證高可用?外部系統(tǒng)例如3D、2D、物理引擎如何接入?如何高效渲染?這些都是很棘手的問題,而且很多問題并沒有標(biāo)準(zhǔn)答案,都需要獨立創(chuàng)新和研發(fā)。

就拿AST(抽象語法樹)設(shè)計舉例,前端的AST和后臺顯然是不一樣的,例如后臺需要轉(zhuǎn)碼Java,而前端需要轉(zhuǎn)碼vue/react/dart等,那Java是直接采用Java原有的AST還是重新設(shè)計一種?最終我們選擇了重新設(shè)計一種AST,用來生成Java AST,再轉(zhuǎn)碼Java Code,這個技術(shù)目前成功應(yīng)用于iVX圖形化編程IDE中,并且申請了國家專利保護。

1.png

iVX圖形化編程IDE

三 需要產(chǎn)品設(shè)計方面的創(chuàng)新

當(dāng)我們2007年開始投入研發(fā)的時候,當(dāng)時也不是這么樂觀,估計3~5年可以做出成型的產(chǎn)品,當(dāng)時想的是可以設(shè)計個網(wǎng)站/網(wǎng)站前端就可以了(當(dāng)然還沒有云計算的概念,大家還不知道SaaS是個啥?也沒有想著用瀏覽器來做應(yīng)用了,所以只有網(wǎng)站的概念。)后來深入進去,發(fā)現(xiàn)瀏覽器原來還可以做很多事兒,接下來的幾年瀏覽器本身升級和迭代速度加快了,互聯(lián)網(wǎng)連續(xù)設(shè)計,移動互聯(lián)網(wǎng)快速加入并成為應(yīng)用開發(fā)的主戰(zhàn)場,我們的產(chǎn)品也不得不進一步升級。

這種來自產(chǎn)品快速升級的壓迫感,讓我們根本就沒有辦法停下來。支持了動畫和廣告,你就想支持前端界面開發(fā),支持各種應(yīng)用開發(fā);支持了前端你就想要支持后臺和數(shù)據(jù)庫開發(fā);然后你想要支持云計算,支持微服務(wù)和Serverless;然后你想要把編程語言配套設(shè)置都加上,IDE、多人開發(fā)、版本管理、自定義組件管理...一個都不能少;再然后就是平臺化...模版平臺、組件平臺、交易平臺、應(yīng)用商店紛紛上馬...需要做的事情太多太多。幾乎是把編程語言幾十年建立的大廈和配套設(shè)施都要獨立靠我們團隊去實現(xiàn)一遍,而且很多技術(shù)還要自己摸索...

Finally...

我們沿著這條道路探索了十七年(2007年~2023年),iVX就這樣誕生了。

1.png

產(chǎn)品很早就在線上可以訪問了(2021年~2022年),但我們幾乎沒有推廣和宣傳,總是覺得這個產(chǎn)品無論是體驗上還是技術(shù)框架上,都還有需要調(diào)整的地方,因此,我們來來回回重構(gòu)了7~8次,功能點新增和調(diào)整上千次,最終形成了現(xiàn)在的版本——5.0版??傮w來說,我們對目前的版本整體上已經(jīng)比較滿意,因此決定推向市場,就目前為止大概有30萬注冊的開發(fā)者,已經(jīng)通過我們平臺開發(fā)了近100萬個應(yīng)用了??傮w來說,沒有什么bug了,而且生成代碼性能表現(xiàn)也很出色,大家可以放心使用。

目標(biāo)30年...

iVX堅持每周迭代,到現(xiàn)在為止,團隊構(gòu)成基本上全員研發(fā)(為此,國內(nèi)稅務(wù)主管部門多次來查,說我們申報的研發(fā)人員比例太高,我告訴他們“我們財務(wù)系統(tǒng)都是財務(wù)人員自己研發(fā)的,現(xiàn)在已經(jīng)轉(zhuǎn)研發(fā)了”)。

底層技術(shù)的演進,往往需要更長的時間,但是一旦有所突破,往往也會帶來生產(chǎn)力更大的進步。在iVX IDE的基礎(chǔ)上,通過AI模型自動編程,是我們研究的新方向。希望通過我們的努力,可以為更多人服務(wù),并創(chuàng)造價值。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論