<<
>>

Читабельность

Одним из важнейших показателей качества языка программирования является легкость чтения и понимания программ, написанных на нем. По современным представлениям самый длинный период времени из жизненного цикла программ приходится на сопровождение, в ходе которого программы часто модифицируются.
Поскольку читабельность программ определяет легкость сопровождения, ее считают существенной характеристикой качества программ и языков программирования.

Читабельность (Readability) языка программирования должна способствовать легкому выделению основных понятий каждой части программы без обращения к документации.

Простота. Простота сильно влияет на читабельность языка программирования. Язык должен предоставить простой набор конструкций, которые могут быть использованы в качестве базисных элементов при создании программы. Желательно обеспечить минимальное количество различных понятий с простыми правилами их комбинирования. Этому мешает наличие в языке нескольких способов описания одного и того же действия.

Например, в языке С добавление единицы к целому числу можно записать четырьмя способами. Сильное воздействие на простоту оказывает синтаксис языка: он должен прозрачно отражать семантику конструкций, исключать двусмысленность толкования. Предельно лаконичный синтаксис удобен при написании программы, однако усложняет ее модификацию, поскольку в программе нелегко разобраться. Здесь нужен разумный компромисс — простота не должна быть чрезмерной, не должна приводить к загадкам расшифровки.

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

32

Глава 1.
Определение и проблемы языков программирования

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

Например, предположим, что ЯП содержит три элементарных типа данных (целый, вещественный с плавающей точкой и символьный), а также две конструкции данных (массив и указатель). Если обе конструкции могут применяться к этим типам и самим себе, то говорят об их ортогональности, обеспечивающей создание большого количества структур данных.

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

Приведем примеры недостатка ортогональности в языках:

? В языке Pascal функции могут возвращать значения только скалярного или указательного типов, а в языках C и C++ — значения всех типов, за исключением массивов (трактовка массивов в этих языках отличается от трактовки остальных типов). В функциональных языках, языках Ada и Python этот недостаток ортогональности устранен.

? В языке C локальные переменные могут быть определены только в начале блока (составного оператора), а в C++ переменные определяются в любом месте блока (но, конечно, перед использованием).

? В языке Java величины скалярных типов (символьного, целого, вещественного и т. д.) не являются объектами, а величины всех остальных типов считаются объектами. Скалярные типы называют примитивными типами, а типы объектов — ссылочными типами. Примитивные типы используют семантику значения (значение копируется во время присваивания). Ссылочные типы используют семантику ссылки (присваивание формирует две ссылки на один и тот же объект). Кроме того, в языке Java коллекции объектов и коллекции примитивных типов трактуются по-разному. Среди коллекций в Java только массивы могут содержать примитивные значения. Примитивные значения могут вставляться в коллекции других типов лишь в капсулах объектов- оболочек.

В языках Smalltalk и Python, напротив, все величины являются объектами, а все типы — ссылочными типами. Таким образом, в этих языках применяется лишь семантика ссылки и все коллекции объектов создаются в ортогональном стиле.

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

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

Структурированность потока управления в программе. Порядок передач управления между операторами программы должен быть удобен для чтения и понимания человеком. Речь идет об ограниченном использовании оператора безусловного перехода goto и применении специальных структур управления. Более детально эта тема раскрывается в главе 5.

Критерии эффективности языков программирования

33

<< | >>

Еще по теме Читабельность:

  1. Конфликт, изменение и функциональная автономия
  2. Глава 7. Дневник читателя
  3. О КАНАЛАХ ОБРАТНОЙ СВЯЗИ
  4. «Мир божий»
  5. Правоприменительная деятельность и средства массовой информации.
  6. Процесс письма
  7. Л.О. Доліненко, В.О. Доліненко, С.О. Сарновська. Цивільне право України, 2006
  8. ЦИВІЛЬНЕ ПРАВО УКРАЇНИ
  9. ПЕРЕДМОВА
  10. Частина І ПРОГРАМА КУРСУ «ЦИВІЛЬНЕ ПРАВО УКРАЇНИ»