Бьерн Страуструп - Абстракция данных в языке С++
Страница 24. Сравнение с другими языками


 

        Сравнение с другими языками

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

      Конструкции классов С основаны на оригинальных классах
  Simula68 [6,7]. Simulа полагается на сборку мусора как для
  объектов класса, так и для записей активации процедур, и не
  предоставляет возможностей по перегрузке имен функций и знаков
  операций. Это, однако, наиболее красивыйи выразительный язык,и
  классы С обязаны больше именно этому, не какому-либо другому
  языку.

      Smalltalk [9] - еще один язык с подобными возможностями
  виртуальными и контроль типов осуществляется во время выполнения.
  Это значит, что там, где базовый класс С предоставляет
  фиксированныйа интерфейсс типовым контролем для множества
  производных классов, суперкласс языка Smalltalk предлагает
  нетипизированное множество возможностей, которое может быть
  произвольно модифицировано. Smalltalk полагается на сборку мусора
  и динамическое разрешение имен составляющих функций. Он не
  предоставляет возможности перегрузки знаков операций в обычном
  смысле, но знак операции может быть именем составляющей функции.
  Smalltalk предоставляетв высшей степени хорошо организованную
  среду для конструирования программ, однако в очень сильной
  степени зависит от ресурсов.

      Modula-2 [10] предоставляет рудиментарную возможность
  абстракции, называемую модулем. Модуль не является типом,
  но является единым объектом, содержащим данныеи функции, имеющих
  доступ к этим данным. Он в чем-то подобен классу со всеми данными
  статическими. Нет возможностей, эквивалентных производным
  классам. Он не допускает перегрузки имен функций или знаков
  операций. Нет сборки мусора.

      Модули языка mesс [11] отличаются полным и гибким
  разделением интерфейса модуля от его реализации. Это дает
  возможность раздельной компиляции, но и требует не тривиальной
  реализации связывания. Модуль может импортировать и
  экспортировать имена как процедур, так и типов. Правила
  конкретизации модулей (создание объектов и инициализация)
  настолько общи, что делают их элегантными. Использование модулей
  приводит к некоторым издержкам по памятии времени исполнения.
  Нет возможностей по созданию иерархии модулей и по перегрузке
  знаков операций. Mesса основывается на сборке мусора как для
  объектов данных, так и для записей активных процедур.
  Следовательно, он может эффективно использоваться только там, где
  имеется аппаратная поддержка для сборки мусора.
    С не предоставляет законченной среды по редактированию,
  отладке, управлению раздельной компиляцией или управлению
  исходным кодом. Программная среда С под управлением OC UNIX [1,8]
  предоставляет набор средств таких возможностей, однако оставляет
  желать много лучшего. Не предоставляется сборка мусора. Классы С
  отличаются сочетанием возможностей по созданию объектов и
  инициализации. Возможности по перегрузке присваивания и передаче
  аргументов в С являются уникальными.

 
« Предыдущая статья   Следующая статья »