7年前工作中开始接触perl,之后成为自己的首选脚本语言,我用perl陆续写了大约一万行代码。perl是我的思维翻译工具,我能毫无心理负担的手写『朝生暮死』的快速实现。
但是这种『完成一件事不止一种方法』的哲学,与软件工程相悖,不为主流coder所容。常常有人问我,为什么要选择perl?
面对陌生人的提问,很难几句话解释清楚。
- 假设提问者只是一个从众者,他很可能不了解perl,这样就没有没有共同的术语体系,无法三言两语让人理解,遑论产生同感;
- 假设提供者有独立思考能力,两个选择了不同方向的人的碰撞,必然会是一场辩论,『辩论者』的风格与能力跨度极大,错误的辩论对象无法达到目的,还可能会伤感情,辩论这种形式,也不是答案应有的样子。
- 还有预设答案、以己度人的人,心中有块磁铁,把你的答复吸附在他的理解上。
怎么可能几句话解释清楚?
答案
我给过千奇百怪的答案。
真正的答案也并不复杂,三个关键词:程序,性格,哲学。
程序与性格
- 我天生缺乏耐心,三分钟热度,只愿意在一劳永逸的事物里花时间。面对新东西,无论是学校的科目、体育项目、新游戏、新编程语言、新的理论或哲学,我有120%的动力学习理解实践。而一旦新鲜感变成了按部就班平铺直叙,就会失去心力。如果硬要从前30年的行为模式里总结出一个优势,那我总是应该『尝试在一个领域用同样的时间做的比80%的普通人好,然后在热情耗尽前换个领域』。
- 无耐心导致粗心毛躁,我强迫自己重复指定的步骤以挽回粗心毛躁的不良影响,毕竟『唯有原则能对抗天性』。结果这成为了另外一个问题:作为立身之本的语言和代码,其形式结构逻辑性,必须是我能力范围内最好的。否则就会长期占用大脑一块内存。影响难以消除,因为原则来自长久的刻意培养。
缺乏耐心,所以周期越长的边角项目越容易丧失专注——而perl鼓励你走捷径,鼓励你使用各种奇技淫巧极速验证,小微项目中perl的使用者总能在更短的时间里完成同样的工作。
代码洁癖,是因为违背了代码规范——但你所使用的perl就是perl的代码规范。
这是我选择perl的主要原因。
一点哲学
- 也许世上有天生的摄影师一生不知单反为何物,有天生的赛车手终其一生没见过发动机。对于某件事,你是世上最擅长的人,但你却从来没有尝试过。这是『人应该拓展生命边界』的理论基础。
- 我们被鼓励尝试多种编程范型,却也被鼓励使用“更严谨”的脚本语言,其中有不同的考量。但如果学习使用一门语言对你来说是一件”易事”,那何妨偏离一下适用于大多数人的准则,感受下别样的人生。
这是我选择perl的次要原因。
还想说的话
- 代码大全中单列了看似与程序无关的一章:个人性格
那年我还是初窥门径的懵懂少年,读完得出一个结论:能否成为高手,是命中注定?!我仿佛看到大牛说,『你这样的人,要想成为厉害的coder,要走一条比别人艰难的路。』
选语言,扯起性格来,不算跑题。 - 说起“原则能对抗天性”,我还能记得儿时一件小事:
我小学成绩稳定前几名,一百内加减法心算理应有90%以上的正确率。但在小学组织的一场一百以内加减法的心算比赛里,我只完成了2/3的题目,因为每道题目我都会用笔算验算。出分总分第九,数学老师因此揍了我一顿。
趁还记得,暂记一笔。毕竟“好记性”来自拳不离手的熟悉,更来自无声的遗忘。
自认为是一个解决问题的人,曾为人生的每一个问题一本正经的寻找答案。“对自己人生的责任感,随着年龄增大而减小”也许是一件好事,我已不再关心那些我无法改变的“小事”了。 - 至少有100次,我使用vim新建r.pl文件,写一个200行以内的项目解决工作中遇到的问题。我所写过的perl项目中,这个商城爬虫是最规范的 https://github.com/qdladoooo/b2c_crawler
perl6已经低调的失败。我最近连续用python写了两个项目,以后应该不会有规模更大的perl项目出现了。