电脑爱好者
爱编程

导航

 

  写代码20多年的工程师, 可以回答吗?

  0: 小学时期

  设备:红白游戏机 Laser-310

  语言:BASIC语言

  ## 在红白机上写BASIC ##

  我最早的编程是在红白游戏机上, 我可不是写FC游戏,我没那么老:) 。 那是小学的时候买了一台红白游戏机,机电部46所研制的, 可以配一个键盘,就可以当电脑用了。

  不记得了那时花了多少时间在这个玩具上, 主要是用BASIC写各种小程序。那时这个东西没有磁盘驱动器, 需要用录音机把程序录下来, (没错,就是磁带录音机)。 下次开机就可以用磁带Load回来:)

  能记得当时写的程序有:

  通讯录, 输入姓名缩写, 查找电话号码。 把老爸的通讯录全部输入进去了。

  随机产生音符,起名为胡编之歌

  用ascii字符打印动画, 比用_ - ^ 等字符打印出快速移动的虫子等等……

  当时我的辅导书就是从图书馆借来的谭浩强的《Basic语言结构化编程》。

  ## Laser-310 ##

  还要提的是小学学校里有计算机课,用的是Laser-310. (知乎上有问答说这个:LASER310 是什么设备? - 科技)

  计算机课上了几次课之后就停课了,不过我还是经常找老师要钥匙去玩。 Laser-310上主要就是Basic语言, 其他同学都不喜欢玩, 都围着旁边的那台中华学习机,因为可以打游戏(挖金子)。

  1:中学时期

  设备:PC/AT 、286

  语言:DBASE3FoxBASE+

  ## 帮老爸fix bug ##

  中学时期, 经常去老爸单位玩电脑, 那时操作系统都是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的规律。

  BBS站长看到我这个服务挺受欢迎的, 就联系我说, 你别用robot爬去bbs的数据了,直接把功能加到BBS系统里吧。 我很开心, 找了个晚上,去了计算中心BBS站长的办公室, 当着他的面把程序改好了。 转天早上,发现大事不好了, 所有登录过BBS用户的ID都变成大写字母了, 都是因为我的程序的BUG - 为了比较字符串, 我把一个全局的用户ID变量改为了大写字母。 还好站长机智,及时的找到了备份恢复了数据。

  * 2015年9月6日凌晨更新 *

  感谢各位朋友的支持, 我会坚持写下去。回答几个朋友的问题吧:

  有没有秃顶? 我的头发渐少了,但是还不秃顶。基因问题吧, 我有几个同学已经秃顶了,感觉比我老10岁……

  现在在做啥? 我加入了一家创业公司,做Android相关。现在还在写代码, 写Java、C/C++、Python, 之前没有前端工程师的时候,也写了PHP/Javascript/CSS.

  网友mm后来怎么样了? 发现大家都挺喜欢八卦的嘛。 后来和mm相处很好啊,也会经常见面聊天,一起去肯德基吃冰激凌,很开心的一段时光。是很好的朋友, 最后并没有走到一起。

  从小编程家里有人引吗? 并没有, 爸妈都是工人没有计算机基础。纯粹是因为我喜欢打电子游戏,进而想了解电子游戏的原理。 那时候并没有很多可以玩的东西,可以编程的游戏机让我鼓捣了整个暑假。

  是数学系的吗? 恩,本科是数学系的,研究生读了计算机。

  ## “不喜欢” ##

  看来大家都挺喜欢聊八卦的, 我再多写一些。 不过我会注意围绕原问题“写代码的体验”。

  回来说大一的事儿, 刚刚上大学, 我开始追高中时暗恋的一个女生,打电话、送礼物不提了。打印排版了喜欢的网络小说《第一次的亲密接触》给她, 学习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没用过”。

  全能程序员交流QQ群290551701,群内程序员都是来自,百度、阿里、京东、小米、去哪儿、饿了吗、蓝港等高级程序员 ,拥有丰富的经验。加入我们,直线沟通技术大牛,最佳的学习环境,了解业内的一手的资讯。如果你想结实大牛,那 就加入进来,让大牛带你超神!

posted on 2015-09-24 17:36  刘星宇  阅读(667)  评论(0编辑  收藏  举报