译文在我的 blog 上:
https://5long.github.io/post/mid-career-crisis-of-perl-programmer.html
英文原文:
http://www.modernperlbooks.com/mt/2014/02/the-mid-career-crisis-of-the-perl-programmer.html
文章略长,目测原作者当时(2014 年)是经历了面试 Google 的挫败,回顾自身的人生经历,有感而发。
可以,但原文的许可协议(CC-BY-NC-SA 3.0)不仅要求注明出处,还有别的要求。官方的中文简单诠释可以看这里:https://creativecommons.org/licenses/by-nc-sa/3.0/deed.zh
作为一个国内 Ruby 程序员,看作者的叙述,也是感同身受啊
照我看来,有这么几种方法能让你找到写 Perl 的工作:
- 自己创办公司,自己创造职位
- 与不在乎技术选型的客户合作,自己创造职位
- 在现有的工作中逐渐引入 Perl,直到 Perl 的地位不好取代,这样自己创造职位
- 找到现存的还在用 Perl 的公司(等于“搬到阿姆斯特丹”,或者“维护 1997 年传下来的代码”,或者“撞大运”)
- 用 Perl 造出一个惊为天人的东西,让人不得不用。比如说 mod_perl,或者 Movable Type。cPanel 和 Catalyst 也算得上吧。
ruby 转其他 oop 语言应该比较容易吧,最多牺牲一些灵活的写法,多出点语法上不那么好看的冗余代码。如果底层一点的话,补充点算法和优化内存的小技巧。切换语言的代价真的没那么大,毕竟现代编程语言提供的抽象工具本质上大同小异。当然我还是最喜欢 ruby,不过也不排斥写其他语言。
我在写 Perl 时的效率太高,去写别的语言短时间内根本达不到同等水平。毕竟这是十六年积累下来的经验。毕竟这是两万小时的练习成果。哈哈,我写 ruby 也是这样啊,估计也有两万小时了吧 。解决问题写很 elegant 的方法 (method),方法搞不定的用 meta-programming,再搞不定还可以用 ast 语法树。(可以叫做 super meta-programming 吗哈哈), 其他语言根本达不到同等效率。即使之前用了 python,但是感觉对于 python 也就是调调 api,解决解决算法问题这样的程度,根本达不到得心应手的程度。
hackernews 貌似也有文章的相关讨论 https://news.ycombinator.com/item?id=7373038
一个很有意思的回复
one soon can do s/perl/currentfancylanguage/g
呃,虽然我看过搞笑漫画日和,但这里并不清楚你所说的“好像日和吐槽”具体是什么意思。而且我也没有学过日语。
如果你是在评价行文风格,那么我想应该是因为原文文风就是如此。当然也有可能是我在翻译中意外地加工成了现在的样子。
Catalyst 太大了,而且很多模块用了 C 实现,有些 Linux 发行版没有装一些模块,编译不过,我开始的时候自己也不会解决(上大一的时候),直到后来熟悉了 Linux C 之后,终于明白它少了依赖 lib,testing 不过,装上了终于通过了。东西很大,执行效率一般。
适合企业级使用,成本也很高。
所以要用的话,我还是用 Dancer。
Perl 不是书面 OOP 语言,而是非常独特的一种思想的语言,首先它是 C 那种模块式的,然后 Object 其实是 package 模拟的,当然你可以用 Moose 带上了很多 has 之类的 关键字 DSL,不好解释,但是你可以想象一下用 IE 年代的 JavaScript 进行 OOP 的感受。 它每一个变量本身就是 Scalar,是一种“多元体”,跟 PHP 的 Scalar 基本一样。它每个变量都为不同的数据类型开辟了空间,详情看 perltut 等等 man 文档 perldoc。