P2P通讯有什么强大的开源即时通讯软件代码

写了十年代码是一种怎样的体验?
发现组织内有不少写了十年代码的工程师,作为一个写了5年代码的码农,想知道写十年的代码是一种什么样的体验?
159 个回答
写代码20多年的工程师, 可以回答吗?0:
小学时期 设备:红白游戏机 Laser-310 语言:BASIC语言## 在红白机上写BASIC ##我最早的编程是在红白游戏机上, 我可不是写FC游戏,我没那么老:) 。 那是小学的时候买了一台红白游戏机,机电部46所研制的, 可以配一个键盘,就可以当电脑用了。不记得了那时花了多少时间在这个玩具上, 主要是用BASIC写各种小程序。那时这个东西没有磁盘驱动器, 需要用录音机把程序录下来, (没错,就是磁带录音机)。 下次开机就可以用磁带Load回来:)从网上帖子()找到到了这个游戏机和键盘的照片:游戏机配的键盘(我当时那个是黑色的):用来连接录音机的接口:用来连接录音机的接口:能记得当时写的程序有:
通讯录, 输入姓名缩写, 查找电话号码。 把老爸的通讯录全部输入进去了。
随机产生音符,起名为胡编之歌
用ascii字符打印动画, 比用_ - ^ 等字符打印出快速移动的虫子等等。。。。当时我的辅导书就是从图书馆借来的谭浩强的《Basic语言结构化编程》。借来的图: ## Laser-310 ##还要提的是小学学校里有计算机课,用的是Laser-310. (知乎上有问答说这个:)计算机课上了几次课之后就停课了,不过我还是经常找老师要钥匙去玩。 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寸盘插入电脑, 运行~~。 同学们都挤过来看,然后,就没然后了, 屏幕黑掉了, 机器无法起动了。 拿到维修处被告知显卡烧了(到现在我还不明白为啥我的程序会烧掉显卡)。带来的后果很严重的。 维修电脑花了一个星期, 为此我要偿还因我而影响的其他同学的上机时间。 之后的一个月,我都没能用宿舍的电脑
:(一天,我刚刚用C写了很酷一个图形程序,兴冲冲的跑回宿舍,和同学说, "来, 我给你演示一下我的程序", 说着把3.5寸盘插入电脑, 运行~~。 同学们都挤过来看,然后,就没然后了, 屏幕黑掉了, 机器无法起动了。 拿到维修处被告知显卡烧了(到现在我还不明白为啥我的程序会烧掉显卡)。带来的后果很严重的。 维修电脑花了一个星期, 为此我要偿还因我而影响的其他同学的上机时间。 之后的一个月,我都没能用宿舍的电脑
:(## BBS用户跟踪系统 ##从大二开始,结识了 GNU/Linux, 开始使用 GCC 编译C代码, 开始用VI写代码。 没想到17年后,我依然在使用这些伟大的工具。 依然记得第一次打开VI, 完全不知道怎么退出。 只能用 CTRL+Z 退到后台,然后再 kill 掉。 那时候学校里开始流行BBS, 宿舍还没有通网络, 上BBS需要到图书馆机房。那时候上BBS使用TELNET协议的,现在的新水木也还是支持TELNET协议的,界面看起来是这样的:上BBS可以发文章, 阅读文章,最重要的是可以找人灌水聊天 :P. 我猜各位应该没用过BBS的聊天室功能, 也不知道//bearhug, //puke 是什么意思。
上BBS可以发文章, 阅读文章,最重要的是可以找人灌水聊天 :P. 我猜各位应该没用过BBS的聊天室功能, 也不知道//bearhug, //puke 是什么意思。
那时候很喜欢和一个同校的网友mm聊天, 不过因为上机时间不同, 总是碰不到她上BBS. 我就用C写了一个robot程序,登陆bbs, 每分钟查询一下她的在线状态。 如果她上线了,就把她的IP地址发到我的摩托罗拉BP机上。 当然她下线了,也要发个消息到BB机,免得我跑到图书馆她已经离开了。 a) 为什么要发IP地址?这样的话,我能看出来她从哪里上网,图书馆还是计算中心, 这样我就可以偶遇她了:Pb) 为什么要发到BP机,不用手机短信吗? 那时候没有手机 :( 不只是我没有, 大家都没有。有模拟信号的大哥大,买不起啊。
BP机是最方便的通信工具了。盗一个图:c) 为什么用C写, 不用其它脚本语言? 首先那时候C语言我最熟,其次Python还没有流行呢,Python 2.0 是2000年才发布的。 Perl语言那时还是比较流行的, 可惜那时没花时间好好学。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变量改为了大写字母。 还好站长机智,及时的找到了备份恢复了数据。* 日凌晨更新 *感谢各位朋友的支持, 我会坚持写下去。回答几个朋友的问题吧:有没有秃顶? 我的头发渐少了,但是还不秃顶。基因问题吧, 我有几个同学已经秃顶了,感觉比我老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是从美国回来的, 我当时很崇拜他(现在也很崇拜)。 他是清华没读完就去美国读书了, 在美国时搭建了。他设计了整个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年的时候,互联网泡沫破碎了。这家公司很快转型, 做企业和校园邮件服务。我最近惊奇的发现,这家公司还存在呢。* 日晚更新 *## 黑客和假钞的故事 ##大四第二学期, 那时刚刚考完研,一个和我很熟的老师找到我,让我帮他做个东西。 先说说这个老师, 这个老师在我心中就是那种真正的黑客, 记得大一刚刚买来Modem,几个人都搞不定拨号上网, 我们找来这个老师帮我们看看, 只见他在键盘上运指如飞,啪啪啪啪几下, Windows超级终端中快速闪过一些文字之后, 他已经已经连上了学校BBS,看了下十大热门, 检查了几封邮件,回复其中一封,最后退出了,并断开了连接。和我们说道, “你们的猫没有问题”。
这一切大概花了1分钟, 其间没碰过一下鼠标。 其实当时我并没有 看明白他在干什么, 这只是事后我有了经验之后才理解到的。 那时这个老师长长的头发,不修边幅的样子, 就更符合心目中黑客的形象。 后来我们上了他讲的课, 讲的是数学软件Mathematica, 他讲的并不好,很多同学表示听不明白。 但我能看出来,他懂得很多, 只是不能讲出来,或者不屑讲出来。 有一次他给大家留上机作业题, 我当时用了一个很特别的思路,很快做出那道题,给他留下了印象。时间回到大四第二学期, 我去他在校外的一个办公室找到他, 他换了个人似的, 穿着西服皮鞋, 头发也柔顺飘柔起来。 老师和我寒暄了几句之后,就从抽屉中拿出两叠百元大钞, 我眼睛一亮。结果老师对我说:
“这钱不是给你花的, 是测试用的。我要请你做的是伪钞识别算法设计。 这个算法会用到自动售货机中的。 这里还有一个传感器,可以扫描钞票得到两个信号:一个是光信号, 一个是磁信号。你要通过这两组数字信号判断这个钞票是真钞还是假钞。”
“左边这一叠是真钞,你拿去花了也无妨。 右边这一叠可千万不能花掉或者丢掉!这个是多少钱都买不来的假钞, 公安局已经登记过了,一定要还回来。 ”这个问题非常有趣, 我很容易找到了班上的另外一个数学大牛帮忙。 后面的两个星期里,我们把学到的各种算法都用上了,什么神经网络、随机过程、遗传算法。可惜后来我因为个人的原因要去北京,没法继续研究了, 留下我的同学孤军奋战。 他在两个月后给出了一个相对不错的解决方案。 不过不清楚最后有没有应用到自动售货机上。## TCP/IP ##讲过笑话吧, 大学快毕业前,开始找工作了。 一个同学去面试,人家问他, “TCP/IP知道吗?”。 这个同学答道:“TC用过, PIP没用过”。&待续&
【多图预警】【20年码农】70后老人,来自皖南山区纯的农村娃,大学之后才有的编程经历受前面一个兄弟的启发,截点图说说自己的这段历程,后面有时间再补充文字:)&&&&&&&&&已接受大学同学的建议,加上了写作的经历&&&&&&&&1995年第一次接触到计算机编程,机械制造专业当然是FORTRAN了~~~依稀还记得第一次上课前天晚上对床对着一张键盘图狂练指法的样子。。。讲解FORTRAN的是一个香气袭人的美女老师(晚上男生宿舍的话题常常是她),但FORTRAN这门课程确实恶心了我。。。如果要问那个时候的体验恐怕也就是“枯燥”“心存恐惧”了吧?想想“缺省”“回车”“控制台”这些陌生的术语,能不望而生畏才怪呢!那个时候每次上机之前,都会先在作业本上写好代码,然后带着5寸软盘或者3寸软盘上机房。现在这种软盘早已绝迹了,上次还见知乎上有人问Windows里的盘符为什么从C:而不是从A:开始,这提问的人肯定是80后了。。。上机房的时候必须先停下来穿鞋套,机房里最初是一些286机器,后来有了一些386,每每想起机房,都是白色的灯光、白色的桌面、软软的键盘,以及那堆机器特有的气味。。。对了,editor.exe是那时候最帅的编辑器了(此前一直用的一个程序):后来,我开始迷上了QBASIC,它可以画图,这是我感兴趣的原因。另一个不经意的时间,画法几何老师办了一期AutoCAD与C语言辅导班,抱着对C语言的神往,我报名了,并从此不可收拾的喜欢上了C。兴趣是最大的老师,我要是一头骡子,前面挂着胡萝卜,就算背负着再重的货物,我也愿意一往无前。C语言真的是太棒了,可以检测到press any key,还可以settextcolor,甚至还可以initgraph哦~~~我对交互型的东西比较感兴趣,一开始模仿各种书籍上的代码,尝试着实现文本编辑器的一些功能(菜单、编辑、存取、光标),再后来直接跪拜在图形编程,熟悉了鼠标编程、中文编程、定时器编程。能体会到在DOS的窗口里出现鼠标箭头光标的欣喜么??能体会到在DOS的窗口里出现大中华的汉字的欣喜么??能体会到在DOS的窗口里拖曳十字架画图的欣喜么(没错!模仿的AutoCAD,因为我是机械专业嘛)??那个时候,我已经是系计算机编程大赛的一名积极分子,有一次获准用系办公室的一台386(用来打印的)调试程序,当天晚上我直接拉上同学Y,一起编程弄了个通宵。。。1997年接触到面向对象编程,当时给自己定了一个任务,就是把原来实现的那一堆GUI组件,封装成自己的Window、Text、Menu。。。也因此熟悉了OOP和Borland C++:1997年那个暑假应该是我连续上机时间最长的时候,这都归功于Y同学买了一台486的电脑,当时Y同学和C同学一起在学校外面租了个房子(我没出去住哦!!我只是因为和Y关系很铁,所以经常去用他的电脑)。然后大家轮流用电脑,Y用电脑看片,接下来我编程,然后是C同学用电脑玩游戏。注意这个顺序“Y同学——我——C同学”,由于C同学经常排在我后面,所以从不热爱学习的他后来都熟悉了Borland C++的修改状态的标志(好像是个类似于*的符号),一旦那个标志消失了,他就觉得我已经保存了,可以轮到他玩游戏了。。。值得一提的是,我写的那一坨GUI代码,后来委托开电脑房的Y同学给我打印出来了,留着自己欣赏。Y同学当时特意给那一坨加了一页封面,打上了一行标题:FakeWindows!至于被模仿的对象,那自然是DOS下的Windows 3.1了:1998年学习了微机原理,写了一些汇编,现在都忘光了~~~然后毕业设计用到了foxpro,然后外调我的C程序:1999年,已经上了研究生,开始用上了vc5.0,后来一直用vc以及mfc很多年:2000 开始接触web编程,开始是写html,后来关注一些动态的技术,除了vbscript和flash,后来我发现了asp以及interdev。为了快速掌握asp,我为自己又定了一个任务,为大学班级做了一个同学录,甚至还做了一个聊天室。那时候有很多免费的服务器空间,但是也不稳定,好好的没准哪天就不提供服务了。后来我直接将同学通讯录放在大学母校的服务器上,一直放了好多年~~~2001年参加工作,开始接触到java和jsp,那个时候没有成形的MVC框架,所以很多类似框架的东东都是自己撸:那个时候javascript控件很少,一般自己撸个树形控件,就很开心了,然后各个项目里都抢着用,满足感倍增!那个时候javascript控件很少,一般自己撸个树形控件,就很开心了,然后各个项目里都抢着用,满足感倍增!刚参加工作的那几年确实很开心,没事就逛逛水木BBS、一塌糊涂、CSDN。在水木上也找到一些好码友和mm ^_^期间帮好友们做过同乡会网站、蛋糕网站、电子元器件网站、采编发网站,ASP/JSP哪个顺手用哪个!2002年女朋友毕业了,我正式结束了一个人撸代码的时代,每个周末年轻的我们总是流窜在各大购物商场和小商品市场。。。GF负责挑东西买东西,我负责提包陪逛,那个时候的我,我常常说是“行尸走肉”,因为我脑子里经常在想着那堆代码、那些网页、新的idea。。。等晚上一回到我们的那个温馨小家,我马上继续将白天脑子里面的东西序列化成代码。。。2005年左右,发现java也有IDE了!!!中间的5年,以做项目为主。基本是Java Web包打天下,自己撸过MVC、DBCP、ORM以及RPC框架,但都不怎么深入,让小伙伴们顺利用上、少投诉就OK了。后来知道了Spring、jQuery、apache等开源项目,就基本上把那堆轮子扔掉了。。。2014年搞spark转道scala:我想申明的是,我是一个感性的程序员,因此总是难免有点念旧,经常想起DOS时代的:杀毒我们用KV:更多的是这个:更多的是这个:依稀记得UCDOS:老求的WPS(我不会告诉你我知道万能密码是^QIUBOJUN)当然还有《仙剑》:C&C:同志们,我想告诉你们,最初我是在电视机上接着操纵杆玩的,你们信么?真的是哦~~~~以及98年左右的OICQ:嗨!看帖的那位,说你呢!见到上古时期就着粗像素看H照片的前辈,咋能不点赞呢?!++++++++++++++++++++++++++++++++++++++++++++Y同学受邀看到我前面写的,说我就知道讲故事,没提这十几年来是个什么体验。那好吧,我表达一下近二十年编程经历之后的体验,各位看官记得鼓掌(点赞):其一呢,现在总感觉某种编程语言没那么重要了,把功能实现了更重要;编程也没那么重要了,事情做成了更重要。很多小白总是吵着哪门语言好,这个确实很奶义务~~~要改!拿起YACC、Antlr,咱自己发明一门语言好不好?再不济,咱们写个XML编码的语言好不好?总之,感觉兴奋多了,一切就那么回事了~~第二呢,觉得编程本身确确实实给我带来了很大的乐趣(反之,如果你觉得编程很无聊,建议就别干这行了)。我总结了一下,编程为什么会给我带来快乐呢?一在于其创造性,编个程序就像构建一个虚拟世界,有点小孩子搭积木的意思,和写作一样,好玩;二在于回报及时,有个新想法,编个程序就看到结果了,能哄妹子,还能赚钱,这点有点像嗑瓜子,嗑了就吃到了(没人全部嗑完了再一起吃吧?),很开心,所以会停不下来。。。第三呢,觉得自己其实挺笨的。原来觉得自己很聪明,班级里编程我玩得最好,后来发现其实都是自己熬夜刻苦练出经验值来的,和天赋无关。。。坐着那练码,打印出来看着码(自我欣赏),陪老婆逛街还是脑子里练着码,到头来写码也不够快,年纪大了,记性不如从前了,连import都靠IDE自动补齐了,往往越简单的功能写得越慢,当然了,写大程序,可能才有点优势;第四,写码之外的世界更精彩。回顾十几年的生活,自己常以工作为重心,而现在回过头来发现收获最大的、最稳定的却是家庭,是老婆孩子;其次的收获是朋友,来自于一堆不写码的人。朋友们估计也注意到了,我在上面不止一次提到Y同学,每个人一生中都有几个最好的朋友,我大学阶段的挚友是Y同学。在我很多的作品(软件、稿件、图书)中,我都提到了他。他是一个比尔盖茨式的人物,之所以这么说,是因为他酷爱电脑,并且中途辍学,一时传为佳话。不同的是结局,比尔发财了,他没有。当时在班上,我是追求上进的优等生,他是常常缺课挂考的混混,但我们常常在一起讨论理想,包括我不懂的无线电,包括他不懂的C语言,以及比尔和艾伦。大二的时候,来自苏北农村的他花了1万元钱买了台486,这台电脑先后陪伴了我的QBASIC、C和C++,当然也包括西木头的《C & C》和大宇的《仙剑》。杨同学是个爱咬文嚼字的人,也是个多情的人。我们那时候很少想到如何去追女生,但是对《仙剑》的爱情演绎能够评论得头头是道。98年毕业的时候,杨同学一次去南京,给我带回来一本老外写的3D游戏设计,其中讲解了一些3D原理以及编程要点,可惜我并没有深入的看下去。这里也给年轻人提个醒,要做热爱生活的人,该找妹子找妹子,该喝酒的喝酒,该耍流氓耍流氓,不要一直泡在实验室。那样会得痔疮的!!!第五条,深深感到计算机科班出身还是很重要的!我不是科班出身的,按专业来说我应该现在是个八级钳工什么的,但我十几年前选择了计算机!编程看起来很容易入门,很容易得到满足,但是很多基础知识前面没学,后面迟早得补上。随着编程的深入,就需要了解到硬盘IO比内存慢的道理,就需要了解SQL解析和执行的流程,就需要了解外部排序的原理,就需要了解分布式协调的理论。你开始越想躲避的,那些知识点就会像怪兽一样越长越大,某一天冷不丁挡在你前面,好吧,咬紧牙关把它干掉再继续吧!先写这么多吧!后面再补~~~快十点了,脑子开始犯困了。。。++++++++++++++++++++++++++++++++大学同学看到我的帖子,说你怎么忘了写当时写稿子的事?是啊,我怎么能忘记了写稿子的事?再重申一遍了,我是感性的程序员,因此我喜欢舞文弄墨,写了二十年的码,也差不多写了二十多年的文字,以下也带着各位看官回忆回忆^_^(赞呢?)上个世纪末,写作的出处主要就是《电脑爱好者》了。第一篇是关于DOS中断的东东,发表于97年,网上居然还能找到PDF:后来连载多期的是98年的《汉字的处理技术》,那会大家正在闹毕业,大家有的钱都花光了,就我很富裕,一期稿费800元,4期拿到了3200元,然后经常拉着几个要好的哥们搓馆子,还借出去了1000元钱。。。后来一发不可收拾,将掌握的鼠标处理技术转换成了人民币(1998年):后来一发不可收拾,将掌握的鼠标处理技术转换成了人民币(1998年):98年下半年,我开始了研究生阶段,那时候就有了写C++教程的想法,由于那时候普遍都是C语言,因此我的连载系列命名为《轻轻松松C to C++》,注意还是往《电脑爱好者》投的稿(1999年):我也不知道,《电脑爱好者》为何总是将我的文章放在“步步高”这个栏目?是因为我写的东西很有点步步高的意思?呵呵。。。不过,对于学生时代的我,稿费还算是比较地道的!我也不知道,《电脑爱好者》为何总是将我的文章放在“步步高”这个栏目?是因为我写的东西很有点步步高的意思?呵呵。。。不过,对于学生时代的我,稿费还算是比较地道的!研究生毕业之后,正式进入工作,《电脑爱好者》的Z先生和我成为了QQ好友,后来我又写了几篇稿子,大抵是关于VC++ GUI方面的。再后来由于和水木清华BBS的几个网友一起办了网站,我就直接把那些文章又发表成网上教程,在网上流传了一段时间。上次我在百度里搜索,发现还有一些网页尸体留存在那里的:恩,再靠后,就是和小编接上头了,开始写书。自己的编程水平其实也不高,但按捺不住要表达自己思想的冲动。最后写的东西里面,除了一些代码,经验杂谈的也很多。。。恩,再靠后,就是和小编接上头了,开始写书。自己的编程水平其实也不高,但按捺不住要表达自己思想的冲动。最后写的东西里面,除了一些代码,经验杂谈的也很多。。。2007年写了《标准C++开发入门与编程实践》,大抵是觉得网上用VC6.0的程序员太多了,他们整天拿着一些过时的语法折腾来折腾去,对boost、STL却毫不知情,实在是被老教材害得够惨。。。翻开蜥蜴的封面,里面还是能找到我感性的文字的:2009年结合VC,写了本《把脉VC++》,初衷也很简单,就是觉得一堆VC程序员看了一本又一本的编程秘籍,却依然不懂怎么开始一个项目。。。在这本书里,感性的我索性先给出了一张VC编程地图:以上两本书的发行量很小,因此早就没有库存了,也因此证明我发这篇帖子更多的是情怀驱动(感性码农嘛)而非推销驱动!请那些自认为自己的书写得很好的、髙谭浩强一个世纪的牛人(这样的人,据我所知,知乎上还是有的)保持风度,不喜勿喷!最后show一下20年程序员的书架的一角:当然,现在更多的书架被育儿经占领了~~~~最后比较遗憾的是,Java Web从2001年一直做到现在,却一直没能写出一本有意思的书来,也许和自己的脑子也不够灵光了有关吧~~~~下一本是啥题材的?大数据方面的?我不知道。同学。。。点赞?
这个问题很怀旧,一晃也写过 20 多年代码了。93 年小学时买的 386SX,2M 内存,没硬盘,单色显示器。那时没有光驱,没有盗版碟,更没有网络,于是只能翻着 C 语言书,望梅止渴,因为电脑里只有 QBASIC 可用。写什么?当然写游戏,黑白棋,飞机大战什么的,哈哈。还记得神奇的 HD-COPY(黑科技,可增容软盘)、PCTOOLS(传说现在很多人已经不知道“保存”图标里的那个软盘是什么了)等等。上初中后终于有硬盘有光驱了!三国志3。大富翁2。沙丘2。模拟城市2000。还有 QEMM 和 FPE。当然也搞过 IOI,Turbo Pascal...高中的时候,终于有 VC6 了。进入 DirectX 时代。没 3D 显卡,先来 DirectDraw 吧。做个 BitBlt 想快还得上 MMX 优化,光影效果也得 MMX(后来还有 SSE 了)。当然,最奥妙的还是 cache。当时写的东西找不到了,发个代码图吧。后来有 S3 Savage 了,可以玩 Direct3D 了。但没 pixel shader 可用,于是用固定管线多来几遍,照样写。那时泄漏的 Doom3 地图,56K 小猫拖了半天回来,自己写载入和渲染吧,如图。上面怎么都发的是书的图片?因为是中学时写的一本游戏编程书,汗。当时认识了不少国内做游戏的朋友,刚看了一下,有几位在知乎很活跃,这个问题里面就有。上面怎么都发的是书的图片?因为是中学时写的一本游戏编程书,汗。当时认识了不少国内做游戏的朋友,刚看了一下,有几位在知乎很活跃,这个问题里面就有。以上是十年前的事了。现在实时渲染终于普及了 PBR,有了 voxel cone tracing,离 GI 慢慢靠近了,不过还是没有 path tracing 的专用硬件,也是有点奇怪。话说,有哪位想做单机的(如沙盒 RPG 等等),举下手。个人也喜欢理论,所以大学选了物理系。遗憾的是,那时业余时间都给了暴雪全家福(暗黑,魔兽,星际,WoW),应该早点去做网站做 startup 啊,哈哈。不过,那时的创业气氛确实与现在不能比,而且香港也是个很没有创业气氛的城市。毕业后去了 hedge fund 做量化交易(中间读了一段数学,纯理论,纯爱好向),C#,VBA,EXCEL 足矣,Mathematica 偶尔用用。不做太快的,所以并不用什么酷炫的东西。交易策略,关键还是思想与细节。市场很有趣,forex 尤其如此。从宏观经济,政策新闻,到微观结构,各方博弈,几个跳动的数字,蕴含着许多奥妙。当时独立管过 65m us$ 的样子(货币波动小,所以其实不多),后来有一天看到 Zuckerberg 同学要上市了,有点感慨。年纪差 2 年,怎么差了这么多呢。辞职跳创业坑去了。最初考虑过互联网金融,后来感到还是应该做点慢一点的,真正有用的事情。于是跳了最坑的坑,实体硬件坑,向 Musk 同学学习。没有 Musk 同学的积蓄,那就先从把小的东西做好起。期间补上了 iOS,安卓(吐槽一下,在 IDE 方面 Visual Studio 真是领先太多):Creo 建模,模拟电路和 PADS PCB 布线... 软件硬件都能做了,进化成为“真·全栈码农” 。往后供应链等等大坑也爬了。看到自己心目中的设计变为实体,与用户使用后的赞扬,确实是令人欣慰的事情。那时还没有所谓“创客”的提法,现在这个概念已经越来越火了,不过,硬件还是大坑。1. 写过这么多年代码,最有用的经验还是在于 debug(见过了各种奇怪 bug)与代码的 robustness(见过了各种奇怪边缘情形、racing condition)。2. 学新技术会很快(但似乎也会忘得很快,一段时间不用就要查资料;未必是坏事,因为否则大脑会被塞满)。而且生活中的许多事都可以用代码来,比如前几天想请师傅做个植鞣钱包,图纸希望画得比较完美,发现复杂了之后在 CAD 里面画会很坑,于是立即去查 SVG 格式,然后顺手写段 JS 生成 SVG,灵活太多。3. 不一定好的方面,是会更喜欢造轮子。比如当时看到 nginx 就想写个更快的,试了试用 epoll 确实可以快不少,再跟踪进去看,发现瓶颈在 spin lock 和内核的进出,看来重新写个系统可以并发高 n 倍,最好还写个语言把前后端更统一(类似后来的 meteor),等等... 于是折腾。对于框架也是一样,还是自己写的最顺手啊。
1995年开始,写过20年。出生在小县城,资源有限,开始写代码完全是机缘巧合。1、起步在初三初中时,电视上有个四川的大背头老师讲DOS和WPS,听了听觉得还能理解。于是开始找书自学,在摸过电脑前,完全是在自己脑子里编程,BASIC。中考的时候和家里谈条件,考上重点的话给买一台裕兴学习机,结果考上了。还记得妈妈带我去所属的地级市买,县城没有。试机的时候,写了个冒泡排序,老板很惊讶,老妈也很惊讶。呃,我很淡定。2、深入在高中拿到裕兴之后,开始写一切自己感兴趣的东西,从LOGO写递归,到BASIC用游戏手柄模拟鼠标。上了高中,参加NOIP,在学校机房用386,1M内存,木有硬盘,自己攒了一堆5.25和3.5。因为纯粹喜欢编程,对游戏什么的不感兴趣,所以在coding上面花的时间很长,基本每周20个小时的编程联系。当时指导老师要请很严:经典问题不能调试,必须一遍过;复杂问题不能上机,在纸上写,做好静态分析,争取一遍过。在家里,周末基本没有其他活动,依然在裕兴上写。可惜我上了大学之后,裕兴被家里送给了亲戚,再也没见过,遗憾,应该留个纪念的。回想起来,高中绝对BASIC脑残粉呀,BASICA、GW-BASIC、Quick-BASIC,最喜欢的是Quick-BASIC!高考的时候,所有志愿都是计算机,如愿以偿了。忘了说了,高考结束后,我还打了个小工,给裕兴代理做培训老师,到小学讲课,挣了300块。3、系统在大学上了大学,跟着课程学C,不是太上心,因为除了指针,和BASIC没有本质区别,成绩中等偏上。同时跟着学长做项目,开始学Borland C++Builder、Delphi。印象最深的是大二学汇编,寝室学习氛围特别浓,大家比着大作业谁写的字节数少,谁的执行时间短!开始从底层去看待代码和系统,为我以后打下很多基础。还记得有一次作业挺难,我用了个剑走偏锋的方法,结果代码收到2个班同学的器重,大家都按着这个思路写,老师看到后都疯了。汇编成绩年级最高97.接着是大三的面向对象编程,开始了解之前用个BCB之类的完全按是玩闹,开始用心学习面向对象的编程思想,而不是仅仅是C++语法,知其然还要知其所以然。面向对象成绩年级最高96。接着开始自学Windows编程,有了汇编的底子,反编译过好多软件,跟踪看代码玩。还学了破解和解密,纯粹为了好玩,为了炫技,脱过壳、解过LIC、破过狗。有了面向对象的底子,JAVA、C#之类的都是自己看。感觉C++是术、OOP是道,看一个人C++好不好,就看他能不能一周只能上手JAVA。大三暑假闲着无聊,开始学习图形学,写了个小的3D引擎,后来在学校的项目上还用了。也因为这个引擎,参加了一个大项目,表现还不错,留校了。4、工作之后。留校工作,在职考研、考博,主要做项目和教学。在科研上做VR仿真,用过好几个当时大众和小众的VR引擎,还在国防科技大学进修过HLA(分布式仿真的支撑框架),建模也用MATLAB。教学上主讲了好几年C++和OOP,还有些SE、windows编程之类课。过了几年之后,学院开始号召学生参加ACM/ICPC,我开始做coach。有一年寒假,另外一个项目组人手紧张,也去帮着写过ERP。组织AI的竞赛,一个人写过AI的对战平台。带学生做超算,写过QT和MPI的混合编程。博士毕业之后,有个机会到T大做全职博士后,觉得一辈子可能也就这么一个机会去T大了,就辞职了。现在带学生做科研,建模用MATLAB,原型用python或RAD Studio,最终Release一般都是RAD Studio。一直对VS不感冒,也能用的挺好,但在C#出来之前,总觉得VS简直就是反人类,无力吐槽——该封装的都露着。写过ARM、还写过机械手等一些专用环境上的代码。说到感受,喜欢的话就不枯燥,喜欢的话才能全身心投入。coding的话,感觉就是面向底层、面向过程、面向对象三个层面,语言不是问题,思想才是。决定代码质量的是算法和可读性。写的时间长了,代码就和自然语言差不多,就是你表达思想的一个工具,和别人交流的一个途径,无它。
从1990年算起,到现在已经有25年了吧。现在不太写代码了,也就看看别人的代码或者写个console application做点实验验证。其实我相信在那个年代,学编程和玩游戏是紧密联系的,刚接触编程语言的时候的想法就是为了写游戏啊。小学时基本没接触,到了中学预备班遇到一个同学是我的启蒙师傅,他在少年宫计算机兴趣小组的,传说中的邓摸头(画外音:计算机要从娃娃抓起)就是和他们一起的。我开始学电脑就是跟着他混的,后来自己也去了少科站计算机课外班。最早就是Apple II上学BASIC。每次去少科站的上机时间很有限,所以我们都是事先在练习簿上写好代码,到上机的时候迅速输入而后抓紧时间调试的。我记得我写的第一个比较完整的游戏就是一个梭哈游戏,在练习簿上写了大概4-5页纸吧。纯文本的,你下个注,然后你的电脑每人发5张牌,比较大小。估计是那时候看的赌神类电影受的影响。我还能记得当时的两个难点,一个是怎么洗牌(后来用的是随机交换两张牌n次),另一个是怎么比较大小,后来是先排序然后比较死板地判断牌型(炸弹,3带2,等等)。那时候的经典游戏就是crossfire了,居然能在wiki上找到。就是下图这货,IJKL控制移动,ESDF控制往哪个方向射击,非常考验左右脑配合。后来我又做了个开车躲避障碍的游戏,算是一个“大作”了,也就是有几条车道,用键盘控制左右切换车道,来躲避前方障碍,还可以吃东西。当时我师傅写了个街霸游戏,就是模仿街机里的街头霸王,只不过是用几个色块表示一个人,可以发波动拳,升龙拳,和旋风腿,非常好玩。要知道这都是BASIC写出来的啊。后来开始接触DOS和C语言了,然后自己家里搞了台XT-286,装个Turbo C就可以自由编程了。那时候资料实在太少了,所以会写个TSR就算很牛的了,我还记得时钟中断是每秒18.2次,然后设两个计数器,第一个每18次就知道过了1秒,第二个记满5次就要补偿1秒。如果你能搞定XMS/EMS那就是属于特别厉害了。那时候游戏都很经典,比如这个,三国演义1,智冠的:这个轩辕剑1,这个县太爷其实是个老虎精变的:当时我们也想做个大游戏,都企划好了,模仿那是得街机游戏快打名将,主角是机械战警,人设都画好了,招式什么的都想好了。然后我还写了图形库,比如用来TextOut的函数库,那时候在图形模式下是要自己读字库文件然后自己画出你要输出的字符的。后来我也忘了为什么没有做下去。那时候还学了dBase,那个东西还是挺好用的,算是Access这种类型的祖先了吧。学那个的主要原因还是时常要给我爸朋友公司做点数据库相关的程序,比如做个员工工资管理系统啊,进销存系统啊,之类的,用dBase是最简单的了。后来慢慢换成FoxBASE,FoxPro。大概94年左右吧买了modem,开始接触BBS,C-Fidonet。不是Internet,是打电话到别人家里去的那种BBS。估计这里知道的人比较少了。这个是蓝波快信了(截图来自月光博客)。然后有了Internet接入服务,就开始学做网页了,那时基本都是手写html的,不过这也算不上编程了。那时候网站编程基本是cgi模式,做个一个计数器就是用cgi方式。我那时在geocities上做了第一个个人主页。那时候比较热门的网站有pchome,站长叫Hayes,modem的品牌名。我算是第一批给pchome供稿的人群了。我记得那时就是自己用htm做好网页,包括用到的图片文件,打个包发给Hayes,然后他再放到网站上去。后来听说pchome卖了挺多钱啊,也没给我分点稿费。。。比较有意思的一个插曲,有天有个Ubisoft的人突然给我发了个email,说看到我在pchome上的东西要找我聊聊,然后我和几个小伙伴就去Ubisoft的办公室了。我们还是高中生,见到了那里的电脑技术立刻就晕了,这个差距好大啊。聊的内容主要是听听我们对游戏的想法啊什么的,当时挺羡慕那里的工作的,觉得这就是理想啊,可惜年纪太小了,高考还没考呢。后来到了大学里,网站技术越来越成熟了。我们那时候成立个工作室,趁着那时候.com火热,到处接活干。各种技术都用过了,一开始用得比较多的是asp,不是哦,就是手工拼html输出的asp,然后配合ADO和access数据库,算是一种很经济的开发手段了。后来也用过jsp和servlet,php,mysql。那时候基本算全栈了,不光是coding,连macromedia三件套也是熟练运用了。网站做好了一般是放在电信的虚拟主机服务上,一台主机有多个网站挂在上面。当时大家的安全意识真的很差,用的NT4的服务器,基本不打补丁,好多漏洞。比如那个用Unicode的..\就可以访问到根目录然后就可以调cmd了,还有像SQL注入也是90%命中,因为基本都是在asp里面拼sql语句。我记得有个.com的网站和我们的挂在同一台服务器上,然后我居然能看到他的源文件,里面有数据库连接串啊。。。那时候也找一些软件公司替他们做外包项目,基本上什么都做,网站啊软件啊都有,还有做flash的。印象比较深的一家叫火速,给他们做得比较多。刚开始合作的时候那家公司没几个人,CTO是个女生,技术上的事就和她谈的。后来听说他们越做越大了,有上千人规模,也挺不容易的。桌面开发入门的是VB,真的太好用了。后来转到MFC,貌似纯WIN32开发被我跳过了。毕业工作后基本上就是忙工作上的事了,业余时间不多。有一段时间比较迷p2p下载,就是电驴电骡那个时代。我算是国内第一批接触电骡eMule的,那是个开源项目,用MFC写的。当时看到没人去做简体中文的本地化,就去申请做了简体中文翻译,也就是写个中文的resource文件,电骡启动的时候会载入相应语言的resource文件,也就实现本地化了。后来的各种电骡版本基本上都继承了我最初的翻译,我的翻译有个特征码的,有一个选项叫Beep on error,被我一时脑残翻成“出错时嘟嘟叫”,后来若干年后我随便下了个电骡发现还是这句。。。之后给eMule开发小组提了不少bug和小段代码,对eMule的代码算是比较了解的了。那时候国内的p2p下载都是基于不少论坛的,我主要在一个叫牛过的论坛,后来分裂了一个叫牛过一个叫汉风。我们一群人做的事就是先到某个ftp下载一个片子,然后放到自己的emule里面共享出来,当然我们的id里面都是有名号的:[CHN][Hanstyle]名字,这样的。再后来我做了个eMule的mod,提供给论坛用户使用。有什么作用呢?第一会给带特殊标签的用户名更高的优先权。什么意思呢?eMule里面你的上传队列是有限额的,比如同时给10个人提供上传,然后其他人就会在你这里排队。排队的时候每个人就会有个ranking值,随着排队的时间ranking值会变高,这样决定下一个机会给谁。当然会有其他的因素决定ranking,比如是不是好友啊,是不是passive connection啊,然后我那个mod里面就加了另外的因素,比如如果你的id里面带[CHN]就乘个系数,哇咔咔。论坛当时分裂的另一边也做了相似的mod,差不多的策略。所以你就别奇怪之后电骡里面的人名怎么很多都带[CHN]了,后来的VeryCD版本还自动给你加[CHN]这个tag,我们就是始作俑者啊。现在想想也挺幼稚的,并不公平。后来mod里面又加了个挺强力的功能,因为论坛想要统计每个成员的下载和上传量做考核用。这个怎么实现呢?上传量这个数据本来就是emule客户端自己统计然后记录在ini文件里面的,很容易就可以篡改。后来想了个很傻的办法,把上传量,你的id之类的数据,加上一个盐,hash一下再保存在ini中,然后定期给一个web服务器post这些信息,服务器那边会用同样的算法hash一下看看是否被篡改。其实这东西很容易破,因为用到的盐和算法都在客户端代码里面,逆向工程就可破了。不过当时用用效果还算不错的。现在想想这不就是PT吗?然后更新了几个版本我就玩消失了。太累了。后来我又出现的时候已经叫中国驴了,作者acat就是当时隔壁论坛那个mod开发者,和他联系上后又和他合作写了一段时间代码,再后来感觉无爱了就又消失了。【更新】说了这么多玩的,再说说工作上的编程吧。我进微软后先做的是技术支持,所以也算不上是程序员吧,主要的时间花在windows的调试(蓝屏啊系统锁死啊之类的),因此大多数时候我是在看代码而不是写代码。几年的时间我也数不清看了多少行windows代码了,可以说是阅码无数,心中有码了。编程主要是做点小工具用来帮助调试,或者是模拟客户环境来试图重现问题。一般就是写个console application调用些win32 api就可以了。有时候会改下windows某个组件的代码,加点调试信息,自己编译一个版本出来,让客户替换上,这样可以在下次发生问题的时候获得更多的信息。也有时候找到个bug,自己先做个fix给客户试一下,如果有效再走正式流程出hotfix。后来到了产品组,做的职位是测试开发工程师,从Windows Server 2008到R2,再到SQL 12等等,写了好多测试程序。有时候是有现成的测试框架你只需要写测试用例里的代码,有时候就是从框架的测试用例都是自己写。比较有意思的就是不时地想些新方法来测试。比如有一次用Model-based testing,先写一个模型出来描述测试对象,比如要测一个对话框,用一个模型(类)来描述这个对话框的状态以及各种动作(点击按钮),然后模型里面自己计算出各种状态正确的改变方式,同时用相同次序去操作测试对象,然后比对两者结果是否一致。模型建立完善之后,就可以用随机数生成各种各样的测试步骤了,会找到一些你根本想不到要去找的bug。发现bug后进行调试也是一个必备的技能,因为之前有大量调试经验所以这还是很顺手的,经常是开个bug,自己把bug的原因找到,然后把fix代码做个changelist打包到bug里面,然后dev只要check in就行了。开发技术上,看到的主要是由C++ native向C#的变迁过程,使用.net的越来越多,产品代码和测试代码都是这样。现在做Azure云服务基本都是C#了。再后来带了团队,然后测试和开发也合并了,工作重心就转到工程管理上了,想的更多的是做什么,怎么做是正确的,而不是自己去做这件事。有时候一个正确的决定,可以躲过好多坑了。现在带个小队伍,主要做内部工程系统的研发,比如做一个持续开发部署平台,或者做个生产环境的监控报警平台,或者做个云测试平台。做的东西不固定,目标就是提高内部工程开发的效率。做这个最有意思的一点就是没有产品经理啊,自己就是产品经理,自己得决定做什么,什么先做什么后做。现在代码已经很少写了,最多就是看看code review,有时候心血来潮也会打开windbg调下bug。最后打个小广告,微软今年的校招开始了,有兴趣的同学请前往报名。如果觉得自己很厉害的也可以找我内推哦,不过你得证明自己很厉害,呵呵。
晚上自己写完代码,看着躺在床上的老婆孩子。心想:写着吧,要不干啥去,除了堆几个代码,还有啥手艺?房贷还完再说吧
不知道全职工作前的算不算,这样算我首十年大约在1986年(小三)至1995年(高二)。前两年大概是学习一些最基本的电脑知识、BBC Micro 的 Basic。之后两年是自学Apple II,包括 Applesoft Basic 和 6502 汇编。然后一年使用 PC 的 DOS、GWBASIC。然后第5年开始自学 C 语言、x86 汇编及计算机图形学,写过简单的三维建模软件。第7年开始参与商业游戏开发,学习游戏引擎和工具的开发,开始学习C++。第9-10年做主程主策开发游戏,也开始读一些计算机图形学的大学教科书。估计那10年大约每年可以看10-20本简单的计算机书籍,早期去图书馆较多,后期不少零用钱都是存来买书的。我儿子(今年小二)还未开始这种经历,但游戏玩得比我以前多很多呢,唉。----吃完饭补一下,题目问体验。小时候算是比较异类吧,学术成积不算是太好,但也过得去。在这种环境下可以说是比较自由一点,可以多花一些时间学习自己喜欢的事情。做这些事情有时候也会和家人、老师有些冲突。特别是高中下课后去公司做到十一点才回家,和家人吵过好几次。学校方面,会代表学校参加一些编程的比赛,不是OI那种,而是要做教育相关的软件。最初做三维建模软件也是参加比赛的作品。因为这些经历,学校也算是比较开放,比赛前几个星期甚至经常上课睡觉,下课后写代码调试,有时候在学校的电脑室留到很晚,试过几次要翻过学校的大门才能回家。回家后再继续。小时候已经历过类似程序员加班的日子,反而全职工作时就少了。编程这回事还真的和其他学科很不一样,喜欢的话自学可以进展很快,高中的电脑科题目是可以秒杀的。那时我们高中有电脑科,是共开考试的科目,所以学习上也省了一门课,可以简单拿到一个A。由于会编程,曾几何时被家长介绍做一些很无聊的东西,例如帮一些公司写 dBase 程序(不是用 SQL 的数据库),也用 Director 做过教学软件。可能更无聊的是替别人打字和排版(虽然后来被训练到对排版有一定要求)。还好那十年还没有互联网,不然大概会浪费很多时间在做网页(后来在大学就开公司做过??)。说到互联网,在没有互联网的日子,主要是靠书籍。另一个学习途径是在 BBS (用modem打本地电话连接到别人家的BBS),可以找到一些零碎的文档及源代码。记得当年有看过 John Carmack 很早期的文档。小时候,就是容易吸收各种知识。不过那时候还真是浪费了一些时间,学习一些现在看来没什么用的东西,例如 DOS 的各种内存技术(XMS/EMS)、TSR 编程之类。那十年的编程生涯算是很快乐的日子。少年轻狂,想写什么就写什么。现在相比就会较保守谨慎,可能是学过了太多规条,太多现实限制(例如跨平台跨编译器),太多自己的要求(例如性能之类),也怕写出一些低级错误。待续
平均两年推翻一次价值观。
1, 想想已经14年了,好像也没什么感觉,就是很多事已经有了思维定势,设计如此,架构如此,编码如此,重构如此,调试如此,就像框架一样;2, 对新事物还是很好奇,学起来总觉得没止境,但实际能用到的东西却只是其中一小部分,造成两个后果,一是觉得自己记忆力好差,除了语言本身,其他的好像都忘了,使用时总需要去查查,经常会因此产生无力感;二是变得很懒,对绝大多数新接触的框架或库,总是大概看下结构和接口,然后就按照自己的经验半猜半调试就过掉了;3, 对糙乱差的代码极其厌恶,特别是逻辑不清晰的代码,review人家的代码时经常会忍不住想重写,但绝大多数时候都是提出改进意见,却大多数时候又因为项目进度等原因不了了之(注:现在新入行的绝大多数人都是结果导向,心中根本没代码质量这回事);4, 代码已经渗透到自己生命中,经常会产生一种恍惚,觉得世界上的一切或许都能用代码来解释,包括人性这种不确定的东西,无非就是扔骰子而已,但家人经常说我情商差,好吧,其实我也这么认为;但这几年代码已不在是生命中最重要的事,生活中应该还有更多的美好,但如果有可能希望自己能写到60-70岁;5, 大家都喜欢听故事,我也来讲讲故事吧,进入计算机行业本非我愿,高中时因为化学奥赛拿了全国一等奖,保送川大,但因为各种原因,最后放弃了,最终却因为高考考砸又选择了川大,填志愿时本想选化学或食品专业,却因为老爸听人说计算机以后好找工作,在和老爸大吵一架后还是填了计算机,其实一个农村娃娃,在当时我的家庭环境下,谈理想和个人自由总觉得有些奢侈;大学之前我都没接触过计算机,其实大一也只有上机课能摸一下,当时网吧已经流行,但对我来说太贵,此外当时对计算机真的怀着深深的敬意,每次上机就像朝圣一样,但这不妨碍我用纸笔写代码,然后用一指禅输入机器进行验证,这也带来一个对我影响至今的好处,我的代码很少有编译错误;我的第一门语言课C++大一就开了,这也是大一唯一一门专业课,对一个完全不会用计算机,进一步说对计算机一点概念都没的人来说,这和天书无疑,我用了一个最笨也最聪明的方法:背;我当时背下了谭浩强C++教材的每一个知识点,每一个细节,每一段代码;也讽刺的拿了全年级C++唯一一个满分,老师说怕我自满,最后给了99;当然背和考试是一回事,理解是另外一回事,能想象对虚函数,我花了一年时间直到在图书馆看到BIOS的中断向量表,才完全明白过来吗?当时的自己就像一块海绵,每天11点睡觉,6:30起床,好像天天都泡在图书馆,了解计算机历史,了解计算机构成,学习如果装机,学习使用各种软件,再之后去学习计算机体系结构,学习操作系统原理,反正就是一切都围绕着C++发散开,缺什么就补什么;大二暑假同学介绍开始出去做项目,就此走上了码农这条不归路,这是后话,以后有空再说吧。说了这么多,其实我只想告诉大家,代码也好,其他事也罢,喜欢也好,被动选择也罢,既然已经在这条路上,就一定要投入你的热情,如果的确没热情,还不如早点离开,毕竟通过写代码发财的,我真没遇到几个,何况凛冬将至!
数了数,从严格意义上的写代码到现在也有12 13年了。之前是97还是96年,小学二年级写logo,应该不算。最正经开始写代码应该算是在文曲星上,gvbasic,应该是01年或者02年的事情了。之前也在pc上qb写过几个,不过都是小打小闹,算不得深入。还带动了一群人和我一起写basic,现在感觉好屌丝,自己屌丝写代码就算了,还拉了三四个同学和我一起屌丝。直到高中,写了不少工具、游戏之类乱七八遭的东西然后应该是03年04年了,学了6502汇编。不要问我为什么是6502,写gvb的到最后有几个不学6502的。成就当然没有gvb那么璀璨,不过改改gmud还是拿下了再然后就是04年春节的时候,整了本vb和c语言。很多人要失望了,都不是谭浩强。不过当时vb和c也只是看看,初三中考,拿来那么多机会上机写东西。初中期间还因为跟着老妈学,把authorware给撸过一遍,大学时还靠这个技能帮妹子写过一次多媒体作业,蛤蛤然后,在04年初三的那个六月,我买了我的第一本,恰逢黑x创刊两周年。请不要用今天的眼光看待当年的杂志和技术水平于是,整个高中期间,基本都在围着黑x转了。c依旧停留在hello world级别;asp倒是好像基本能看懂了,反正和vb差不多嘛;html和js也迷迷糊糊能懂一些了;sql基本也开始理解了;计算机课的时候老师的教学软件再也不能强制锁我的屏了最奇葩的,你们肯定都想不到,我靠着光看黑x的的文章,把x86汇编看懂了。缓冲区溢出的原理也总算是能看懂了。当然距离实际能独立写汇编还早,不过od倒是舞得很熟,每次计算机上课,撸起od,先把还原精灵卸载了,然后开始下游戏,总之高中期间老师对我很无语了,已经懒得管我了。期间有次老师为了让我不要搞来搞去,要我去搞rcx机器人,期间也就又撸了撸LabVIEW和nqc,没深入下去,一是功力不足,二是没什么卵兴趣高中过得很快,转眼大学了。大一上辅导员不让带电脑,基本就啥都没撸。大一下自己带了电脑,开始了真正意义上的写c。我的第一个c还不是exe工程,是dll!高中看了那么多写c的代码,介绍如何写dll,实际到自己动手的时候,竟然是那么难。那个时候宿舍上网还不方便,查资料很麻烦。。。不过最终还是撸出来了,只要撸出第一次,后面就好说了。什么把stdafx.h撸掉,什么加个图标,什么去掉crt0,什么包含共享节的pe挨个撸上去大学期间曾经尝试自学c艹多次,无果,只把c艹的各种方便特性给学来了,导致我一直把c艹当c用(vc6 vs2k3躺枪)然后就是大学期间真的开始写x86汇编了;ddk写驱动;si调试;lord pe什么什么的又多又杂又乱,为今后踏入甲方安全这个深坑埋下了伏笔当然,撸站也越发的纯属了然而直到毕业,我依然觉得c是世界上最好的语言:没有c写不出来的程序;没有其他语言能和c一样对底层有那么强大的控制力直到去了某傻逼度工作,第一个星期就傻眼了,然后用了两个星期,把perl撸会,学bash,学vim,学Linux各种学学学,包括html,js,php,什么都在撸,再用,在学后来换工作,但是也跑不开linux,继续慢慢积累着vim bash下的各种快捷键终于直到三个月前的某一天,我把花1800大洋在某二手东买来的新电脑装成了ubuntu,不要笑1800大洋便宜,国产大品牌海尔呢,请自行脑补那两个只穿内裤周游世界和北极的不良少年这下又遇到新的挑战了,“在Linux下工作、写代码”和“用Linux办公”真的是两个概念,期间历经无数次google,调这调那,找驱动,升级,折腾,自己琢磨死机原因,想办法撸qq。好些问题其实就是问sa,他们也不知道。sa装机器的时候只会用标准的系统,多半是rhel或者centos,中规中矩的这类,且没有gui。而ubuntu恰好是一个特别激进,喜欢赶时髦的主,出了什么新技术,用!出了什么新的替代方案,用!出了新的gui,用!特别特别激进,好多问题网上查都查不到。当然,有人说,Linux的价值就是贵在折腾,那就折腾吧,我还是要说,Linux的优越性体现在,它成功逼使用它的人学会解决那些在windows下不会出现的问题。Windows是世界上最好的操作系统Windows是世界上最好的操作系统windows是世界上最好的操作系统有人问了,那干嘛我还用Linux办公因为方(zhuang)便(bi)啊Linux原生的terminal再ssh到服务器之后,对那些原生的bash快捷键支持和使用比windows下的secureCRT要好多了,sexureCRT配置半天,还是多快捷键没法按bash的utility设计思想就是每个小工具做好自己的事情,由人去有机的把这些工具结合起来,大多数时候,这非常非常方便。随手写个五六行的小脚本,就能完成绝大多数在windows下一用vbs或者bat得几十上百行代码才能完成的功能好像扯得差不多了,最后来回顾下自己写过些什么语言好了。作为一个甲方安全工程师,万金油,我有幸写过大部分主流语言,有些非主流也有所涉及排名按喜好程度分先后perl bash c xvm(自己家养的语言当然和自家亲)x86 verilog(我没写错,就是Verilog,作为大通信专业的,会写Verilog不是很正常么) Lua php java html jsvbs jscript basic vb
c# asp vba 6502 qb authorwarelogo(如果这也算语言的话) c51 arm Epic(对,你没看错,intel epic) bat/cmd(如果这也算语言的话)厌恶的语言(没错,我就是要你们吵起来,php是世界上最好的语言,以下语言就是垃圾)python c艹 lisp foxpro(不要问为什么)我用过的数据库也是有点奇葩access mssql mysql oracle到目前为止,上述四个数据库还比较正常,估计用过的不少然后不要感谢某西南地区985学校图书馆,为了无线续借贵馆馆藏某几本书,我练习到了如下数据库sybase base2
已有帐号?
无法登录?
社交帐号登录

我要回帖

更多关于 开源即时通讯服务器 的文章

 

随机推荐