Atitit.提升语言可读性原理同实施

Atitit.提升语言可读性原理及实践

 

 

 

发明1-1  语言评价标准与熏陶其的言语特色1

1.3.1.2 
正交性
2

1.3.2.2 
对抽象的支撑
3

1.3.2.3 
表达性
3

.6 
语言设计受到的权
4

 

 

发明1-1  语言评价标准及潜移默化她的语言特色

 

标    准

特性

可 读 性

可 写 性

可 靠 性

简单性

·

·

·

正交性

·

·

·

数据类型

·

·

·

语法设计

·

·

·

针对抽象的支持

 

·

·

表达

 

·

·

种类检查

 

 

·

坏处理

 

 

·

区区地使别名

 

 

·

 

 

 

老三单神秘的题材是运算符重载,即一个运算符有多种意思。虽然这可怜有因此,但是要是允许使用者创建和谐的重载,并且不是遵照常规重载,会跌可读性。例如,重载”+”用于整数和浮点数的加法显然是长项之。事实上,这无异于再度载减少了运算符的多寡,从而简化了言语。但是要是程序员将”+”定义为计算两只一维数组中有所因素的及,由于其不同为一般性的朝向量求和,因此对斯程序,编写程序的口跟读程序的丁都难以掌握。使程序难以掌握的一个复尽的事例是以”+”定义为计算两只向量的第一只元素的异

 

本来,语言的简单性也未可知过分。例如,如下一节所示,大多数汇编语言说话的样式与意义还是简单性的杰出体现。但是这种简单性使汇编语言程序的可读性较差。由于汇编语言程序缺失更扑朔迷离的支配语句,所以程序结构不清晰;由于语句简单,所以跟高档语言相比,同样的次序需要之言语就基本上得差不多。如果高级语言的控制结构和数据结构不对路,虽然没上面的事例那样太,但结论是千篇一律的。

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 

汉字名:艾提拉(艾龙),   EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

 

1.3.1.2  正交性

程序设计语言的正交性意味着相对比较小之骨干组织集合,能够以比少的结合措施来构成语言的控制结构和数据结构。而且,基本组织的无论是一种植可能结都是官方且发生义的。例如数据类型,假设某语言来4栽基本的数据类型(整型、单精度型、双精度型和字符型)和2种运算符(数组和指针)。如果2栽运算符都能够作用为本人与4种着力的数据类型,就可知定义大量底数据结构。

一个言语特色是正交的,意味着其独自为次中出现岗位的上下文(“正交”来自于巧交向量这

IBM的设计范围于多,因此可写性较差

 

刚刚交性与简单性直接有关:语言设计更正交,语言规则需要的特例就越发少,特例越少意味计划之正儿八经程度进一步强,语言就是愈加轻学、阅读与了解。任何学过大量英语的口得印证,英语中之重重规则特例太难学了(例如,i总是以e前,除非在c后)

 

过多的正交也会发生问题。ALGOL
68言语(van Wijngaarden等,1969)可能是极致具有正交性的次序设计语言了。ALGOL
68中之各一样言语结构都起一个品类,这些品种没有其余限制,而且多数构造都来价。这种自由组合可以出最复杂的布局,例如,只要结果是一个地点,就足以把标准语句、声明语句及其它各类语句一起在赋值运算符的左侧。这种极其的正交形式导致了不必要的扑朔迷离。而且,由于语言需要大量底骨干结构,高度的正交性将发出爆炸性的结缘方式。因此,即使做措施充分粗略,它们的完整数据也会导致语言的扑朔迷离。

 

单,过多之正交有误于可写性。当几任何基本组织的构成都成立时,程序中之错会难以检测,从而致使编译器无法察觉代码中之不当。

 

可见,语言的简单性至少部分归因于相对少量的核心结构的整合,以及正交原理的星星应用。

有人当,函数式语言同时具备得天独厚的简单性和正交性。函数式语言,如LISP,主要通过以函数作用为让得参数来施行计算。相反,命令式语言,如C、C++和Java,通常用变量和赋值语句来指定如何算。函数式语言提供了顶尖的完整简单性,因为它能够用同一种结构,即函数调用(函数调用能够为简练的方式与外函数调用组合起来)来完成其他计算。正是这种简易优美使有言语研究者将函数式语言作为复杂的非函数式语言(如C++)的要害替语言。但其它因素,如效率,限制了函数式语言的双重广泛应用。

 

1.3.2.2  对抽象的支持

概括,抽象就是以允许忽略许多细节的不二法门来定义及使用复杂结构及操作的能力。抽象是当代次设计语言设计之重要概念,这是空洞在现代程序设计方学中串中心角色的体现。因此,程序设计语言所许的肤浅程度和表达抽象的自然程度,对语言的可写性非常重大。程序设计语言支持有限像样不同之纸上谈兵:过程抽象和数据抽象。

经过抽象的一个概括例子,是使用子程序来贯彻程序中多地处索要之排序算法

 

当数据抽象的一个例,请考虑同蔸在该结点上囤积整数的二叉树

 

面向数据的软件开发的结尾形成开始于20世纪80年代初,演变为面向对象的计划性。面向对象的计划性方法基于数据抽象,

 

1.3.2.3  表达性

语言的表达性涉及多少不一风味。在看似APL(Gilman和Rose,1976)的语言中,表达性意味着来多少功能强大的运算符,能够用好缺的程序实现大量的演算。表达性更常见的意义是,语言有较为简捷而不笨重的法门来指定运算过程。例如,在C语言中,count++的花样比count=count+1更简约更便于。还有,Ada语言中的布尔运算符and
then方便地表明对布尔表达式进行围堵求值,Java语言中的for语词以形容计数循环时于下while语句再度有益,虽然后者为能够兑现。以上这些都增高了语言的可写性。

 

出于冯·诺依曼结构,命令式语言的中坚特征就是是变量(内存单最先的模型)、赋值语句(基于传输操作)和迭代形式的大循环运算(这是以拖欠网布局及实现循环的无限快捷形式)。表达式中之操作数由内存传输到CPU,表达式的精打细算结果传回到赋值语句左边所表示的内存单元。迭

 

尽管事实上,命令式程序设计语言的构造是坐计算机体系布局为模型的,而不是出于程序设计语言使用者的能力与希望,有人仍觉得用命令式语言比采用函数式语言在某种程度上再次自然,因此不少口看,即使函数式程序与命令式程序运行效率一样高,命令式程序设计语言的使用仍会占主导地位。

 

 

.6  语言设计着之权

l.3节牵线的先后设计语言的品标准为语言设计供了一个框架。可惜这框架是自相矛盾的。Hoare在该有关语言设计之看法深刻的论文(Hoare,1973)中指出,有太多要而相互之间矛盾的规范,协调并满足这些标准是一个生死攸关的工程任务。

 

参考资料

1.3
语言评价标准 – 51CTO.COM.html