代码之髓[试读]
1.1 在比较中学习
“内容能够理解,但总觉得不够透彻。” 大家在学习编程的过程中有过这种感觉吗? 当新学的知识与自身经验以及原来掌握的知识尚未很好结合的时候,往往会出现这种似懂非懂的状态。 “要学的东西太多了,先学什么好呢?” 大家曾为这种问题苦恼过吗? 我们都想集中精力学习一些知识要点,但是怎样才能做到呢? 1.1 在比较中学习 假设你正在学习一种编程语言X,并为区分知识要点和非要点而苦恼。这时,如果你开始学习另一种编程语言Y,这个问题可能就会迎刃而解。因为你开始了解那些因语言不同导致的差异,什么规则是X和Y共通的,什么又是X语言独有的。 多种语言共通的知识才是要点。掌握了这些要点,学习其... 查看全部[ 1.1 在比较中学习 ]
1.2 在历史中学习
理解语言设计者的意图 设想你在阅读关于编程语言某种功能的介绍时,脑子里总有一种不够透彻的感觉。这时,你想知道为什么需要这种功能。 编程语言也是人创造出来的。知道了语言设计者为解决何种问题而创造了这种语言,以及这种语言经历过怎么样的历史变迁后,慢慢地就能理解为什么需要有这种功能了。 应该学哪种语言,我们无从所知 了解了语言的历史,我们往往更能加深所学。“想学编程,但该学哪种语言呢?”这个问题没有意义。可能有很多人会给出一些建议,比如,学好某某主流语言就可以高枕无忧了;今后这个领域会有大的发展,趁现在赶紧把某某语言学了吧。但是,未来的事情谁也说不准。 我们来看一下某种语言的介... 查看全部[ 1.2 在历史中学习 ]
1.3 小结
本书并不是只介绍某一特定语言,而是着眼于学习具有普遍适用性的知识。为此,我们使用“在比较中学习”和“在历史中学习”这两种方法。 “在比较中学习”不是学习某种特定语言的编程,而指的是同时比较几种语言,从而掌握哪些知识是因语言不同而不同的,哪些知识是几种语言共通的。 “在历史中学习”指的是探寻语言是如何变化的,以及在发生变化前存在哪些问题,从而理解语言为何开发出各种功能。... 查看全部[ 1.3 小结 ]
2.1 程序设计语言诞生的历史
程序设计语言是如何诞生的? 前人是基于什么目的发明了程序设计语言? 本章我们来回顾一下程序设计语言诞生的历史。 2.1 程序设计语言诞生的历史 在第1章中我们讲到,通过比较旧事物和新事物可以加深理解。其实,了解旧事物还有另外一个好处。 很多事物都是在过去的基础上,通过不断积累创造出来的。新事物是在充分了解了旧事物的基础上发展起来的。现在那些看似理所当然的事物在过去可能不为世人所知。因此,对于初学者来说,学会从前人的视角来考虑问题,是十分有益的。 那么,我们赶紧来回顾一下历史吧。程序设计语言是如何产生的呢?创造程序设计语言的目的是什么呢?过去的语言和现今的语言有何共... 查看全部[ 2.1 程序设计语言诞生的历史 ]
2.2 程序设计语言产生的原因
我们为了获得更轻松便捷的体验而编写程序。但轻松便捷不等于偷工减料。偷工减料在前,痛苦在后,这不是真正的便捷。 懒惰:程序员的三大美德之一 大家听说过“程序员的三大美德”吗?Perl语言的设计者Larry Wall在其著作Programming PerlC中提出,优秀的程序员具有三大美德:懒惰、急躁和傲慢(Laziness, Impatience and Hubris)。这就是俗称的程序员的三大美德。本节,我们介绍其中最重要的一项素质:懒惰。D A “Much of my work has come from being lazy, ” http://www.msnbc.msn.c... 查看全部[ 2.2 程序设计语言产生的原因 ]
2.3 小结
如前所述,程序设计语言是为了给人们带来便捷。但是何为便捷,语言不同,便捷的含义也各不相同。 语言只是工具。某种语言是否适合自己,要看使用这种语言能帮助自己发挥多大的能力,而不是看这种语言是否流行,别人使用它发挥了多大能力。再进一步讲,要看通过使用它自己能做出多大成果。大家不要为他人的言语所惑,应当根据自己的实际情况选择好的工具。... 查看全部[ 2.3 小结 ]
4.1 结构化程序设计的诞生
程序设计语言中有 if、while、for 等用来控制程序流程的语句。 为什么会有这些控制语句呢? 本章我们将通过比较没有控制语句的汇编语言和带有控制语句的 C 语言,来探讨控制语句是如何产生的。 4 .1 结构化程序设计的诞生 从第 3 章我们了解到,为了能使用更加自然的表达方式来书写算式, 程序设计中引入了乘法运算优先级高于加法运算这样的规则(语法)。 20 世纪 60 年代后期,在提倡规则让读写程序更轻松的时代潮流中, 结构化程序设计应运而生。时至今日,大家对 if、while 这样的语句早已 习已为常。结构化程序设计的初衷正是通过导入这些... 查看全部[ 4.1 结构化程序设计的诞生 ]
4.2 if 语句诞生以前
如果没有 if 语句该如何编写程序呢?我们首先来考察一下这一问题。 为什么会有 if 语句 本章我们使用一种非常原始的程序设计语言——汇编语言。汇编语言中是没有 if 语句的,但是从 C 语言很容易就能编译成汇编语言。接下来,我们用 C 语言先编写带 if 语句的代码,再试着将其编译成汇编语言看一下 ①。 C 语言下的源代码如下所示,其含义是如果 X 等于 456 则做相应处理 ②。 C语言 int main(){ int x = 123; /* if语句前 */ if(x == 456){ /* if语句中 */ } ... 查看全部[ 4.2 if 语句诞生以前 ]
4.3 while 语句——让反复执行的 if 语句更简洁
下面我们来考察一下 while 语句。while 语句是指满足条件时反复执 行某区间中的代码 ①。 使用 while 语句的表达方式 首先,我们来看一段使用了 while 语句的代码,它表示只要满足条 件 x>0,就会反复执行打印显示 x 并减1的操作。 C语言 void use_while(int x){ printf("use_whilen"); while(x > 0){ printf("%dn", x); -------------------------- ① 严格来讲,这只... 查看全部[ 4.3 while 语句——让反复执行的 if 语句更简洁 ]
4.4 for 语句——让数值渐增的 while 语句更简洁
笔者曾有耳闻,大学里初学C语言时,有些人提出,有了 while 语 句,for 语句不要也可以。有这种质疑其实并不奇怪,因为实际上 for 语 句能实现的功能用 while 语句已经能够实现了。 使用 for 语句的表达方式 我们来考察下面的 for 语句,它表示 i 在 0 至 N 的范围内按 1 递增 同时打印显示。 C语言 for(i = 0; i < N; i++){ printf("%dn", i); } 不使用 for 语句的表达方式 同样的逻辑使用 while 语句来表达,就变成了下面这样。... 查看全部[ 4.4 for 语句——让数值渐增的 while 语句更简洁 ]
4.5 小结
本章我们学习了 if 语句、while 语句、for 语句等用来控制程序流程 的语法规则。虽然不使用这些语句也可以编写程序,但是使用它们会让 我们的程序变得更容易理解。所以,为了写出简洁易懂的程序,请大家 多使用这些程序流程控制语句吧。... 查看全部[ 4.5 小结 ]