对于之前写的一份寻人告示,觉得言辞和逻辑有很多处不通,修改之后再发布一遍。下面是正文:
大家好,
我是北理计算机专业大四学生。
我希望能找到一些和我有相同兴趣的人,完成一个类 Unix 操作系统内核。但我们并不从头实现,因为已经有很多这样的 toy kernel 了。我们可以在现有的一个 toy kernel 上继续,我现在也正准备这么做。如果有兴趣,请继续往下看。
我找到的这个 kernel 是一个英国学生写的,文档也写得非常详尽。我在大三的时候完成了代码的阅读和必要的注释,但现在再看的时候又忘记很多。所以我希望能首先把它翻译为中文,添加更详细的注释和图例。甚至于可以把它写成一本比较完善的操作系统实现的入门教程。我和原作者沟通的时候,他说他在大三的时候写的这个 toy kernel,所以不是很好,后来他又继续写,现在放到了 google code 上。至于翻译则不会有版权问题⋯⋯
当时我在图书馆找操作系统实现的时候,就有找到很多书,分析Linux 0.01内核啦,内核设计啦等等,所以如果我们完成,这将是第 N 本操作系统实现的中文的入门教程(这里的 N 很大很大)。第 1 本我认为是于渊写的《一个操作系统的实现》。这里的排序不是按出现的先后,而是教程的复杂程度,越复杂排名越靠前:)
我简单描述一下我的设想,有的基于我之前做的工作。但我希望一些都重新建造:
说到翻译文档,这次目标之一,但绝不是主要目标,这将是我第三个翻译文档的项目。
联系我:
(介绍完)
在说完了详细介绍之后,我还想再说说我的一些想法。
或许你和我一样,喜欢 Linux,偶尔写个脚本处理自己的各种任务;常常用 Emacs 来写程序写文档;学过一点操作系统的基础知识;对操作系统整个实现感兴趣又发现没办法自己来实现(哪怕一点),痛恨教育大纲为什么会允许这么水的操作系统课以及后续的操作系统的实验课存在⋯⋯那你应该来试试,至少可以来商量商量,如何创建一个相关的兴趣小组的东西,好歹在几年的“万恶的考试”(虽然我承认考试是必要的)外找找自己的影子。
或许你还没有上过学校的操作系统课,只是听说操作系统是计算机专业的必修课,正在磨拳擦掌等待着这样一个重量级的课程的到来。那时候,你估摸着,自己或许会沉浸到操作系统的研究中,会看到Linus作为大三学生写出Linux的执着,会看到乔布斯如何用Unix创造出现在的Mac,还会废寝忘食地对着一个黑色的终端敲入代码,编译自己的操作系统。那我很遗憾地告诉你,你不会有那么一天⋯⋯你除了和其他人一样,甚至于同其他课程一样,背背那个几个该死的 Linux 内核数据结构外,你不会由衷地赞叹原来 C 语言应该这么用,地址可以这么使,更不会因为这门重量级的课而喜欢上计算机专业,甚至,可能让你失望到有看穿了计算机专业的错觉。在典型的操作系统原理课上,你将不会看到任何代码,哦不,你能看到,看到一些对 Linux 和 Windows 内核的分析,可以看到几个结构的定义。书中的几片代码,好像是我们的早餐食堂给的混沌中零星地漂着的肉末,只够解馋用,喂不饱肚子。上这课的时候我已经看了于渊的操作系统实现两个月了,但因为是一个人,所以进度缓慢,再加上没有一些硬件的底子,所以到后来都几乎放弃了。再后来,我找到了这个 toy kernel,又迸发出很多热情,才将这个操作系统的实现看完。
从我的经历来看,这个 toy kernel 有很多优点,它不复杂,基本的原理都会涉及,虽然注释不是很全面,也还差一些图表来补充,这也恰好给了我们一些初期可以做的工作。
现在你或许在犹豫加入还是不加入,毕竟这和文档有关系,写文档是多么枯燥的事情啊。再说,这只是某个人的兴趣,虽然自己的兴趣相近,但范围毕竟太小,或许自己应该去做一些大一点的,能够赚得一些好东西的工作,比如到实验室帮老师干活,参加更大的开源活动。也对,毕竟操作系统实在太底层了,大二大三的人根本就不适合,等等再说吧。当然,也有人觉得自己 overqulified,请暂时别关网页,如果你觉得有合适的人,让他给我发封邮件如何?
如果你和我一样,喜欢写作,你很快就会发现,这是我们自己搞翻译,所以并不要求“信达雅”。我们按照我们的想法,磨练自己的文字,然后展现出去,表达我们的思想,就这样。我们不做 translate,做 paraphrase,所以不会枯燥。
另外对于兴趣,我实在不知道说什么。兴趣在大学中和正义在现代社会中一样,在留有余地的情况下常常像气球一样被压力压得越来越来小。很少有人为了自己的兴趣而不顾一切,我想这也是为什么《老男孩》这一类以忏悔为题材的电影能看得人热泪盈眶的原因吧。[题外话,所以我觉得,能找到这样一些人非常非常不容易,他们也大多像稀有动物一样集聚在一起。从学校的角度上说,名校效益只会破坏这样一种氛围(如果这种氛围是在学校里面的话),因为奋力挤进去的人并不为这氛围而去,并且在往里挤的时候失掉了时间和精力,没有这样一种特性,好比是浓糖水里面参入了平淡无味的白开水一样。]
而因为太底层而不喜欢,我的确觉得奇怪。没有学过多少 CPP 的人每天都在拿着 C 当 CPP 用,用的也全是指针,链表。在这里,我们将很少用到汇编(除非我们重写文档开头的部分),也全是和指针内存打交道,为什么同样的东西却持有不同的态度?那只能归咎于一种恐惧感了。
无论如何,如果你正在犹豫,那我觉得你正需要刺激一下。比如这个一直在刺激着我的话:
“我认为,在计算机科学中保持计算中的趣味性是特别重要的事情。这一学科在起步时饱含着趣味性。当然,那些付钱的客户们时常觉得受了骗。一段时间之后,我们开始严肃地看待他们的抱怨。我们开始感觉到,自己真的像是负起成功地、无差错地,完美地使用这些机器的责任。我不认为我们可以做到这些。我认为我们的责任是去拓展这一领域,将其发展到新的方向,并在自己的家里保持趣味性。我希望计算机科学的领域绝不要丧失其趣味意识,最重要的是,我希望我们不要变成传道士,不要认为你是兜售圣经的人,世界上这种人已经足够多了。你所知道有关计算的东西,其他人也都能学到。绝不要以为似乎成功计算的钥匙就掌握在你的手里。你所掌握的,也是我认为并希望的,也就是智慧:那种看到这一机器比你第一次站在它面前时能做得更多的能力,这样你才能将它向前推进。”—Alan J. Perlis
也因为我一直想保持一种趣味性,我一直在克服各种困难做一些自己喜欢的事情,常常在考试前几天还会继续学习 Emacs,写写 shell 脚本和其他 Linux 技术。后来在 SICP 上看到这句话的时候,更是不顾课程考试等等大胆地从头开始学 scheme,写 shell 脚本,写博客。我希望有更多的人能真正地在“拓展这一领域“的时候,保持趣味性,哪怕必要的时候牺牲一些东西。
顺带一提,我正享受大四的“美好时光”。
当然,说到美好时光,说不定有人对我竖中指,谁不知道大家都在苦熬呢:担心成绩的,担心考试的,担心保研的,担心企业面试的,担心国外申请的,担心得过多却总不见起色以至于已经死心,正在茫然地等待某个结果的,都仿佛在大牢中的囚犯在等待接受宣判死刑一般—谁敢说这是美好的时光?
或者谁又敢说这不是(除了上面的最后一种情况)?而我正在处于那类担心国外申请的一群人中。但是我的观点是,无论什么时候,你都有需要担心的东西,为什么不马上开始你一直想要开始的东西呢?这样你也可以提前享受到你的“美好时光”。你以为我在不怀好意地怂恿你加入到 Linux 阵营中,或者是怂恿你来和我一起完成这个类 Unix 系统?不,我已经没有当“传教士”很长时间了,并且这个文档我本来已经开始了,我自己也可以慢慢完成。我只是看到太多的人,在没有想法的时候太习惯于看着别人走路,以至于到了自己有想法的时候完全不敢自己走了,他们(或者称“我们”更适合些)或许一直都想走开,但从来都没有离开过。
最后,非常感谢 BIT FTP 联盟的 youthol 提供了一个不用国际流量就能访问的地址。关于本文的任何部分有意见或建议,也可以直接到博客的留言[BIT同学需要换国际流量才能访问]。