Perl只比Python老了两年却被认为过时语言?


为什么Perl被认为是 "老 "和 "过时 "的,而Python被认为是 "新 "和 "酷 "的,而Perl只比Python大两年?

我最喜欢的对Perl的描述一直来自于《编程语言简史》(Brief, Incomplete, and Mostly Wrong History of Programming Languages)。

拉里-沃尔睡着了,额头敲在键盘上。醒来后,拉里-沃尔认为:他的显示器上的那串字符不是随机的,而是上帝希望他这位先知拉里-沃尔设计的一种编程语言的示例程序,Perl就诞生了。

还有一本Python的书,作者说:"Python就像Perl,只是你可以在 6 个月后能读懂你编写的代码"。

我爸爸在Sun公司工作时,用了很多Perl。在我现在的公司,生态系统中仍然有很多Perl。不过,我认为Python(和其他语言)有一个更强大的社区。尽管Perl可以很有效,但似乎对Python有更多的 "爱"。

我在学校开始使用 Perl,然后在工作中过渡到 Python。Python 是可读的,而带有这些单行代码的 Perl 会让人头晕目眩!Python 很酷,因为您必须使用缩进,这使得它更具可读性。
Python 的流行可能使 Perl 的相关性大大降低。

下面怪物代码能在C和Perl中编译:

include <sys/types.h> 
include <sys/stat.h> 
include <stdio.h> 
include <fcntl.h> 
define open(a,b) open(b,a) 
define $ARGV argv 
define $i i 
define x : /* aren't four define way too much?
               unshift @ARGV, $_ = $ARGV[0]; "*/
 
main(int argc, char *argv[]) {
// "; {
  int m=1, i[14]; char * pp; int p=-1;
  int q, F=3; char * qq =
"Hello\, world!\n";
      i[12]=537463307; i[13]=3085;
//,; $_ = "" if(length!=2);
  if(m+-p?(argc>1&&!strcmp(argv[1],
"-p"))?p+i? 1 : 1 x 0 x 0) {
    printf(qq
/*\bThe Perl Journal\n/#*/
          ); exit(0); }
  qq=
"=;#"; argv[0][0]='\0'; memset(i,0,48);
  $i[10]=($i[11]=(q
/*\b/&&scalar@ARGV))-1;#*/=0) + argc)-1;
  do{
    if($i[11]<2) { $i[10]=1; q
/*/&&*F=*STDIN;#*/=F=0;
    } else { open(O_RDONLY, $ARGV[$i[11]-$i[10]]);
//; *F=*O_RDONLY;
    }
    while(read(F, $i, 1)>0) {
      ++$i[4]^(q=
/*.=,$_=$i);#*/0); pp=i;
      $i[3]+=m=( *pp^0x0A)?
/*\n=;#*/0:1; for(qq=&i[12];*qq;*pp^*qq++||(q=1));
      if(m=
/*[     \n\f\r\xB]=#*/q
        ) { if($i[1]){$i[$i[1]]++; $i[1]=0; }} else { $i[1]=2;}
    }
    if($i[1]){$i[$i[1]]++;};
    printf(
"%7d %7d %7d %s\n",$i[3],$i[2],$i[4],$ARGV[$i[11]-$i[10]]);
    close(F);
    if($i[11]>2){for($i[1]=2;$i[$i[1]+4]+=$i[$i[1]];$i[1]++){$i[$i[1]]=0;};$i[1]=0;}
  } while(--$i[10]);
  if($i[11]>2) { printf(
"%7d %7d %7d total\n",$i[7],$i[6],$i[8]); } 
}