查看原文
其他

少年心中的伟大梦想

大飞码字 大飞码字 2022-09-07



1



经过了上篇的故事,我开始疯狂学习了起来。


在写完了一个贪吃蛇的游戏之后,我又开始构思了一个俄罗斯方块的游戏,俄罗斯方块比贪吃蛇要难,花了三个星期才算勉强成型。


后面接触面广了起来,开始接触到了 MFC,也学会了使用VC (那个时候是VC++6.0, 于现在看来,也是一个老古董了)。


另一方面,大学的男生宿舍总是少不了游戏。


当时我们一个宿舍是四个人,连着左右隔壁,上下楼层的同学,凑齐魔兽,CS 是没问题的了。


常见的画面是他们打游戏,我写代码,也算其乐融融。


当然,我并不是那种自命清高,不合群的人,我也是很喜欢游戏的。联网的游戏,跟麻将一样,也是需要凑人手的,有时候凑不齐人了,我就顶上去。


我打魔兽,CS,都很菜,不过我的同学们觉得我写代码厉害,所以对我总是有比较大的容忍度,有几个厉害的还时常“带”我几把,我也甚是开心。


我跟游戏其实还有比较深的渊源。


我第一次接触游戏是在小学一年级时候,那时还是90年代呢,多久远呀!就是那种小霸王学习机,一开始是去别人家玩,三年级的时候,有了第一台自己的小霸王。我记得是因为考了个年级第一,姑姑奖励给我的。


后面直到高二,我都一直打游戏。我拥有过任天堂几乎所有系列的掌机,后面还有了 PS one, PS2 (PS3,PS4出来的时候,我比较少玩了)。


所以在大学,我比较少打游戏,不是因为我的与众不同,而是因为已经玩过很多,游戏对于我的吸引力远不如编程了。


后面回想起来,我都觉得,正是因为童年和少年时期的游戏经历,才使得后面的我对计算机编程有着近乎着魔的兴趣,我第一次接触编程后的想法,就是要创造出最好玩的游戏!


这个想法直到后面遇到了另外一个东西,才发生了彻底的改变。



2



大二,大三的时期,我几乎每隔一两个星期就会去图书馆逛一次,挑些感兴趣的书回来看。


书看得很杂,啥都有,东西也学得很杂,基本都是东学一点,西学一点。在一个学期的时间内接触了 MFC,DircectX,COM+,Java , 中间做了各种不成型的的东西,都是过了兴奋期就给弃了。 


我记得学完 DirectX 后,想练练手,就去网上搜寻了一套“拳皇”的素材,后来把“八神”的行走,跳跃,出拳,大招等都用程序实现了出来,不过很快就被其它东西“吸引”,学别的去了。


学得很杂,也没有什么规划。


现在想来,我觉得那时候的学习方式也没有太大的问题。虽然杂而不精,但因为是计算机专业学习的早期,当时广泛的接触,反而进一步地摸清楚了什么适合自己,什么不适合自己。


后面情况发了重大的变化,因着一个东西,我开始专注了起来。


我记得那个周末,我如往常一样待在图书馆,待在计算机专业书籍的那一片区,我喜欢在那里逛,那里有很多我觉得充满了神秘感的书籍。


我在一个片区的书架旁缓缓走过,手指不自觉的在一本本书上划过。我开始注意到了 “Linux”这个字眼,一开始没太细看,继续往前走着,后面发现整个片区都是“Linux”,什么“Linux 系统管理”,“Linux 设备驱动”等等。


出于好奇,回到宿舍后,我去网上搜索了这个词汇。才知晓,Linux 是一个操作系统的名字,我当时的认知里面只知晓 Windows , 以为世界上只有 Windows 一种操作系统,知道 Linux 也是操作系统的时候,我着实惊讶了一番。


网上翻着 Linux 的各种介绍,最后总是会接触到 Linus Torvalds (Linux的创始人)和他创造 Linux 的故事。


