ВУЗ:
Составители:
Стоимость безопасности оправдывается эффективностью программирования. На-
дежность обеспечивает остановку работы программы в случае ошибки выполнения и тем
самым уменьшает время отладки. Более того, надежность гарантирует целостность струк-
тур данных во время выполнения программы и поэтому дает возможность собрать (очи-
стить) мусор. В свою очередь, чистка мусора значительно уменьшает размер кода, и, тем
самым, в некоторых случаях уменьшает стоимость выполнения.
Поэтому выбор между надежным и ненадежным языком может быть, в конечном
счете, сведен к изменению пропорций между временем разработки программы и временем
выполнения кода. Хотя, несомненно, достоинства безопасности еще не привели к широ-
кому распространению надежных языков. Вместо того чтобы считать, что отсутствие на-
дежности является злом, многие разработчики привыкают к мысли о ненадежности про-
граммирования.
В реальности некоторые статически проверяемые языки не являются достаточно
надежными. Эти языки, используя эвфемизм, называют языками со слабым контролем (в
литературе встречается также термин слабо типизированый язык), означающий, что неко-
торые ошибки класса B обнаруживаются во время компиляции, но не все. Такие языки
широко варьируются по своей слабости контроля.
Например, в Паскале ненадежными являются только записи с вариантами и пара-
метры подпрограмм без типа, в то время как в C присутствуют и широко используются
многие ненадежные особенности, такие как арифметика указателей и приведение типов.
Многие из проблем, вызванных слабым контролем, несколько смягчены в C++, и еще бо-
лее в языке Java, подтверждая тем самым тенденцию отказа от слабого контроля. Язык
Modula-3 поддерживает опасные черты, но только в модулях, которые явно объявляются
ненадежными, и защищает надежные модули от импорта ненадежного интерфейса.
Подведем резюме. Весь процесс разработки и сопровождения программного про-
дукта на чистом и ленивом функциональном языке осуществляется эффективно и позво-
ляет создавать надежные программы.
82