Что делает “выразительный” средний при обращении к языкам программирования?

Это только предопределенный общий делегат. Используя его, вам не нужно объявлять каждого делегата. Существует еще один предопределенный делегат, Action<T, T2...>, который является тем же, но возвращает void.

68
задан SilentGhost 12 March 2009 в 14:35
поделиться

6 ответов

'Выразительный' означает, что легко написать код, который это легко понять, и для компилятора и для читателя.

Два фактора, которые делают для выразительности:

  • интуитивно читаемые конструкции
  • отсутствие шаблонного кода

Сравнивают этот выразительный Groovy, с менее выразительным Java eqivalent:

3.times {
   println 'Hip hip hooray'
}

по сравнению с

for(int i=0; i<3; i++) {
    System.out.println("Hip hip hooray");
}

Иногда Вы обмениваете точность на выразительность - работы Groovy в качестве примера, потому что она принимает материал, который Java делает Вас для определения явно.

59
ответ дан slim 7 November 2019 в 10:22
поделиться

у Neal Grafter есть блог с хорошей кавычкой от него на предмете...

В моем уме, конструкция языка выразительна, если это позволяет Вам записать (и использование) API, который не может писаться (и использоваться) без конструкции.

я сказал бы, что это означает, что можно более естественно выразить мысли в коде.

10
ответ дан TofuBeer 7 November 2019 в 10:22
поделиться

Возможно, этот сайт http://gafter.blogspot.com/2007/03/on-expressive-power-of-programming.html может помочь Вам

Короче говоря, он говорит : В моем уме конструкция языка выразительна , если это позволяет Вам записать (и использование) API, который не может писаться (и использоваться) без конструкции. В контексте Закрытий для предложенного расширения языка Java API абстракции управления являются видом вещи, которые, кажется, не поддерживаются конкурирующими предложениями.

1
ответ дан TStamper 7 November 2019 в 10:22
поделиться

Это - жесткое.

Для меня, это имеет отношение к простоте, по поводу которой можно выразить намерение. Это отличается на различных языках и также во многом зависит от того, что Вы хотите сделать, таким образом, это - область, где обобщения распространены. Это является также субъективным и персональным, конечно.

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

, Если Вы хотели распечатать число с плавающей запятой, которое имеет двоичный шаблон 0xdeadbeef, который намного легче сделать в C, чем в Bash, например. Все же Bash, по сравнению с C, ультравысокоуровневым языком. С другой стороны, если Вы хотите запустить программу и собрать ее вывод в текстовый файл, который так прост, это почти невидимо в Bash, все же потребовал бы, по крайней мере, страницы кода в C (принимающий среду POSIX).

5
ответ дан unwind 7 November 2019 в 10:22
поделиться
3
ответ дан Yardena 7 November 2019 в 10:22
поделиться

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

Обычно я связываю язык, являющийся выразительным с синтаксическим сахаром, хотя это не всегда имеет место. Примеры в C# его являющийся выразительным были бы:

  • foreach (вместо того, чтобы явно писать повторение)
  • using оператор (вместо того, чтобы явно писать попытку/наконец)
  • выражения запроса (более простой синтаксис для записи запросов LINQ)
  • дополнительные методы (позволяющий объединение в цепочку вызовов метода, снова прежде всего, для LINQ)
  • анонимные методы и лямбда-выражения (разрешающий более легкому делегату и конструкции дерева выражений)

А другим примером были бы дженерики: прежде чем C# получил дженерики, Вы не могли выразить идеи "ArrayList содержащий, только представляет в виде строки" в коде. (Вы могли зарегистрировать его, конечно, или записать Ваше собственное StringList тип, но это - не совсем то же.)

16
ответ дан Jon Skeet 7 November 2019 в 10:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: