第0章 导读

正文:

0.本书要讨论的问题:程序并没有按照程序员所期待的方式执行。更进一步,限定在C语言程序中可能产生这类错误的方式。

1.从较低的层面考察,正如一本书是由一个一个单词所组成的一样,程序是由符号序列所组成的。将程序分解成符号的过程,称之为“词法分析”。

2.类似于一本书可以看成是由单词进一步结合而成的句子所组成的集合,组成程序的这些符号又可以看成是语句和声明的序列。符号或者单词如何组成更大的单元的语法细节最终决定了语义。

3.关于语义误解,即程序员的本意是希望表达某种事物,而实际表示的却是另外一种事物。

4.C程序经常是由若干个部分组成,它们分别进行编译,最后再整合起来。这个过程称为链接,是程序和其支持环境之间关系的一部分。

5.库函数。

6.由于C预处理器的介入,实际运行的程序并不是最初编写的程序。虽然不同预处理器的实现存在或多或少的差异,但是大部分特性是各种预处理器都支持的。

7.可移植性问题。

8.建议与答案。

PS:附录中讨论了3个常用却普遍地被误解的库函数。

练习:

0-1.

你是否愿意购买一个返修率很高的厂家所生产的汽车?如果厂家声明它已经做出了改进,你的态度是否会改变?用户为你找出程序中的bug,你真正损失的是什么?

0-2.

修建一个100英尺长的护栏,护栏的栏杆之间相距10英尺,你需要多少根栏杆?

0-3.

在烹饪时你是否失手用菜刀切伤过自己的手?怎样改进菜刀使得使用更安全?你是否愿意使用这样一把经过改良的菜刀?

答案:

0-1.

我们之所以选择一种产品而不选择另一种产品,其中一个重要的考虑因素就是厂家的信誉。信誉一旦失去,就很难重新获得。我们需要认真思考,企业最近产品的高质量是真实的,还是纯属偶然。

大多数人们在已经知道一个产品可能存在重大设计缺陷时,不会去购买这个产品——除非这是一个软件产品。很多人写过一些给其他人用的程序。人们对软件产品不能工作已经习以为常、见怪不怪。我们应该用产品的高质量来让这些人大吃一惊。

0-2.

11根。围栏一共分成10段,但栏杆却需要11根。请亲自数一数。本书3.6节讨论了这个问题与一类常见的程序设计错误的关系。

0-3.

我们很容易想到办法让一个工具更安全,代价是原来简单的工具现在要变得复杂一些。食品加工机一般有连锁装置,保护使用者不让手指受伤。但是菜刀却不同,给这样一个简单、灵活的工具附加保护手指以避免受伤的装置,只能让它失去简单灵活的特点。实际上,这样做最后得到的也许更像一台食品加工机,而不是一把菜刀。

使其难于做傻事常常会使其难于做聪明事,正所谓弄巧成拙。

时间: 2024-08-09 10:42:58

第0章 导读的相关文章

读《梦断代码》第0章有感

今天我读了<梦断代码>的第0章,对编写软件又有了新的认识.知道软件虽然能带给我们许多新鲜的.意想不到的功能,但是却也是不确定,不是像建一座桥那样,可以按部就班,一步一步实施的. 首先吸引我注意的就是第0章,开始我还以为写错了,后来通过读书才知道,原来是作者故意这么写的,而他这么写的目的就是要提醒我们:程序员计数从0开始,而不是从1开始.这是因为计算机采用的是二进制.首先作者通过一个游戏Sumer的例子,吸引我们的兴趣.其实意在告诉我们,编程兴趣是最好的老师,当你真正对编程感兴趣的时候,那么你才

《梦断代码》第0章读书随笔

<<梦断代码> 产品开发? 向我们展示了硅谷一流然间开发者是如何尽心产品开发的,把真实的认识结束以及产品的发展过程结合在一起,每个有志于开发畅销产品的程序员都知道的耐心去品味这个古树. 组织好开发者 天才们在一起合作,貌似创意无穷,实则合力有限,貌似独当一面,实则整合艰难.真正的领导者,实际上早已被要求有着话不可控为可控.化不同愿景为共同愿景.激发天才们最大潜能的能力. 本书提出问题讲出故事. 计算机发展的50年中,作者以自己的亲身经历,写出了所遇到的所有的事情,虽然历经磨难,但是荏苒分

设计模式之第0章-单例模式

