Холлеритовы символы

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

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

Влияние ошибок может быть снижено, а сами они могут быть обнаружены при помощи метода перегородок и двойного контроля внутри программы. Метод перегородок включает в себя проверку параметров, передаваемых модулю через интерфейсы, и защиту алгоритма от недопустимых входных условий. Нет оснований считать, что в вызываемый модуль никогда не попадут неправильные параметры: если ошибка может произойти, однажды она произойдет. Если эти параметры проверять на правдоподобие и соответствие, то влияние ошибок будет локализовано в программе и, например, будет исключена возможность испортить файлы с ценной информацией. Кроме того, ошибки будут выявлены быстрее и, следовательно, точнее. В каждом модуле есть ключевые точки, в которых следует проверять соответствующие переменные. Это служит тем же целям, что и перегородки,  локализация возможных ошибок и минимизации наносимого ими ущерба.

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

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

Метки: , ,

Записи по теме

Комментировать

Введите код