Сравнение ЯП (сноски) (Сравнение языков программирования)
Описание файла
Файл "Сравнение ЯП (сноски)" внутри архива находится в папке "Сравнение языков программирования". PDF-файл из архива "Сравнение языков программирования", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст из PDF
39. ↑ Анонимные методы и шаблоны появились в Delphi 200942. ↑ Создание объектов на стеке/Delphi. В Delphi имеется 2 объектных модели - старая (унаследована из TurboPascal) и новая. Создание объектов на стеке возможно только в старой объектной модели43. ↑ Поддержка Unicode в идентификаторах/C++. Доступно в компиляторах от MS, начиная с MSVS 200547. ↑ Контроль выхода за границы массива/С++. В STL входит шаблон std::vector, который следует использоватьвместо массивов языка Си, оставленых для совместимости. Благодаря возможности перегрузки оператораиндексации имеется возможность встраивать в него контроль границ (в std::vector также поддерживаетсяконтроль границ в итераторах).48. ↑ Контроль выхода за границы массива/Java. При выходе за границы массива в Java автоматическигенерируется и выбрасывается исключение ArrayIndexOutOfBoundsException.51.
↑ Сборка мусора/Ada. Только на некоторых платформах (.NET и JVM) или при помощи библиотек (AdaCL:GC).Тем не менее, практически все программы на Ada могут работать как с ним, так и без него. В этом смысле ксборке мусора применительно к Аде следует относиться не как к инженерному решению, а как к оптимизацииуправления памятью.52. ↑ 1 2 Сборка мусора/C и C++. В стандарте языка и в стандартных библиотеках нет сборки мусора. Однакосуществуют сборщики мусора для C и C++ в виде библиотек. Например, BoehmGC53. ↑ Сборка мусора/Delphi. Если не считать Delphi.net55. ↑ Целые числа произвольной длины/Java.
Для представления таких чисел в стандартном наборе присутствуютспециальные классы - BigInteger и BigDecimal64. ↑ Именованные параметры в Delphi могут использоваться при вызове OLE:Word.Openfile(filename='1.doc')67. ↑ Локальные функции/С. Поддерживаются в компиляторе gcc как нестандартное расширение языка. [6]68. ↑ Локальные функции/Java. Внутри метода можно определять безымянные (анонимные) локальные классы,которые фактически позволяют создавать экземпляры объектов, перекрывающие методы своего класса.69. ↑ Появились в Delphi2009, как анонимные функции70. ↑ Кортежи/C++.
В C++ кортежи реализуются в стандартной библиотеке (появились в TR1 (англоязычныйраздел), до этого была в boost'е)).73. ↑ "Query Comprehension" можно считать за List Comprehension только с большой натяжкой74. ↑ Цикл foreach/Ada. Методы Iterate и Reverse_Iterate различных контейнеров, входящих в библиотекуAda.Containers, являющуюся неотъемлимой частью языка.75. ↑ Цикл foreach/C++. Алгоритм for_each входит в библиотеку STL, являющуюся неотъемлимой частью языка.79. ↑ Список изменений в языке Delphi с 7 версии80. ↑ Информация о типах в runtime/Ada.
Точный тип узнать можно (Ada.Tags), но полной поддержки отражения вязыке нет. Можно узнать имя, предков, интерфейсы, сериализовать объект. Нельзя запросить список методов.81. ↑ 1 2 Информация о типах в runtime/С++. Можно сравнить типы на точное совпадение, узнать имя типа (typeid)или его размер (sizeof). Однако полноценной поддержки отражения в языке нет - нельзя перечислить предковтипа, члены данных или методы либо сериализовать объект. Статически можно привязывать и получатьдополнительную информацию о типах с помощью специализированных шаблонов, как, например,std::numeric_limits.
Все перечисленные средства работают и с аргументами шаблонов.82. ↑ Инструкция goto/Java. Является зарезервированным словом.88. ↑ Блок finally/Ada. В стандарте языка finally нет, но существуют библиотеки, реализующие функционал finally.Используются крайне редко, это скорее proof of concept(англ.).91. ↑ При помощи нескольких последовательных catch93. ↑ Легковесные процессы/Java. Вплоть до Java 1.1.96. ↑ Контрактное программирование/Java. На основе аннотаций Java 5, используя библиотеку OVal и аспектныйкомпилятор AspectJ.97. ↑ 1 2 3 4 5 Реализуется сторонними библиотеками98.
↑ Только совместное использование посредством виртуального наследования .