View on GitHub

紫宸

计算机学院拔尖人才工程组

魏一驹:我取了bitman(紫宸的曾用名)这个名字

简介

魏一驹: 2010年入学电子科技大学本科,bitman(紫宸的曾用名)成员。现居澳大利亚,当程序员。

我习惯称这个家伙叫小毛,好像这是他家里人这么叫他的。他是个满有个性的家伙。

那时,我们刚开始招收bitman(紫宸的曾用名)成员。还没有画板这个固定的题目。他们可以带自己得意的作品来。然后,他就来了。因为刚学了C语言,他给我打开了一个他写的程序。这个程序就是他的简历。

我还是第一次遇到有人用程序写个简历。有意思,还是让他去写了画板。他就进来了。

工程组需要一个名字。取个什么呢?大家都来出谋划策。不过似乎都不太理想。小毛给我说:“Bitman(紫宸的曾用名)”。他解释说batman是蝙蝠侠,我们是强调系统的底层能力,bit就是程序最小的信息单位,所以叫Bitman(紫宸的曾用名)。不错啊,听起来酷酷的。于是,工程组就有了自己的名字。

他绝对有取名字的天赋。那次想给码图取个名字,向他询问了下。他给出了“码云”这个名字。很能蹭马云的热度嘛。不过我还是不想蹭。

照例他也做了操作系统,做了PE加载器…。

三年级的时候,他上我的课。在晚上的课堂上,我临时说起一个问题。打开调试器发现反汇编代码不是我预期的样子。我告诉大家回家后我分析了来告诉大家。当坐车回到家里时,快晚上11点了。小毛给我打了个电话,说他已经找出问题的答案了。看了还是个痴迷执著的人。

有一次,他对我说“以前他有了程序上的疑难只有找高手,或在论坛上跪求解答。学习了我课堂上的这些调试和底层视角后,再遇到问题,他真的敢坐在那里,打开调试器,然后慢慢地分析,他真的能找出了问题。”

听到这样的话,作为老师我还是真的开心啊。

在国内工作了一段时间后,小毛没考研,直接就到澳洲去了。在那里开心地生活,开心地写着代码。也是惬意的生活。


我在小时候有过很多梦想,后来大半忘却了。有一件事却依然在我记忆中,高中上计算机课的时候,老师会用一个教学软件将他的屏幕投射在每个人的电脑屏幕上讲课,这个时候学生无法操作电脑。有一天在课上,我悄悄拔掉我电脑上的网线,将软件的学生端关掉,插回网线后,下载教师端,将我的屏幕投射到了所有学生的电脑上。我播放了一些搞笑的视频引起全班哄堂大笑,老师走下讲台之后,我把自己电脑上的教师端关掉,老师丝毫不知道发生了什么。其他人曾经试图恶作剧老师:椅子上涂胶水、门上放水桶,这些人往往很容易被查出来,换来一顿吊打。而我呢?那一天,我感觉我是一个黑客,并且体验到了一种优越感:我比别人高明。从此我的梦想便是做一个高明的黑客

抱着“我比别人高明”的想法,我在高考时成为了全班唯一考上一本线的人来到了电子科大,因为之前当“黑客”体验到了做高手的感觉,我报了信息安全专业。电子科大大一的学生都是“比别人高明”的人。我如何证明我比这群高明人更“高明”呢?当然是试图加入各种高手的组织。学校里能找到的各种工作室、俱乐部都加入了。大多数组织的主要活动是每周找个聚会一次然后吃一顿,组织里的高明学长会吹一些新生门似懂非懂的东西。但很快我便失望了:我自己并不会因为加入这些组织变成高手。我和高手的距离是一个矮矮的讲台,我坐在下面,牛人站在上面。

有一天中午在食堂门口看到一块牌子,上面写着“拔尖人才计划招新”的字样,这牌匾看起来并不比其他组织高明,名字听起来也挺像“奥数培训班”之类的东西。“也不多这一个”我对自己说,于是我就去了。宣讲会上,一个大嗓门的老师喊出了“如果你能每天抽出十小时来接受摧残,那你就加入我们吧”之类的话,这听起来像是成为高手的办法,于是我就去了。

要加入这个组织需要一个“投名状”,大约就是写个画板程序,对于没有电脑也没有写过代码的新生来说确乎不是一件容易的事,但我作为一个觉得自己“比别人更高明”的人,怎么能做不出来呢?于是在能找到的时间里,竟然做出了一个能画出东西的程序。在“拔尖人才计划”的面试现场,每个人演示自己的程序,在遍地是高手的地方,我的画板和其他人的程序比起来更像是一个刷墙模拟器。我心中冒出一个想法:“既然有这么多牛人,我应该进不了这里吧。”于是这件事很快就忘却了。

大一的寒假让我成为了后来的我,那年的冬天特别冷,我窝在家里读了《Computer Science Illuminated》(Nell Dale, Austin Lewis, John Lewis)。这本书是和其他教材一起发放而没有在任何课上用到的唯一书。书是英文原版的,于是在假期里我一面用手机查着字典一边读完了这本书。这段时间的阅读对后来的路贡献还真不小,现在想起来主要有三:

大二大三轻松考过 数据结构、算法和英语四六级。因为对计算机系统有illuminated的认识,大二的时候能去上给大三学生开的操作系统课。

不再惧怕阅读英文文献。我第一份工作是做Hadoop开发,当时Hadoop的中文资料还很少,我便可以在公司里变成一个不可替代的角色。

毕业两年后来了澳大利亚,技术交流毫无困难。

