Talk is cheap. Show me the code.

Linus Torvalds

帮理工科修电脑的文科生

一、你需要一台破电脑

每逢过年,网上就会有这样的吐槽:我是学计算机的,回到老家总是被亲朋好友要求帮忙修电脑,可是我真不是学修电脑的啊!

很多计算机专业的同学深以为然。而在我看来,这种吐槽只能说明两个问题:一是这些同学对专业并不感兴趣;二是不爱学习新知识。如有不服,听我道来。

我说这样吐槽的同学对计算机不感兴趣,可能有人不同意,他们会讲自己是学软件工程的,软件工程是写程序的。就像司机会开车就行,不需要会修汽车。如果是普通人这样讲没错,但如果你是每天跑长途的司机,不会一点基本的修车技能老板肯定不会放心你上路。同样,电脑对于计算机专业的同学就是吃饭的饭碗,自己的饭碗不会维护,总不是什么光荣的事情,怎么还好意思吐槽?再说亲朋好友电脑出问题无非是重装个系统,清清灰,顶多换个零件就能解决的。

你会吗,U can U up?有人要这样问。

会。

这还得从大学说起。虽然我一直对电脑感兴趣,但一直没有一台自己的电脑。2007上了大学,叔叔把家里的一台旧电脑给我。多旧呢? 两个128MB的内存,20G硬盘,15寸阴极射线管显示器(很胖的那种),系统是Windows 98。当时开机都有问题,宿舍的哥儿几个抱到电脑城花了一百块钱让人给换了个电源,装了个Windows XP系统。我们宿舍就这样有了第一台电脑。我们用它打过游戏(自带扑克牌),看过电影(400M以下的)。

一年后我们大二。这时学校机房要淘汰旧电脑,我跟老三合伙花500块买了一台。内存512MB,硬盘40G,17寸显示器。这个配置跑XP还是很顺畅的,我们用它玩过游戏,看过电影。这时游戏可以玩暴力摩托,CS了,电影可以看不太高清的大片了。不过因为这电脑是二手的,小毛病不断。最开始发现的异常是CPU使用率总是很高,虽然不是很明白,但我们还是拆开电脑机箱查看一下。发现原来是风扇不太正常,有时风扇变慢,这时CPU占用率就上升。解决方法很是粗暴,风扇慢了,用手拨拉一下,果然就OK。开始每隔20分钟拨拉一下还能接受,后来每3分钟就要来一次,大家就无法忍受了。去电脑城花8块钱买了个风扇,换上后这电脑如获新生,我们感受着风扇的气流如沐春风!从此我们在拆电脑的道路上一发不可收拾,整个电脑除了显示器没被拆过,其他包括鼠标键盘在内的部件都被肢解过。神奇的是装上还能用。

“要想了解电脑,首先你得有一台破电脑”老四的这句话我一直记着。

2011年考上研究生,趁暑假赚了点钱买了一台笔记本电脑。是一台宏碁4743G,内存2G,硬盘500G,3代i3处理器。当时的感觉是终于可以玩大型游戏,看高清电影了。可是突然发现身边没有了抢电脑玩CS的哥们。

这台电脑我现在还在用,后来嫌内存小加了一块2G的内存,嫌开机慢换了SSD硬盘,经常拆开清理一下风扇的灰尘。前年买了一个27寸大显示屏把它当主机用。六年了,它速度并不比新买的电脑慢,除了灰尘需要清理,并没有出现过其他问题。两个月前,我用半小时完成拆机,清灰,装机全过程,破了自己的记录。

我们搞文科的都能学会的东西,学计算机的孩子怎么还好意思因为自己不会去吐槽?可能是因为大家都有钱了吧,清一次灰只要80块钱而已,我好像听到有这样的声音。这,还真是扎心啊,老铁。

“好吧好吧,就你能,你会修电脑,你会写软件吗?”

会。

二、变身程序员

