0

迫不及待的总结:

我想知道的是你想用一种新的 gui 语言拥有什么。关于提到的简短答案$your_favorite_one;我假设你的意思是,这样的语言应该看起来像$your_favorite_one. 这些没有帮助。抵制诱惑。

我正在考虑基于 XML 的语言的用户友好性,例如 XHTML(或 HTML,尽管它们不是 XML,它们非常相似)、XUL、MXML 和其他(在这种情况下,“其他”意味着,我知道存在其他语言及其实现替代它们的原始语言,并且仅按名称提及这些语言的目的是为了让我了解我在说什么,我不想提及任何其他语言,而且,我认为没有无论如何都要尝试制作一个全面的清单。)。我对这种语言应该具有哪些功能有一些看法;

  1. 该语言应该是“人类可写的”,这样,普通的开发人员应该能够编写大量代码,而无需不断地参考哪些标签具有哪些属性,什么是允许的。XHTML/HTML 在这方面是最好的。
  2. 应该为常见任务内置良好的控件集合。XHTML/HTML 在这里很糟糕。
  3. 它应该能够使用类似 css 的语言进行样式设置(就功能而言)。应该很容易区分对结构和眼睛糖果的关注。这个组合整体的布局算法应该简单直观。为什么地狱浮动从布局中删除元素?为什么没有 layout:not-included 或类似的东西?

我知道我什至没有提到非常重要的设计注意事项,例如与渲染引擎和其他通用语言的交互、数据绑定、严格的 XML 合规性(定义新标签的能力?没有命名空间?)但这些都是我想要的问一下你认为对于这种语言来说什么是重要的?

4

4 回答 4

1

最新的 XML GUI 语言(实际上不仅用于 GUI)称为 XAML。它拥有所有这些糖果:样式、布局定义、对象初始化等。但是编写或多或少的大型 XAML 文件很痛苦。自动完成有助于但核心问题 - 尖括号森林 - 没有解决。高级基于 XML 的 GUI 语言的另一个问题 - 它们试图同时用于多个目的,但 XML 语法并不适合所有情况。例如 XAML 支持数据绑定,但我为什么要把它写在属性字符串中呢?这是一流的功能,应该有适当的支持。

IMO 所有现代的基于 XML 的语言都非常糟糕。面向人类的语言不得强迫其用户编写大量括号或进行深度标签嵌套。它必须是用户友好的,而不是计算机友好的。我的梦想是拥有具有类似 Python 语法的 GUI 语言。

最后我想说:

亲爱的基于 XML 的语言作者,请保持人性化,不要创建基于 XML 的另一种语言。阅读一些关于领域特定语言的好书,请不要再让我输入 < 和 > 符号。

于 2008-09-23T01:52:54.177 回答
1

在能力和简单性之间总会有一个权衡。

就我个人而言,我对用于 MS 开发的 WPF(使用 XAML)的功能感到满意。我根本不认为它的复杂性是发展的障碍。

但是,如果您要将您的工具包/语言定位到需要更高程度的简单性的人群,您可能会利用现有的框架并为最终用户提供特定于他们需求的DSL 。

不过,为整个开发社区编写一个新框架是一项艰巨的任务,我怀疑您会发现,由于所需的功能范围广泛,您将不得不在某些时候处理大量的复杂性。祝你好运。

于 2008-09-23T02:00:42.457 回答
0

您应该指定您是指 Web 客户端还是富客户端,但无论哪种方式,请查看 XAML/WPF。如果你反对 MS,那么看看 Moonlight,它是 SilverLight 的 Mono 实现。

于 2008-09-23T01:52:05.427 回答
0

我希望它能够轻松连接到任何数据库,执行返回记录集的查询,并能够轻松解析和迭代所述记录集以在图形控件中显示其数据,例如饼图、条形图、时间线图(股票期权之类的),具有动画效果的节点图,所有这些都在运行时。

简单的鼠标事件捕捉,实现对鼠标悬停、鼠标悬停、鼠标悬停、点击、拖放、剪贴板管理等的任何操作。一个好的无限缩放功能也很棒。

我不想在设计时设置在我的 SQL 查询中的某些列和某些可显示元素之间建立固定连接的“数据源”,我想随时执行我想要的任何查询并显示与任何查询字段相关的元素, 在运行时。我不想只能在设计时绑定数据源和可显示元素。

一切的 css 样式功能。或者简单易行的事情。

自动调整大小和布局。轻松访问本地文件,进行解析、播放、显示。用于图像管理的简单类,支持透明度、调整大小等。用于在屏幕中绘制的基本和高级类:lineTo、矩形、圆形、动画。甚至是3D。

嵌入字体功能。我不想担心“用户会安装这个字体吗?” 我也不想担心 DPI 或屏幕分辨率。

基本小部件:树视图等。

一个好的设计师。我不想添加编写代码的小部件。我想将它们直观地放置在屏幕上。

此外,如果它可以连接到一般用 C++ 或 COM 对象制作的 dll,那就太好了。

于 2008-09-23T03:24:47.480 回答