寒假里有一天我正在读书,收到一条短信,竟是从“拔尖人才”那里发来的,说希望新加入的组员写一个数据库,实现增删改查就可以了。通过大一的C语言学习和读书学到的一点数据结构和算法,我艰难的写出了一个很简单的实现,在开学前发给了韩老师。

寒假里的其它的时间呢?自然是打打游戏。那时玩的一个叫Hitman 47的游戏,玩家扮演一个杀手去暗杀一些目标人物,但不能像电视剧一样拿着冲锋枪突突进去再用裤裆里的手雷炸死目标。游戏要求玩家将死者伪装成意外死亡,这就需要玩家设计一些高明的局,骗过守卫,接近目标,再耍一些高明的手段致其“意外”死亡。游戏的过程很像是一个解谜的过程,玩家需要大量尝试,并通过得到的结果调整自己的策略,过程很像做逆向分析。大约是因为找回了“我比别人高明”的幻觉,我从来没有玩游戏玩的像那年冬一样开心。最近和一个同事聊天,他之前是做游戏设计的,我发现高明的游戏设计师设计游戏时考虑的一个重点就是如何让玩家觉得自己很高明。在现实生活中满足不了的自恋在游戏中比较容易满足,这样的游戏就容易让人上瘾。

开学后,韩老师开始从邮件上指导改进数据库程序。反反复复做了一学期,大多是些“重新发明轮子”的事。比如我之前只用数组储存信息,而韩老师会提出诸如如何删除记录的问题,于是我“发明”了链表和链表删除算法。后来,在数据结构课上终于学到了链表,隔壁寝室还有人问我说:为啥我们要搞链表这种麻烦的东西,为了让我们挂科吗?我试图解释其中的好处,说了半天也没让他明白,后来我用数据库作的实现作为一个例子,告诉他如果用数组储存信息会有诸多麻烦,一些算法看起来很直观,但也有其弊病,于是最后链表成为了一个不错的选择。自此我在班上充当起了stackoverflow的角色,很多人来找我解释一些“为什么”的问题。

电子科大有个规定,大一新生不允许带电脑。带电脑被抓到后没收电源线。没有电脑,打字编程诸多不便,自然成为了许多人不写代码的理由。但真想练编程的人想出了不少办法,最直接的就是用图书馆的电脑写代码,写好后拷在U盘上带走,下次接着写。一些人图方便,带了电脑来学校,把电脑的电源线随时带在自己身上。后来还听说有人在手机上安装了C语言模拟器来写程序。我家离学校比较近,所以我几乎是周末回家写代码。工作之后,我读到一本书,叫《你的灯亮着吗?》,书是软件工程师写的,主题是如何发现问题,解决问题。书中有一个观点,如果你想解决问题,你会发现很多解,而那些告诉你问题无解的人其实只是不想去解决。

大一下学期结束时,韩老师说来开个会吧。去了主楼,发现开会的人就只有我、韩老师和他的研究生。我问韩老师:“其他拔尖人才计划的人呢?”韩老师说:“你们年级现在就你了。”当时有不少人报名,交“投名状”的寥寥无几,写出数据库程序的人就更少了,最后还修改一学期的,就剩一个了。会上主要讨论了下学期的计划,韩老师推荐了我去上他给大三学生开的“软件开发环境”课和他朋友开的“操作系统”课。

“软件开发环境”课上讲的主要是《老码识途》书中的部分内容,如果你没有上过韩老师的课,我推荐你买来一读,因为如果你上过韩老师的课,你或许已经买过一本了。课上的主要内容是通过“猜测、实证、构建”的模型,在解决问题的过程中学习知识。韩老师设计这种教学的目的或许是出于研究计算机底层或者安全方面的问题,事实上我毕业后并未做过安全方面的工作,但“猜测、实证、构建”的模型却时时刻刻在发挥作用。现在的很多软件会使用开源的库,其中大多没有文档记载其中的实现细节,当你需要了解其中的某一部分运行机制时,“猜测、实证、构建”模型是最好的办法。最近参与了一些开发了20年的复杂软件系统的改进工作,遇到一些老旧代码,写代码的人都已离开公司或者离开人世了,搞懂和改动这些部分,“猜测、实证、构建”仍然是最好的办法。

“操作系统”课用的主要教材是于渊写的《自己动手写操作系统》,这本书从boot代码开始写,从头写出一个简单的操作系统。也推荐一读。

上了这两门课后,那些看起来神秘而深不可测的东西现在变得清晰起来,我逐渐有了这样的想法:只要找到适当观察和实验方法,没有问题是不可解的。这个想法在之后的路上对我的帮助远大于在学校里学到的知识。上两门课的过程中也写了大量的代码,编程和调试基本上成为了家常便饭。到大三的时候,有大量的实验课的作业是提交代码,而此时大多数大二学生只具备入门级的写代码能力。我似乎又充当起了Github的角色,不少人从我这里clone代码。

大二后期,拔尖人才计划里除了我和高年级学长,又多了不少人,既然大家都是想成为高手的人,我们自然需要个高明的名字。说到高明的玩家,玩Hitman 47的情景又浮现在我眼前。于是我将Hitman中的H替换成了B,提议将组织更名为Bitman(紫宸的曾用名),这里Bit有一个二进制位的意思,同时整个名字看起来也很像Batman,于是大家都认同了。

记得在大三的一天,等校车时,和一位陌生的同学聊起了天,他竟然也是计算机学院的,还是同一年级。他问我是哪个班的,我说四班。他说道:“哦。。传说你们四班有个高手。。。姓魏。。。。。我们clone的很多代码都是他那里流出的。。。。”我说是的,然后上了校车。我想:高手本是无所谓有,无所谓无的。这正如地上的路;其实地上本没有路,有了腿,就有了路。

魏一驹

二零一九年十月