张砷镓我的编程之路

哪家医院能治好白癜风 http://wapyyk.39.net/bj/zhuanke/89ac7.html
张砷镓:年12月3日生,陕西西安人。兴趣广泛的 玩家,中国扫雷 人,扫雷网Saolei.net站长,腾讯游戏名人堂特邀专栏作者。

本文共字,阅读大约需要29分钟

去年我写过一篇文章《我的成长故事》,介绍了自己从童年到成年这段时间里一些重要的转折点和里程碑。而贯穿我整个生命历程的核心线索,就是「编程」。

如果没有编程,就根本不会有今天的我。

在离开互联网圈、告别了紧张的之后,我走上了讲台,开始教孩子们学习编程。这几年来,我写了不少关于编程的文章:《为什么你应该开始学习编程了?》、《怎么给小学生上编程课?》、《编程到底是怎么一回事?》、《学编程到底有啥用?》……

但是,我始终没有写一篇文章来介绍:在自己的生命中,编程到底扮演着怎样的角色?编程究竟给我带来了些什么?今天,我将以「编程」为线索,再次重新梳理一下自己的成长历程,希望能给大家一些启发。

1.童年的编程启蒙

我家 台电脑是夏普的PC-,它比我的年纪还大。

在汉卡横行的年,我的父亲张时钊在这个只有8K内存、单行屏幕的机器上开发了无字库汉字系统,用纯软件方法来显示和打印汉字,轰动全国。后来获得了科技进步二等奖。现在这台PC-和当年父亲的汉字系统说明书一起,正躺在北京中关村创业博物馆里展览。

上面是一篇年我六岁时的日记,记录了父亲给我们上计算机课的经过。早在我四五岁时,父亲就向我展示了他在PC-上编写的一个走迷宫的小游戏。我可以用键盘来控制一个不断闪烁的黑点,从随机生成的地图上从屏幕左边走到右边。那块可以操控的神奇屏幕,对年幼的我来说简直就是一个奇迹。

后来父亲用自己卖汉字系统得来的钱买了一台IBMXT,开始教我BASIC语言。那时的我抱着厚厚的参考书,在键盘上用一天的时间把程序输进去,然后让父亲帮我修改,并努力搞明白每一行程序的作用。

那时候还没有Windows,只能在DOS命令行来操作电脑。cd、dir之类的命令很快被我玩得纯熟。每当父亲外出时,我就会从书架上把父亲的软盘一张张拿出来,插到电脑里去,一个目录一个目录地遍历,找找看里面是不是藏着小游戏。找到一个,就赶紧copy到硬盘上自己的目录里去。因为DOS下的常规内存只有K,而有不少游戏需要非常苛刻的内存条件才能运行,于是我又无师自通了对config.sys和autoexec.bat进行优化……

后来Windows出现了,我很好奇这个东西是怎么做出来的,于是尝试着用QuickBasic来写一个。可当时的我只能画出一些简单的图标和界面,但怎么也实现不了拖拽、菜单之类的效果,只好悻悻作罢。

年高考,我没有考上中科大的少年班。父亲带我来到西北大学,拜见当时计算机系的主任张文恺教授,张教授给我出了一个算法题,因为对题目比较熟悉,他还没说完我就开始敲代码,很快就完成了。张教授很吃惊,破格录取了我。

如果我当年不会编程,就根本没有机会迈入大学的校门。自然,也就不会有后来的故事了。

2.自己写游戏玩

在大学里,我成立了一个水滴工作室,还自学HTML+CSS做了一个网站:

没游戏玩,我索性就自己写游戏玩。我用了大概一周时间,用QuickBasic写了一个模拟运营的游戏《市长大人》:

这个游戏里有无数相互作用影响的变量(农业、人口、商业、消防、安保、计生……),还有很多随机发生的事件(火灾、地震、罢工……),后期还可以研发出各种逆天科技。最终是被轰下台还是升职加薪,全看你的运营能力。因为有存档功能,你也可以用S/L大法来测试不同的选择……

写完游戏后,我就把它装到机房的硬盘里。不时会有同学去玩,然后评头论足一番:这里不平衡、那里不科学……我收集到反馈后,就对游戏作出调整,然后再发布一版。这应该算是我有生以来的 个「公开发布」的程序产品了。

后来动画片灌篮高手在校园热播,我又做了一个经营+模拟的游戏《灌篮高手》:

恩,为了方便那些还不会用FPE的同学,我还干脆做了一个存档修改作弊器:

编程、游戏和网络文学,陪伴我度过了百无聊赖的大学时光。可惜的是,当年的源码早已遗失,现在只能在DOXBOX模拟器里运行编译好的EXE文件来回味了。

3.初入职场