设计模式之第0章-单例模式 当当当当~首先有请最简单的单例模式登场,先来个自我介绍吧 单例模式之自我介绍 我,单例模式(Singleton Pattern)是一个比较简单的模式,我的定义如下: Ensure a class has only one instance,and provide a global point of access to it.(确保其某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.)单例模式的通用类图如下: Singleton类称为单例类,通过使用priv

0. Spring导读

学习一项新技术,如果要快速的对其进行了解并将其运用到实际的项目当中,可以在网上查找相关博客抑或学习视频. 如果想对其进行深究可以看一下其官方网站,最重要的是借助一本好的书籍. 在做一个Java Web项目时,第一步一般都是导入其相关的jar包. 根据Spring的官方网站说明,现在并不提供*.jar这样现成的文件. 而是提供了一些第三方进行管理的依赖.如Maven Dependency. 这就意味着我们要建一个Maven项目: 1. 右键鼠标新建一个 Maven Project,在New Mav

普林斯顿公开课:算法第0章,课程介绍

课程介绍 这门课程核心内容是算法和数据结构. 具体的算法和数据结构如下: 数据类型:堆栈.队列.背包.并查集.优先队列. 排序:快排.并排.堆排.基数排序 查找:BST.红黑BST.哈希表 图:BFS.DFS.Prim.Kruskai.Dijkstra 字符串:KMP.正则.TST.哈夫曼.LZW 高级:B树.后缀数组.最大流 为什么要学习算法 算法在各个领域中都有应用. 算法可以提高编程效率. 算法可以将现实生活中的物理公式转换成代码,算法可以模拟现实世界,然后发现世界的奥秘. 算法是很有趣的

《梦断代码》阅读笔记一:第0章到第2章

“本书是讲一事,也是讲百千事:是写一软件,也是写百千软件:是写一群人,也是写百千人.任何一个在软件领域稍有经验的技术人员看完本书,必掩卷长叹:做软件真难.”卷首的这段话着实把握给唬住了,这本书一定和我以前看的专业类的书籍不一样(ps:特别讨厌<20天XXX从菜鸟到大师>.<15零基础学会XXX>).翻到目录果然是和我以前看的专业类的书有着天壤之别,光看目录就有立刻阅读的冲动.像第一章的“死定了”,第四章的”乐高王国“,第五章的”管束奇客和狗“,这样的题目很难想像会出在与软件工程有关

《梦断代码》第0章阅读笔记

通过对<梦断代码>的初步阅读,感觉以前订的阅读计划似乎并不能满足笔记的需要,因为就第0章便让我感到书中有很多话值得我去记下来,无论是将来工作或者生活或许都有点用处吧. 就像作者说的书是讲一事,也是讲百千事:是写一软件,也是写百千软件:是写一群人,也是写百千万人.读完第0章书给我的感觉没有了课本上的枯燥,有了我喜欢的故事情节,让我了解了一个程序员的真实生活与成长.第0章作为编过程的我们或许已经想到为啥不从第一章开始了吧,因为我们要记住从0开始计数. 兴趣很重要!Sumer或许就是让主角爱上编程的

《梦断代码》阅读笔记之第0章和第1章

起初对于软件工程的看法就是面对客户的需求,要写出很多的不同的小程序来搭建出一个客户满意的软件,就是这么简单.从来没有看过一本关 于软件开发的书,也没有真正的开发过一款软件,所以我并不知道软件开发的真实过程,但是本书的推荐序一里CSDN总裁蒋涛的话引起了我读这本书 的兴趣,他说:“<梦断代码>向我们展示了硅谷一流软件开发者是如何进行产品开发的······” 作者从第0章开始,也正符合作为一个计算机行业的人的素质,我们清晰的知道,计算机里除了“1”就是“0”.    第0章,软件时间.作者有那么一

菜鸟vimer成长记——第2.0章、模式初探

首先,其他的文本编辑器只有一种模式,就是插入模式.而vim一下子颠覆了我们的世界观——有好多模式.这个是思维上的切换,很难也很重要!!! 其次,Vim 提供一个区分模式的用户界面.也就是说在不同的模式下相同的键位可能产生的结果不一样.好多快捷怎么记忆?记忆后过段时间不使用又还给vim了.这个是因为没有弄清楚职责和使用场景,没有构建成套的vim知识体系.而我们这里通过模式为载体来构建vim知识体系. 目的 介绍vim的常用模式职责及模式切换,减少由于不断思考和纠正什么场景用什么模式的什么操作而引起