Как определить, является ли язык программирования многословным или кратким?

17

Языки программирования часто можно описать как многословными или краткими .

Насколько я понимаю, многословный язык легко читать и понимать, а краткий язык лаконичен и аккуратен, но труднее для чтения. Должны ли быть другие вещи, которые следует учитывать в определениях?

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

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

Пример: C # более многословен, чем Java?

Spong
источник

Ответы:

30

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

Это неверно Многословный означает много символов. Термин означает меньше символов.

Это не имеет ничего общего с легкостью чтения или легкостью понимания.

Некоторые люди находят подробный COBOL легко читаемым, другие находят, что это сбивает с толку, потому что очень много символов требуется, чтобы сделать так мало.

Некоторым людям легко читать краткие I / J / K и APL, потому что программа очень короткая. Другим трудно читать, потому что символы неясны.

Terse / Verbose не имеет отношения с легким для чтения или легким для понимания.

Должны ли быть другие вещи, которые следует учитывать в определениях?

Нет. Определения краткого и многословного в порядке.

Важно то, что эти определения не имеют ничего общего с «легким для чтения и понимания»

Кажется, что многие из популярных языков программирования сегодня многословны.

В самом деле?

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

Считайте жетоны, чтобы что-то сделать.

Add 2 TO A GIVING B.

7 жетонов

b = a + 2;

6 жетонов

http://dictionary.reference.com/browse/verbose

http://dictionary.reference.com/browse/terse

С. Лотт
источник
5
+1 для «Terse / Verbose не имеет отношения к легкому для чтения или легкому для понимания». Я всегда думаю о математических обозначениях, которые, если их правильно сделать, удивительно плотные, но все же относительно удобочитаемые.
Фрэнк Шиарар
5
@sunpech: Вот что означают английские слова. «многословный» означает много слов. «краткий» означает меньше слов. Ничего общего с удобочитаемостью. Просто слово имеет значение. Все, что я сделал, это заменил «слово» на «жетон». Это просто английский, ничего особенного.
S.Lott
1
Мы могли бы также рассмотреть длину токенов. Common Lisp выглядит многословно, потому что многие ключевые слова длинные, и это также добавляет многословности COBOL.
Дэвид Торнли
1
@Frank Shearar: Абсолютно не соответствует действительности, подумайте о времени, которое требуется студентам для изучения математики. Это настолько нечитаемо, насколько это возможно (серьезная математика), и даже после 6 лет среднего образования большинство все еще не могут серьезно его прочитать. Не то чтобы быть нечитаемым - это плохо! Но сказать, что математика - это читаемая запись, - это близорукий комментарий, если не сказать меньше.
Дэвид Малдер
2
@DavidMulder: математические обозначения сильно различаются, поэтому я подозреваю, что мы оба совершаем грехи гиперболы. Конечно, вы считаете, что обозначения алгебры, теории множеств, базового исчисления прозрачны? С другой стороны, я считаю абстрактную запись тензоров нечитаемой ерундой. (Но тогда я также не
потратил
6

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

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

Является ли C # более многословным, чем Java?

Java в целом более многословен, чем C #. Наиболее очевидные различия включают в себя делегаты и лямбда-выражения, где Java требует определения, создания подклассов и создания экземпляров отдельного интерфейса для достижения того, что возможно сделать с использованием одного лямбда-выражения в C #.

Петер Тёрёк
источник
1
Java теперь поддерживает лямбда-выражения с Java 8 ( docs.oracle.com/javase/tutorial/java/javaOO/… )
shanraisshan
1
@shanraisshan: да, со временем стало лучше, но AFAIK Java все еще немного более многословен. Например, в документах, на которые вы ссылаетесь, код содержит множество p.getAge()утверждений. В C # я бы создал свойство Age, которое обеспечивает ту же степень инкапсуляции, что и функция-член getAge, но позволяет p.Ageвместо этого писать .
Док Браун
1
Кроме того, хотя Java и улучшилась, C # также не был статической целью ... Новые возможности, поскольку этот ответ, такой как функции генератора и async / await, также позволяет коду C # быть короче эквивалента Java.
Жюль
3

Дайте фрагмент кода непрограммисту и попросите его / ее объяснить, что этот фрагмент пытается сделать. Если вы получите самый близкий ответ, то это будет многословно. если вы получаете выражение WTF, то оно кратко.

QriousCat
источник
2

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

Некоторые значения из вики - сколько операторов / строк кода C требуется для реализации одной функциональности одной инструкции / строки в:

  • C - операторы: 1 строк: 1
  • C ++ - операторы: 2,5 строки: 1
  • Фортран - заявления: 2,5 строки: 0,8
  • Java - операторы: 2,5 строки: 1,5
  • Perl - операторов: 6 строк: 6
  • Smalltalk - заявления: 6 строк: 6,25
  • Python - операторы: 6 строк: 6,5
Vartec
источник
Я думаю, что тот факт, что одно из этих измерений предполагает, что FORTRAN является более выразительным, чем C, с некоторым запасом (!), В то время как другие утверждают обратное, утверждая, что C ++ одинаково выразителен для C (!!), подводит итог полезности таких «метрик». ».
Жюль