最适合做 GUI 的是 DSL 或者 XML(以及 XML 的扩展)之类的标记语言,而不是编程语言。
例如 Qt 的 QML,Android 的 XML 或者 WPF 的 XAML 以及大家都再熟悉不过的 HTML/CSS,包括 JavaFX 也有 FXML。
一门编程语言如果想更适合定义界面,那么它的语法就得往 DSL 方面靠拢(或者支持 DSL 风格)。
GUI这个东西的特性就是变化多端,细节复杂,需要怼大量人力完成。所以适合GUI的语言,必然是可以节省人力的特性。从编程语言角度,越能更快给到编程者反馈,语言写法越接近最终成品的用户界面,基本是更好的。
0. 书写简单。语法简洁,杂音少,不需要写boilerplate。支持function closure是基础了。Kotlin里UI DSL还有大括号实际上也不是特别干净,最好能像CoffeeScript一样用缩进表达。
总之就是怎么写得快怎么好咯。如果综合上面几点,最好的GUI语言就是
CoffeeScript的语法 + TypeScript的类型系统 + Kotlin的语法糖DSL + Dartlang的热加载 + C#的async/await/Rx
与其问什么语言最适合做 GUI,倒不如问做 GUI 需要语言/框架具有哪些特性。
首先用代码来“画”界面在现在来看是很怪异的,所以用 DSL + 完善的布局系统来写界面一定是趋势。对应的技术有 WPF、Qt Quick、JavaFX、Android Layout XML...
其次,界面不能脱离了数据,而如何将数据与界面之间建立起关系是至关重要的,双向数据绑定无疑是最好的实现方法。对应的技术有 WPF、Cocoa、各种 Web MVVM 框架...
最后还有交互,交互是一件很复杂的事情,不要试图用函数式的思想去解决这个问题,交互一定需要命令式的编程方式,而实现交互最基础的一点就是事件系统,如何将视图里的控件事件与一段逻辑代码联系在一起?看看 Qt Signal/Slot 和 Cocoa 就知道了,这点需要一个语言特性叫反射。
按照我的理解,适合写gui的语言应当有这些特点
大概就这么多,要我说,我认为最适合的语言是
ui 的关键部分
我个人觉得应该分为四个部分。
第一:排版(包括布局)
第二:附加属性(外观 颜色 边框 阴影 行高 字体)
第三:事件(交互)
第四:数据
以上主要是对目前前端 这种UI范式进行的总结。
而排版(或布局)需要一些比较自动化得 约定和机制。以便于确保 编程人员不用过多得考虑排版(反面教材就是winform 具体位置点这种的是最差的)。
附加属性这个完全可以参考css 这种 设计模式。
事件和数据 没啥好说的 参考下 类似 angularjs 或者vue 这种双向绑定就是了。
那么到底需不需要标记语言呢?
不一定。
因为也完全可以用 编程语言来布局。关键是api的设计而已。
原文:https://www.cnblogs.com/feng9exe/p/10901871.html