关于

在这本书中你将会学习C语言,同时学习如何通过仅有的1000多行代码建立你自己的编程语言,一个最基本的lisp!我们会用一个库来做一些初始化的工作,所以在代码行数上有些虚报,但剩下的代码就是完全原始,并且最后你真的会创建一个强大的小lisp。

这本书灵感启发来自另在 scrach 上的一个一步步建立自己的的编程语言的教程。我写这本书是为了展示这种有趣并带有创造性的方式学习语言是很好的方式,而且不仅仅局限于抽象的高级语言,或者经验丰富的程序员。

很多人很想学 C ,但不知从何学起。如果你按照这本书中写的做,我保证至少你可以得到一个很酷的新编程语言,而且你很有可能成为一个经验丰富的C程序员。

这本书是为谁准备的

这本书是为所有想学C,或者那些曾经想学怎样创建自己的编程语言的人准备的。这不适合作为第一本编程书籍,而是为那些有一定基础的,想要学些新的或者有趣的东西的人准备的。

我尽可能的让这本书对初学者更友好。我很欢迎初学者主要是应为他们有很多有待发现的东西!但初学者可能会发现这本书比较有挑战性。我们会覆盖诸多新内容,以及尽可能同时学习两门语言。

如果你向别人寻求帮助别人可能会不耐烦。你会发现他们会花时间表达他们对某些方面是有多了解。经验丰富的程序员或许会告诉你你错了。他们的言下之意就是你应该停止 Coding ,而不是继续写这么糟糕的代码。

ada

多次发生这样的事情后,你可能会觉得你不适合做一个程序员,或者你就是做不好。你也可能想你曾经想过创建你自己的编程语言,但现在你意识到它是多么的抽象而且你不想再关心了。你现在考虑的是你其他的热情,以及任何可以让你感觉愉悦,有趣,或者欢乐的事情就会成为你学习的障碍。

对此我只能抱歉。程序员可能是孤僻的,高傲的,缺乏安全感的,或者好斗的。没有什么原因可以解释这些现象。没有人一开始就是这样的。每个人都挣扎或纠结自己的能力。千万不要放弃或者让其他事情占据你创造的经历。对你现在做的事情感到骄傲,不管你做的是什么。像我这样的人不希望你放弃编程。我们想听到你的声音,大胆的说吧。

为什么学习C

C语言是世界上最受欢迎和最有影响力的语言之一。它是 linux 操作系统的开发语言,并被广泛应用于 OSX 的开发而且 windows 在一定程度上也是 C 开发的。它也被用在微型计算机的开发上。你的冰箱或者汽车上可能就跑着呢。在现代软件开发中,C 的使用可能会比较落后。任何一个想要做软件开发的人都应该学习C。

但 C 不适合用在软件开发和职业生涯。C 是一个关于自由的议题。它因是诸如 Unix,Linux,以及 Libre 等软件活动的开发语言而声名鹊起。它是个人自由在计算机界的化身。它给你控制影响你生活技术的控制权。

在技术比以往更重要的时代,它的存在将越来越重要。

自由的含义是 C 自身的天然属性。C 几乎没有有东西藏在你后面,包括它的缺点和瑕疵。它甚至不会阻止你做任何事情,包括让你的程序以一种可怕的方式结束。当用 C 编程时你不是站在一条路上而是许多选择,C 鼓励你去做决定。

C也是一门充满乐趣的语言。在主流媒体解释它之前,我们是这样解释Hacking的。它的哲学是美化那些有趣和聪明的东西。而不是非法访问未授权的电脑。Hacking 的哲学是探索,个人表达,打擦边球,和打破规则。它代着对抗等级制度和官僚注意。庆祝独立。Hacking 给你欢乐,知识,荣誉。Hacking 是电脑联通网络的保证,是你拥有改变世界的工具。

想要掌握 C 就需要关注强大,聪明,和自由。成为一个通过手指点击就能掌控强大技术,并且能做让世界受益的事情的程序员。

怎么学习C

C确实是一门很难的语言。它有很多不熟悉的概念,它也没有对初学者有什么特别的照顾。折本书中我不会覆盖到C语言所有的语法细节,甚至是怎么写循环和条件测试。

然而我会演示怎样用C构建真实世界的语言。这种方式对读者来说是更困难的,但这很可能会教你很多传统方式做不到的事情。我不能保证这本书可以帮助你自信的使用C语言。我能保证的是这些1000行代码足够表达了,并且你觉得很值得。

这本书包括16个短章节。你怎样完成这些章节完全取决于你,可以一个周末就读完,或者花一周时间,每晚一两章。不需要花太久就可以读完,希望可以让你对开发你自己的语言更感兴趣。

为什么要构建Lisp

本书要构建的就是 Lisp 。 有很多语言因它们所有的计算都是通过列表完成的特点而被列为一个家族。这听起来可能很可怕,Lisp事实上是很简单,很独特,而且很强大的语言。

构建Lisp有太多太多理由了。它把你放在语言设计者的位置,并且可以让你欣赏编程的整个过程,从语言到机器。教你以面向函数,一种独特的方式看待计算机。最后的成果就是为未来的思考和开发提供了模板,给你尝试新东西提供了平台除非你浏览了众多语言自身,否则你不可能那么容易的就将创造力和聪明才智运用到编程和计算机科学上。

我们构建的这种Lisp是我为了些这本书发的。我尽量把使它最小化,更简单和直白,并且我越来越喜欢它了,希望你也可以喜欢它。从概念,语法,以及实现上来讲,这门Lisp和主流Lisp有很大的区别,以至于我肯定我会收到来自Lisp编程者们大email,告诉我这根本不是Lisp,因为它一点都不像Lisp。

我将这门Lisp做的不同并不是用来来困扰初学者的。我把它做的独特,是因为独特是好的。

如果你想知道通常意义上的Lisp的表现和语义,以及怎么用它编程,那么这本书不帮你什么、这本书是为了提供新的独特的概念,自我表达,创造力和乐趣的。不论你的动机是什么,现在听听免责条款吧,不是我写的每件事都是客观正确或者真实!你的自己做决断。 Mike Tyson Your typical Lisp User

你自己的Lisp

跟上这本书最好的办就是想标题写的那样,写你自己的Lisp。如果你足够自信,我希望你可以添加自己的特性,以及自己的修改。你的Lisp应该适合你和你的哲学观。通读整本书,我会给你讲解和启发,同时我也会提供大量的代码。千万不要在没有理解的情况下就复制粘贴我给的代码。! 亲自把每块代码都自己打出来。这叫做艰难的历程 (The Hard Way) 。不是说这个技术有多难,而是因为需要自律。通过 The Hard Way 你才能明白你代码背后的含义。最理想的方式就是一个字母一个字母的把它打出来。当你读代码时有一种直觉告诉你为什么它看起来是正确的,或者它运行起来是什么样地,但除非你自己写了否则不可能是真正的理解!

最好的境界就是你可以把你的代码作为参考,一种用来指导构建你一直以来想要的编程语言的小册子。事实上这并不实用或者可行。但基本的哲学是不变的,如果你想改变什么,放手去做。