代码世界和现实世界有着本质的区别,无法理解这种区别的很多程序员经常挣扎在痛苦之中。
我们自己创造了软件,但是我们并不信任自己所创造,如果代码果真按照我们预期所运行,那简直就是一种惊喜。“哈哈,一点异常都没有!”(异常按字面来说是非正常情况,然而对我们来说,没有一点异常倒似乎是一种异常)。于是,有职业素养的程序员会编写大量的单元来验证自己的代码,一边写着 100 + 100 等于 200,另外又写了不少代码去验证结果是不是真的为 200。
这就好比家长养大了一个孩子后,还天天盯着他,生怕他做出错事,每时每刻地盯着他。区别是孩子有自主性,不需要盯着也不该盯着,而代码毕竟只是在冰冷的机器上运行,只要有机器,它任你翻来覆去的检查而不会又半句怨言。
关于测试,有人肉的测试和机器的测试,程序员是君主,机器是奴隶,让一批奴隶去监视另外一批奴隶很合理,但是如果让君主每天自己去监视奴隶,就显得愚蠢了。可惜愚蠢的程序员并不少,他们不觉得自己是君主,他们只是老板的奴隶而已。
数学的世界是完美的世界,程序逻辑本质上遵循数学规律的。所以当一个程序员拍着键盘对这屏幕喊 “这不可能!!” 的时候,边上常常会有另外一个程序员冷冷地说一句,“机器是不会骗人的”,当然,结果肯定就是机器不骗人,因为如果机器会骗人的话,那么人工智能早就牛逼得不行不行了,别说无人驾驶了,说不定还能像电影《她》中的 AI 萨曼莎那样,和你谈个恋爱啥的。
当程序员渐渐习惯 1 就是 1,0 就是 0 的时候,他们在现实生活中就会遇到不小的麻烦,比如说他们会忘记自己写的软件是给人用的,而人,你懂的,最喜欢干的事情都是非理性的事情,比如某个明星突然脑子一热在微博上秀恩爱了,然后一个堆脑子更热的粉丝冲上来点赞了,结果瞬间来了几十万上百万的赞,代码吃不消了,程序员哪想到会来这么一出,结果好好的周末只能用来应付这些无聊的赞了。
所以程序员读点人文的书是好的,一来能更好地理解用户的行为,二来也能更好地理解女朋友的行为。
当程序员吼着 “Fuck!我的 Mac 卡死了!” 这时候他内心绝对有两种情绪,一种是字面上的,卡顿的机器的确会令人不爽,然而他必然隐藏了一种兴奋,那就是,他有一个理直气壮的理由换一台更好的 Mac。更高的分辨率,更多的内存,更多的硬盘容量(可以多放几部岛国动作片)。
虽说代码是纯逻辑的,是数学的,是美的,然而它毕竟还得运行在属于现实世界范畴的机器上,而现实世界总是有各种瑕疵的。如果现实世界足够完美,古希腊的先哲们也不会有足够的动力在脑子里造出这么一个似乎可以永恒存在的世界来。
我想说的是,如果人都是纯理性的用软件,如果机器都不会坏,如果机房的电永远不会断,如果挖掘机不会有事没事挖光缆,程序员的日子会舒服很多很多倍,他们写的代码会好看很多很多倍。所以程序员经常会说 “卧槽,这太恶心了”,这表示他们的的理想世界和现实世界已经有了分歧。
有很多程序员天天骂着 SB 老板,但还是不得不天天加班干老板交待的但自己不想干的活,处在这种看似不公的境地,实际上多半是他们活该。如果你见过很多程序员,你会留意到,当他们面对代码的时候,通常会斗志昂扬,戴上耳机杀他个几天,十有八九会征服代码的问题,他们非常自己的对手——机器,他们会使出各种手段拷打机器,直到机器乖乖地说出自己所知道的一切。
然而就是同样的程序员,当你让他去和不熟悉的同事聊几句话,让他和老板表达下意见,让他和客户说明下情况,他的斗志就立马消失地无隐无踪了。这时候另一个程序员站了出来,征服了同事、征服了老板、征服了客户…… 慢慢的,他就成了老板,虽然大伙都知道他写的代码真的不咋的,他也没什么拷问机器的能力。
世界毕竟是属于人的,机器毕竟是奴隶,征服了奴隶也就是个奴隶主。
原创文章,转载请注明出处, 本文地址: http://www.juvenxu.com/2016/01/05/misc-about-programmers/