Многословие - это тенденция использовать обширные объемы текста, а краткость - очень мало текста ...
Многословие это плохо, потому что:
- это вводит больше возможностей для опечатки
- это затрудняет чтение кода на экране или бумаге и / или ввод на перфокарте
- это увеличивает время отладки
- это усложняет понимание кода для обновления / обслуживания
- это может привести к непреднамеренному дублированию кода
- это несколько увеличивает вероятность ошибки синтаксиса
- это уменьшает гибкость кодирования, так как большинство многословных языков очень структурированы и не имеют нескольких способов сказать одно и то же.
- это увеличивает время кодирования и компиляции
- это может занять больше места для хранения.
Определенный уровень многословия важен для ясности, однако ...
минимальный уровень многословия хорош, потому что:
- людям легче читать и придавать смысловой смысл, чем чисто символический код
- При именовании переменных и функций это упрощает отладку, перенос и поддержку кода
- в языковых операциях базового уровня и ключевых словах сложных языков это приводит к уменьшению количества неправильных операций / назначений ключевых слов.
Некоторые замечательные примеры слишком кратких команд для многих включают старые резервные версии BASIC val(x$)
, str$(x)
и chr$(x)
... возвращают число из его строкового представления, возвращают строку для числа и возвращают один символ, имеющий значение ascii x в качестве строки.
Или указатель C / C ++ и ссылочные операторы, &
а не ключевое слово *
BASIC byref
. В C / C ++ я могу иметь переменную X и передать указатель на эту переменную, но я должен помнить, какой именно указатель, а какой «использовать указатель в качестве переменной, на которую он указывает»; в основном, я просто передаю ссылку с ключевым словом byref в вызове функции, что более понятно, но менее гибко:
def fn Foo(x byref as float) foo= (x += x+1)
...
Foo(x)
В этом коде содержимое x изменяется из-за флага byref. Некоторые ароматы позволяют byref по вызову, другие в определении, некоторые в любом.
Многословность важна для случайных программистов, чтобы они могли легче использовать символику; BASIC или python более понятны для человека и более многословны, чем C / C ++, и, следовательно, гораздо более полезны для случайных программистов; краткость C / C ++ делает его намного лучше для более опытных программистов, которым нужно видеть больше кода и более сложный код на одном экране, но они должны были изучить различные соглашения о символической структуре. В дальнем конце находится APL, которая почти полностью нечитаема человеком.
С этим тесно связана проблема ясности - краткий код часто неясен, а чрезмерно подробный код (как в AppleScript) может быть в равной степени неясным. Знакомство с данным языком повышает ясность краткого кода в этом языке - начинающий, сталкивающийся с кодом C ++, вероятно, сможет анализировать только формулы, и даже большая часть функционального кода BASIC или Python слишком лаконична для понимания, но appleScript может ломать голову, как правило, не прибегая к языковым словарям. Наименее ясно, с чем я столкнулся без преднамеренного запутывания - это Информ 7 ...
В старину
Еще одно важное соображение в прошлом, но уже не столь важное для хобби-программиста, - это пространство для работы и хранения. (Это по-прежнему жизненно важно для высокого класса.) Учитывая, что многие языки были интерпретированы, особенно BASIC, и многие другие были скомпилированы во время выполнения, пространство кода было важно, особенно когда диски содержали только 128 КБ, а отдельные перфокарты - только 80 В.
Существовало несколько решений - токенизация была очень распространена в Бейсике; ключевые слова для отдельных языков были сокращены до 1 или 2-байтового слова либо в верхних 128, либо в пространстве символов управления. Токенизация также приводит к компиляции байт-кода (как в Inform и Z-Machine).
Компиляция и компоновка нескольких объектных файлов также использовалась, чтобы обойти ограничения пространства. Секция кода Pascal размером 100 КБ может составлять только 5 КБ; связывая несколько скомпилированных файлов, можно было создавать массивные приложения, не имея доступа к дискам большого формата (помня, что 10 МБ было удивительно большим, и покупать новый автомобиль дороже).
Более краткие языки, тем не менее, получали больше кода в заданную часть диска и оперативной памяти и, таким образом, компилировали более крупные блоки за раз. Помните: «миникомпьютеры» начала 1970-х годов могли иметь только 64 КБ ОЗУ (у Honeywell 800 была базовая установка из 4 банков по 2048 слов по 8 В каждый). APL и аналогичные символические языки приблизились к 1B на инструкцию плюс ее операнды, по сравнению с гораздо большими 3B-10B на инструкцию плюс операнды. (Это было кошмаром печатать на перфокартах, особенно потому, что символы были по сути шрифтом на шарике для текста, и у многих карточных перфораторов не было символов на клавишах ...)
Кроме того, имейте в виду, что карты не могут быть удалены ... и многие программы были введены на картах. Хотя это и не дорого по отдельности, чем больше сжатого кода может быть на карте, тем меньше вам нужно, и чем больше могут быть программы, или тем дешевле. Это одна из причин, по которой BASIC объединяет несколько инструкций на строку в большинстве разновидностей - он был введен для экономии на перфокартах. (Или так говорит мой программный текст на Vax Basic.) Хотя я не программировал для кард-ридера, я проделал перфорацию карты для Honeywell 800 на FORTRAN, BASIC, APL и паре других очень символических языков.