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://blog.csdn.net/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