程序员小说 Out Of Memory(持续更新3)

本文讲述了作者与朋友六子在游戏开发道路上的经历,从初识到合作开发游戏,再到各自的职业发展。展现了游戏开发者的坚持与挑战。
/*Fuck*/ You();

六子本身是野路子出身,跟我在一个游戏开发论坛上认识的。当时大家水平都不高的情况下,我是为了赚钱,他是为了理想。那种崇拜之情溢于言表。

六子当时不知道从哪搞了一盘叫做《游戏工厂》的软件。按照介绍来说是能开发大商业游戏的,这点也让我们这些穷困潦倒的学生党们羡慕不已。那段时间六子用本来就不宽的网线给我们发了很多截图,我顿时觉得那才是一名游戏开发者应该做的事情。几个月后我也找到了这款软件的种子,下下来后发现理想破灭的如此不动声色。真他%妈的难用……

我问六子:“怎么难用的东西你怎么用下去的。”

“总比没的用强。”

后来大学的一个暑假我和六子第一次见面,在一个海边城市租了一见筒子楼,但庆幸的是面朝大海。然后我们心里是春暖花开。当时也没有空调,每天就是两个大男人赤条条的坐在屋子里。实在热的不行了就下海扑腾一会。

我们两个是合计着做款游戏,商量了很久不知道做什么。当时我认定做一个最底层,群众最喜闻乐见的故事。我告诉他,我们要做一款,英雄杀掉魔王拯救世界的游戏。

“这个也太土鳖了吧?论坛上99%的人都是做这个了。”

“那他们为什么做这个?”

“有市场呗。”

“那还是啊。”

“但那不够艺术啊。”

“但有市场啊。”

当时我觉得六子好就好在脑子比较活,所以说两句就能明白。后来才知道,原来是六子没明白我的意思,但是又不愿意跟我怄气。一个合格的程序员最闷骚的地方就在这里,如果你不看他的代码,永远不知道他想的是什么。

整体开发极其不顺利。

因为我们不打算用现有的开发工具,所以决定从底层写自己的引擎,但两个人代码功底都不好,算法能力更是一塌糊涂,遇到了很多极其奇葩的问题。

像当时在做寻路模块的时候,我们看着网上的A*算法但是怎么都写不出来程序。就想编出来了很多自认为是独创的算法,例如从A点到B点画一条线后在障碍物上获得一个出口和入口,再顺着障碍物走左右两条线从出口画到入口,最后整理这个路径就可以了。在地图不复杂的时候,没出现太多问题。

那段几乎是我人生最开心的时刻,只是后来做出的游戏扔到论坛上被人骂的一塌糊涂,没过多久我就因为就业压力很少关注这个事情了,渐渐也和六子断了联系。

几个月前我去看一场iOS游戏开发者的大会,压轴嘉宾我惊奇的看到了六子的名字。原来他现在已经成为了一个成功的游戏开发者,西装革履的站在台子上给我们去讲自己的成功史,之后和组织者开心的回了颐和安缦。

晚上我躺在如家潮湿的床上,听着隔壁此起彼伏的叫声,想起来当初在海边的一个凌晨。我跟六子说:“你睡会吧。”

“不用了。我还是把这段写完吧。”

“又不着急,休息一会吧。”

“不了,我明天想吃早饭,如果睡了就吃不到了。”

六子笑了。

我打电话到疯子的公司,想问问进度如何。员工告诉我疯子住院了。我怕好不容易有个根不红苗不正的朋友,就这么呜呼了实在可惜。

直接打车到了医院,看着疯子躺在床上举着一个iPad,居然还很无耻的翘着二郎腿。

“寇德你来了。”我站定了几秒之后他根本不看我的就开始了问话。

“我听说你生病了。”

“你说,像iPad,像手机,躺着使用是不是一个主要的需求场景。”

“是吧……”我尴尬的答道,因为完全没有反应过来他到底要说什么。

“这傻逼游戏非要重力感应,玩的我好辛苦。 ”

