Gor*_*ter 7 usability programming-languages
可以将哪些功能添加到新的编程语言中以使其更"直观"?在网站和桌面方面,我们倾向于高可用性,几乎直观的可用性.人们越来越期望您的应用程序应该"正常工作".对于某类应用程序,人们必须使用RTFM,这是对应用程序有效性的标记.人们倾向于期望应用程序以他们"认为"应该工作的方式工作.有人可能会说,这是设计师应该努力的一个有价值的标准.
同样的可用性是否适用于编程语言和开发人员环境?我意识到有一些像IntelliSense这样的工具 提供了提示,一个好的IDE提供了很多帮助.但核心语言本身呢?可以添加(或删除)什么使某些编程技术或算法更明显地实现?如何使正则表达式或递归更具有创造性?或者这只是愚蠢的?
举一个更具体的例子:HTML,CSS或Flex和MXML中的液体布局.在HTML和CSS中,根据Internet Explorer和其他浏览器的不同实现,盒子模型不是直观的.除非有人阅读文档或研究盒子模型的概念,否则在第一次尝试CSS时设计布局时很难"只是得到它".我认为这就是为什么桌子在早期蓬勃发展的原因.框模型隐含在表格单元的概念中.借助Dreamweaver等工具,人们可以在表格单元格的约束下围绕百分比宽度和布局.然后CSS开始成熟,出现了一系列有效的理由,说明为什么表不适用于布局.但是为了达到同样的效果,设计师必须真正研究CSS实现和盒子模型,并在他们的思想中注入新的抽象层.
在另一个例子中,我发现在ActionScript和MXML中编写大量内容时,流体布局和基于百分比的元素宽度的整个概念不是很明显,并不总是遵循直觉.我理解的基本问题是Adobe Flash播放器和布局需要以绝对像素术语来理解事物.当谈到组件的潜在宽度时,我理解为什么在代码的核心级别实现百分比并不是很明显.从理论上讲,Flash Player需要知道(或计算)组件的确切宽度,以便在屏幕上进行绘制时可以为视频卡提供正确的几何形状.但是当你介绍一些百分比的概念时,你会引入无限宽度的理论可能性.如果没有一些抽象和计算层,计算机可以直接找到"无限-1"像素.必须引用视口.该计划必须知道其边界.因此,绝对宽度是常态,尽管人类可能更愿意按百分比来设计.
在编程语言方面,可以有一些表达式和功能,在思考编程任务时可以帮助直觉.或者,当我们需要了解如何在代码中实现某些功能或布局时,我们最好还是"像计算机一样思考"并且只是RTFM的手册?
如果您可以更改所选编程语言的语法或语义,您会添加,更改或删除哪些内容以提高其"直观性"?
附录,提出这个问题的原因的灵感来自于在Alan Kay的讲座中看到"新手"能够在Smalltalk中实现的例子:使用图像做符号.
"如果您可以更改所选编程语言的语法或语义,您会添加,更改或删除哪些内容以提高其"直观性"?
编程很难.真的很难.语法更改无关紧要.IDE与编程的基本挑战无关.
经常令人困惑的是语言的语义.
我不知道"直观"对于像编程语言那样抽象的东西意味着什么.实际上,"直觉"可能是一件坏事.使用直觉来编程语言意味着先入为主的观念,偏见和知识分子将接管.
我永远不会期望在任何地方任何地方都可以"获得它".编程需要清晰的思考 - 不是"直觉" - 而不是"期望".
我们唯一能做的就是阅读手册并理解我们所遇到的新事物的独特,独特,新颖的语义.
我知道这一点:优雅的简约至关重要.特征的正交性.明晰.精确.没有例外或特殊情况.最重要的是,简单.
分层语言功能从根本上说是糟糕的.
通过在复杂的IDE中分层来覆盖语言问题更糟糕.
见http://www.cs.utexas.edu/~EWD/transcriptions/EWD08xx/EWD854.html
"当面对一些新的和不熟悉的东西时,我们会尝试将它与我们熟悉的东西联系起来.在这个过程中,我们发明了能够让我们这样做的类比.
很明显,当我们面对一些如此全新的东西时,上述试图理解的方式并不能很好地运作,所以我们能够提出的所有类比都太弱,太浅而无法提供很大的帮助.一种全新的技术可以创造这样的环境,对编程的广泛误解强烈暗示这种情况随着自动计算机的出现而发生."
简而言之,"直觉"和"智能包袱"是程序员的问题.理解技术的最佳方式是将其视为新鲜,新颖和未知的东西.
底线.
复杂性是固有的.
你有两个选择.
开发智力工具(即抽象,摘要等)以应对它.
在另一个领域找份工作.
要求本身复杂的计算世界变成任何一个人发现"直观"的东西是不可能发生的.计算太复杂而不"直观".
我见过的另一个解决编程语言"语法"复杂性的领域是Visual Programming Languages.VPL背后的基本思想是采用编程语言(决策,子例程,函数等)的构造,并以图形方式表示它们,通常作为数据流图.最近流行的一种语言是Microsoft Visual Programming Language.我还没有使用它,不能使权利要求它的权力,但我已经使用的LabView有很大的影响,我可以说,你可以做几乎任何你能想到的,即使在LabView的-但你也得想它以一种非常不同的方式.
也就是说,我发现我个人偏好代码而不是VPL.
| 归档时间: |
|
| 查看次数: |
1316 次 |
| 最近记录: |