Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L01.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
116.74 Кб
Скачать

1.3.1.1. Простота

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

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

count = count + 1; count += 1; count++; ++count;

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

Третьей потенциальной проблемой является перегрузка операций, т.е. наличие у символа операции нескольких значений. Это свойство полезно, однако может ухудшить читабельность программы, особенно если пользователи имеют право создавать собственные перегруженные операторы и делают это без разумных оснований. Например, допустимо использование операции "+" как для целочисленных, так и вещественных операндов. Перегрузка упрощает язык, уменьшая число возможных операций. Предположим, однако, что программист определил "+" с двумя операндами, представляющими собой одномерные массивы, имея в виду суммирование всех элементов обоих массивов. Поскольку обычно сложение векто­ров имеет совершенно иной смысл, это может сбить с толку как автора, так и читателей про­граммы.

Однако упрощение языка может зайти слишком далеко. Форма и смысл большинства операторов языка ассемблера чрезвычайно просты. Однако чрезмерная простота снижает читабельность программ на ассемблере. Эти программы имеют менее ясную для привычного человеческого понимания структуру. Кроме того, вследствие простоты операторов размер текста программы на ассемблере намного превышает объем эквива­лентной программы на языке высокого уровня.

1.3.1.2. Ортогональность

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

Например, к признаку ортогональности относится возможность использования общего набора арифметических операций (+, -, *, /) как с целыми, так и вещественными данными. Язык C более ортогонален, чем Pascal. Так в условном операторе C в качестве условия можно использовать существенно более разнообразные выражения.

Когда конструкции языка ортогональны, язык легче выучить и на нем проще писать программы, поскольку в его правилах меньше исключений и специальных слу­чаев, требующих запоминания. Отрицательной стороной ортогональности является то, что программа не будет выдавать ошибки при компиляции, даже если она содержит логически несогласованную или заведомо неэффективную конструкцию. В частности, типичной ошибкой программирования на C является неосмысленное использование в условии оператора if выражения A=B вместо A = = B.

Здесь термин «ортогональность» соответствует ортогональности, например, двух осей координат в геометрии, где при формировании точек плоскости допускаются комбинации любых значений независимых координат X и Y.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]