“哦……你病的如何了?”

“你看我像有事的吗?”

“不像。”其实我心里说的是像。这个世界上有两种病需要住院,一种是已经失去行动能力了,但还在苟延残喘。另外一种是活蹦乱跳,但是时日不多。相比较前者后者更可怕,那种感觉像是自己抱着一个C4,然后把起爆器给了一只猴子。

“本来就没事,就是被我们一个傻逼员工吓的。”

“咋了?”

“我们之前那个员工不是去世了么,我就把他的电脑给一个新员工了。今天那个新员工也没来,说是起水痘了之类的。但是我上班时候偶尔溜达,发现那个电脑上还在做着东西。我眼睁睁看着一个屏幕上在蹦代码。”

“我擦,见鬼了?你这个员工真好,死了还帮你开发。”

“狗屁!那个新员工让别人给他开了一个远程桌面……”

“然后呢……”

“然后我嗝的一下就过去了。”

“你真牛啊。”

“别废话,看我拿东西了吗?”

我现在才想起来这个事情:“抱歉,我明天给你。”

“这就对了。话说我刚才吓过去的时候真的觉得自己入了一次地狱啊。”

“那好玩吗?”

“不好玩,我溜达了七层之后就回来了。”

“哪七层?”

“应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。”

我大约思考了几秒钟后说道:“你说,这是不是某种暗示。”

“暗示什么啊,你应该还有别的事情吧,否则不可能连东西没拿就来看我。”

我确定疯子一定没事。

“哦,是这样。开发进度做的如何了?桂花那好像有点着急。”

“别提了。太伤感情了,整天就看苹果改规则,两个月突然出来好几个新分辨率,SDK又是上下不兼容。你要是有意见就找苹果去。”

我突然觉得根我们做Android的也没什么区别,但还是要安慰一下:“你们的开发环境多好啊。”

疯子掩面痛哭:“这Xcode是带着bug一起升级的。”

“那……”我本来是真心要吐槽Eclipse。

“还没完,每次点个run都要等一部电视剧的时间,真机调试一次直接可以看电影了。”

“那……”我还是想把话说完。

“那个等待时间我都用来刷微博了,所以一年涨了一万多粉,收入一天不如一天了。”

“那也算有点收获……”终于说出来了,还不是真心话。

“哎,其实程序员都是苦命人啊。”

“嗯,你也辛苦了。”

“你像我们新招的那个小子。什么都挺好,就是脑子有点呆,也是个可怜人啊。”

“怎么了?”我觉得水痘没什么大不了的,只是这么大还得有点罕见。

“我前几天在论坛上发帖子招聘,其实根本不是招聘,就是宣传一下,直接打广告肯定让人删了。这个小子就找到了我。我问他为什么想换工作,你猜他怎么说?”

原来不是说水痘,我假装思考了几秒后说道:“不知道。”

“你当然不知道了。他说,上个公司搬家。然后忘了告诉他新公司在哪了。”

“你说,为什么C++没有garbage collector?”

“如果有的话,那C++还有什么?”

“有道理,那是不是,如果Java的garbage collector正常工作,这个世界上就没有Java代码了?”

“理论是这样的。”

听着两个员工在身后有一搭没一搭的聊天,想起来以前一个真实的故事。

在大学的时候,有一门很老的C语言课程,用的都是上个世纪的教材。中间有一个学籍管理系统的大作业,班上很多人写不出来。老师就给了我们一份样板,据说是她曾经暗恋男生的。

这个老师也就三十多岁,在本校从本科念到了博士,然后直接留校。说起来算是个美女,即便已近中年还颇有风韵。班里的男生经常拿她取乐,她也从不介意。

在一个阳光格外出彩的下午,她跟我们说:“我这里有一份以前我上大学时候写的作业,和你们这次作业比较像。就是昨天有同学跟我说不会做,我才翻出来的。有兴趣的同学下课过来拷一下。”

“老师,你上大学的时候我们还是小蝌蚪吧?这都留着呢?”

