×

[阅 #6] 你知道吗?有个高中生徒手写了一个在浏览器中运行的操作系统

96
goddyzhao
2017.09.13 18:44 字数 1405

「阅」——JSCourse 旗下栏目,专门推荐我们为大家精心挑选的优质 JavaScript 相关技术内容

又和大家见面了,我是小 J,本期为大家分享一个很震撼的故事——美国有个高中生,学了 2 年不到的编程就徒手实现了一个可以在浏览器中运行的「操作系统」。下面我来给大家讲讲这个真人真事,他的故事一定对大家学习 JavaScript 的同学们有不少启发。

故事开始前,先来看看他徒手实现的操作系统——aOS(AaronOS)

点击观看演示视频

从上面视频中可以看到这个系统其实每个桌面上的应用都是真实的,可以使用的,连游戏都是可以玩的!这得花多少时间去做?而且,据他所说,这个完全是徒手写的——也就是一个人,不用任何库(对,木有 Angular、木有 Vue、木有 React、连 jQuery 都木有)写成的(大家拖住下巴哦!)。故事来龙去脉怎么样的呢?准备好小板凳,小编开讲啦!

首先这位小朋友名叫 Aaron Adams, 来自美国的亚利桑那州,写 aOS 的时候还是一名高中生(今年刚高中毕业)。其实高一的时候还不懂编程,就是一名普通的高中生,学编程那完全是无心插柳、阴差阳错的事情。因为他对摄影很感兴趣,所以选课的时候(美国高中和我们大学一样是学分制的,需要选课修学分)他选了电影制作相关的课程。但是,毫无疑问地没有选上,因为满员了,换你也会选这种课啊,一听就很有意思对吧,所以就报的人太多,rp 没拼过别人没选上。然后就去上了一门和计算机技术相关的课程,大致学的东西就是怎么修电脑、使用 Office 这样的软件,当然包括编程。这门课就改变了 Aaron 的人生轨迹了(命运使然啊)。

Aaron 学编程的时候和我们大学的实验课差不多,就做一些比较小的项目,像计算器之类的。但是呢,他一直想自己做一个操作系统,然后呢,热血沸腾地开干,干着干着又干不下去放弃了,然后又开始做,再次放弃、再开始 ...... 就这样来来回回很多次(这个经历是不是似曾相似)。

最后呢,他觉得一次性做一个操作系统不现实,于是他决定一次制作相对独立的一部分,比如:先实现一个桌面再说,不管其他的(注意啦,划重点啦:这种方法叫「任务切分」,可以让你以更快地速度完成一个粒度更小的任务,这样能持续地获得满足感和自豪感)。就这样,他每次完成一个小任务就非常高兴(小编杜撰:晚上吃饭都不忘记给自己加个蛋庆祝下)。就这样,很多个小任务完成后最后就组成了现在的 aOS。

做的过程中,他没有使用任何 JavaScript 库,连 jQuery 都不用,全部裸写原生 JavaScript 代码,代码超过 12000 行代码(划重点啦:学习阶段小编非常不鼓励大家直接拿个框架或者库就上手,这样你错过了很多内部的实现,因为它们帮你封装掉了很多底层原理,而这些恰恰是初学者打基础的东西),后端是 PHP。而且他现在已经把 aOS 当成自己的孩子,每天没事儿的时候就是写 aOS 系统(再次划重点:只有做自己感兴趣的事情,才能长时间坚持做,才能做出成绩)。而且他也从来没有想过 aOS 能给他带来什么,反正就是自己喜欢就做,心无旁骛。他说除非自己没钱了,饭都吃不饱了否则不会停止做的,而且他表示已经把编程作为自己要做一辈子的事情了。

故事讲到这里就差不多了,怎么样,是不是很值得借鉴和学习?其实,小编觉得从技术上讲这个不能算是真正的「操作系统」,顶多是个桌面环境,因为其实他访问不了底层资源,毕竟在浏览器沙箱里面。但是,哪怕只是个桌面环境,裸写 JavaScript 实现那么多的应用和功能本身就是一件非常了不起的事情。希望 Aaron 可以继续加油!也希望正在阅读本文的你也能加油!

最后感谢 Peter Gleeson 对 Aaron 的采访,小编我才能了解到作者背后的很多故事!如果你想要阅读 Peter 的英文采访稿,可以点击这里进行了解(记得自备梯子)。

关注微信公众号「jscourse」获取更多 JavaScript 学习资料和课程!

jscourse
Web note ad 1