4 无知则无畏
当我们打算开发操作系统时,总会有人从旁边跳出来,罗列出一大堆专业术语,问这问那,像内核怎么做啦,外壳怎么做啦,是不是单片啦,是不是微内核啦,等等。虽然有时候提这些问题也是有益的,但一上来就问这些,当然会让人无从回答。
要想给他们一个满意答复,让他们不再从旁指手画脚的话,还真得多学习,拿出点像模像样的见解才行。但我们是初学者,没有必要去学那些麻烦的东西,费时费力且不说,当我们知道现有操作系统在各方面都考虑得如此周密的时候,就会发现自己的想法太过简单而备受打击没了干劲。如果被前人的成果吓倒,只用这些现有的技术来做些拼拼凑凑的工作,岂不是太没意思了。
所以我们这次不去学习那些复杂的东西,直接着手开发。就算知道一大堆专业术语、专业理论,又有什么意思呢?还不如动手去做,就算做出来的东西再简单,起码也是自己的成果。而且自己先实际操作一次,通过实践找到其中的问题,再来看看是不是已经有了这些问题的解决方案,这样下来更能深刻地理解那些复杂理论。不管怎么说,反正目前我们也无法回答那些五花八门的问题,倒不如直接告诉在一旁指手画脚的人们:我们就是想用自己的方法做自己喜欢的事情,如果要讨论高深的问题,就另请高明吧。
■■■■■
其实反过来看,什么都不知道有时倒是好事。正是因为什么都不知道,我们才可能会认真地去做那些专家们嗤之以鼻的没意义的“傻事”。也许我们大多时候做的都没什么意义,但有时也可能会发掘出专家们千虑一失的问题呢。专家们在很多方面往往会先入为主,甚至根本不去尝试就断定这也不行那也不行,要么就浅尝辄止。因此能够挑战这些问题的,就只有我们这种什么都不知道的门外汉。任何人都能通过学习成为专家,但是一旦成为专家,就再也找不回门外汉的挑战精神了。所以从零开始,在没有各种条条框框限制的情况下,能做到什么程度就做到什么程度,碰壁以后再回头来学习相关知识,也为时未晚。
实际上笔者也正是这样一路磕磕绊绊地走过来,才有了今天。笔者没去过教授编程的学校,也几乎没学什么复杂的理论就开始开发操作系统了。但也正是因为这样,笔者做出的操作系统与其他的操作系统大不相同,非常有个性,所以得到了专家们的一致好评,而且现在还能有机会写这本书,向初学者介绍经验。总地说来,笔者从着手开发直到现在,每天都是乐在其中的。
正是像笔者这样自己摸着石头过河,一路磕磕绊绊走过来的人,讲出的东西才简单易懂。不过在讲解过程中会涉及失败的经验,以及如何重新修正最终取得成功,所以已经懂了的人看着可能会着急。不好意思,如果碰到这种情况请忍耐一下吧。
读了这部分内容或许有人会觉得“是不是什么都不学习才是最好的啊”,其实那倒不是。比如工作上需要编写某些程序,或者一年之内要完成某些任务,这时没有时间去故意绕远路,所以为了避免不必要的失败,当然是先学习再着手开发比较好。但这次我们是因为自己的兴趣而学习操作系统的开发的,既然是兴趣,那就是按自己喜欢的方式慢慢来,这样就挺好的。