Як визначити, чи мова програмування є багатослівною чи короткою?


17

Мови програмування часто можна охарактеризувати як багатослівні або стислі .

З мого розуміння, багатослівну мову легко читати і розуміти, в той час як лаконічна мова є лаконічною і акуратною, але важче читати. Чи мають бути інші речі, які слід врахувати у визначеннях?

Здається, багато популярних сучасних мов програмування є багатослівними, і ці терміни два терміни використовуються лише для опису мови як більшої чи меншої, ніж іншої мови.

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

Приклад: Чи є C # більш багатослівним, ніж Java?

Відповіді:


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
Ми також можемо врахувати довжину жетонів. Звичайний 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 # точно не є статичною ціллю ... Нові функції, оскільки ця відповідь, як функції генератора та асинхронізація / очікування, також служать для того, щоб код C # був коротшим, ніж еквівалент Java.
Жуль

3

Надайте фрагмент коду непрограмісту і попросіть його / її пояснити, що цей фрагмент намагається зробити. Якщо ви отримаєте найближчу відповідь, то це багатослівно. якщо ви отримаєте вираз WTF, то він короткий.


2

Міра називається виразністю мови. Типовою метрикою для цього є вимірювання стандартизованих рядків коду або висловлювань, необхідних для реалізації тієї ж функціональності.

Деякі значення з Вікі - скільки висловлювань / рядків коду С потрібно для реалізації однієї функціональності одного оператора / рядка в:

  • C - висловлювання: 1 рядок: 1
  • C ++ - заяви: 2,5 рядки: 1
  • Фортран - заяви: 2,5 рядки: 0,8
  • Java - заяви: 2,5 рядки: 1.5
  • Perl - висловлювання: 6 рядків: 6
  • Малі розмови - висловлювання: 6 рядків: 6.25
  • Python - заяви: 6 рядків: 6.5

Я думаю, що той факт, що одне з цих вимірювань говорить про те, що FORTRAN є деяким виразним, ніж C деяким запасом (!), А інший констатує навпаки, заявляючи, що C ++ настільки ж виражає C (!!) підсумовує корисність таких "показників" ".
Jules
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.