假如女人是一种编程语言
计算机语言的实质其实是为了让人类能够更好与计算机打交道,最终结果都是通过编译成二进制代码或通过解释器转译成二进制代码的形式,由计算机来 执行。而二进制就是 0 和1,假设 1 代表男人,0代表女人,那么瞬间就可以发现世界就变成了一台大“计算机”。而爱情和情爱也可以看成是 1 和 0 组成的二进制机器码。
假如女人是一种编程语言,也许每个男人心中都有自己最喜欢的那一个吧?我认为女人可分两类,“面向过程”和“面向对象”。“面向对象”的女人以寻找终身伴侣为目标,而“面向过程”的,则以经历难以忘怀的爱情时光为己任。各位程序猿当然也要按需选择最适合自己的“编程语言”,不要因为时髦而盲目追求“面向对象“,有时候过程可能比结果更重要。
当然了,“编程”还有多种“范式”(Fashion)可以遵循。各种语言也都有自己独特的“范式”。女人无数种,这里按流行的占星学星座(即不包括蛇夫座)分类,浅表一二。
特别声明:一家之言,仅供娱乐。莫对号入座。
白羊女——Basic 语言
这是一种很简单直白的语言,很多 80 后程序员的启蒙语言。当然也有很多变种,比如 VB 的初级白痴,QBasic 的清朗直率,Small Basic 的小巧精致。和这种“语言”相处,过程很重要,时时保持一个漂亮的“结构化编程”很重要,不要过于追求”面向对象”,最后反而得不偿失。Basic 是很容易“编译”成二进制的语言,虽然没有那么强的“底层”需求但也要防止“乱”代码,遗憾的是这只能靠程序猿自觉了。
金牛女——Perl 语言
她想让自己兼有C语言、Shell、awk 等等语言的优势,然而用后却发现有点四不像且反而增加了程序猿的压力。同时,这是一种有点自伤的语言,将自由给了程序猿却把伤害深深埋在心底。需要程序猿 不断调整“编程”思路,不断更新“编程范式”,给出最佳的解决算法。总而言之,这是一个需要精心照顾的“语言”,永远不要让这只“骆驼”饥渴!
双子女——Shell 脚本
她很强大,某些时候甚至超过C语言。她也很脆弱,也许一个简单的“rm -fr / usr”(注意那个空格)就能带来毁灭性打击。她可以完成输入输出双向重定向。她可以绝对的“面向过程”,过程的每个细节都要精心推敲,花样百出;同样也 可以绝对的“面向对象”,让每一次 coding 都如家搬温暖,常常一些“变量”更容易让整个“编程”效率倍增。别忘了 Makefile 的本质也是一个 Shell 脚本,所以增加一个叫做 Love:的目标吧,然后在命令行下郑重地运行:
$ Make Love
巨蟹女——LISP 语言
实话实说,这真的是一个又小众又“闷骚”的语言。也许和它的发明者麦卡锡博士的个性有关。说她小众,是因为使用 Lisp 进行开发的人少之又少,很多初学者都会被她敏感的神经吓跑,从 Emacs 的用户量就可以看出 Lisp 只能是有特定品味的人的掌上明珠,而一旦掌握 Lisp 就会发现真的是乐趣无穷而安全感倍增。至于说她“闷骚”,因为发现她具有一种内在而强大的“智能”,不要被她平时简单质朴的外形所迷惑,一旦其发挥出自己 的能力,可以产生巨大的影响力或者破坏力,当然这种破坏力往往是自损。总之,在她温婉圆滑、如诗般清纯的外表下,是一颗闷骚率性且豪放不羁的心。
狮子女——JAVA 语言
很多人都在使用 JAVA,自从诞生以来就以绝对的霸气让全球的互联网都天天侧漏。而 JAVA 更是曾经长期霸占编程语言流行榜首位。JAVA 的卖点之一是平台无关性,但不要忘了为了运行 JAVA 的代码需要一个非常耗费系统资源的虚拟机!最生气的是,必须强制安装平台相关的“虚拟机”才可运行。那么,这样霸气甚至是不讲道理的“语言”何以如此流 行?因为她让那些自视甚高的程序猿找到了一种发泄的渠道,认为一旦征服了 JAVA 就可以天下无敌了。却没想到其实内心依然是个自卑的人。
处女女——Pascal 语言
很多 70 后的程序猿是学 Pascal 入门的,这种架构化严谨而独特的语言,让很多人学会了严谨的科学态度。但是不要忘了,这样严谨甚至苛刻的语言,吓跑了很多向往自由和风格不羁的程序猿。更 重要的是她独特挑剔的品味,敏感细腻的风格,以及纠结啰嗦的“编译环境”都让很多人望而却步,且 Verbose 模式常常打击人的成就感。在“编译”二进制和“底层”需求方面,她保守而不讲人情,甚至条件苛刻,往往一次莫名其妙的 Error 仅仅只是因为你糟糕的 Coding Style。
天枰女——Ruby 语言
Ruby 是红宝石的意思,所以这样的女人也如此,看起来像红宝石一样高贵典雅,其实外强中干。不仅运行性能较差,而且应用领域多限于互联网应用,更无奈的是她完全 “面向对象”,对过程一概忽略。和这样的“语言”相处,最重要的也许是给她以虚幻的红宝石幻象,让她时刻保有高贵典雅的气质,避免暴露出外强中干的实质, 更要防止暴露出她为了提高性能,而提出的过高“底层”需求。
天蝎女——C语言
这是一个令人着迷的“语言”,也是一个难度很大的“语言”,即使是一个 Hello World 也是一系列库、源程序经过编译、链接以后的结果。最关键的是,她的魅力就在于其可以通过“指针”直接满足“底层”需求,当她有高涨的”底层需求”时,绝对 不能给她一个“NULL 指针”或者是“野指针”,否则她随时会给你”段错误“的!同时她也是一个自由度很高的“语言”,令人完全无从知道她的真实意思,也许只有真正运行之后才能 知晓。所以能够完全驾驭”C语言”的往往都是操作”指针“非常熟练,”底层”需求高涨且频繁,更是保有无尽解谜热情的程序猿。
射手女——C++
首先她具有以上C语言的全部特征,这还不是最悲剧的。她更强调“面向对象”,如果为了得到她而做得不伦不“类”的话,就只能是一个只满足”底层 “需求的玩物。但是她却有执着不懈的”继承“追求,而为了成为她的”对象“,必须读懂她“封装”的心,和她“多态”的世界,还有无尽的”模板“和“命名空 间”来规范生活,看上去很有品味与追求。她几乎是最难驾驭的,CoolShell 的陈皓曾有文章《你真的懂 C++ 吗?》,也许看起来懂了,其实最多只是一知半解而已,当然她也饱受如此无人理解之苦。而为了驾驭她,各位程序猿前赴后继研究出了 STL、Boost、“泛型”在内的多种开发模式,可是效果如何呢?
魔羯女——Lua 语言
她是一个可扩展配置的语言,可内嵌在任何宿主之内。可是如果想完全收入心中,要么具有如 Angry Birds 那样的创意和娱乐,要么就如魔兽世界这样影响无穷。但她却不肯甘做附属和贤内助,往往要冲上前台一展身手。却暴露了她功能不多,内涵浅薄的弱点。外加“底 层”功能太少,让程序猿只能“撸阿”。
水瓶女——Python 语言
她斑斓丰富的世界吸引了很多向往的人,外加需求和品味的独特更是让人格外着迷。不过她古怪的空格式语法让人颇有些摸不着头脑。还有她独特的运行 库更是拖慢了本可以快速运行的“爱情应用”。随着时间的推移,缓慢的效率已经将她清晰意读的性格和丰富多彩的功能,击的粉碎。所以和她相处,不仅要尽量少 的与环境打交道,更重要的是快速拿下,避免夜长梦多。
双鱼女——Go 语言
这是一种绝对可以并行使用的“语言”,兼有C语言的特征,而“底层需求”虽然不如C语言那么灵活和精于指针,但绝对“引用”了丰富的“底层”内 容。更重要的是她丰富的“接口”功能,让你在享受“面向过程”的同时向往着“面向对象”的未来。只是她有时显得不合时宜的孩子气和不成熟,会稍有影响整体 感情,不过总是有个未来的盼头的。
再次强调,这只是我个人的理解和看法,每个人都有自己对女人的认识和对计算机编程语言的理解,我这里只是简明说了一些自己的想法而已,不具备任何参考价值。
最后,祝各位程序猿 Happy Coding, Happy Loving!