微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不拘一格的perl

决定学perl 完全是因为有人说:要成为黑客最好应该学会c,java,python,perl,lisp这五门语言,因为它们代表着一些截然不同的设计哲学;而我还没接触过perl。所以我拿起了小骆驼书(像我这样循规蹈矩是不是注定成为不了黑客了TT)      曾经认为Lisp是语言的瑞士军刀,现在我决定Perl才他妈的是!Lisp对于我来说更像是用来头脑风暴的。      Perl给我的印象:   1.模仿C和shell的痕迹很明显,这两门语言中的一些语法,函数在Perl中都能看到,比如printf,还有判断文件是否存在的函数竟然叫 -e。另外Perl在函数定义的时候不用写形参,参数认使用@ARGV这个数组,和shell很像      2.弱类型(weak-typed)很彻底。和python一样都不用声明变量的类型,但实用type(var)你就会发现python的变 量实际还是有分类型的;而Perl则根据需要,比如字符串和数值可以相互转化:1+"3"得到4,甚至无法判断一个变量是不是整 数,stackoverflow上有人说只能用正则表达式 /\d+/ 去判断,也就是说同时它也可以是字符串。这可能和perl最初是被发明用来处理文 本的原因有关。      3.there is more than one way to do it:如果if not... 不够爽,你可以用unless...;觉得while not ...不够直白?用until啊。懒惰是Perl程序员最大的美德,函数调用甚至不用带上参数,认使用$_作为参数,比如print while(<STDIN>)其实是print $_ while ($_=<STDIN>)的意思。      4.context-sensitive:同一个变量在不同的上下文中的意思就不同,比如根据上下文是复数还是单数的,@array可能代表一个数组,也可能代表数组的长度。      这一定和Perl的发明人Larry Wall是语言学家这个事实密切相关。只要能把事情办了,爱怎么写就怎么写,elegance算个屁,形式追随功能才是最大的elegance!      Larry Wall说Perl是一门后现代语言,他认为Python滥用了空格,就像Java滥用了对象。某些语言想要由一个概念统一起来,而Perl则奉行实用至 上。(我不禁联想到是不是应该给物理学家想要寻找万物理论(theory of everything)的爱好泼一盆冷水:谁说上帝用了一个优雅的公式就创造了宇宙?也许宇宙是他东拼西凑搞出来的:-)      在我接触过的语言中,Perl是最接近人类语言的:人类可以用多种方式表达一个意思,同一个词在不同上下文中的意思也可能不同。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