年大学毕业之后,我跟着大学里最要好的同学张立平来到了北京四中网校陕西分校。网校是怎么一回事呢?其实就是把老师上课的PPT、视频打包成一个文件,然后放在服务器上,学生在家里装一个客户端,通过电话线拨号链接到服务器,把这些文件下载到自己电脑上学习。

我的 份工作,是从上门给人装软件的技术员、接电话的客服代表开始的。那时候的电脑普及程度远远不如现在,很多人其实都是不会操作的。我经常通过电话远程指挥连鼠标都没摸过几次的爷爷奶奶们操作软件,你能想象那种场面吗?一通电话下来,小命都快没了。我就奇怪了:这些说明书上不是都有吗?为什么他们还不会呢?

后来我发现,问题原来就出在附送的说明书上。说明书本来是记录操作软件的程序的,然而编撰者却删繁就简、省略了很多中间步骤,还整篇都充斥着各种术语,这分明是技术人写给技术人看的,终端的小白用户是根本看不懂的。于是我重新设计了每一个步骤都配上图、通篇大白话的说明书,并把所有已知的问题和详细解决步骤都列在后面,客服电话一下子就少了很多。

我还有一个习惯,就是把自己的工作程序编写成详细文档。这样一来方便自己查阅、不用记忆;二来也分享、培训、交接都很方便。如果一个岗位的工作程序只装在你的脑子里,那么每来一个新员工就得培训一次,太累了不是?再者,如果这个岗位只有你能干,别人都干不了,工作离开你就不转了,那么你还有升职的可能性吗?

我始终坚信:一个人的价值,不在于他得到过些什么,而在于他留下了些什么。把自己的想法、工作流程编成程序,时刻为了自己离开、甚至死亡而做好准备,让有价值的程序独立于自己而存在并持续发展,这是一个成熟者应该做的事情。

不久后,我成了技术部的leader。领导想做一个教学资源平台,但是我只会用HTML+CSS做静态的网站。于是我决定去深圳找一个专门做开发的大学同学,在他的宿舍里闭关半个月,硬生生学会了ASP+MSSQL数据库。

会用HTML+CSS表现内容,会用ASP操作逻辑,会用数据库存储数据之后,我就像是一下子打通了任督二脉,觉得自己什么东西都可以做出来了。后来跟着领导创办了脑图英语,做了教学资源平台、远程学习平台、个性化学习解决方案……

因为学生分布在全国各地,为了解决当时「北网通、南电信」的屏障,我想到了两个运营商各部署一台服务器,然后通过测网速来选定最快的服务器提供资源的办法。后来我才知道,原来这套逻辑这就是现在用来支撑各视频和直播网站的CDN技术。

带领技术部整理资源、制作FLASH课件的过程中,我发现大量的操作都是同质重复的。于是用按键精灵给每类工作都编写了脚本,只把需要人工操作的部分空出来,完全重复的工作统统自动完成。就这样,我带着技术部四五个兄弟,每天完成数以万计的资源整理和开发工作……我还写了一个工作量在线统计排行,每天搞搞比赛什么的。

编程把我从枯燥无味的重复工作中解放了出来,获得了大量空闲的时间。那我用这些时间都干了些什么呢?当然是玩游戏了。

4.用编程思维玩游戏

我深入研究的游戏很多,而扫雷是 款让我开始小有名气的游戏。年还没有Clone和Arbiter这样支持录像的专业扫雷软件,大家都是用屏幕录像来参与排行的。在努力练习进到70秒后,我一度遇到了瓶颈,再也无法提升成绩。于是我想到了用变速齿轮调慢系统时间来作弊的方法,并借此在一片质疑声中拿到了 。

为了让作弊的录像看起来更真实,我必须用很慢的速度进行鼠标操作,这样在加速之后才能看起来是正常速度。这样一来,我发现自己有了很多时间来观察和思考局面了,于是我开始思考:同样的局部,怎么用最少的点击数和最少的移动距离来完成?就这样,我发现自己之前无意识地操作虽然看起来飞快很流畅,但是其中很多都是废操作,根本没有用!

在把局部操作 化的同时,我不知不觉练成了一种能力:在进行当前操作的同时,开始预读下一个局部并思考出接下来的操作。这样就节省了之前在处理完一个局部后,在思考下一个局部怎么处理时的停顿时间,让两个局部的操作可以连贯起来了。

原来,我不在不知不觉间,把编程时那一套性能优化的思路拿过来应用了。分析日志定位性能瓶颈;再通过优化算法、同步改异步来提升性能……慢慢地我发现,我根本不需要用加速齿轮这样的东西,就可以SUB60、甚至SUB50!

很快,我就凭自己真实的水平,拿到了货真价实的 。我就此写了一篇《走向中国扫雷 之路》,完整地记录了自己从作弊 到实力 的进步历程。随后我又创办了中国扫雷网(


转载请注明:http://www.xxcyfilter.com/zyxz/zyxz/11065.html