不拘一格的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是最接近人类语言的:人类可以用多种方式表达一个意思,同一个词在不同上下文中的意思也可能不同。

你可能感兴趣的:(perl,骆驼书)