[程序设计语言]-摘记&注解-目录

这篇博文干嘛的

前一周写了一篇博文“记-码农的“启蒙”之《程序设计语言-实践之路》和《面向对象分析和设计》两书”,其中说打算总结下这两本书中有哪些收获,这个系列文章呢,就是关于第一本书《程序设计语言-实践之路》的。

  • 这本书能带来什么

首先这是一本介绍语言的入门书籍(笔者阅读是裘宗燕老先生翻译的第二版),如果你想从中学到一些独门绝技,那么抱歉,木有。

其次它介绍的是程序设计语言的一些重要基础概念、各种概念之间的关系;并解释了语言中诸多结构的形成和发展过程,以及他们演化到今天这种形式的根源。

那么或许你该问了,了解这些有甚好处,不知道我照样写出漂亮的代码、架构等。的确,你可以的。现在的程序员在工作中都不止要用到一两种语言,然而我们通常对这门语言最直接的感触就是它的语法层面;我猜测你或多或少都有被语法的糖衣炮弹(语法糖)给打晕、蒙蔽过的经历吧。那么如果可以让你从语言设计者的角度来看待语言,则非常有助于你了解一门语言的特性,理解其中的优势以及弱势、以及它们为何发展进化为今天的形式,从而能更好的使用它们;从而能有效的避免身陷众多语言的糖衣炮弹中。

如果你有上面的需求,那么我力荐你买一本回来读读。

细心的朋友可能会发现书名中还有个副标题“实践之路”,然而博文标题并无此。不是偷懒,而是故意为之。因为我想关注讨论的是语言的核心概念,而不是编译器实现细节方面。

  • 计算机科学惯于在抽象之上建立抽象

好吧,我承认这句话有点装13。

这是这本书的序言中的第一句话,虽说计算机科学这个词语范围是有点甚广,但是仔细想一想也确实是这样的事实,就拿语言来说,汇编是对硬件操作的抽象;高级语言是又是对汇编的进一步抽象。而高级语言中也有各种的抽象思想所在,比如过程抽象产生了子程序、OOP中的面向接口编程也是一种抽象。

总结来说也就是现在的操作系统、数据库、大型软件等等无一不是建立在抽象的基础之上。因为现在的软件系统的复杂度已经远远的超出了人的理解范围,抽象这种技能也不得已而为之,你不得不将大量复杂的细节隐藏起来来降低理解上的难度。

抽象无处不在。

本系列博文目录导航

由于不去关注实现方面的细节(对应本书中是2,4,5,14,15章节),所以都是以概念性方面的知识点安排的。话虽如此,但是语言的设计和实现具有内在的密切联系,想要忽略实现细节而很好的理解设计方面的概念也是很难做到的,这就需要读者自己去了解实现方面的一些知识点了。

  1. 引言(敬请期待)
  2. 名字、作用域和约束(敬请期待)
  3. 控制流(敬请期待)
  4. 数据类型(敬请期待)
  5. 子程序和控制抽象(敬请期待)
  6. 数据抽象和面向对象(敬请期待)
  7. 函数式语言(敬请期待)
  8. 逻辑式语言(敬请期待)
  9. 脚步语言(敬请期待)
  10. 并发(敬请期待)

我的计划是2周一篇,目录结构暂定如此(照搬的书目录),也许会有一些章节内容繁多,到时会做适当的分割。

后话

由于这些都是我个人理解的一家之言,难免会有一些不当之处,欢迎园友们来交流探讨。

[程序设计语言]-摘记&注解-目录

时间: 2024-10-30 01:43:01

[程序设计语言]-摘记&注解-目录的相关文章

02:名字、作用域和约束(Bindings)-[程序设计语言]-摘记&注解

阅读导航 本系列其他文章目录请戳这里. 1.名字.约束时间(Binding Time) 2.对象生存期和存储管理 2.1静态分配 2.2基于栈的分配 2.2堆分配和垃圾收集 3.作用域规则 3.1静态作用域 3.2嵌套子程序 3.3动态作用域 4.引用环境的约束 4.1子程序闭包 4.2一级和二级子程序 5.作用域里的约束 1.名字.约束时间(Binding Time) 在本篇博文开始前先介绍两个约定:第一个是“对象”,除非在介绍面向对象语言时,本系列中出现的对象均是指任何可以有名字的东西,比如

01:引言-[程序设计语言]-摘记&注解

