Redlang 開箱筆記
來自專欄 bjong的摸魚筆記
這個語言我是從陳天的文章了解到的(red,不紅不專,但性感)。文章瘋狂地安利了這個語言的GUI編寫的方便程度,以及類似Go的跨平台打包、單文件等等。而我這段時間用了各種Electron方案的GUI軟體,又卡又佔CPU和內存,所以漸漸開始想體驗一些其他的小而美的GUI方案。
由於目前的Red版本的GUI綁定只支持Win和Mac,還不支持Linux下的GUI(Gtk),所以只能先用Mac OS來作為測試環境。然後IDE只支持VS Code,但我機器並沒有安裝,也只好先拿Emacs開text模式頂著。
(PS:Red的官方圖標長得很像Minecraft里的信標+金字塔)
安裝
根據官方的Getting Started文檔,下載一個二進位文件,賦予執行許可權,然後直接運行,它會編譯出幾個依賴,放在同目錄下。然後就可以用它作為編譯/解釋器了。
Hello World
直接執行red,進入解釋器模式,然後就跟Python差不多的操作了。
./red-063--== Red 0.6.3 ==--Type HELP for starting information.>> print("Hello world!")Hello world!>>
編譯的方式運行,需要寫一些頭部,可能是用於載入模塊用。由於helloworld不需要任何模塊,所以為空。
代碼:
Red []print("hello world")
編譯+運行:
$ ./red-063 -c hello.red$ ./hello
編譯一個Helloworld花了1.6秒。
GUI Hello World
運行解釋器:
>> view [text "Hello World!"]
然後就跑出GUI版Hello world界面了,簡單快捷:
再試試複雜點的:
>> view [name: field button "Hi" [print ["Hi" name/text]]]
多了一個文本框和按鈕,按鈕按下會在終端列印Hi+文本框里的文字。
再用編譯的方式運行,源碼:
Red [Needs: View]view [ title "Hi" name: field button "Hi" [ print ["Hi" name/text] ]]
運行效果跟上圖類似,並用title設置了標題。
其他Example
在Example列表裡有很多GUI的代碼示例。比如13行寫一個計算器:
Red [needs: view]view [ title "Calculator" f: field 230x50 font-size 25 "" return style b: button 50x50 [append f/text face/text] b "1" b "2" b "3" b " + " return b "4" b "5" b "6" b " - " return b "7" b "8" b "9" b " * " return b "0" b "." b " / " b "=" [attempt [ calculation: form do f/text append clear f/text calculation ]] ]
效果:
生成的執行文件大小72k。
最後
Red是個小眾的神奇語言,有著類似Lisp的語法,而且這個語法既可以用於編程,又能作為快速描述GUI的DSL。開發簡單的GUI程序,除了用.net拖控制項,Red可能是一種最快的開發方式。
最後這篇文章的作者用Red開發了一堆簡單的程序,並配上了GIF示範。文章的末尾附帶了有價值的關於Red的參考鏈接。
Red [Needs: View]view [ title "bjong" style b: text font-size 25 b "Good bye!"]
推薦閱讀:
※當沒有GUI的時候用戶要怎麼操作
※GacUI 支持運行時切換語言
※GUI 常用元素中英對照表 / 1. Progress Indicator