C语言的科学和艺术

罗伯茨

出版时间

2005-03-01

ISBN

9787111159711

评分

★★★★★
书籍介绍
这本书最独特的地方,在于它不满足于教你C语言的语法规则,而是引导你理解“如何像计算机科学家一样思考”。它把“用库隐藏复杂性”作为核心方法:先用抽象把细节藏起来,让你专注问题本身,再揭开底层实现,让你看清抽象背后的威力。读者反复提及的,正是这种“从陈述问题到解决问题”的逻辑训练——编程的本质不是记语法,而是学会用计算机能理解的方式表达思路。不过本书也引发真实争议:它强调自建库、重思想轻语法,对习惯“照着敲代码”的初学者并不友好,甚至被部分人称为“天书”。因此它更适合愿意主动思考、不满足于“秒杀”式速成的读者,而非寻求语法手册的人。
AI导读
核心看点
  • 以ANSI C为主线,强调库函数与抽象原则
  • 详细阐述模块化开发及良好程序设计风格
  • 通过实例展示算法设计与编码的全过程
读者共识
  • 教学风格深入浅出,逻辑引导优于语法罗列
  • 有助于培养自顶向下及模块化编程思维
  • 经典教材,但库配置门槛劝退部分初学者
精彩摘录
  • "在一个控制语句内嵌套另一个控制语句的能力是现代程序设计语言的一个重要特征"
  • "简而言之,算法(algorithm)必须是:1)清楚、明确地定义。2)有效,即每一步骤都切实可行。3)有限,即可在有限步骤后得到结果。"
  • "用计算机解决问题包括两个概念上不同的步骤。首先,应该构造出一个算法或在解决该问题的已有算法中挑选一个。这个过程称为算法设计(algorithmic design)。第二步是用程序设计语言将该算法表达为程序,这个过程称为编码(coding)。"
  • "包括C语言在内的程序设计语言都是被计算机科学家称为高级语言(higher-language)的实例。这些语言的设计不受特性各异的计算机的影响,而是使用通用的算法概念,这种算法概念可运用于任何一个计算机系统。…在高级语言和机器语言之间执行这种翻译任务的程序叫做编译器(compiler)。"
  • "hello.c程序分为三个部分:程序注释、库包含列表和主程序。"
  • "在C语言中,注释(comment)是在“/*”与“*/”之间所有的文字,可以占连续几行。…当C语言编译器将程序转换为可由机器执行的形式时,注释被完全忽略。"
  • "库(library)是一种工具的集合,这些工具由其他程序员编写,用于执行特定的功能。hello.c程序使用的库是由ANSI C提供的标准输入输出库(stdio)和专为本书设计的通用库(genlib)。…在大多数情况下,这些信息以头文件(header file)的形式提供…例如,stdio.h是一个头文件的名称,它定义了标准输出库的内容…每个文件名中的.h说明这是一个头文件。…标准库用尖括号标记,所以可以编写以下语句包含标准库stdio:#include <stdio.h>。个人编写的库以及本书所用的扩展库用引号标明。由于genlib库是扩展库之一,于是#include行被写为:#include"
  • "main() { printf ("hello,world.\n"); } 函数(function)是一系列独立的程序步骤。该函数的名字(如第一行所示)为main。函数所执行的步骤在大括号中列出,这些步骤称为语句(statement)。这些语句共同组成函数的主体(body)。…当运行C语言程序时,计算机执行main函数主体中包含的语句,每个完整的C程序中都必须有这个函数。…该语句用到了库函数printf,这个函数是标准输入输出库中的工具,只要程序员在程序的前面写过语句#include <stdio.h>就可以用printf函数。…和main一样,printf也是个函数,其名称printf代表一"
用户评论
写书思路五星,win下面库不好处理,减一星。那个库简直时代的产物。如果放在Unix的机房里面现成编译好了那还无所谓。初学者要是上来就知道make编译这个库,熟练使用类Unix系统和gcc了,还用得着看这书学C?
由浅入深,非常值得一读
想当年做里面的题做得那叫一个欢乐~啊,当时好像是编出了一个猜单词之类的游戏...lol...好吧,其实程序还是很有趣的...可惜我实在太弱了嘤嘤嘤...
入门的时候要是能看看这个书对人的提升是非常大的,如果有经验的话,本书帮助不大了。
关于C语言的语法讲解的不如国产书籍细致,但此书并不着眼于C的语法,而是引导学习者自己开发一个属于你自己的库。很不错的教材。
翻译优。
电子版
C语言入门读物,也有提及数据结构和算法。
基于标准原因,还是不打五星了。
下载
收藏