最適合作 GUI 的是 DSL 或者 XML(以及 XML 的擴展)之類的標記語言,而不是編程語言。css
例如 Qt 的 QML,Android 的 XML 或者 WPF 的 XAML 以及你們都再熟悉不過的 HTML/CSS,包括 JavaFX 也有 FXML。前端
一門編程語言若是想更適合定義界面,那麼它的語法就得往 DSL 方面靠攏(或者支持 DSL 風格)。vue
GUI這個東西的特性就是變化無窮,細節複雜,須要懟大量人力完成。因此適合GUI的語言,必然是能夠節省人力的特性。從編程語言角度,越能更快給到編程者反饋,語言寫法越接近最終成品的用戶界面,基本是更好的。java
0. 書寫簡單。語法簡潔,雜音少,不須要寫boilerplate。支持function closure是基礎了。Kotlin裏UI DSL還有大括號實際上也不是特別乾淨,最好能像CoffeeScript同樣用縮進表達。node
總之就是怎麼寫得快怎麼好咯。若是綜合上面幾點,最好的GUI語言就是webpack
CoffeeScript的語法 + TypeScript的類型系統 + Kotlin的語法糖DSL + Dartlang的熱加載 + C#的async/await/Rxangularjs
與其問什麼語言最適合作 GUI,倒不如問作 GUI 須要語言/框架具備哪些特性。web
首先用代碼來「畫」界面在如今來看是很怪異的,因此用 DSL + 完善的佈局系統來寫界面必定是趨勢。對應的技術有 WPF、Qt Quick、JavaFX、Android Layout XML...typescript
其次,界面不能脫離了數據,而如何將數據與界面之間創建起關係是相當重要的,雙向數據綁定無疑是最好的實現方法。對應的技術有 WPF、Cocoa、各類 Web MVVM 框架...編程
最後還有交互,交互是一件很複雜的事情,不要試圖用函數式的思想去解決這個問題,交互必定須要命令式的編程方式,而實現交互最基礎的一點就是事件系統,如何將視圖裏的控件事件與一段邏輯代碼聯繫在一塊兒?看看 Qt Signal/Slot 和 Cocoa 就知道了,這點須要一個語言特性叫反射。
按照個人理解,適合寫gui的語言應當有這些特色
大概就這麼多,要我說,我認爲最適合的語言是
ui 的關鍵部分
我我的以爲應該分爲四個部分。
第一:排版(包括佈局)
第二:附加屬性(外觀 顏色 邊框 陰影 行高 字體)
第三:事件(交互)
第四:數據
以上主要是對目前前端 這種UI範式進行的總結。
而排版(或佈局)須要一些比較自動化得 約定和機制。以便於確保 編程人員不用過多得考慮排版(反面教材就是winform 具體位置點這種的是最差的)。
附加屬性這個徹底能夠參考css 這種 設計模式。
事件和數據 沒啥好說的 參考下 相似 angularjs 或者vue 這種雙向綁定就是了。
那麼到底需不須要標記語言呢?
不必定。
由於也徹底能夠用 編程語言來佈局。關鍵是api的設計而已。