写本Racket入门书

从来没有一件事让我如此着迷。自上周五那个无聊的晚上打开 racket-lang.org 的主页,想看看大牛们口中的Racket究竟是什么样子后,这猎奇的心态就变了味,就好比古时那个不入流的诗人去青楼寻找作诗的感觉,却偶遇才女,于是邂逅变成了朝思暮想,最终散尽家财,八抬大轿娶回家的故事一样。

一个朋友曾经开玩笑跟我说过:「学lisp就是没事找事,自己跟自己过不去」这话在理。所以,两三年前与clojure嬉戏的时候,在我心里,她始终就像朱紫国那个金圣娘娘,身披七彩霞裳,跟刺猬一样,亲近不得。也是这个原因,在简简单单了解clojure的基本语法后,我便对她敬而远之。但Paul Graham在「黑客与画家」中对lisp的无比推崇又让我一直如鲠在喉,不征服lisp仿佛自己始终没能窥探编程的奥义,那种感觉,估计和搞到了法国却搞不定约瑟芬的拿破仑一样一样的。

所以你该能明白我对Racket的复杂感情。邂逅变成了天天守望,每天早上起床到9点前,下午6点后至睡觉,我都沉浸在与Racket互动带来的愉悦之中,以至于回家像女神索吻,女神吓得一边躲一边娇嗔:「爸爸要刮胡子了」,我才意识到,胡子又开始大面积覆盖我那黝黑中透着阳光的脸蛋。

不少读者在看了我周二的文章「走进 racket(lisp) 的世界」后自豪地说自己的学校就开设了Racket的课程,作为编程入门语言,这真是羡煞死我。我没有老师,老师是官方文档,google和stackoverflow;没有同学,同学是mailing list和IRC;从另一个角度讲,一个三十好几,搁十年前的眼光看该从「程序员」岗位上「退休」的「老头子」,跟不到二十或者二十出头的孩子们同场PK,也是够拼的。曹阿瞒说:「老骥伏枥,志在千里;烈士暮年,壮心不已」,活着活着,一不小心成了「烈士」,还好「壮心不已」。

就这么一周苦读下来,在Racket上,我算是刚刚如了门。能写点简单的程序,做个动画,画个图,用regex处理下文本,定义一些简单的语法聊以自慰(你可以打开github repo下的util/common.rkt自行观看,不要鄙视我)。稍稍可以称道的是,我用scribble把这个过程文档化,记录我学习的过程。这便是我的Racket入门书:「Racket语言入门」。

以我现在的学习速度,我估计,一个月后能有一点小成,三个月大致能理解Racket里的主要概念,写点有实用价值的东西。所以,这本书的草稿至少要等三个月后才能完成。当然,按照项目管理界不成文的规定,一个程序员预测一件事情完成的时间如果是t,那么最终的时间应该是这个样子:

T = λt + α # λ一般大于等于2,α是个经验数据,跟程序员的人品有关

嗯。

该书完全是用scribble撰写的,一来满足我对scribble探索的需要,二来与Racket官方文档格式保持一致,所以本书不会在公众号上连载(这么techy的内容估计大伙也没心思看),也不会在百度阅读发布(转格式估计都要累死我),就像我在书中的「前言」里写到的那样,写这本书是出于私利 —— 以教代学,它并不代表我对Racket有任何程度的深入掌握。

所以,本书是一个初学者在学习过程中顺手为初学者所写的「入门书」,如果你在读的过程中发现任何有悖于这一指导思想的地方,欢迎给我提bug。

阅读地址:http://racket.tchen.me/(建议阅读时自备梯子,很多延伸内容都需要翻墙)。

github地址:https://github.com/tyrchen/racket-book/,欢迎提bug,墙裂欢迎点赞。

大致提纲(在学习的过程中会不断调整):

1) 开始:餐前甜点(已完成)

2) Racket语言概要:基本语法和数据结构(正在撰写)

3) 写点有意义的代码:用Racket解决一些实际问题