Linux 是 Linus Torvalds 在大学读研究生期间创造出来的,因为他当时有了一台个人PC,但却缺少一个好用的操心系统,所以就自己 “撸”了一个出来。


当时觉得“偶像”呀,用的不爽,就自己动手“撸”一个出来!一“撸”就把整个世界都给改变了!


少年虽然天真,但却满怀梦想!


我当时就觉得,自己也要“撸”一个出来,“撸”一个中国人自己的操作系统,幻想着有一天,自己也可以借着这个东西改变中国,改变世界!


当然,那时候,我并没有跟其他人说过这个想法,我怕他们笑我“傻!”,哈哈。


不过我心里真的认定了这个事情,我当时估摸了一下,自己才大二,Linus Torvalds 写出 Linux 的第一个版本用了快一年的时间,不过他是研究生,我本科的话,写到大四应该也可以吧? 


当时带着这种傻傻的想法,就下了决心,要开干了!


写个操作系统可不是件容易的事情,一开始的时候一脸懵逼,不知从哪里入手。


但就是抱着一种信念,抱着一个憧憬。


幻想着,自己就像一个神秘的黑客,在无人知晓的情况下,在做着一件能够改变世界的事情。


我不断查找各种资料,同时也在网上继续浏览着 Linux 相关的信息。


后来在图书馆找到了毛德操的《Linux内核源代码情景分析》,犹记得那本书的第一篇,剖析的是 Linux 内核里面广泛使用的一个泛型链表操作库,是用C语言的宏实现的。


当时震惊了,原来 C语言 还可以这么写,那时候觉得 Linux 的源代码真是一个宝库,觉得里面装着计算机的所有知识,只要掌握了它,就可以天下无敌,这也更加坚定了我要写操作系统的决心。


再后来,开始知晓了 Minix ,知晓了当年 Linus Torvalds 就是从 Minix 开启了 Linux 的创造之路 ,而 Minix的创造者,也是操作系统界泰斗级的人物。


接触多了之后发现,要写个操作系统,只会C语言还不行,还要会 汇编,于是又开始找汇编的书来学,第一本是王爽的 《汇编语言程序设计》。


现在想来,当时自己的驱动力也真是强大。


为了写操作系统,中间过程中穿插学了很多东西,比如汇编,386CPU的保护模式,软盘驱动......


几乎每个方面的学习,都要花费两三个月的时间,之后才能再回到主线任务上来。


换句话说,我在还没开始正式写那个操作系统前,已经花了大半年的时间在学习跟操作系统本身无关的东西,所以现在回过头来看,那时还真是有很大的耐心了。



3



写操作系统的过程和看 Linux Kernel 源代码的过程交叉进行,是那种没有明确目的,自娱自乐的项目。


操作系统做到后面,实现了键盘驱动,软盘驱动,内存管理,进程创建,调度,系统调用接口,还自己写了一个简单的文件系统。

写这个操作系统几乎贯穿了我整个的大学生涯,兴致来了会连续写两三个月,觉得腻了,又会转去折腾点别的东西,不过一直没有断过,从大二一直持续到了大学毕业之后,整个过程都挺开心的。


我觉得,大学是我人生最开心和充实的阶段!


在这个过程中,我也结识了我现在的妻子,谈了恋爱;进入了学院的计算机实验室;参加了腾讯的实习生面试,霸面拿到了实习的offer .....


不过,那些又是另外的故事了。


欲知后事如何,且听下回分解!

 


推荐阅读:

我的程序员之路:上帝的苹果

我的程序员之路:高考

荒废的大学开端

大飞哥,我要进大厂!

又到校招季,来说说面试和实习

来自十年互联网人的大厂等级晋升攻略

基础知识的学习,来自十年程序员的经验分享



你好,我是大飞,十年互联网人!

如果你喜欢我的文章,就给公众号加个星标吧,方便阅读。



提升技术认知,助力技术成长 :



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存