“嗯,我当时喜欢一个男生,就想尽办法跟他一个小组做作业,这个作业就是当时做的。只是,我当时光顾着别的了,作业其实都是她一个人写的。”老师笑的格外灿烂。

晚上我光着身子在飘逸着酸黄瓜味道的寝室里打开代码,想看看究竟有什么可以借鉴的部分,几分钟后就发现了一行至今仍然难以释怀的注释,可能一直到现在我习惯于一行一行读完所有的注释也是因为这个:

/* 
* 界面模块:生成图形界面。
* printf("PS:我爱你。\n"); 
*/

第二天正巧在学校打球后碰到了老师,我说:“老师你还真浪漫啊。”

“怎么?”

“你的代码?”

“哦,那个啊。昨天不是说了么,那不是我写的。”

“那你看过吗?”

“没有啊,怎么了?”

“哦,没事。代码写的挺好看的。”

“哦,我替我朋友谢谢你。”

“你现在还和那个朋友有联系吗?”

“啊,很久没有了。最后同学聚会的时候,只是知道他做了老板。你怎么好奇起来这个了啊?”

“没事,就是想知道什么样子的人能写出来这么优雅的代码。”

第二天老师站在讲台上,眼眶都是肿的。

有好事的学生站起来问她怎么哭了。

老师笑了笑说道:“我丢过一个扣子,好不容易找到后,发现我已经换了一件衣服。”

现在回想起来这个事情要远比当时伤感,那段时间,我的思绪经常回到老师的大学时代,看着她每天在最美的晨光里期待他的影子。

我转头问两个依然在扯淡的员工:“你们大学时候有什么喜欢的人吗?”

“当然有了。”一个员工回答。

“然后呢?”

“然后啊,我当时巨想追求她。而且我担心现在不下手,以后工作了更没人要了。”

“再然后呢?”

“再然后我妈妈让我专心学习,等牛逼了自然就明白了。”

“那你明白了吗?”

“当然明白了。我明白我当时的担忧全是真的。”

程序员有一条很可怕的鄙视链,基本上是写Haskel的鄙视Lisp,Lisp鄙视Scheme,Scheme鄙视Ruby,Ruby鄙视Python,Python鄙视C,C鄙视C++,C++鄙视Java,最后Java可怜兮兮的看看做.Net的,.Net当然也不甘寂寞,对一旁的美工投去了无限的鄙视。

结果周末美工带着女朋友去公园,一帮在鄙视链顶端的傻逼还在加班。

今天是周末,然后我们所有人走在加班。

前几天接了一个其他外包公司再次包给我们的单子,我本来以为是二次外包,结果没想到是第七次了,基本上包给我们的价格铁定亏。当时我就说不干,可以那边说没法加价,但是可以临时借我们一个程序,如果别的项目需要也可以临时用用。我就同意了。显然,事情比我预想中要好多的。借来的还是一个女程序。

昨天晚上我和哥几个聊天,问他们:“如果夜里,一个单身男程序和一个单身女程序在一起,你说会发生点什么?”

一员工抢答:“骂产品吧。”

另一员工插嘴:“铁定是骂运营啊。”

终于有个有良心的员工想到我了:“扯淡,一定是在骂老板。”

我觉得是时候稍微插嘴了:“为什么不会安心写程序呢?”

“呵呵。”

大学时候我们班里有两个女生,但这个事情一直到一个学期以后我们才发现。因为有些人从外观很难区别物种。

今天我看到了女程序,比我想象中的要漂亮的多,真的是那种看到鼻血流一地的素质,随便拍张照片都能觉得是明星照。

这个女生中文名叫高兴,英文名叫Happy。名字很对得起长相,进来之后一直笑嘻嘻的。开始我们觉得她是那边公司扔过来滥竽充数的,但想到好不容易有个异性也就没多说什么。一天后我们发现自己错了。她堆代码的能力远远强过我们所有的人。

“我说,你是怎么学的。相当厉害嘛……”

