Страница 24 из 25 Сравнение с другими языками Сравнение двух языков занимает целую статью, если не книгу. Следовательно, в данной секции отражено только несколько персональных замечаний к основным сторонам различия между языками. Для создания целостной картины С сам критикуется в том же духе, что и другие языки. Конструкции классов С основаны на оригинальных классах Simula68 [6,7]. Simulа полагается на сборку мусора как для объектов класса, так и для записей активации процедур, и не предоставляет возможностей по перегрузке имен функций и знаков операций. Это, однако, наиболее красивыйи выразительный язык,и классы С обязаны больше именно этому, не какому-либо другому языку. Smalltalk [9] - еще один язык с подобными возможностями виртуальными и контроль типов осуществляется во время выполнения. Это значит, что там, где базовый класс С предоставляет фиксированныйа интерфейсс типовым контролем для множества производных классов, суперкласс языка Smalltalk предлагает нетипизированное множество возможностей, которое может быть произвольно модифицировано. Smalltalk полагается на сборку мусора и динамическое разрешение имен составляющих функций. Он не предоставляет возможности перегрузки знаков операций в обычном смысле, но знак операции может быть именем составляющей функции. Smalltalk предоставляетв высшей степени хорошо организованную среду для конструирования программ, однако в очень сильной степени зависит от ресурсов. Modula-2 [10] предоставляет рудиментарную возможность абстракции, называемую модулем. Модуль не является типом, но является единым объектом, содержащим данныеи функции, имеющих доступ к этим данным. Он в чем-то подобен классу со всеми данными статическими. Нет возможностей, эквивалентных производным классам. Он не допускает перегрузки имен функций или знаков операций. Нет сборки мусора. Модули языка mesс [11] отличаются полным и гибким разделением интерфейса модуля от его реализации. Это дает возможность раздельной компиляции, но и требует не тривиальной реализации связывания. Модуль может импортировать и экспортировать имена как процедур, так и типов. Правила конкретизации модулей (создание объектов и инициализация) настолько общи, что делают их элегантными. Использование модулей приводит к некоторым издержкам по памятии времени исполнения. Нет возможностей по созданию иерархии модулей и по перегрузке знаков операций. Mesса основывается на сборке мусора как для объектов данных, так и для записей активных процедур. Следовательно, он может эффективно использоваться только там, где имеется аппаратная поддержка для сборки мусора. С не предоставляет законченной среды по редактированию, отладке, управлению раздельной компиляцией или управлению исходным кодом. Программная среда С под управлением OC UNIX [1,8] предоставляет набор средств таких возможностей, однако оставляет желать много лучшего. Не предоставляется сборка мусора. Классы С отличаются сочетанием возможностей по созданию объектов и инициализации. Возможности по перегрузке присваивания и передаче аргументов в С являются уникальными. |