有人说Perl是一种“富有表现力的语言”,这意味着什么?

时间:2009-10-19 16:52:59

标签: perl

  • 什么是表达语言?
  • 当有人说Perl是一种富有表现力的语言时,这是什么意思?

6 个答案:

答案 0 :(得分:20)

“富有表现力”的语言是一种允许您在代码中轻松表达逻辑概念的语言。

人们经常称Perl为表达方式,因为它允许您使用许多不同的方法来表达特定的概念,因此在这方面它非常灵活。

(关于这是否是好事还有很多争论,但是......)

答案 1 :(得分:15)

在这种情况下,我认为这意味着你可以在不编写太多代码的情况下做很多事情。

例如单行:

$ echo Foo | perl -pe "s/o/e/g"
Fee

Or Moose:

# A simple Point class with x and y coordinates.
package Point;
use Moose;
has [qw/x y/] => (is => 'ro', isa => 'Num', default => 0);
1;

或上下文的概念:

my @array = qw(foo bar baz);
my $count = @array; # three

Schwartzian transform

@sorted = map  { $_->[0] }
          sort { $a->[1] cmp $b->[1] }
          map  { [$_, foo($_)] }
               @unsorted;

这很好,因为你可以按照的方式完成工作。 (如果你觉得想要解决问题,你可以。)另一方面,它有时很糟糕,因为你可以按照你想要的方式完成任务:)

答案 2 :(得分:10)

Perl语法背后的理念不仅是TMTOWTDI,而且是模仿自然语言的尝试(尽可能保持计算机语言的精确度)。我们的目标是Perl应该是一种语言,你可以像母语一样流利,而不是像使用短语手册的游客一样。

编写代码的一种可行方法应该与思考关于问题的方式类似。当编辑器中的代码形状与头脑中问题的形状相匹配时,您可以更快地进入运行和可测试代码的阶段,因为没有意识到的步骤在您的意思和内容之间进行转换电脑想听。这就是人们经常告诉你Perl非常适合原型制作的原因。

就是这个,而不是简洁或TMTOWTDI,这实际上意味着Perl的“表现力”。自然语言提供代词; Perl提供$_。自然语言提供省略号; Perl为内置提供了默认参数。自然语言提供了许多不同的方式来表达任何给定的陈述,具有不同的含义,不同的模式和语音寄存器; Perl与代码完全相同。母语为英语的人通常会选择最简单的简洁方式来获取所有可用的方法,但他不会 - 他为了清晰起见,可以选择使用更多的单词,甚至是诗意的。在Perl中它是一样的。不科学地说,目标是你应该能够“说出你的意思”。

Larry Wall关于自然语言对Perl的影响的一些想法:Natural Language Principles in Perl

答案 3 :(得分:8)

让我们看看,Merriam-Webster(s.v,'expressive')提供了这个:

  

3:有效传达意义或   感受'表达沉默',   '表达线条画'

我认为实际上Perl适合T,因为其他的回答者说的是(1)有多种方法可以做事(所以Perl有很多方法可以让程序员表达自己的想法)和(2) Perl通常比较紧凑(所以你可以稍微表达一下)。

但我想补充一点,Perl对DWIM的普遍倾向(我的意思是)也是它的重要组成部分。

答案 4 :(得分:7)

他们的意思是TIMTOWTDI

  

该语言的设计考虑到了这一点,因为“并不试图告诉程序员如何编程”。这样可以很容易地编写非常混乱的程序,但是,正如这个座右铭的支持者所说的那样,它也可以很容易地编写出美观简洁的程序。

答案 5 :(得分:2)

阅读拉里沃尔的“洋葱状态”地址(通过谷歌查找)。在前几次演讲中,他谈到了Perl的想法和理念,以及他如何看待它们。它们对于Perl的新人来说非常有启发性。