Подтвердить что ты не робот

Что значит, когда кто-то говорит, что Perl является "выразительным языком"?

  • Что такое выразительный язык?
  • Что значит, когда кто-то говорит, что Perl - выразительный язык?
4b9b3361

Ответ 1

"Экспрессивный" язык - это язык, который позволяет легко выразить логические понятия в коде.

Люди часто называют Perl выразительным, поскольку он позволяет использовать множество разных подходов для выражения конкретной концепции, поэтому он очень гибкий в этом отношении.

(Существует много споров о том, хорошо это или нет, хотя...)

Ответ 2

В этом контексте я думаю, что это означает, что вы можете делать много вещей, не пиши слишком много кода.

Например, однострочные:

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

Или лося:

# 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

Или преобразование Шварца:

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

Это хорошо, потому что вы можете сделать все, что вам нужно, вы. (Если вы чувствуете, что стреляете по этой проблеме, вы можете.) С другой стороны, это иногда плохо, потому что вы можете делать все так, как хотите:)

Ответ 3

Идея синтаксиса Perl - это не только TMTOWTDI, но и попытка имитировать естественный язык (насколько это возможно при сохранении точности компьютерного языка). Цель состоит в том, что Perl должен быть языком, на котором вы можете свободно говорить, как носитель языка, а не как турист, использующий разговорник.

Один из доступных способов написания кода должен иметь схожую форму с тем, как вы думаете о проблеме. Когда форма кода в редакторе соответствует форме проблемы в вашей голове, вы можете быстро перейти на этап работы и тестируемого кода, потому что не существует осознанного шага перевода между тем, что вы имеете в виду и что компьютер хочет услышать. Вот почему люди часто говорят вам, что Perl отлично подходит для прототипирования.

Это это, а не кратковременное или TMTOWTDI, что действительно означало Perl "выразительность". Естественные языки обеспечивают местоимения; Perl предоставляет $_. Естественные языки обеспечивают многоточие; Perl предоставляет встроенные функции с аргументами по умолчанию. Естественный язык предоставляет множество различных способов выражения любого данного заявления, с различными оттенками смысла и различными режимами и реестрами речи; Perl делает то же самое с кодом. Родственник на английском языке обычно выбирает наиболее сжатый способ получить точку, из всех доступных, но ему это не нужно - у него есть возможность использовать намного больше слов для ясности или даже быть поэтическим. В Perl это почти то же самое. Цель, говорить ненаучно, заключается в том, что вы должны иметь возможность "сказать, что вы имеете в виду".

Некоторые мысли Ларри Уолла о влиянии естественных языков на Perl: Принципы естественного языка в Perl.

Ответ 4

Посмотрим, Merriam-Webster (s.v, 'expressive') предлагает следующее:

3: эффективно передавать смысл или чувствуя "выразительное молчание", "выразительные линейные чертежи"

Я думаю, что это действительно подходит Perl к T из-за того, что другие ответчики говорят (1) есть более чем один способ сделать что-то (поэтому у Perl есть много способов, позволяющих программисту выразить свои идеи) и (2) Perl часто относительно компактен (так что вы можете многое выразить немного).

Но я бы добавил, что преобладающая тенденция Perl к DWIM (что я имею в виду) также является большой частью этого.

Ответ 5

Они означают TIMTOWTDI.

Язык был разработан с учетом этой идеи, поскольку он "не пытается сказать программисту, как программировать". Это позволяет легко писать чрезвычайно грязные программы, но, как утверждают сторонники этого лозунга, он также упрощает красивую и лаконичную работу.

Ответ 6

Прочитайте адрес Ларри Уолл "Состояние лука" (найдите их в Google). В первых нескольких речах он рассказывает об идее и философии Перла и о том, как он думает о них. Они могут быть достаточно полезными для новичков на Perl.