1. 第零一章 • 介绍
1.1. 这本书是给谁看的
本书是为那些想学习 C 语言,或是想知道怎样构建自己的编程语言的人编写的。本书不适合作为第一本编程入门书籍。但是如果你之前有一点编程的基础,不管是什么语言,我相信你都会在本书中找到一些新奇而有趣的东西。
我会把本书写的尽量的通俗易懂,对初学者更加友好。但是初学者可能还是会感觉本书的内容很有挑战性。我们会遇到非常多的新概念,而且还会同时学习两门截然不同的编程语言哦!
在写代码遇到问题的时候,如果到网上寻求帮助,你可能会发现人们对你并不友好。他们很多时候并不是在帮助你解决问题,而是炫耀他们在这方面的“知之甚多”。他们可能会指责你的错误,其实潜台词就是“你不适合写代码,不要再让你的烂代码污染这个世界了”。
在几次类似的经历之后,你很可能就会心灰意冷,觉得自己根本算不上一个程序员,或是自己压根儿不喜欢编程。你可能曾经想过要编写一门属于自己的编程语言或是其它的有趣而富有挑战性的项目。但是后来你意识到,难度太大了,我根本就做不到。
对此,我只能感到抱歉。程序员们可能无礼、自大、傲慢、脾气暴躁,但是这些都无可指责。毕竟每天加班累的跟狗一样,自然需要一个地方发泄。但是你需要知道的是,没有人是天生就会的。每个人都曾经是初学者。都犯过跟你一样的低级错误。所以,请不要放弃这项富有创造力的工作,而是努力去改变这个世界!
1.2. 为什么要学习 C 语言
C 语言是世界上最流行的,最具有影响力的编程语言之一。Linux 操作系统就是用 C 语言写成的。Apple OS X 和 Microsoft Windows 中也大量的用到了 C 语言。C 语言甚至还被用于微型电脑中--你家的冰箱和汽车可能就运行着使用 C 语言写就的程序。在现代的软件开发中,软件形式的多样化使得 C 语言在很多方面并不是首选,但是学会 C 语言仍然是软件开发者的必备技能之一。
C 语言是自由的。从 Unix,Linux 到自由软件运动,它都起到了举足轻重的作用。而 C 语言本身也同样是自由的,它将自己所有的东西和盘托出,不藏不掖,甚至包括了自己的缺点。它几乎不限制你做任何事情,即使那样做会发生糟糕的事情。它给了你足够多的选择,该怎么做就全看你自己了。
掌握了 C 语言,就会懂得什么才是强大,巧妙和自由。在电脑前动动指尖就会让世界更加美好。
1.3. 怎样学习 C 语言
C 语言是一门很难学的语言。它有很多陌生的概念,而且初学者很难理解透彻。本书中,我不会去详细的介绍 C 语言的语法规则,或是循环和条件语句的编写方法之类的东西。我会告诉你的是构建真实世界中的 C 语言程序的方法。这种方式对于读者来说通常更加难以理解,但是却会教给你很多传统方法给不了的东西。本书并不能保证让你成为 C 语言的专家,但至少会让你学会一些有实际意义的知识,而不是学习一些没有意义的程序片段。
本书包含了 17 个短小精练的章节。你应该安排好你的阅读进度,每天按照计划阅读并及时实践。建议每天至少阅读一个章节。读完本书之后,你还可以继续完善你的 Lisp,使它更加完整与强大。
1.4. 你自己的 Lisp
阅读学习本书的最好方式正如同本书的书名,Build Your Own Lisp。如果你学起来比较轻松,我建议你尝试添加或修改已有代码,为语言添加新的特性。虽然每一章都会有详细解释,但我还是给出了大量的代码示例。我知道很多人会直接将代码拷贝到自己的项目中,但是这样做通常不如自己亲自将代码写出来更加印象深刻。所以,请不要这样做!