Багатослівність - це тенденція до використання великої кількості тексту, а Terseness - використання дуже мало тексту ...
Багатослівність погана, оскільки:
- це дає більше можливостей для друкарської помилки
- це ускладнює читання коду на екрані чи папері та / або введення на картці
- це збільшує час налагодження
- це ускладнює розуміння коду для оновлення / обслуговування
- це може призвести до ненавмисного дублювання коду
- це дещо збільшує ймовірність синтаксичної помилки
- це зменшує гнучкість кодування, тому що більшість багатослівних мов є високоструктурованими і не мають кількох способів сказати одне і те ж.
- це збільшує час кодування та компіляції
- це може зайняти більше місця для зберігання.
Певний рівень багатослівності є важливим для ясності, однак ...
мінімальний рівень Verbosity хороший тим, що:
- людям легше читати та надавати смислове значення, ніж чисто символічному коду
- У іменництві змінних та функцій спрощує налагодження, порт та підтримку коду
- в мовних операціях базового рівня та ключових словах складних мов це призводить до меншої кількості неправильних операцій / призначення ключових слів.
Деякі чудові приклади занадто скупих команд для багатьох людей включають старі BASIC резервних кошти val(x$)
, str$(x)
і chr$(x)
... повертають число з його строкового подання, повертають рядок для номера, і повертають один символ , що має значення ASCII х у вигляді рядка.
Або вказівник C / C ++ і посиланнями операторів &
та ключовим словом *
BASIC byref
. У C / C ++ я можу мати змінну X і передати вказівник на цю змінну, але я повинен пам’ятати, який є вказівник, а який - «вказівник використання як змінна, на яку він вказує»; в основному я просто передаю посилання на ключове слово byref у виклику функції, який є більш зрозумілим, але менш гнучким:
def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)
У цьому коді вміст x змінюється через прапор byref. Деякі аромати дозволяють бутиреф по дзвінку, інші - за визначенням, інші - будь-яким.
Багатослівність важлива для випадкових програмістів, щоб мати можливість легше використовувати символіку; BASIC або python є більш читабельними для людини та більш дослідними, ніж C / C ++, і тому набагато корисніші для випадкових програмістів; лаконічність C / C ++ значно покращує досвідченіших програмістів, яким потрібно побачити більше коду та складнішого коду за один екран, але вони повинні були вивчити різні умовні символьні структури. У кінці кінця APL, який майже повністю не читається для людини.
Тісно пов'язана проблема - чіткість - короткий код часто нечіткий, і надмірно багатослівний код (як в AppleScript) може бути однаково незрозумілим. Ознайомлення з даною мовою збільшує чіткість короткого коду всередині цієї мови - неодноразовий початківець, що стикається з кодом C ++, швидше за все, зможе розібратися лише у формулах, і навіть багато функціональних BASIC або Python-коду занадто просто для розуміння, але applescript може загалом, не зважаючи на мовні словники. Найменш зрозуміле, з чим я стикався без навмисного затуманення, - це Inform 7 ...
За старих часів
Ще одне важливе враження в минулому, але те, що вже не є настільки важливим для кодера хобі, - це робота та простір для зберігання. (Це все ще важливо в кінцевому підсумку.) Маючи на увазі, що багато мов інтерпретувались, особливо BASIC-ароматизатори, і багато інших були складені під час виконання, кодове місце було важливим, особливо, коли диски вміщували лише 128KiB, а окремі пункти-картки лише 80B.
Існувало кілька рішень - токенізація була надзвичайно поширеною в BASIC; окремі ключові слова мови були зменшені до 1 або 2 байтового слова або у верхньому 128, або в просторі контрольних символів. Токенізація також призводить до компіляції байтових кодів (як у Inform та Z-Machine).
Для подолання обмежень на простір також використовувались компіляція декількох об'єктних файлів та посилання. Розділ коду Паскаль кодом 100 Кб може скласти лише 5 КБ; пов'язуючи декілька складених файлів, можна було створити масивні програми, не маючи доступу до накопичувачів великого формату (пам’ятаючи, що 10MiB було приголомшливо великим, і купити новий автомобіль дорого).
Однак більш лаконічні мови отримали більше коду в заданий фрагмент як диска, так і оперативної пам’яті, і, таким чином, компілювали більші шматки за раз. Маючи на увазі: «міні-комп’ютери» початку 1970-х могли мати лише 64 Кбіт оперативної пам’яті (Honeywell 800 мав базову установку з 4 банків по 2048 слів по 8В у кожному). APL та подібні символічні мови наближаються до 1B за інструкцію плюс його операнди, порівняно зі значно більшими 3B-10B за інструкцію плюс операндами. (Це було кошмаром набирати на перфокарти, тим більше, що символи, по суті, були шрифтом на кулі типу, і багато картонних ударів не мали символів на клавішах ...)
Також майте на увазі, що картки не вдалося стерти ... і на програмах було введено багато програм. Хоча це не окремо дорого, тим більше стиснутий код може на картці, тим менше вам потрібно, і чим більші програми можуть бути, тим менш дорогими. Це є причиною того, що BASIC має поєднання декількох інструкцій на рядок у більшості смаків - це було введено для економії на перфокартах. (Або так говорить мій текст програмування Vax Basic.) Поки я не запрограмований для зчитування карт, я зробив штампування картки для Honeywell 800 у форматі FORTRAN, BASIC, APL та ще декількох інших символічних мовах.