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

Rac*_*hel 11 perl

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

Ree*_*sey 20

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

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

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


zou*_*oul 15

在这种情况下,我认为这意味着你可以做很多事情,而无需编写太多代码.

例如单行:

$ echo Foo | perl -pe "s/o/e/g"
Fee
Run Code Online (Sandbox Code Playgroud)

或者驼鹿:

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

或者上下文的概念:

my @array = qw(foo bar baz);
my $count = @array; # three
Run Code Online (Sandbox Code Playgroud)

Schwartzian变换:

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

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

  • @Telemachus:你并不总能得到你想要的东西,但有时候,你得到你需要的东西;) (3认同)
  • (Psst,@ voyager,它是"不能",而不是"不要",但是谁在数?) (2认同)

hob*_*bbs 10

Perl语法背后的想法不仅是TMTOWTDI,而且是模仿自然语言的尝试(尽可能保持计算机语言的精确性).目标是Perl应该是一种能够流利的语言,就像母语使用者一样,而不是像使用短语的游客.

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

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

关于自然语言对Perl的影响的一些想法:Perl中的自然语言原则.

  • @Ikke,是的.Larry Wall对Perl中的自然语言原则有几点要说:http://www.wall.org/~larry/natural.html (6认同)

Tel*_*hus 8

让我们看看,Merriam-Webster(sv,' expressive ')提供了这样的:

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

我认为实际上Perl适合T,因为其他的回答者说的是(1)有多种方法可以做事(因此Perl有很多方法可以让程序员表达她的想法)和(2)Perl经常相对紧凑(所以你可以用一点点表达很多).

但我想补充一点,Perl对DWIM的普遍倾向(尽我所能)也是它的重要组成部分.

  • +1 Perl的DWIM理念很好,特别是因为采用相反方法的其他语言(不提任何名称)受到影响,因为我最终不得不重复相同的操作,而Perl知道我想做什么.可读性可能会受到Perl新手的影响,但希望Perl新手会在Stack Overflow上问一个关于它的问题,并在此过程中学习更多关于Perl的内容. (8认同)

Est*_*ber 7

他们的意思是TIMTOWTDI.

该语言的设计考虑到了这一点,因为它"不试图告诉程序员如何编程".这使得编写非常混乱的程序变得容易,但是,正如这个座右铭的支持者所说,它也使得编写美观和简洁的程序变得容易.