iVX和Blockly一樣都是一種“邏輯編輯方案”

信息化觀察網(wǎng)
關(guān)關(guān)
Blockly由于其圖形化/可視化的特點,在很多平臺中被使用,其中并不限于“兒童編程”,包括很多設(shè)計現(xiàn)在都采用了這種“拖拽積木塊”的設(shè)計模式。包括游戲設(shè)計、2D/3D開發(fā)、Debug、應(yīng)用開發(fā)領(lǐng)域都有。

先來了解Scratch和Blockly

一說起Scratch(一個兒童編程平臺),可能很多人都知道,它的界面如下圖所示:

1.png

Scratch開發(fā)界面截圖

這種圖形化的“積木塊”帶“磁吸”效果的拼接邏輯,幾乎是現(xiàn)在“兒童/青少年”編程的主流邏輯表達。國內(nèi)幾乎所有的兒童編程產(chǎn)品幾乎也都采用了這種“邏輯”表達方式。

但是,還有另外一個產(chǎn)品,也許大家就不那么熟悉了,這就是“blockly”(Google公司發(fā)明)。那么Blockly和Scratch的關(guān)系是什么呢?Blockly相當(dāng)于發(fā)明了“積木+磁吸”這種邏輯表達的“引擎”,是一種“新的編程方式/范式”;而Scratch則相當(dāng)于使用這種“邏輯引擎”,做了一個“兒童編程平臺”。而使用Blockly這種開源引擎開發(fā)的產(chǎn)品有數(shù)百款,幾乎看到這種“拖拽積木+磁吸”的面板進行編程的,都是使用的Blockly的產(chǎn)品二次開發(fā)而來。而且Blockly可以自己編譯成多種語言的代碼,例如:JavaScript、Python、Lua、Dart、PHP等。Blockly使用一個名為“生成器”的概念來將其圖形化的塊結(jié)構(gòu)轉(zhuǎn)換為源代碼。每種支持的語言都有其對應(yīng)的生成器。這個過程并不直接涉及到抽象語法樹(AST)的轉(zhuǎn)換,雖然實際上每個塊和連接都可以視為AST的一部分。

Blockly提供了多種方式進行擴展,你可以通過創(chuàng)建新的塊、定義塊的行為,或者自定義UI來進行擴展。

1.png

Blockly開發(fā)界面截圖

從Blockly開發(fā)界面截圖可以看出,Blockly主要是設(shè)計了一種從“可拖拽的積木塊”到“各種編程語言”的轉(zhuǎn)換模式,只負責(zé)“圖形化”編程到“代碼”編程的轉(zhuǎn)化過程。而一開始提到的Scratch,則是把這種Blockly設(shè)計的“編程模式”,變成了小朋友可以使用的IDE(集成開發(fā)環(huán)境),變成一種成熟的產(chǎn)品,這就是“Blockly”和“Scratch”的核心區(qū)別。

Blockly所開發(fā)出來的平臺

1.png

Blockly及其所開發(fā)出來的平臺

Blockly由于其圖形化/可視化的特點,在很多平臺中被使用,其中并不限于“兒童編程”,包括很多設(shè)計現(xiàn)在都采用了這種“拖拽積木塊”的設(shè)計模式。包括游戲設(shè)計、2D/3D開發(fā)、Debug、應(yīng)用開發(fā)領(lǐng)域都有。

Blockly的優(yōu)點和限制

看看“萬能”的GPT如何回答這個問題...

1.png

優(yōu)點這里就不多說了,關(guān)鍵是“還有什么地方值得改進?”因此我們概括一下Blockly的一些缺點。

1 開發(fā)效率低

作為一種編程語言而言,這種“拖拽——配置”的模式,還是效率太低(操作時間多和點擊次數(shù)高),相比“代碼編程”并沒有明顯優(yōu)勢(被很多人認為寫程序比Blockly要更快一些);特別是對于復(fù)雜的應(yīng)用,幾乎是無法完成的現(xiàn)階段,所以限制很大。