阅读导航 本系列其他文章目录请戳这里. 1.机器语言>汇编语言>高级语言 语言是人与人的一种交流工具,就比如我现在用汉语来写这篇博文来交流探讨技术问题:程序设计语言也是如此,只是交流对象不是人而是机器. 我可以用汉语来写博文,也可以用英语来写(假如我英语熟练):我可以用PHP来写一个网站,也可以用ASP.NET来写. 这就说明语言的本质就是一种交流工具,而我选择哪种语言来交流并不会影响我要的结果.然而在实际中到底要选用那个语言确要根据具体情况而定,这是个成本问题,比如我如果今天脑子抽筋要用日语

[程序设计语言-摘记&注解]-03:控制流

阅读导航 本系列其他文章目录请戳这里. 0.概述 1.表达式求值 1.1赋值(1)-引用和值 1.1赋值(2)-装箱和拆箱 1.1赋值(3)-多路赋值 1.2表达式里的顺序问题&数学的等值关系 1.3短路求值 2.结构化和非结构化的流程 2.1goto的机构化替代品 2.2继续(Continuations) 3.顺序复合(Sequencing) 4.选择 4.1短路条件 4.2case/switch语句 5.迭代 5.1枚举控制器的循环 5.2迭代器 5.3逻辑控制的循环 6.递归 6.1迭代和

清风注解-Swift程序设计语言:Point11~15

目录索引 清风注解-Swift程序设计语言 Point 11. 数值型字面量 代码事例: let decimalInteger = 17 // 十进制的17 let binaryInteger = 0b10001 // 二进制的17 let octalInteger = 0o21 // 八进制的17 let hexadecimalInteger = 0x11 // 十六进制的17 注解: 整数字面量可以被写作:十进制数,没有前缀:二进制数,前缀是 0b:八进制数,前缀是 0o:十六进制数,前缀是

清风注解-Swift程序设计语言:Point1~5

目录索引 清风注解-Swift程序设计语言 Point 1. Swift风格的"Hello, world" 代码事例: println("Hello, world")  注解: Swift语言的编码风格类似于C或Objective-C.因此,拥有C或Objective-C开发经验的人更容易掌握Swift语言. 在Swift中,没有包含在任何类或函数当中的代码,属于拥有全局作用域的代码. 你不需要为了输入输出或者字符串处理导入一个单独的库. println函数是Swi

清风注解-Swift程序设计语言

前言 Apple发布了全新的Swift程序设计语言,用来开发iOS和OS X平台的应用程序.其目的不言而喻:就是为了给老迈的Objective-C一个合适接班人!因此,不难预见,未来10年必然是Swift语言大放光彩的时代.“长江后浪推前浪,前浪死在沙滩上”-作为一名程序员,紧跟时代潮流是必须具备的职业素养.学习和运用Swift是每一个Apple开发者都必将经历的一个过程. <清风注解>这个系列的诞生目的有三:一是为了鞭策自己,二是为了与大家一起学习Swift,三是分享学习过程中的苦与乐.我会

[程序设计语言]-04:数据类型

阅读导航 本系列其他文章目录请戳这里. 0. 概述 为何高级语言需要类型系统这个概念?在汇编时代是没有完整的数据类型系统的,结构化编程引入了结构化的控制流.为结构化设计的子程序,随之这种结构化的代码所操作的数据也进一步的“抽象化.特化”,故而有了数据类型这种概念,类型系统主要用于两个用途: 为许多操作提供了隐含的上下文信息,使程序员可以在许多情况下不必显示的描述这种上下文.比如int类型的两个对象相加就是整数相加.两个字符串类型的对象相加就是拼接字符串.C#中new object()隐含在背后的

《C++程序设计语言(英文第四版)》【PDF】下载

<C++程序设计语言(英文第四版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382177 内容简介 本书是C++领域经典的参考书,介绍了C++11的各项新特性.功能等.主要内容包括:C++的类型.对象.作用域.存储.计算基础及模块化知识.命名空间.源文件以及异常处理等:C++的抽象性,包括类.类继承.模版等:标准库,包括容器.算法.迭代器.字符串.流I/O以及C++的基本内存模型等. 编辑推荐 C++语言之父的经典名著新版本,全面

程序员教程-3章-程序设计语言基础知识

这一章难度颇大,好好学也学不到什么,随便写点东西吧 目录结构 3.1 程序设计语言概述 3.1.1 程序设计语言的基本概念 1 低级语言和高级语言 2 编译程序和解释程序 3 程序设计语言的定义 3.1.2 程序设计语言的分类和特点 1 程序设计语言发展概述 2 程序设计范型 3.1.3 程序设计语言的基本成分 1 程序设计语言的数据成分 2 程序设计语言的运算成分 3 程序设计语言的控制成分 4 函数 3.2 语言处理程序基础 3.2.1 汇编程序基础 1 汇编语言 2 汇编程序 3.2.2