每个男生都有一个黑客梦,我也不例外。虽然大学有了电脑,也怀揣对黑客的敬仰,图书馆借过黑客入侵之类的书,但对写程序一直怀有畏惧的情绪,终究只能停留在脚本小子的程度。我们大学文科计算机公共课当时讲Visual FoxPro 6.0。现在想来还是想骂娘,90年代的数据库管理程序,现在还在有的大学教授,还不如讲讲Access实用。所以计算机课上完,脑子里返回了null。

老四很有钻研精神,学了一些命令行。比如偶尔会搞个定时关机(shutdown –s –t 60)来捉弄一下我们。我也偷偷学了一些,感觉自己很有黑客的范儿了,因为可以不用鼠标操作电脑,并且面对的是黑框框,不是图形界面。哼,只有菜鸟才需要图形界面。

后来发现自己太幼稚,于是学了一下HTML和CSS。这样就可以做静态页面了。当时做过一些网页,也不知道怎么发布,再后来忙着考研就没有再学习其他语言。

考上词典中心的研究生之后,立志要选计算词典学方向,所以开学报道就带着一本谭浩强的《C语言程序设计》过去的。提前一天到广外,联系了一下李亮师兄。偶然看到我带的谭浩强,李亮师兄就开始聊起电脑来。不知不觉我们聊到了凌晨1点半,李亮师兄帮我找了个办公室休息,办公室有个很大的办公桌,我在办公桌上枕着书睡了一觉。

从此跟李亮师兄成了忘年交,也开始跟着他学习VB。虽然一直也练习一些编程习题,总觉得离编程还有很远的距离。直到寒假在家,突然一个想法冒出来,我要用VB做一个WordCloud本地程序。发现WordCloud实际上是一个网页,读取一个XML文件里的数据,然后展示出来,我只需要更改XML文件的数据就行了。日思夜想,各种尝试,白天还要走亲戚或在家帮忙干活,晚上赶紧试一下白天的想法。终于是做出来了。这像是打通了任督二脉,发现写程序原来是这样啊。

写VB写地好好的,李亮师兄给介绍了一门新的编程语言Aauto,国产的。本能地很抗拒,感觉这个写法很别扭,跟VB一点不一样,需要大括号。尝试了一下,后来硬着头皮看看文档,试着处理一下文档,突然发现爱上这门语言了。作者设计用心良苦,动态脚本语言方便调试,丰富的函数库。现在Aauto已经改名为 aardio ,功能越发强大。

有了第一次改学一门语言的经历,知道开始学习一门新的语言时总是会感觉不习惯,但慢慢发现各个编程语言都有自己的特色和长处。所以后来为了写动态网页学习了Javascript,然后发现Jquery这个神器,为了写网站服务端学习了最好的编程语言PHP,为了调用斯坦福大学的自然语言处理包又学了Java,也能大概读懂Python。每学一门新的语言,对原来的知识也有帮助,比如学aardio时不是太能搞明白对象的用法,学了Java以后突然就明白了。

为什么学好几种编程语言呢?一是因为各有各自优势,二是因为这毕竟是语言,还是人造语言,词汇都差不多,语法略有区别,学会一门,再学其他难度就没那么大了。

学会写程序使我收获很多:

  1. 掌握了一门技能。在当代社会,编程应该是每个人的必备技能。如果哪天发明出了实时翻译工具,不再需要英语教师,我可以凭编程技能找到工作。
  2. 提升自信。在语料库研究中遇到任何技术问题我都能搞定。比如需要采集网页,就写个爬虫;需要文本清理就写个正则。
  3. 帮助自己毕业。硕士论文用的自建语料库,库容1.3亿词次。需要统计一千多个词的词频信息。AntConc根本跑不动这么大数据,WordSmith Tools处理起来一个词就要查询11分钟。自己写个程序跑一上午就出结果了。
  4. 帮助自己和同事的工作。来到农大发现期末提交成绩需要手工输入系统,简直反人类。写个程序自动提交,原来一天的工作量减少到5分钟,还能保证不出错。

将来有机会再学几门语言,我有信心一个星期能够上手一门新的语言。像任何技能一样,编程也需要精专,所以多学一些作为了解,个人还是偏好动态脚本语言。