Читайте также:
|
|
(короче, этот вопрос не конкретный и по нему ничего нет. Почти. Так что скидываю, что нашла)
Шаблонное метапрограммирование в С++ страдает от множества ограничений, включая такие проблемы, как портируемость, отсутствие поддержки отладки или ввода/вывода в процессе инстанцирования (Инстанцирование (англ. instantiation) —создание экземпляра класса. В отличие от слова «создание»,применяется не к объекту, а к классу, говорят «(в виртуальной среде) создать экземпляр класса илиинстанцировать класс») шаблонов, длительное время компиляции, низкая читабельность кода, скудная диагностика ошибок и малопонятные сообщения об ошибках. Подсистема шаблонов С++ определяется как полный по Тьюрингу чистый функциональный язык программирования, но программисты в функциональном стиле считают это провокацией и не спешат признавать С++ успешным языком.
Многие языки (Java 5, Ада, Delphi 2009) реализуют поддержку обобщённого программирования более простым способом, некоторые даже на уровне системы типов (см. Eiffel, а также параметрический полиморфизм в языках семейства ML); такие языки не нуждаются в механизмах, похожих на шаблоны С++.
Средства макроподстановки в Си, хоть и не обладают Тьюринг-полнотой, представляют собой достаточное для низкоуровневого программирования средствопорождающего программирования, и в C99 их возможности были существенно расширены.
Язык D обладает шаблонами, более мощными, чем C++.
Шаблоны представляют собой мощное и эффективное средство обращения с различными типами данных, которое можно назвать параметрическим полиморфизмом, обеспечивают безопасное использование типов, в отличие от макросов препроцессора, и являются вкупе с шаблонами функций средством реализации идей обобщенного программирования и метапрограммирования. Однако следует иметь в виду, что эти средства предназначены для грамотного использования и требуют знания многих тонкостей. Программа, использующая шаблоны, содержит код для каждого порожденного типа, что может увеличить размер исполняемого файла. Кроме того, с одними типами данных шаблоны могут работать не так эффективно, как с другими. В этом случае имеет смысл использовать специализацию шаблона (Павловская Т. А., Щупак Ю.А С/С++. Структурное и объектно-ориентированное программирование: Практикум – этот учебник есть в папке у Белодеда. Там есть про специализацию, но очень много)
Стандартная библиотека С++ предоставляет большой набор шаблонов для различных способов организации хранения и обработки данных.
Дата добавления: 2015-09-03; просмотров: 75 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Заметки | | | Стандартная библиотека шаблонов (STL). Назначение и состав библиотеки. Контейнеры. Последовательные контейнеры. Векторы. |