可能真的一丁点正规计算机编程教育(包括学校上课)都没学过但是却真的又能做出一些东西的人,这个回答里也只有我了。在计算机编程领域我永远成不了传奇,只能是个不起眼的用户,但是这正是大多数计算机程序员最后的归宿。

我学计算机编程的动力只有一个——热爱游戏开发,“因为会了编程,就可以让计算机来帮我处理很多复杂的东西,这样我设计的游戏大家玩起来就会更自然”——18年前这个想法,把我带入了计算机编程的门,可是我从来没有机会接受正规的教育,所以我走了一条与众不同的路,和这里的每一个大佬都完全不同的路,甚至有些我的经历,可以让你真正的惊呆了。

最早自学计算机编程是2000年,当时我用星际脚本编辑器做的剧情地图被暴雪选中,加上了暴雪标志(这意味着你在战网上看到有人开这个地图,前面是有个BLZ标志的,正规暴雪认可地图),有人告诉我这就是一种编程,我第一次感觉编程与我如此接近。可惜我三校生高考(当时第一届三校生高考,因为上一届学生学4年,我们学3年中专,所以我们是2届一起考,好不容易60选1选出来进了华东师大,结果还没进计算机专业)。说实话,我非常痛恨那些计算机专业却总不及格的人,因为我认为他们侮辱了我,侮辱了我对未来的憧憬。

2000年的时候电脑商情报等报刊杂志上都有编程教学,我那时候不知道编程还要环境,辛辛苦苦对着报刊杂志上的文章,把所有的代码打进windows记事本里然后另存为.exe,就指望着他能工作,可是双击之后没有任何反应,我问遍了周围的同学都不知道,最后找老师问了问,老师介绍给我说“Delphi就是未来”,我才开始知道原来要写程序是这样的。

当时我每天都不吃中饭,为的是有钱就能去书店买Delphi的书,幸好当时delphi逐渐开始流行,有很多书,但我买了以后根本看不懂那些概念,其实我也没兴趣看懂,因为最吸引我的是后面的实际范例——仓库番、坦克大战、小猪射狼等等小游戏,我想学编程,为的就是做游戏,而他们,距离我的梦想仿佛就只有1米的距离。

当时有个家里条件很好的同学有笔记本,我厚着脸皮“借”(你知道的,中专生“借”东西的本事是不小的)过来自己用,不去上课几乎整天就在研究delphi,那破机器嘎吱嘎吱的倒还能运行起来我做的东西,当我理解了怎么开发程序(题主注意:这里有个要点,就是当时delphi只要点一下绿色的启动按钮就能完成一个程序,这个对于初学者来说,真的是fantastic的感觉,事实证明信心是很重要的东西),我第一个开始做的是一些修改器,单机游戏的修改器,包括存盘文件、内存修改器,我又开始学很多东西,不仅从书上学,还从书上提的网站的友情链接找东西学,在友情链接里面找别人的OICQ问(当年可没有百度),终于我做了不少修改器发布到当初的游侠网等网站,看着别人使用,尤其是身边的同学都夸赞,真的是一种非常棒的感觉,我爱死这种感觉了。我觉得自己开始沉迷于“编程”这个玩意儿了。

2001年,我接触了网络游戏金庸OL,这并不是我的第一个网络游戏,事实上之前也跟朋友去网吧玩石器时代,只是觉得这破壁游戏完全不如Delphi好玩。看着这个游戏,我第一次有了一个念头——如果我改改就能比别人更强是不是更好玩?配合我当时修改游戏10多年的经验+到处求学,我竟然做出了外挂,并且被常去的网吧老板收了,网吧老板还经常给我钱,甚至给我配了一台专用电脑,我去都不用给钱,有时候还会请我吃我最爱的宫保鸡丁饭。但是最让我满足的是,他告诉我全国有好多好多人都用了我做的外挂,并且都说好(也许他只是骗骗我而已,但我真的很开心)。

那时候开始我沉迷于这门技术了,因为它带给我很大的成就感,我差点就忘了自己是为了做游戏而学这玩儿意了。后来还弄了几个游戏的外挂,反响也不错,但我自己没赚多少钱,因为当时没有这个概念,只是觉得大家都在用我做的东西,我就好开心。

