程序语言设计原理(第五版)译

 Kemin:早前翻译的笔记,有关“  学习研究程序语言原理的原因”的一小段。

原书:Addison Wesley - Concepts Of Programming Languages (5Th).pdf

 
1.      一些预备preliminary
我们为什么要研究通用的语言设计和革新原理。研究这个问题对一些人是很有价值的。这些人只认同有一种或两程序语言的工作知识对计算机科学家是足够的。
n         先讨论一下主要编程应用领域,
n         接着列出能评价语言功能特色的一些标准criteria
n         还会讨论影响语言设计的两大方面,机器的体系结构程序设计的方法论methodology
n         最后还会对在语言设计过程中一个主要折衷方案作一些描述。
n         关于对语言的现实上,一些章节也会探讨,包括概括一些常用的语言实现方法介绍。
n         末尾,我们主要讲讲软环境还这些环境对软件产品所产生的影响。
 
2.      学习研究程序语言原理的原因
看看有什么好处,不言自明:
2.1      增强表达“思想”的能力
你有“思想”吗,表达出来呀!一种语言是否具有强悍表达能力,对我们表达“思想”的深度的影响是大家所认同的。被自然语言所限制的人同样被他们复杂的“思想”所限制,尤其在是抽象的深度上。也就是说,对一些人来说,如果他们无法通过书面或口头描述的结构,那么对这样的结构概念化将是很困难的。程序员在软件开发的过程中也受到类似的限制。他们用到的语言会在控制结构方式、数据结构、抽象方式和算法构造方式等方面有所限制。
什么样的东东能够打破这种限制呢?首先你必须觉察到程序语言的这种巨大的多样性。程序员可以通过学习新的语言来拓宽他们的“软件开发思想过程”
不过这种方法会引发争论,因为学习一种新语言并使用它的特有功能对于专注使用某种缺乏所需的功能语言的程序员来说,没有过多的帮助。不过,这种说法不能完全站得住脚,因为可以模拟!一种语言可以通过模拟来“支持”一些其它语言直接支持的功能。
一个模拟的例子,C++对FORTRAN90支持数组操作功能的模拟,C++程序员要通过子程序来实现这样的数组操作。
对编程语言的原理的研究,促使程序员“发现并重视”这些有值价的语言特色,从而积极的使用这些语言特色。与其模拟,为何不直接支持!所以新语言的设计都重视的把更多的语言特色内置进来。
2.2      提高你的认识从而选择更合适的语言
很多专业程序员都没有受过正式计算机科学教育,他们是“自修”编程技术的。他们通常是学了一两门语言后直接参与公司的相关工作的。其他的很多程序员虽然受过正式培训,但都是俱往矣,他们学的语言可能已经不用了,一些新的语言特色很多人可能都不知道!在这样的认识背景下,当程序员接到新项目时,他们只会选择他熟悉的语言来开发项目,尽管这种语言最不适合开发新项目,因为眼光短!相反,如果程序员对别的语言有所了解,特别是那些有特别功能的语言,他们会做出更明智的选择。
 
 
2.3      增强学习新语言的能力
计算机编程可说是一位年青的小伙子,一个设计的方法理论,也是一件软件开发的工具;而编程语言则仍在持续革新当中。这种情况下,软件开发是一份令人兴奋的职业,这也意味着再学习是很有必要的。学习一门新语言对一些人来说可能是比较困难的,尤其是那些只熟悉一两门语言而不懂得 编程语言通用原理的程序员。
当你通晓语言的基本原则和原理后,你就会对所学的语言如何将这些原理融入设计更容易理解了。
比如,理解抽象机制原理的程序员在学习如何用JAVA来构造抽象数据类型时,要比不懂抽象原理的程序员容易得多。在学习自然语言时也会有类似的情况;当你了解了自己母语的语法结构后,会发现更容易学习一个新外语。进一步说,学习外语会反过来使你更了解自己的母语。
程序员理解了 编程语言通用原理后,可以通过相关词汇查阅编程语言手册或一些进一步的文献,从而理解该语言以及编译器。
 
2.4      有助理解语言实现的重要性
在学习编程语言原理的时候,有一样东东是有趣而必须涉及的,就是对以上所述的“概念”的实现细节问题。有时,对实现implementation的理解有助我们理解为什么语言会被设计成那个样子,理解了设计的目的才能够更“聪明”的使用好语言。理解了编程语言的基本构件和选择这些构件产生的结果后,我们才是更好的程序员。
有一些程序虫子只有在程序员了解相关语言实现细节后才能够被发现和清除。另一个得益于对语言实现的理解的是,实现可以使用我们对语言的不同构件如何运作有一个清晰的了解。从而也使我们对在开发中选用一些相关的语言构件所产生效率问题有所了解。比如说,对递归的实现缺乏了解的程序员常常不知道递归算法一般都比同样的迭代算法要慢很多。
 
2.5      提高了设计一门新语言的能力
对于学生来说,让他们自己去设计一门新的语言的可能性似乎不太大。 不过,大多数的专业程序员确实有机会去设计一两门类语言!举个例子,有很多软件系统要求用户以另一种方式与其交互,可能只是输入一些数据或者操作命令。简单的不说了,复杂点如字处理软件,用户可能需要穿越数层的菜单去调用一个命令。在这种有很命令或功能的系统里,用户介面是一个复杂的设计问题。系统开发人员面对这种介面设计标准判断问题犹如编程语言设计标准的选择问题。。。。。
 
 
2.6      纵观计算方法的进步
一个计算方法的全局视角能证明对编程语言原理的研究。虽然解答为何一种编程语言会流行常常可能的,但不是一定的清晰,至少在过去,大多数流行的语言都是最可用的。最后,有时候,一种语言被广泛使用。。。。。
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值