“其实我本来是做模特的……”

“哦,那怎么学编程的。”

“因为当时一个游戏公司给我签了一个showgirl的合同,当时老板是做美工出身,就天天教我画图之类的……”

“然后呢?”

“然后我又以美工身份跳槽到一个网络公司……”

“那到底什么时候开始学的编程?”

“就是有一天我发现程序员的收入比美工高不少,就顺口问一句公司的技术总监,结果技术总监就天天帮我辅导。后来即便有问题了,也不停有人帮我,慢慢水平就好了。”

我尽力检索大脑的每个神经元,只是想起来最早在游戏公司时曾经咨询过一个大牛怎么处理一些数据,只换来一个字的回答:“滚。”

“那你是怎么学的编程啊?”高兴问我。

“我大学就是学这个的。但是……”猛然一个大学室友的故事闪到我大脑里。

“怎么了?”

“我大学有个室友,有一天偷看我电脑找黄片。当时里面存了很多编程的视频。他以为是黄片就看了。”

“然后呢?”

“然后他一个学管理的,毕业之后去微软做程序员了。”

“机缘巧合啊。”

刚刚上大学的时候,我想泡在学校图书馆打工的小妹妹。在一个光芒万丈的午后,我鼓足怂了二十年的勇气找到她,轻声细语的拜托她给我找一本编程书。

回来她给了我一本《边城》。

显然,高兴比她要强得多。至少高兴来了之后,整个项目的进度快了一倍以上。这种高效致使我一直不明白,这么漂亮能力又好的程序员为什么会被借到我们这种连小蝌蚪都无处安放的公司来。终于一天中午在叫完盒饭后,我忍不住问了一下她:“你到底为什么被借过来啊?”

“哦,就是有一次。老板开会,跟我们说他的字典里没有失败两个字。”

“然后呢?”

“然后我说我的字典借你。”

“总不能因为这点小事吧。像这帮孙子还经常说我坏话呢。”我环顾一下一帮在QQ斗地主的孙子。

“老板你傻了啊。”

“你看,他们又骂我了。”

“她老板是个女的啊。”

我顿时领悟。

“姑娘,你也是个苦命人。要不然就留在我们这里吧。”

“好啊。”

Origins of the Book This book stems from an introductory course that we developed at Carnegie Mellon University in the fall of 1998, called 15-213: Introduction to Computer Systems (ICS) [14]. The ICS course has been taught every semester since then. Over 400 students take the course each semester. The students range from sophomores to graduate students in a wide variety of majors. It is a required core course for all undergraduates in the CS and ECE departments at Carnegie Mellon, and it has become a prerequisite for most upper-level systems courses in CS and ECE. The idea with ICS was to introduce students to computers in a different way. Few of our students would have the opportunity to build a computer system. On the other hand, most students, including all computer scientists and computer engineers, would be required to use and program computers on a daily basis. So we decided to teach about systems from the point of view of the programmer, using the following filter: we would cover a topic only if it affected the performance, correctness, or utility of user-level C programs. For example, topics such as hardware adder and bus designs were out. Topics such as machine language were in; but instead of focusing on how to write assembly language by hand, we would look at how a C compiler translates C constructs into machine code, including pointers, loops, procedure calls, and switch statements. Further, we would take a broader and more holistic view of the system as both hardware and systems software, covering such topics as linking, loading,processes, signals, performance optimization, virtual memory, I/O, and network and concurrent programming. This approach allowed us to teach the ICS course in a way that is practical, concrete, hands-on, and exciting for the students. The response from our students and faculty colleagues was immediate and overwhelmingly positive, and we realized that others outside of CMU might benefit from using our approach. Hence this book, which we developed from the ICS lecture notes, and which we have now revised to reflect changes in technology and in how computer systems are implemented. Via the multiple editions and multiple translations of this book, ICS and many variants have become part of the computer science and computer engineering curricula at hundreds of colleges and universities worldwide.翻译以上英文为中文
最新发布
08-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值