[征文] 21 世纪 C 语言

楼主: Neisseria (Neisseria)   2016-04-24 01:40:01
推荐书目名称或网址
原文第二版:http://shop.oreilly.com/product/0636920033677.do
中译第一版:http://books.gotop.com.tw/v_A360
适合阅读此书或网站的程度/对象
有基础的 C 语言和 Unix-like 系统知识的读者
简介
我要先提醒这本书的准读者,这不定一本典型的 C 语言教科书。例如:在这本书中,作
者会教你把常用的标头档都集中写在某个档案中,即使程式因此多加了几千行,编译时间
也花不到几秒;另外,本书作者每次在编译程式时,都会加上 -g 参数,其实程式也没增
加几 KB,但是却多了许多除错用的资讯。另外,本书中约有三分之一的篇幅是在讨论 C
语言的语法以外的内容,主要是介绍 C 语言的生态圈,这些内容在典型的教科书中相对
少见。
本书的前言介绍了一些 C 语言的背景知识,以及作者对于本书的一些想法,可以稍微看
一下。之后,本书的正文分为两部分,第一部分是环境,介绍现代的 C 语言相关工具;
第二部分是语言,以和一般教科书不同的角度,探讨许多 C 语言的语法。
在第一章中,快速地介绍了许多 Unix-like 系统上的套件,之后主要是讨论各种编译 C
语言软件的技巧,毕竟,无法顺利产生执行档的话,就无法使用 C 程式码。对于新手来
说,本章的步调可能会有些过快,至少先习惯 make 的使用方式和 Makefile 的写法。
第二章介绍开发相关的议题,包括除错、测试程式、撰写文件等。第三章中,以
Autotools 发布以 C 语言撰写的软件。这两章对于有志学习开发相关工具的读者来说,
可以做为入门的教程。
第四章以 Git 为例,介绍版本控制的基本观念。透过这章的内容,可学会基本的版本控
制软件的使用。这章算是相对简单的主题。
第五章以 Python 为例,介绍如何以C 语言撰写其他语言的延伸模组。这是一个相对进阶
的主题,通常都散见于各语言的进阶教程中,对于想结合 C 和其他语言的读者,可以读
一读本章的内容。
第六章带着读者复习了指标的概念。由于指标是学习 C 语言的重要主题,本书在第二部
分的第一个章节就介绍相关内容。而在本书后续的章节中,也会用到指标,对于指标还不
熟的读者,可以利用机会好好学习一下。
第七章介绍一些过时的 C 语法,以及替代的做法。本章的内容不会很难,但是可学到不
少实用的概念。
第八章介绍一些前置处理器的使用技巧及 const 关键字的相关议题。虽然前置处理器的
雷很多,仍然有时候会需要使用。这些议题在一般的书上相对少见,需要的读者可以看一
看。
第九章介绍以 C 语言处理字串的方式。由于在 C 语言中,原本的字串处理方式相对较低
阶,故作者引入一些较新的方式,以减轻程式设计师的负担。
第十章的前半部介绍以 array 和 struct 为参数的函式,其中使用到一些相对少见的前置
处理器技巧,如果有需要撰写此种函式的读者,可以看一看。后半部则介绍以 void 指标
达成 C 语言的泛型程式,算是相当实用的内容。
第十一章介绍如何以 C 语言撰写物件导向程式,这是本书最有趣的一章。不过,C 语言
的物件导向程式,和传统的物件导向不太相同,而是使用 struct 和函式结合的方式撰写
。虽然这章的内容不一定会用到,善用本章的方式撰写程式,的确可以妥善地整理程式码
第十二章介绍数个第三方的 C 语言函式库,有需要的读者可自行参考。不过,本章隐含
的观点是,善用第三方函式库,可以省下不少程式设计师的时间。
读后心得
总和来说,本书涵盖相当多的主题,而且,本书的步调相当快速,读起来十分地充实。然
而,想要顺利地阅读本书,读者需要基础的 C 语言和 Unix-like 系统相关的知识;如果
读者发现本书的内容过于艰涩,建议先暂时放下本书,补充相关知识后,再继续读下去。
补充说明(Supplement):
本书的作者 Ben Klemens 主修的是经济学和社会科学,所以,对于程式的思考方式和资
讯出身的程式设计师有所不同,读者不用对这本书的内容照单全收,但这本书的确有可参
考之处。
另外,C/C++ 不是小弟主力的语言。小弟平日较常写 Perl/Python/Ruby。
如果本文有错误之处,希望板上各位大大不吝指正。
作者: wtchen (没有存在感的人)   2016-04-24 18:48:00
推,感觉是很适合板工的书...
作者: Soyeonismine (素妍是我的)   2016-04-25 00:44:00
作者: weareworld (Hello!World)   2016-05-05 01:02:00
这本不错 提供C语言在现代的工具、思维等

Links booklink

Contact Us: admin [ a t ] ucptt.com