GUI(UI编程)语言与面向对象、dsl

看过面向对象程序设计的早期论文吗?这个东西就是为了描述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
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
https://www.zhihu.com/question/276815517
 

在我目前的理解里,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

posted @ 2020-02-10 17:47  zzfx  阅读(1438)  评论(0编辑  收藏  举报