![]() |
|
Модераторы: LSD Страницы: (59) « Первая ... 51 52 [53] 54 55 ... Последняя »
( Перейти к первому непрочитанному сообщению ) |
![]()
|
|
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Препроцессор морально устаревшая технология обработки кода. Шаблоны по сути это и есть препроцессор. Плата за гибкость меньшая надежность и ухудшение читабельности. Я, например, в своих программах отказываюсь от #define и заменяю его const для констант, а макросы инлайнами. Небольшая потеря гибкости в пользу прозрачности кода оправдана. Я бы все же сказал, что это сомнительное приемущество. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
||||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ведь главная его функция в подстановке реального типа вместо условного и компиляция полученного С++ кода. Так без специального указания мы получим отдельную реализацию для типов char, word, long, ULONG, и т.д. Механизм довольно схожий. Например, какие у него есть особенные возможности в части наследования, кроме той же подстановки. Думаю стоит поведать о неочевидных особенностях шаблонов, иначе не видно в чем их прогрессивность в отличие от препроцессора. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Daevaorn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
Не знаю на самом деле твой уровень зания С++ и шаблонов в частности, но твои высказывания удручают.
Шаблоны это не только типы, но и значения.
Думаю стоит поизучать С++, прежде чем сравнивать что-то в нем с препроцессором. |
||||
|
|||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 3 Всего: 124 |
Template Meta-Programming — Wiki Pedia
Template Meta-Programming — Wiki Books
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
поясни, пожалуйста, малознакомым с шаблонами, почему шаблоны не могут быть реализованы через препроцессор(я не имею в виду конкретный препроцессор встроенный в конкретный компилятор, а транфсормер исходного кода вообще)? |
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 3 Всего: 124 |
Макросы
Сергей Деревяго. C++ 3rd: комментарии |
|||
|
||||
| SergeCpp |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 955 Регистрация: 8.8.2005 Где: At Home Репутация: 3 Всего: 124 |
Трансформер исходного кода [шаблонов] вообще == компилятор языка программирования C++
Template Meta-Programming Обращаю внимание рассматривающих английский текст на то, что под "макросами" понимаются именно макросы "вообще" |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
Начем с того что препроцессинг кода произходит на первой стадии его обработки, ещё до компиляции. И препроцессор ничего не знает о типа, да и о языке программирования практически тоже. Такие полезные возможности как частичная/полная специализыция, вывод типов, expression templates не могут быть реализованы до процесса компиляции никаким препроцессором. Поэтому все кто сравнивают механизм шаблонов в С++ с препроцессором, просто не знают С++ и являются заложниками слова "шаблон". |
|||
|
||||
| Alexeis |
|
||||||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
SergeCpp, тем не мене в простейшем виде, например
Разница между макросом и шаблоном совершенно не видна.
Вот вам и удобство программирования. Написание шаблона тебует большого внимания и контроля над кодом. Для человека естественна логическая привязка к типам, потому что тип является вполне конкретным объектом и схож с тем что его окружает в мире. А теперь посмотрите как реализуется метод шаблонного класса вне описания шаблона
Простым и удобным такой синтаксис трудно назвать.. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||||
|
|||||||
| Beltar |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
А можно и просто сказать, что нефиг вводить в язык то, что можно легко реализовать в оболочке или чуть усложнив компилятор.
С этим ИМХО в Майкрософт.
А также между описанной мной фичей. Хотелось бы увидеть более сложный пример, причем по возможности типовой, а не уникальный, нужный раз в год.
На С пишут одни супермены, так что им это как два байта переслать. PS Самое гибкое это набор кода руками. PPS А вот что обязательно нужно ввести и в Си и в Паскаль (не помню название Паскаль-компилятора в котором это сделали, работает он под VS) так это case\switch со строками. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||||
|
|||||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 1 Всего: 260 |
ёлки-моталки, только-только узнал, что в Делфи есть пространство имён
Точнее, что можно обращаться к идентификаторам, объявленным в разных модулях по имени модуля |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
||||
|
||||
| nerezus |
|
|||
![]() Вселенский отказник ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3330 Регистрация: 15.6.2005 Репутация: 13 Всего: 43 |
Это нормально, ибо его дело - только дать азы ) "В бассейн Дельфин требуется инструктор по плаванию, умеющий плавать" |
|||
|
||||
| Beltar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
Это не пространство имен, размазанное по куче файлов, а нормальное разделение видимости по юнитам. И было оно со времен появления в Паскале раздельной компиляции, в учебниках все это есть.
Да-да. И вообще Delphi'ны тупые и т. д. и т. п. Delphi не виноват, что его преподают в вузах и куча студентов, которым на него наплевать, лишь бы зачет был, заваливает интеренет-конферренции глупостями. А преподы, они вообще к новому невосприимчивы. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||
|
|||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |