这篇博文干嘛的
前一周写了一篇博文“记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书”,其中说打算总结下这两本书中有哪些收获,这个系列文章呢,就是关于第一本书《程序设计语言-实践之路》的。
-
这本书能带来什么
首先这是一本介绍语言的入门书籍(笔者阅读是裘宗燕老先生翻译的第二版),如果你想从中学到一些独门绝技,那么抱歉,木有。
其次它介绍的是程序设计语言的一些重要基础概念、各种概念之间的关系;并解释了语言中诸多结构的形成和发展过程,以及他们演化到今天这种形式的根源。
那么或许你该问了,了解这些有甚好处,不知道我照样写出漂亮的代码、架构等。的确,你可以的。现在的程序员在工作中都不止要用到一两种语言,然而我们通常对这门语言最直接的感触就是它的语法层面;我猜测你或多或少都有被语法的糖衣炮弹(语法糖)给打晕、蒙蔽过的经历吧。那么如果可以让你从语言设计者的角度来看待语言,则非常有助于你了解一门语言的特性,理解其中的优势以及弱势、以及它们为何发展进化为今天的形式,从而能更好的使用它们;从而能有效的避免身陷众多语言的糖衣炮弹中。
如果你有上面的需求,那么我力荐你买一本回来读读。
细心的朋友可能会发现书名中还有个副标题“实践之路”,然而博文标题并无此。不是偷懒,而是故意为之。因为我想关注讨论的是语言的核心概念,而不是编译器实现细节方面。
-
计算机科学惯于在抽象之上建立抽象
好吧,我承认这句话有点装13。
这是这本书的序言中的第一句话,虽说计算机科学这个词语范围是有点甚广,但是仔细想一想也确实是这样的事实,就拿语言来说,汇编是对硬件操作的抽象;高级语言是又是对汇编的进一步抽象。而高级语言中也有各种的抽象思想所在,比如过程抽象产生了子程序、OOP中的面向接口编程也是一种抽象。
总结来说也就是现在的操作系统、数据库、大型软件等等无一不是建立在抽象的基础之上。因为现在的软件系统的复杂度已经远远的超出了人的理解范围,抽象这种技能也不得已而为之,你不得不将大量复杂的细节隐藏起来来降低理解上的难度。
抽象无处不在。
本系列博文目录导航
由于不去关注实现方面的细节(对应本书中是2,4,5,14,15章节),所以都是以概念性方面的知识点安排的。话虽如此,但是语言的设计和实现具有内在的密切联系,想要忽略实现细节而很好的理解设计方面的概念也是很难做到的,这就需要读者自己去了解实现方面的一些知识点了。
- 引言(敬请期待)
- 名字、作用域和约束(敬请期待)
- 控制流(敬请期待)
- 数据类型(敬请期待)
- 子程序和控制抽象(敬请期待)
- 数据抽象和面向对象(敬请期待)
- 函数式语言(敬请期待)
- 逻辑式语言(敬请期待)
- 脚步语言(敬请期待)
- 并发(敬请期待)
我的计划是2周一篇,目录结构暂定如此(照搬的书目录),也许会有一些章节内容繁多,到时会做适当的分割。
后话
由于这些都是我个人理解的一家之言,难免会有一些不当之处,欢迎园友们来交流探讨。
[程序设计语言]-摘记&注解-目录