程序设计语言之道!经典!_程序设计语言原理书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 程序设计语言原理 > 程序设计语言之道!经典!
david++ 程序设计语言原理 的书评 发表时间:2012-02-18 22:02:32

程序设计语言之道!经典!

  作为一个程序员,一般只有精通一门程序设计语言就可以胜任当前的工作了。当往往进入一个新的项目,或者重新选择一份工作,或者自己发现当前的所使用的程序语言对于有些问题的解决,用着不是那么方便,这个时候我们就倾向于去寻求一种合适的语言。比如,我最近在工作过程中,发现当前项目其实缺少很多工具,我们开发主要用的是C++,一个个对于C++不能说的上精通,但各种语法与库也了然于胸,用C++去写一些工具的时候就发现细枝末节太多、太烦人,数据库、XML文件解析、字串处理虽说都有库支持,但总感觉用着不那么顺手,速度也没那么快,还不如找一个脚本语言快速开发一个,Python正和我意。
  
  程序语言之间有很多共同之处,往往当你精通一门之后,学习其它语言就触类旁通了。需要做的事情就是熟悉它的语法,如果能看懂相应的BNF(巴克斯——劳尔范式)那就更好了,遇到模棱两可的语法问题,多去查查就好了。语义一般都大同小异,当你知道了程序言的各种机制的实现之后,对其语义的理解就更加深刻了。《程序设计语言原理》这边书相当于程序语言各种机制的总结,同时对于我们去学习新语言也指出一条清晰的思路,对现在正在用的语言也有更加深刻的认识了。

  程序语言的分类:

        * 命令式语言:使用最多的,如:C/C++/Java/VB/Pascal等所有主流语言。主要是因为冯诺依曼计算机模型(处理器负责计算,内存负责存储中间结果)。
        * 面向对象语言:基于数据抽象的封装,提出类、对象、继承、动态绑定等概念,用来模拟问题领域出现的事物。C++/Java最好的例子了。
        * 函数式语言:这种类型的语言是基于阿隆佐·邱器(Alozo Church,阿兰·图灵的师傅)提出的lamda演算,语言中一切皆函数。Lisp就是典型的函数式语言。
        * 逻辑语言:基于谓词演算,可以进行逻辑推理的语言,如:Prolog(这种类型的语言至今还没用过,只是听说过大名~~)


  命令式语言的学习思路:

        1. 名字、变量、绑定

                * 名字是否大小写敏感?那些是关键字?那些是保留字?
                * 变量六个基本属性:名字、地址、类型、值、生存期(时间)、作用域(空间)
                * 变量类型检查?强类型吗?
                * 变量的作用域如何?静态作用域、快、动态作用域?
                * 变量的生存期如何?精通变量、栈动态变量、显示堆动态变量、隐式堆动态变量(垃圾回收)?

        2. 数据类型

                * 基本类型:数值类型(整数、浮点数、复数、小数)、布尔类型、字符类型
                * 字符串类型
                * 序数类型:枚举、子范围类型
                * 数组类型
                * 关联数组
                * 记录类型
                * 联合类型
                * 指针类型
                * 引用类型

        3. 表达式与赋值语句

                * 算术表达式
                * 关系表达式
                * 布尔表达式
                * 操作符号的优先级、结合性
                * 操作符号的重载
                * 赋值语句:简单赋值、条件目标、符合复合赋值操作符、列表赋值、混合模式赋值

        4. 控制结构

                * 选择语句:双向选择语句(if... else ...)、多向选择语句(switch .. case ..)
                * 循环语句:计数器循环(for ...)、逻辑控制循环(while)、用户定位的控制循环(break、continue)
                * 无条件跳转(goto)

        5. 子程序(过程抽象)

                * 过程
                * 函数
                * 参数传递语义模式:输入形、输出型、输入输出型
                * 参数传递实现模式:按值传递、按结果传递、按值与结果传递、按引用传递
                * 参数的类型检查
                * 局部引用环境:局部变量、嵌套子程序
                * 重载子程序
                * 通用子程序(如:C++函数模板)

        6. 面向对象的程序设计(数据抽象)

                * 抽象数据类型
                * 继承
                * 动态绑定


  以上大概列举了一个语言的所有特性,有些语言支持、有些语言不支持。语法不尽相同,但语义一般都是相同的。只要按着上面列举的顺序,确定好某一种语言的语法形式,我相信你我都会很容易学会一门新的语言。上述的仅仅是学会了一门程序设计语言,为了解决实际问题其实我们还面临着无尽的长路,问题的模式和相应的程序语言库等都需要慢慢去熟悉和学习。

  所以我认为,精通一门语言并不代表着你会用那种语言写一些不算糟糕的程序,还意味着必须知道常见的问题模式及其对应的程序库,并且烂熟于心,遇到问题时候很自然地就会用到它。当然每种语言还有它独有的一些技巧和使用注意事项,对这些也要必须有所了解。千万不要自称:“我精通xxx语言”,其实我们只是“会”用它写一些程序而已,所谓的精通者必定对这门语言有着极其深刻的理解和认识、甚至编译器效率,各种细微之处也了然于胸。(以上仅为个人观点)

展开全文
有用 21 无用 0

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“程序设计语言之道!经典!”的回应

yycendall 2012-11-09 11:40:01

语言均是用于沟通。程序语言用以与计算机沟通,不同的语言有不同的语法和类库,不同的语言有各自不同的领域。