4) Racket语言进阶:Racket的编程思想,函数式编程思想,语言的高级用法

5) 用Racket作图:主要讲Racket的plotting

6) 用Racket写作:主要讲scribble

7) Racket包管理:介绍raco及主要的Racket packages

8) 可爱的宏:这是肉戏,也是lisp的精髓

9) 用宏来设计你的语言:假象一门语言,用Racket实现

10) 延迟计算:讲讲continuation,延伸到concurrency

11) 用Racket编写服务器程序:写点有意义的服务器程序,和其它系统互操作

12) 用Racket做Web开发:现在写代码,不和「云」挂点钩,能叫软件开发么

13) 使用Racket撰写复杂的系统:这个没想好,看我学到什么程度

14) Racket的其它特性:前面章节没有提到的,但也比较重要的概念和库,算是拾遗

15) 下一站:Typed Racket:Racket最终会用Typed Racket重写大部分库来提高性能,我们也来凑凑热闹

16) 下一步该学什么?—— 这个问题问得好,等写到了我再回答

17) 结语 - goodbye my friend:打酱油的章节,希望到时我有一些思想和你分享

我无法保证我一定都能写完,我也无法保证每天都更新,不过如果你Watch这个github项目的话,你应该能收到通知。此外,基本上2015年底还没有完成本书的话,你就不要追了哈。

原文发布于微信公众号 - 程序人生(programmer_life)

原文发表时间:2014-12-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏企鹅号快讯

来看看这些流行的编程语言之父都是谁

对于程序员来说有一个工作的立身之本,那就是离不开的各种编程语言,而对于这些语言背后的创造者们,我们没有理由忘记,不管他们的发际线位置、头发的多少,下面主要整理了...

23550
来自专栏镁客网

很好奇,3D打印的脑子会是什么味道?

16740
来自专栏coding

编程与写作

王小波广为人知的身份是作家,而他在写小说之前是一个相当优秀的程序员。他应该是程序员中最会写作,作家中最懂编程的人。

10320
来自专栏企鹅号快讯

编程难,首先入门就难

“Hello,world”,其实并不像你想象的那么简单。 某虽不才,小学稀里糊涂的拿过县里奥数三等奖,95年就能用小霸王学习机(Basic)打出杨辉三角形,高中...

30350
来自专栏企鹅号快讯

国外功能测试方法深度解析

作为黑盒测试的一个重要阶段,功能测试毋庸置疑是不可缺失的。功能测试的相关话题很多,无论是测试的形式,例如手动测试和自动化测试,还是测试方法,例如数据驱动和关键...

36280
来自专栏WeTest质量开放平台团队的专栏

这到底是IT男脱单秘籍,还是一篇双11活动预告

? 从前,小编有一只同事 ? 在业内摸爬滚打五年零两个月,事业有成,技术过人,深受同事喜爱,更被领导器重,距离当上总经理出任CEO迎娶白富美,可能只差一次……...

14010
来自专栏程序人生

Podcast: 过去一周有啥程序人生?

受小道君的启发,今天来点不一样的,用语音介绍我过去一周听的podcast,玩过的github repo和读过的hacker news。 Podcast 我每周大...

36280
来自专栏知晓程序

妈呀,女生换个季有这么多戏吗?

12630
来自专栏我就是马云飞

北京7年游戏开发就这么被淘汰了!

入职后同学就是我的领导,技术相对一般,我们做游戏后端的,时间很快,一眨眼,我就跟着混了四年,每天就看些博客,书籍,业务上也会做功能,但自觉做的比较蠢。没什么太大...

26930
来自专栏程序员的酒和故事

那些曾经写过代码的大佬们(不能写代码,他们会难过吗?)

Bill Gates ? 盖茨大学用汇编,不间断写了整整一个星期,最后运行bug free。 盖茨年轻的时候很厉害,他编写的软件很多。 年轻的时候,盖茨很看不起...

36980

扫码关注云+社区

领取腾讯云代金券