2002年,大二,开始在外面找实习工作了,最早我在图书管里找了个活,但我空下来就会做点游戏开发的研究,因为那时候“找工作”又在一次触动我,让我想起了初心。后来因为我常在一些知名论坛发牢骚说国内游戏做的不行,应该怎么做才对,所以有人邀请我去试试看能不能做游戏策划,当时的命题是,1个星期不拿一分钱,能写一个游戏的策划案,我当时高兴坏了,上下班换3辆公交车,都是从头坐到尾的,我一直想着游戏要怎么做。第一天通宵我照着游戏想了想完成了策划案,第二天通宵完成了地图编辑器Delphi做的,第三天通宵完成了游戏的Delphi版,争取到了我在游戏行业的第一份工作(当时还不算正式),从哪开始,我真的有机会“学习”(其实还是实战,看着别人的代码自学)编程了,因为当时工作室生存需要,不仅要做自己创新的东西,还会接一些外包(当时想来这些游戏不过如此,今天居然都成了世界级的),我对研究他们的实现充满了热情,有时候周末会从周五晚上一直到星期一早上不合眼的研究(感叹20岁的时候多么的精力旺盛,也感谢热爱为生命带来的奇迹)因为我一心就是想做游戏的。

2003年大专毕业,毕业论文我做了一个RPGMaker类型的软件,并且他真的能跑起来,Delphi做的,渲染全靠GDI,还支持类似星际地图编辑器的那种“输入方式”,整个东西看起来和现在Steam上的RPGMaker差不多,当然没那么好(所以出于情怀,我原价买下了Steam上所有的RPGMaker工具),老师评价这很棒,问我是计算机几班的,这可以上学校榜样了,我说是电子系的,老师啊的一下惊叹了,然后告诉我说”很可惜,这样的话只能勉强及格了,因为这不是你们专业该做的,但是他真的很棒,我非常的喜欢“。

2004-2010年,我用当时”完全不知道是什么玩意儿“的语言(今天知道了,是Java还有OC等)+Delphi写了很多很多的诺基亚游戏和一些外包的游戏机游戏,他们很多都能很好的运作,还用C#写过Webservice,用JS写这个页游的前端,甚至还尝鲜(08年的时候)了Silverlight。甚至再后来,2009年-2010年在起凡,我还设计了一套Lua的框架,用来做当时的Moba游戏,解决了“策划任何异想天开的设计都能轻易实现”的痛点(这个在知乎已经分享了)。我写代码的这些项目当时都很好的运作着,而且其中不少项目都很成功,但是那时候,我完全都没听说过“堆”和“栈”。

2011年,我跟着一个了不起的家伙一起开始了新的工作生涯,经历的项目都很失败,但我过得很充实。这家伙是一个非常厉害的程序员,他教会了我很多很多,我也跟着他在每个项目都学习了很多真正的编程知识,我们也一起用过、研究过cocos、unity等现在主流的东西,也自己写了一个引擎,甚至用它做了10来个项目,哪些项目里,引擎和框架部分他来完成,而游戏的玩法部分服务器到客户端都由我来独立完成(事实上……那时候只有我们两个人能写代码)。在那个时候,我才真正的发现,其实我年轻的时候不过是花了30%的力气获得了70%的成就而已,抄了一条近道,很多时候编程没有基础是完全不行的,尤其是使用C++的时候。他带我见识了很多强大的程序员,我才发现自己的渺小,逐渐的,我的代码开始注意IDE右边的那条线(不能超过)了,我开始思考怎么命名了,其实命名的本意并不仅仅是给东西起个别人看得懂的名字,更重要的是你用1、2个词概括了这东西的思想,这东西的与众不同。编程最难的是Cache Invalidation和naming things,前者,我这个半吊子可能已经很难做好了,我只能凭我的经验和我的抽象能力做好后者。

今天,我已经补习了很多很多原来不懂的东西(但是依然不懂什么是堆和栈,你真别笑,就这么吊),我的编程能力有信心超过行业90%的所谓程序员(其实是因为游戏行业渣渣太多),但我知道自己成不了编程的大神,我也不会以程序员自居(也知道自己不过就是写写代码而已)。并不是因为我学不了了,而是我还记得——编程就是用来开发游戏的工具。业余,我会和程序员一样关注新技术,关注编程思想,我也会尝试用函数化编程去写点东西,也会继续研究ECS框架对游戏逻辑的帮助,但我更多的还是会去学习设计理念,包括游戏设计、UIUE设计、音乐音效设计等等,能让游戏更好的地方,这是和程序员完全不同的地方。

所以,你说真正自学入门的程序员,是一个什么体验,这就是一种最真实的体验——仿佛我的人生总缺了些什么,那些缺失的有永远不知道如何弥补,真想回到那个年代,从基础概念学起,但是最后,我还是只会做游戏。

所以,从我主观的角度来回答这个问题:

1,让我开始学程序的是——热爱,因为热爱(虽然热爱的不是计算机编程本身……),我才会去学。

2,让我能够坚持下来的是——自信,因为Delphi这么容易就让我“成功”的写出了exe,所以我才有信心坚持。

3,学习不要抄捷径——这是我学程序最大的遗憾。

文章来源于互联网:真正“自学”入门编程/程序员是种怎样的体验?

发表评论