看过面向对象程序设计的早期论文吗?这个东西就是为了描述GUI才发明出来的。所以凡是支持OOP足够好的语言,都适合做GUI。
至于各种declarative programming的学派(譬如用XML),没有下面语言的OOP,你MVVM做不了,data binding做不了,最后都一样是屎。所以就算是描述式语言,也是建立在完美支持OOP的宿主程序上面的。
最适合做 GUI 的是 DSL 或者 XML(以及 XML 的扩展)之类的标记语言,而不是编程语言。
例如 Qt 的 QML,Android 的 XML 或者 WPF 的 XAML 以及大家都再熟悉不过的 HTML/CSS,包括 JavaFX 也有 FXML。
一门编程语言如果想更适合定义界面,那么它的语法就得往 DSL 方面靠拢(或者支持 DSL 风格)。例如 Kotlin 就是个典型的例子:
与其问什么语言最适合做 GUI,倒不如问做 GUI 需要语言/框架具有哪些特性。
首先用代码来“画”界面在现在来看是很怪异的,所以用 DSL + 完善的布局系统来写界面一定是趋势。对应的技术有 WPF、Qt Quick、JavaFX、Android Layout XML...
其次,界面不能脱离了数据,而如何将数据与界面之间建立起关系是至关重要的,双向数据绑定无疑是最好的实现方法。对应的技术有 WPF、Cocoa、各种 Web MVVM 框架...
在我目前的理解里,GUI 应用的架构实现,依次走过了这些重要的阶段:
https://www.cnblogs.com/feng9exe/p/12291517.html
原文:https://www.cnblogs.com/feng9exe/p/12291834.html