我偶爾會(huì)用可視化的游戲引擎GameSalad做點(diǎn)小游戲,簡(jiǎn)單的說(shuō),,它為我提供了許多現(xiàn)成的功能代碼模塊和函數(shù),,我只需要為游戲中的各個(gè)對(duì)象設(shè)計(jì)正確的邏輯,就能很方便的制作簡(jiǎn)單的游戲,。這讓我想到,,如果真的有一種編程環(huán)境,能夠真正的做到“可視化編程”,,清晰地展現(xiàn)程序之間的邏輯結(jié)構(gòu),,那么不僅會(huì)有利于程序員編寫(xiě)和查看代碼,同時(shí)也能讓許多人輕松的學(xué)習(xí)編程,。所以,,當(dāng)我看到NoFlo的時(shí)候,感到十分的興奮,。它是一個(gè)面向JavaScript語(yǔ)言的線性可視化編程環(huán)境,。 我們知道,,一長(zhǎng)串段代碼中不同的代碼塊之間包含著各種邏輯和調(diào)用關(guān)系,這些關(guān)系都可以用不同的線路圖來(lái)表示,,只不過(guò)在傳統(tǒng)的編程工具中,,編程環(huán)境都是至上而下的文本,這種關(guān)系表現(xiàn)的并不明顯,。但如果我們?cè)诩埳蠈⑦@些代碼塊分散的排列,,用代表不同關(guān)系的彩色線條將有調(diào)用關(guān)系的代碼塊連接起來(lái),讓人們能夠順著這些軌跡輕易地讀懂程序,。 再進(jìn)一步,,我們把這些代碼塊都看做是一個(gè)個(gè)的“黑盒”,我們甚至不需要知道這些黑盒里具體的代碼,,只需知道這些黑盒各自的功能和有哪些接口,,通過(guò)這些接口可以將黑盒們相互連接并傳輸信息。同時(shí),,無(wú)需改變黑盒的內(nèi)部結(jié)構(gòu),,通過(guò)不同的連接方式就能重組整個(gè)黑盒系統(tǒng),實(shí)現(xiàn)不同的功能,,即重寫(xiě)了一個(gè)全新的代碼,,那么不僅能大大提高代碼編寫(xiě)的效率,同時(shí)還能讓那些沒(méi)有學(xué)過(guò)編程語(yǔ)言的人輕松的學(xué)會(huì)編程,,因?yàn)樗麄冎恍枥斫飧鱾€(gè)代碼塊的功能和調(diào)用邏輯就行了,。 以上的思想被程為“Flow-based programming”( 基于流程的編程),其實(shí)它早已被廣泛運(yùn)用在一些產(chǎn)品中,,例如集成在xcode tool里的專(zhuān)為蘋(píng)果系統(tǒng)開(kāi)發(fā)的動(dòng)畫(huà)合成軟件Quartz Composer,,就利用這個(gè)原理幫助設(shè)計(jì)時(shí)制作復(fù)雜的動(dòng)畫(huà)效果。但可惜的是,,Quartz Composer也只適用于動(dòng)畫(huà)的制作,。 而NoFlo則是為軟件開(kāi)發(fā)而生的,它給我的第一印象就像是一個(gè)Protel那樣的電路圖繪制軟件,,包含了大量的程序組件,,即黑盒,你可以在屏幕上選取這些組件并通過(guò)不同的線條為他們構(gòu)建關(guān)系,,就像在Protel中用線條連接元器件那樣,。不過(guò)根據(jù)NoFlo的團(tuán)隊(duì)介紹,他們的界面設(shè)計(jì)思路實(shí)際是來(lái)自倫敦地鐵,,其線條和節(jié)點(diǎn)都采用了相似的風(fēng)格,。 同時(shí),除了修改線條關(guān)系編寫(xiě)不同的程序外,,你也可以查看每個(gè)組件中具體的代碼信息,,進(jìn)行修改,,或是自己編寫(xiě)組件存放在NoFlo中。NoFlo也建立了自己的社區(qū),,工程師們可以為其貢獻(xiàn)自己的程序組件,,供大家使用,目前最受歡迎的組建庫(kù)有Stripe,,、BaseCamp,、Twitter和 GitHub。 如今,,NoFlo已經(jīng)公布 NoFlo 0.4的版本,,他們也開(kāi)始在Kickstarter上籌集資金來(lái)幫助他們實(shí)現(xiàn)這一目標(biāo),同時(shí),,他們的想法也不僅僅局限在JavaScript程序上,,而是想進(jìn)一步擴(kuò)展到Android和iOS程序,以此來(lái)實(shí)現(xiàn)讓每個(gè)人都不用考慮編程語(yǔ)言,,就能動(dòng)手編寫(xiě)程序的愿景,。 |
|