看過面向對象程序設計的早期論文嗎?這個東西就是為了描述GUI才發明出來的。所以凡是支持OOP足夠好的語言,都適合做GUI。
至於各種declarative programming的學派(譬如用XML),沒有下面語言的OOP,你MVVM做不了,data binding做不了,最后都一樣是屎。所以就算是描述式語言,也是建立在完美支持OOP的宿主程序上面的。
作者:vczh
鏈接:https://www.zhihu.com/question/276815517/answer/401637827
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
最適合做 GUI 的是 DSL 或者 XML(以及 XML 的擴展)之類的標記語言,而不是編程語言。
例如 Qt 的 QML,Android 的 XML 或者 WPF 的 XAML 以及大家都再熟悉不過的 HTML/CSS,包括 JavaFX 也有 FXML。
一門編程語言如果想更適合定義界面,那么它的語法就得往 DSL 方面靠攏(或者支持 DSL 風格)。例如 Kotlin 就是個典型的例子:
作者:紳士喵
鏈接:https://www.zhihu.com/question/276815517/answer/390718261
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
與其問什么語言最適合做 GUI,倒不如問做 GUI 需要語言/框架具有哪些特性。
首先用代碼來“畫”界面在現在來看是很怪異的,所以用 DSL + 完善的布局系統來寫界面一定是趨勢。對應的技術有 WPF、Qt Quick、JavaFX、Android Layout XML...
其次,界面不能脫離了數據,而如何將數據與界面之間建立起關系是至關重要的,雙向數據綁定無疑是最好的實現方法。對應的技術有 WPF、Cocoa、各種 Web MVVM 框架...
作者:Cyandev
鏈接:https://www.zhihu.com/question/276815517/answer/401765634
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
在我目前的理解里,GUI 應用的架構實現,依次走過了這些重要的階段:
- 過程化繪制時代 - 直接調用 drawLine / drawRect 風格的 API 來繪制像素。在我的樹莓派里,只要 include X11 的頭文件,就能用 C 語言體驗這種硬派的 GUI 開發了。HTML5 中的 Canvas,其實也屬於這種風格。
- 面向對象抽象時代 - 純粹過程化的代碼,並不利於維護事件驅動的業務邏輯。比如,你需要自行計算來判斷出某次點擊應該選中哪個 UI 元素。在 MFC 和 GTK 的時代,人們實現了面向對象風格的 UI 框架。按鈕、輸入框等 UI 控件具備了實例方法,能更好地組織代碼。
- 界面與樣式分離時代 - 用 C++ 系語言的代碼來描述 UI,很容易寫出面條式的丑陋代碼。因此人們又引入了 XML 風格的語言,專門來表達嵌套式的界面。DirectUI 和 HTML / CSS / JS 基礎上的經典 Web,都是這個時代的產物。
- MVC 與 MVVM 時代 - 如何維護日益復雜的 UI 交互邏輯?許多框架引入了軟件工程中的 MVC 和 MVVM 等設計模式。這個時代的代表產物有蘋果的 Cocoa 和微軟的 WPF,以及 Web 上的 Angular 1 框架。
- 聲明式組件化時代 - 為什么我們必須編寫連接 UI 布局語言和業務邏輯的面條代碼呢?Facebook 的 React 提出了新的 UI 開發思路。通過 JSX,很容易用 JS 來編寫嵌套的、聲明式的、更易維護的 UI 組件,並借助 JavaScript 的動態性來實時調試 UI。當前風口上的 Vue,Flutter 和 SwiftUI,都明顯地借鑒了這種思想。
https://www.cnblogs.com/feng9exe/p/12291517.html