Re[7]: Разговор об идеалах :)
От: remark Россия http://www.1024cores.net/
Дата: 22.04.06 23:18
Оценка: 1 (1) :)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, remark, Вы писали:


R>>Некоторые виды дублирования нельзя устранить ни какими способами, кроме advanced-templates (не считая таких отстойных вещей как макросы и void*).


R>>Моё обоснование использования advanced-templates в двух указанных выше предпосылках.


R>>По мимо очень большой скорости правки кода, тебе так же понадобиться идеальная внимательность, т.к. при исправлении какого-либо аспекта в паре десятков мест надо везде сделать правильно.


R>>Идеальной внимательностью я кстати тоже не обладаю, поэтому не люблю, когда мне приходится "поправлять" десятки "почти похожих мест" в проекте.



E>Прекрасно!

E>Расскажи как тебе помогают в твоих многочисленных бедах мультиметоды и for_each


E>Главная проблема с шаблонами, ИМХО, такая, что часто при редактировании нетривильного шаблона очень трудно предсказать все последствия.


Одно из свойств advanced-templates в том, что "уж если вся эта бойда скомпилировалась, значит она работает так, как надо". Я в этом сам неоднократно убеждался на примере boost::bind.
Ты фактически описываешь то, что ты хочешь получить декларативно. Да, иногда, вызывает проблемы объяснить компилятору, что же именно ты хочешь получить, что бы он понял. Но уже если объяснил, то это работает. Т.к. ты не описывал, как ты хочешь это получить. А ошибки бывают обычно именно в этом.
Т.е. проблемы обычно присытствуют в компайл-тайм.
При использовании старых добрах ран-тайм средств всё проблемы просто переносятся соответственно в ран-тайм.
Выбирать каждому самому. Я лично предпочитаю проблемы в компайл-тайм.


Приведу пример. Недавно надо было поправить ядро библиотеки. Библиотека была на так сказать advanced-templates. Написана была достаточно грамотно. Так вот после исправления некоторой части кода, попытался скомпилировать. Не скомпилировалось. Многое сломалось. Где-то static_assert'ы ругаются, где-то просто компилятор. При использовании явных интерфейсов, всё бы замечательно скомпилировалось — ошибки пришлось искать в ран-тайме. Вот в частности за такие вещи мне нравятся advanced-templates и идеи А.


1024cores — all about multithreading, multicore, concurrency, parallelism, lock-free algorithms
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.