来自:知乎 链接:http://www.zhihu.com/question/35100740 已按知乎版权要求注明信息 问题:写十年的代码是一种什么样的体验? 发现组织内有不少写了十年代码的工程师,作为一个写了5年代码的码农,想知道写十年的代码是一种什么样的体验? 回答者:马剑,软件工程师 写代码20多年的工程师, 可以回答吗? 0: 小学时期 设备:红白游戏机 Laser-310 语言:BASIC语言 ## 在红白机上写BASIC ## 我最早的编程是在红白游戏机上, 我可不是写FC游戏,我没那么老:) 。 那是小学的时候买了一台红白游戏机,机电部46所研制的, 可以配一个键盘,就可以当电脑用了。 不记得了那时花了多少时间在这个玩具上, 主要是用BASIC写各种小程序。那时这个东西没有磁盘驱动器, 需要用录音机把程序录下来, (没错,就是磁带录音机)。 下次开机就可以用磁带Load回来:) 从网上帖子(【私人博物馆】游戏机篇-01:当年的黑科技国产红白机)找到到了这个游戏机和键盘的照片: 游戏机配的键盘(我当时那个是黑色的): 用来连接录音机的接口: 能记得当时写的程序有: 通讯录, 输入姓名缩写, 查找电话号码。 把老爸的通讯录全部输入进去了。 随机产生音符,起名为胡编之歌 用ascii字符打印动画, 比用_ - ^ 等字符打印出快速移动的虫子等等。。。。 当时我的辅导书就是从图书馆借来的谭浩强的《Basic语言结构化编程》。借来的图: ## Laser-310 ## 还要提的是小学学校里有计算机课,用的是Laser-310. (知乎上有问答说这个:LASER310 是什么设备? - 科技) 计算机课上了几次课之后就停课了,不过我还是经常找老师要钥匙去玩。 Laser-310上主要就是Basic语言, 其他同学都不喜欢玩, 都围着旁边的那台中华学习机,因为可以打游戏(挖金子)。 1、中学时期
中学时期, 经常去老爸单位玩电脑, 那时操作系统都是DOS, 办公软件是WPS、CCED (可以理解为DOS上的国产EXCEL),这些不是写代码暂且不提。 那时的数据库软件主要是DBASE3,后来升级到FoxBASE . 都是交互式的数据库管理软件, 和后来的微软的ACCESS类似, 它不只是数据库,还包含了交互界面的设计,报表的展示等功能。 写代码的过程主要还是学习、继续用FoxBASE 完善我的通讯录程序(为什么想不出做别的好玩的。。。)。 值得一提的是, 老爸单位打印报表程序出了bug了,打印打错了, 是我帮着修好的。 2、大学时期 设备:奔腾处理器 PC 语言:C语言/C 语言/HTML/XML/VRML ## 一个绘图程序带来的惨案 ## 97年上了大学宿舍6个人合买了一台电脑,CPU:奔腾 mmx 166Mhz, 内存:16M, 硬盘:2.1G。当时6个人一起去攒电脑,花了7000。 打车运回来的时候,和司机师傅说,“师傅慢些开, 我们买了电脑,别颠坏了" ... 6个人平均分配上机时间, 一人一天。 写了一个简单的VisualBasic程序,每天弹出来应该由谁来上机。 大学上来学的是C语言,用Turbo C: 一天,我刚刚用C写了很酷一个图形程序,兴冲冲的跑回宿舍,和同学说, "来, 我给你演示一下我的程序", 说着把3.5寸盘插入电脑, 运行~~。 同学们都挤过来看,然后,就没然后了, 屏幕黑掉了, 机器无法起动了。 拿到维修处被告知显卡烧了(到现在我还不明白为啥我的程序会烧掉显卡)。带来的后果很严重的。 维修电脑花了一个星期, 为此我要偿还因我而影响的其他同学的上机时间。 之后的一个月,我都没能用宿舍的电脑 :( ## BBS用户跟踪系统 ## 从大二开始,结识了 GNU/Linux, 开始使用 GCC 编译C代码, 开始用VI写代码。 没想到17年后,我依然在使用这些伟大的工具。 依然记得第一次打开VI, 完全不知道怎么退出。 只能用 CTRL Z 退到后台,然后再 kill 掉。 那时候学校里开始流行BBS, 宿舍还没有通网络, 上BBS需要到图书馆机房。那时候上BBS使用TELNET协议的,现在的新水木也还是支持TELNET协议的,界面看起来是这样的: 上BBS可以发文章, 阅读文章,最重要的是可以找人灌水聊天 :P. 我猜各位应该没用过BBS的聊天室功能, 也不知道//bearhug, //puke 是什么意思。 那时候很喜欢和一个同校的网友mm聊天, 不过因为上机时间不同, 总是碰不到她上BBS. 我就用C写了一个robot程序,登陆bbs, 每分钟查询一下她的在线状态。 如果她上线了,就把她的IP地址发到我的摩托罗拉BP机上。 当然她下线了,也要发个消息到BB机,免得我跑到图书馆她已经离开了。 a) 为什么要发IP地址?这样的话,我能看出来她从哪里上网,图书馆还是计算中心, 这样我就可以偶遇她了:P b) 为什么要发到BP机,不用手机短信吗? 那时候没有手机 :( 不只是我没有, 大家都没有。有模拟信号的大哥大,买不起啊。 BP机是最方便的通信工具了。盗一个图: c) 为什么用C写, 不用其它脚本语言? 首先那时候C语言我最熟,其次Python还没有流行呢,Python 2.0 是2000年才发布的。 Perl语言那时还是比较流行的, 可惜那时没花时间好好学。 d) 程序跑在哪个机器上? 宿舍的机器不能上网的, 肯定不行。 答案是数学学院的一个老师,特别好,组织了一个Linux俱乐部, 我们有一台共享的Linux主机,可以telnet上去写程序。 e) 程序怎么发到BB机上呢? 这个问题问得好, 当时各地的电话局(那时还不叫联通移动)会在自己的网站上提供给BB机发信息的功能, 我只是找到一些好用的发了一些HTTP请求而已。 故事还没有完, 我写了那个跟踪程序其实不只是跟踪一个人呢, 其实站上的所有人都跟踪了,数据都保存下来了。 我当时想别只我自己一个人用啊, 就写了一个网页服务, 所有人都可以查看任何人的上BBS的时间,可以看到柱状图表,总结网友的上BBS的规律。 * 2015年9月6日凌晨更新 * 感谢各位朋友的支持, 我会坚持写下去。回答几个朋友的问题吧:
## “不喜欢” ## 看来大家都挺喜欢聊八卦的, 我再多写一些。 不过我会注意围绕原问题“写代码的体验”。 回来说大一的事儿, 刚刚上大学, 我开始追高中时暗恋的一个女生,打电话、送礼物不提了。打印排版了喜欢的网络小说《第一次的亲密接触》给她, 学习Photoshop, PS了照片做成卡片寄给她, 这些也不提了,和写代码没关系。 大一暑假的时候, 我把宿舍的电脑搬回了家,用VB写了个小程序。 邀请女生来家里玩, 让她试一下写的程序。一开始是一些酷炫的动画, 然后是一些智力选择题, 最后一道题是“顺便问下, 我喜欢你, 你喜欢我吗?” 下面两个按钮, “喜欢”, “不喜欢”。 女生看到这里, 停了一下,然后去点“不喜欢”, 鼠标刚刚挪过去, 那个按钮就跑开了, 她试了几次都追不上。 这时我在想, “放弃吧, 点另外一个按钮吧”。 没想到她说,“我不想选了,我要走了”。 这件事情教育我, “做软件的时候, 不要强迫用户接受你的设计”。 ## 刷榜 ## 从大二开始,一些门户网站开始多了起来, 网上用户也多了起来。 有一个门户网站推出了在线交友网站,就是一个非常粗糙的facebook吧, 可以上传照片, 写简介。每个用户的profile页面都有一个访问计数器。 首页默认按照访问计数器排名。 那时的网站很基础的, 没有CAPTCHA的, 刷榜很简单的。 我写了一个C程序, 把自己刷成了第一名, 我又给自己传了张布拉德皮特的照片, 引来了很多女网友的搭讪。 我舍友看到了,问我你怎么搞的,帮我也刷下。结果排行榜前几名都是我们宿舍的。我不会告诉你们的, 我真的见了一个女网友,她是外语学院的,她告诉我她们外院男生太少了。 ## 做中国的HOTMAIL ## 在我大三的时候, 正值dot com创业火爆。 有一对海归夫妇回国来创业,据说他们是学校老师的子女。 他们通过关系找到了学院的老师,求推荐一些学生帮忙。 老师就推荐了我们Linux俱乐部的4个小伙伴。 (值得一提的是, 老板之前在美国一家公司打工, 有另外两个同事和他一样回国创业, 其中一个是艺龙,另一个是亿唐。) 第一次见到老板和老板娘, 他们和我们讲,“我们要做中国的Hotmail!” 听完我们振奋了,决定加入。 四个人根据BBS ID的首字母,还自取名为BRAD小组。 CTO是从美国回来的, 我当时很崇拜他(现在也很崇拜)。 他是清华没读完就去美国读书了, 在美国时搭建了http://bbs.mit.edu。他设计了整个Webmail系统的架构。 说到架构,可以提一下,不感兴趣的可以跳过这一段。FreeBSD系统,前端用C写FastCGI Apache, 后端用C写RPC server, 存储用文件系统。 选择FreeBSD因为当时Linux的性能还不太强, 选择C开发,因为性能好, 省服务器就是省钱。 用C开发Web Mail, 现在看来是不是难以相信? 在当时的硬件性能可不比现在, 价格还高的很。 所以当时就面对一个很难的问题:C语言很容易内存搞错而崩溃, 而且FastCGI会要求服务进程一直保持运行, 这对代码的可靠性和稳定性要求都很高,因为一旦出错, 整个服务就会挂掉。 他当时向我们极力推荐Emacs,我现在少数的Emacs知识就是他教的。 可惜我看到他输入Emacs命令时鸡爪状的手,决定还是坚持vim阵营。 还有一个我印象最深的,这个和写代码无关。 他特别喜欢在大家吃饭的时候讲恶心笑话,以至于一段时间内,我都学坏了, 到处讲恶心笑话。 感兴趣的话,可以百度下“咬不断 笑话”,就知道他讲的多恶心了。 还在上课的时候, 我们就每天中午下课后,在团委活动室集合,叫上西南村的外卖,一定要点一份“锅塌里脊”, 一边吃饭,一边讨论开发的细节, 下午没有课的话,就一下午都在写代码。因为写代码, 我逃了几次政治课,很不幸被点名了, 成为了我大学期间唯一一门挂了的课。 放寒假的时候,4个小伙伴都没有回家,就10点多起来,直接打车到公司, 写代码写到晚上12点。打车回学校睡觉。 至今我可以徒手敲telnet命令到smtp服务器或者pop3服务器,发送和接收邮件, 邮件协议记得太深了。 我还记的我当时藏了一个彩蛋在代码中,邮件中搜索某些特殊字符,就会出现员工名单。后来被新来的一个哥们给移除了。 就这样,4个大三的学生加上一个大四的师兄, 半年内服务上线, 4台服务器支持用户30w。 回想起来,那时的我们虽然还是学生,算是实习生, 但做的事情完全和现在创业做的是一样的,甚至更加纯粹, 觉得在做有趣的事情就够了, 钱多钱少的没关系,更没有想过什么股票期权。 这个公司后来怎么样了? 2000年的时候,互联网泡沫破碎了。这家公司很快转型, 做企业和校园邮件服务。我最近惊奇的发现,这家公司还存在呢。 * 2015年9月11日晚更新 * ## 黑客和假钞的故事 ## 大四第二学期, 那时刚刚考完研,一个和我很熟的老师找到我,让我帮他做个东西。 先说说这个老师, 这个老师在我心中就是那种真正的黑客, 记得大一刚刚买来Modem,几个人都搞不定拨号上网, 我们找来这个老师帮我们看看, 只见他在键盘上运指如飞,啪啪啪啪几下, Windows超级终端中快速闪过一些文字之后, 他已经已经连上了学校BBS,看了下十大热门, 检查了几封邮件,回复其中一封,最后退出了,并断开了连接。和我们说道, “你们的猫没有问题”。 这一切大概花了1分钟, 其间没碰过一下鼠标。 其实当时我并没有 看明白他在干什么, 这只是事后我有了经验之后才理解到的。 那时这个老师长长的头发,不修边幅的样子, 就更符合心目中黑客的形象。 后来我们上了他讲的课, 讲的是数学软件Mathematica, 他讲的并不好,很多同学表示听不明白。 但我能看出来,他懂得很多, 只是不能讲出来,或者不屑讲出来。 有一次他给大家留上机作业题, 我当时用了一个很特别的思路,很快做出那道题,给他留下了印象。 时间回到大四第二学期, 我去他在校外的一个办公室找到他, 他换了个人似的, 穿着西服皮鞋, 头发也柔顺飘柔起来。 老师和我寒暄了几句之后,就从抽屉中拿出两叠百元大钞, 我眼睛一亮。 结果老师对我说: “这钱不是给你花的, 是测试用的。我要请你做的是伪钞识别算法设计。 这个算法会用到自动售货机中的。 这里还有一个传感器,可以扫描钞票得到两个信号:一个是光信号, 一个是磁信号。你要通过这两组数字信号判断这个钞票是真钞还是假钞。” “左边这一叠是真钞,你拿去花了也无妨。 右边这一叠可千万不能花掉或者丢掉!这个是多少钱都买不来的假钞, 公安局已经登记过了,一定要还回来。” 这个问题非常有趣, 我很容易找到了班上的另外一个数学大牛帮忙。 后面的两个星期里,我们把学到的各种算法都用上了,什么神经网络、随机过程、遗传算法。 可惜后来我因为个人的原因要去北京,没法继续研究了, 留下我的同学孤军奋战。 他在两个月后给出了一个相对不错的解决方案。 不过不清楚最后有没有应用到自动售货机上。 ## TCP/IP ## 讲过笑话吧, 大学快毕业前,开始找工作了。 一个同学去面试,人家问他, “TCP/IP知道吗?”。 这个同学答道:“TC用过, PIP没用过”。 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|