DAY07 (1114697), страница 2
Текст из файла (страница 2)
С профессиональной (канонической) точки зрения, язык Си - ужасный язык. Основным требованием, которое предъявляется к языкам программирования, является обеспечение безопасности программирования. Средства языка должны минимизировать вероятность внесения ошибок в программу, и заведомо к таким средствам современных языков относится следующее: жесткий контроль типов (т.е. нельзя, например, сложить целочисленную переменную с вещественной, не преобразовав перед этим тип одной из них к типу другой). Язык Си обладает возможностью преобразования типов по умолчанию. Другая криминальная вещь - это обеспечение контроля за доступом к памяти программы (т.е. если в ячейке памяти хранится вещественное число, то мы не можем его проинтерпретировать никак иначе). Возможность бесконтрольного использования этих значений предоставляют указатели. Более того, через указатель можно «обманывать» функции в соответствии и несоответствии фактических параметров формальным параметрам и т.д. Третье свойство - это контроль за взаимодействием модулей. Много ошибок появляется в том случае, если в функции продекларирован один набор формальных параметров, а обращение к ней происходит по другому набору (причем отличия могут быть как по количеству параметров, так и по типам). В языке Си всегда можно обмануть программу - вместо формального параметра одного типа дать параметр другого типа, и вместо десяти параметров передать один. Это приводит к ошибкам.
Вот три позиции, по которым язык Си не удовлетворяет требованиям безопасности. Однако опыт показывает, что наиболее живучими оказываются плохие (с этой точки зрения) языки.
Итак, 1973 год - год появления написанной на языке Си операционной системы UNIX. Какими основными свойствами обладала эта система? Первое свойство - это концепция файлов. Основным объектом, которым оперирует операционная система, является файл. Файл, с точки зрения операционной системы UNIX, - это внешнее устройство. Файл - это каталог, который содержит информацию о содержащихся в нем файлах. И так далее, на сегодняшний день, файлом может считаться, в некотором смысле и процесс, который может работать.
Второе свойство - это особая структура операционной системы. В отличие от предыдущих операционных систем, в которых каждая команда была «зашита» внутрь операционной системы, т. е. ее нельзя было как-либо модифицировать, в UNIX-е проблемы команд решены очень элегантно. Во-первых, UNIX декларирует стандартный интерфейс передачи параметров извне внутрь процесса. Во-вторых, все команды реализованы в виде файлов. Это означает, что можно свободно добавлять новые команды в систему, а также убирать и модифицировать их. То есть система UNIX открыта, и ее можно легко развивать.