不是。
以前的编程语言的语法设计不够现代,用来定义 UI 非常不友好。你自己想想用一堆最平凡的方法调用代码创建各种元素和属性,然后在各个容器之间插入,多难受。并且非常不直观。
XML 和 HTML 解决了这个问题。而且用 XML 或 HTML 并不表示 UI 是静态的,它们解析以后仍然会构造出以前用语言代码创建的各种对象。
所以 JS 能通过 DOM API 操作 HTML 中的元素,Android 中的 Java 代码能直接获得 XML 中定义的控件对象进行各种控制。
但是,陆续的,很多语言都开始宣称自己的语法灵活,能构造出 DSL 风格的代码。如果一个 UI 库利用了这一点,完全以适合 DSL 调用风格来设计 API,便能造就纯语言代码定义 UI 的技术,并且直观性不差 XML 或其它描述性语言。
可是实际上,如果你真的用它们写过代码,如果你遵循基本的界面/逻辑分离思想,你会发现用语言代码定义 UI 的时候,和 XML 是没有太大区别的。反而增加了一些优点,例如不需要运行时解析从而提高了性能。
如果你用它们的 DSL 设计 UI 的时候,混入了一堆逻辑代码,那你表面上是利用了语言代码定义 UI 的优势,实际上是犯了基本的程序设计错误。