2 功能限制大

Blockly模式編程,核心的編程范式很接近“申明式”編程,“面向?qū)ο?rdquo;的封裝這塊兒做的并不是太好,而且添加組件并不容易,因此擴展起來還是比較麻煩的,因此主要用于“兒童編程”。另外,由于本身能力限制,涉及到后臺/數(shù)據(jù)庫等復(fù)雜操作,幾乎沒有采用這種模式進行開發(fā)的。由于Blockly這種作為編程語言本身“完備性”的缺失,因此,還存在很大的改進空間。

3 和程序員需求存在“斷層”

Blockly還有一個重大的問題,就是多數(shù)使用該技術(shù)的平臺,只適合“兒童/少年編程”,無法往上兼容,繼續(xù)開發(fā)更復(fù)雜更完整的應(yīng)用。絕大部分基于Blockly的平臺,往往只能坐一部分或一階段的應(yīng)用開發(fā),例如只能做前端、只能游戲等,絕大部分都沒有支持?jǐn)?shù)據(jù)庫的能力。

這一問題,導(dǎo)致很多使用Blockly平臺的學(xué)習(xí)者,學(xué)習(xí)一段時間后不得不放棄使用Blockly平臺,再去學(xué)習(xí)代碼開發(fā)。

Blockly是有多重專利保護的

雖然Blockly是開源的,但是Blockly作為Google的一個核心項目,具有多重的專利保護,這一點大家一點要引起重視。開源表達了代碼可以被公開在一定范圍內(nèi)使用,但是專利是另一套體系,到一定時候是可以收取專利費的。

(以下是部分收錄的專利)

專利標(biāo)題:Visual Code-Generation Systems and Methods

專利編號:US 20130159925 A1

申請日期:2011年12月19日

發(fā)明人:Neil Fraser

專利所有人:Google Inc.

iVX和Blockly都是“程序邏輯編輯方案”

現(xiàn)在,ivx.cn這個網(wǎng)站,其實更類似Scratch這樣的平臺,自帶IDE,開發(fā)者可以自由在平臺上開發(fā)各種應(yīng)用程序,然后完成應(yīng)用的全生命周期管理。

其實,我們也發(fā)明了Blockly,也就是我們的“事件面板”,這種面板如下圖所示:

1.png

iVX IDE邏輯編輯“事件面板”截圖

這種“面板模式”相比“拖拽積木模式”本身就有一些天生的優(yōu)勢,主要表現(xiàn)在:

1 更快的開發(fā)效率

這得益于“更少的點擊和操作次數(shù)”,“更少的窗口數(shù)量”,以及“更好的面相對象組件設(shè)計”。從實際統(tǒng)計來看,iVX一次操作可以生成數(shù)百行代碼。

2 功能上無限制

這種圖靈完備的“邏輯面板”加上“分層的組件設(shè)計”,讓iVX幾乎沒有任何功能限制,完全可以勝任復(fù)雜應(yīng)用和中大型項目的開發(fā),單應(yīng)用可以生成上千萬行代碼。

把“邏輯面板”從iVX上“剝離”

前面已經(jīng)說到了,iVX實際上相當(dāng)于是“Scratch”,雖然也設(shè)計了自己的“邏輯面板”,但是其他人開發(fā)者并不能使用這種“邏輯面板”開發(fā)他們自己的平臺和IDE。

因此,我們需要把“邏輯面板”剝離出來,形成一個和平臺“解耦”的“邏輯面板”,其實就是,iVX自己的“Blockly”,將這種快速的“邏輯轉(zhuǎn)代碼的能力”開放出來,讓所有開發(fā)者(不管是否使用iVX開發(fā))都可以使用這種“新的編程方式”,都可以使用“邏輯面板”構(gòu)造自己的應(yīng)用。

這一點對于整個iVX的發(fā)展也至關(guān)重要。

THEEND

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

更多
暫無評論