几年前我进入了Perl,并且总是发现它是一种有趣且富有表现力的语言.
我发现Perl中的编程使我的工作效率很高,这得益于其低开销和CPAN常见问题的大量现成解决方案.
如果你是Perl的新手,是什么让你进入它?
我正在编写PHP以维持生计,然后听说他们从::到\作为名称空间分隔符的变化.我真的不是在开玩笑或者是恶意的,但那真的是让球滚滚而来.
不是精英主义者,但我突然意识到我必须与谁合作的人知道PHP对编程概念的理解很少,这让我感到很沮丧,因为他们如此盲目,IRC会议室里的人不再是我的问题的帮助来源,我通常花更多的时间回答问题,等待有人回答我的问题.通常我自己最终解决了.大多数时候我意识到人们在越来越糟糕的情况下一遍又一遍地重新解决同样的问题.
我在PHP中发现了有问题的行为,这些行为违背了逻辑和推理(比如array_merge_recursive系列),发现了如何使用它们没有记录的函数,当我报告函数中的错误时,我的bug被标记为"Bogus"而我预计会是通灵的.
我有一个朋友不断宣称Perl的善良,所以我基本上给了它一个机会,现在我像一个瘾君子一样迷上了.
另外,我在其他高阶动态类型语言(JavaScript和Ruby,是的,JavaScript在语言功能方面是比PHP更强大的语言)方面的经验让我掌握了很多方法来轻松解决问题类型,但受到限制以这种方式我无法使用这些强大的功能.Perl满足了这个需求.
为什么选择Perl而不是Ruby?我曾经玩过Ruby,但是我的经验告诉我,支持和文档很少,语言很慢而且不成熟.它可能很好,但是从我看到的它对Perl的能力仍然有所下降.和它共享PHP的,它具有由总新手都在做的事情错误的方式的一个庞大的用户群败笔,我真的很想没有那么多的面对这一切.
成为精英主义者并不好,但是一旦你试图向30个人解释同样的事情(每次花费一个小时让一个简单的概念进入他们的头脑中),它就会达到令人沮丧的程度.(我不能用"有互联网上的人谁是错的"的局面,如果我不能应付查阅它,它不会发生)
作为"脚本语言"课程的一部分,我在计算机科学的第三年开始学习Perl.我有一个研究生物技术的朋友,我帮助她处理蛋白质数据库(解析文本文件,正则表达式,简单完整性检查)的一些数据挖掘脚本.在Perl中做这一切都很自然.
然后我得到了我的第一份兼职工作,不得不专业地使用它.我负责开发处理公司中某些业务逻辑部分的批处理脚本.这是Perl透露其所有潜力的任务.需要从DB获取数据? - 没问题,只需去CPAN.需要自动化维基 - 没问题,请转到CPAN.已经创建的模块的数量是压倒性的,您可以确定您将始终在CPAN中找到所需的内容.
总结一下.对我来说,Perl是一种脚本语言的瑞士军刀.一切都可以完成,即使是非常奇特的任务,它也有大量的附加模块.顺便问一下,我提到了REGEXPS吗?
我在Perl社区的时间还不长,我最初带来的是Larry Wall的幽默和智慧.是的,Perl有它的怪癖,但语言来自对我非常接近的事情的理解,所以我对Python不太熟悉,而在较小程度上Ruby也不太熟悉.
我没有使用WxPerl做web应用程序的更多GUI,它工作得很好.我对语言也非常感兴趣,比如因素,boo,rebol等等,但总的来说Perl是我的选择.这是因为强大的语法(如果你喜欢它可以非常实用),社区,CPAN当然,以及我之前说的,由于舒适的感觉在正确的地方.
借助Perl(以及TMTOWTDI背后的表现力),编程成为一项创造性任务.我可以写if($expr) { $statement; }
,如果我打算有许多else语句,或者我可以写$statement if $expr;
,如果是更有意义(例如,我喜欢写作:
sub doSomething { my($toObject, $argument) = @_; die "No object specified" unless defined($toObject); die "Object invalid: $toObject" unless $toObject->ISA('Example'); # Do stuff }
但当然,这并不总是最简单,最具表现力的方式; 所以我想出了一个更好的方法来完成手头的任务!).人们抱怨因为Perl让你写出可怕的代码; 我喜欢Perl因为它让我编写的代码对我来说很漂亮(是的,我可以看到让十几个不同的程序员以他们自己的风格写作的缺点;我会坚持认为好的作家可以很有表现力和无论主题有多么不同,都可以理解.
与其他编程语言,我最终不得不认为我的方式,通过抽象层(这将如何Map
给我Collection
(胡)的Iterator
是我能使用...等).使用Perl,我通常只有一个高于基本Perl的抽象级别.例如,DBI
我会将数据库结果作为普通的日常Perl标量,列表和散列给出,所以我所知道的关于这些简单的核心数据结构的所有内容都会DBI
延伸到我提出的每个任务(复杂的数据结构?这就是PostgreSQL的用途!) .
我只使用Perl全职工作了大约一年,但这些对我来说是一大胜利,也是我在Java 1.4的Collections模型遭受一年苦难后第一次全职进入Perl的原因(不要问).其他编程语言让我觉得我正在拼凑一个拼图游戏,因为你排列的所有模块和软件包恰到好处 ; Perl感觉就像一个装满乐高积木的盒子,有一些"特殊"的砖块(比如DBI
,CGI.pm
和Test::*
)被扔进去了.有很多不同的方法可以解决任何问题,Perl让你以任何你喜欢的方式尝试任何你喜欢的方法.
Perl是它的社区,这是在社交和实践层面上使用它的原因.(参见CPAN和Perlmonks,这可能激发了SO.)
在Perl编码时有很多自由; 你可以写一些邪恶疯狂的不可读的黑客,但是一旦你对这种语言有了一种感觉(并学会了如何使用perltidy :-)),你才能意识到写得好的perl代码看起来很彻底漂亮.
这真有趣; 在为大学的系统管理员工作学习之后,我最终成为了一名全职Perl程序员; 现在这是我最强的技能.我会坚持使用Perl一段时间,因为到目前为止,语言已经变得多才多艺,与我一起成长.我在Perl中编写了很多系统软件,并决定选择Web编程以获得乐趣,而Catalyst则在那里等着我.我想尝试一种新的语言范式吗?Perl可能会支持它.相比之下,当我用PHP编写一段时间时,我立刻觉得我正在按压玻璃天花板.
我是俄亥俄州南部一个大型组织的技术故障排除员.我不得不学习Perl以保持一些自动化网络文本操作系统的运行并最终对此感到有些兴奋.我最终认为自己是一名开发人员并编写了一些程序来解析一些数据库数据并使一些人的生活变得更容易.但是在阅读了本网站上的一些帖子并听取了stackoverflow播客之后,甚至开始从某人建议的阅读列表中阅读"代码完成"一书后,我不再有任何妄想,因为我是Perl的开发者或任何其他语言.但是,也许有一天我会.