加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

不拘一格的perl

发布时间:2020-12-15 23:48:23 所属栏目:大数据 来源:网络整理
导读:决定学perl 完全是因为有人说:要成为黑客最好应该学会c,java,python,perl,lisp这五门语言,因为它们代表着一些截然不同的设计哲学;而我还没接触过perl。所以我拿起了小骆驼书(像我这样循规蹈矩是不是注定成为不了黑客了TT) 曾经认为Lisp是语言的瑞士军刀
决定学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是最接近人类语言的:人类可以用多种方式表达一个意思,同一个词在不同上下文中的意思也可能不同。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读