MPL/Fusion/Hana в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.05.15 14:54
Оценка: +3 -1
Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек? Ну, так что бы десяток-другой примеров, хотя бы, в духе "была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили". Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы
Re: Метапрограммирование в примерах
От: Evgeny.Panasyuk Россия  
Дата: 06.05.15 15:01
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек?


Нужны примеры именно с использованием MPL/Fusion/Hana? Или подойдут любые TMP примеры?
Re: Метапрограммирование в примерах
От: Άнoним  
Дата: 06.05.15 15:03
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек? Ну, так что бы десяток-другой примеров, хотя бы, в духе "была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили". Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы


А нет ли какого-нибудь труда, который бы понятным языком разъяснял что это вообще такое? Я в бусте (в его "языковой", "неприкладной" части, то есть не касающейся фукнций ОС и матана) около половины библиотек вполне понимаю что оно и для чего, но вот есть такие о которых вообще сказать что-то сложно — что оно и зачем, не говоря уже о "как работает".
Из доступных книг — http://theboostcpplibraries.com (но там как раз в основном понятные), книга Полухина (в которой тоже в основном простые библиотеки) и загадочная книжка в двух томах "Introduction to the Boost C++ Libraries", на которую есть единственная ссылка —
https://skladchik.com/threads/introduction-to-the-boost-c-libraries-volume-i-foundations.11775
Re[2]: Метапрограммирование в примерах
От: Evgeny.Panasyuk Россия  
Дата: 06.05.15 15:09
Оценка: 9 (1)
Здравствуйте, Άнoним, Вы писали:

Ά>А нет ли какого-нибудь труда, который бы понятным языком разъяснял что это вообще такое?


* C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond by David Abrahams and Aleksey Gurtovoy.
* Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu.

Правда они немного устарели в связи с выходом C++11/C++14 — некоторые техники уже не актуальны в связи с новыми языковыми возможностями. Тем не менее общее понимание они дадут на хорошем уровне.
Re[2]: Метапрограммирование в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.05.15 15:17
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Нужны примеры именно с использованием MPL/Fusion/Hana? Или подойдут любые TMP примеры?


Именно по MPL/Fusion/Hana. В общем случае польза шаблонов и варианты их использования вопросов не вызывают.
Отредактировано 06.05.2015 15:18 kaa.python . Предыдущая версия . Еще …
Отредактировано 06.05.2015 15:18 kaa.python . Предыдущая версия .
Re[3]: Метапрограммирование в примерах
От: Evgeny.Panasyuk Россия  
Дата: 06.05.15 15:28
Оценка:
Здравствуйте, kaa.python, Вы писали:

EP>>Нужны примеры именно с использованием MPL/Fusion/Hana? Или подойдут любые TMP примеры?

KP>Именно по MPL/Fusion/Hana. В общем случае польза шаблонов и варианты их использования вопросов не вызывают.

Шаблоны используются не только для метапрограммирования. А метапрограммирование возможно и без MPL/Fusion/Hana.
Топик же называется "Метапрограммирование в примерах", а не "MPL/Fusion/Hana в примерах" — поэтому и уточняю.

Например библиотека Eigen — там сплошное метапрограммирование, но MPL/Proto они не использовали по каким-то организационным причинам, о чём и пишут в комментариях:
/** \internal
  * \file Meta.h
  * This file contains generic metaprogramming classes which are not specifically related to Eigen.
  * \note In case you wonder, yes we're aware that Boost already provides all these features,
  * we however don't want to add a dependency to Boost.
  */
Это считается примером или нет?
Re[4]: Метапрограммирование в примерах
От: andrey.desman  
Дата: 06.05.15 15:30
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Это считается примером или нет?


Примеров и так хватает. Главный вопрос был: а нахера?
Re[5]: Метапрограммирование в примерах
От: Evgeny.Panasyuk Россия  
Дата: 06.05.15 15:37
Оценка: +2
Здравствуйте, andrey.desman, Вы писали:

EP>>Это считается примером или нет?

AD>Примеров и так хватает. Главный вопрос был: а нахера?

Так он же и просит примеры применения ("реальные", а не из документации) чтобы понять "а нахрена?"
Re: Метапрограммирование в примерах
От: night beast СССР  
Дата: 06.05.15 16:51
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек? Ну, так что бы десяток-другой примеров, хотя бы, в духе "была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили". Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы


именно MPL, или списки типов и алгоритмы работы с ними в принципе?
ну, например, недавно делал обертку для работы с бд. там параметры упаковывал в подобные списки:
struct Type {
   typedef Type ( construct )( optional<int>, uuid_t ); // не знаю, как по другому сообщить компилятору, какие типы принимает конструктор :(
   Type ( optional<int>, uuid_t );
};


db::result r = db::query( m_link, "select * from table where field_1 = {0} and field_2 = {1}", value1, value2 );
for ( db::result::const_iterator< Type > it = r.begin( ), end = r.end( ); it != end; ++it ) {
   Type record( *it );
// ...
}


без техник, описанных в MPL, работать со списками было бы очень не удобно.
Re: Метапрограммирование в примерах
От: OlegMax  
Дата: 06.05.15 19:45
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP> Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы


Прочитать книжки — 20% ответа. Остальные 80% — найти задачу, требующую MPL, и решить ее (мне помогло).
Re: Метапрограммирование в примерах
От: Abyx Россия  
Дата: 06.05.15 20:32
Оценка: -1
Здравствуйте, kaa.python, Вы писали:

KP>Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек? Ну, так что бы десяток-другой примеров, хотя бы, в духе "была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили". Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы


ну прямо как будто первый день в С++

берешь буст, и грепаешь там "/mpl/", находишь 2000+ файлов которые используют MPL, читаешь как она используется.
— реальные примеры использования MPL для создания реальных библиотек
In Zen We Trust
Re[2]: Метапрограммирование в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.05.15 00:19
Оценка: +1
Здравствуйте, Abyx, Вы писали:

A>ну прямо как будто первый день в С++


Ты как будто первый раз текст на русском читаешь. Я не хочу читать 2000+ файлов и анализировать их, BOOST мало чем отличается от любой другой бибилиотеки и основная его часть решает проблемы существующие в исключительно в голове авторов. Я же хочу некий труд: заметку, статью, которая покажет на примерах полезные практики и варианты использования. Не зря же в качестве примера я упомянул GoF.
Re[2]: Метапрограммирование в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.05.15 00:19
Оценка:
Здравствуйте, OlegMax, Вы писали:

OM>Прочитать книжки — 20% ответа. Остальные 80% — найти задачу, требующую MPL, и решить ее (мне помогло).


Ок, согласен. Линку на книжку дашь?
Re[4]: Метапрограммирование в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.05.15 00:22
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Шаблоны используются не только для метапрограммирования. А метапрограммирование возможно и без MPL/Fusion/Hana.

EP>Топик же называется "Метапрограммирование в примерах", а не "MPL/Fusion/Hana в примерах" — поэтому и уточняю.

Ты прав, переименовал.

EP>Это считается примером или нет?


Этот текст? Думаю, очевидно что нет.
Re[3]: Метапрограммирование в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.05.15 00:24
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>* C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond by David Abrahams and Aleksey Gurtovoy.

EP>* Modern C++ Design: Generic Programming and Design Patterns Applied by Andrei Alexandrescu.

Потенциально, это то, что мне нужно.
Глянул еще раз. Не опознал английские версии когда-то прочитанных книг. Тот же "Шаблоны C++" мне показались более полезными.
Спасибо!
Отредактировано 07.05.2015 0:56 kaa.python . Предыдущая версия .
Re: MPL/Fusion/Hana в примерах
От: jazzer Россия Skype: enerjazzer
Дата: 07.05.15 02:35
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Очень часто слышу мнение о невероятной полезности MPL (было дело, пару раз нашел ей применение) подобный библиотек. Сейчас вот Hana подоспела, которая тоже невероятно полезна. Так вот, а не видел ли кто некого труда, можно по аналогии с творением от GoF о реальных или более-менее похожих на реальность вариантах использования этих библиотек? Ну, так что бы десяток-другой примеров, хотя бы, в духе "была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили". Лично я, когда читаю приложенную документацию и/или тесты, понимаю что "все очень круто", но вопрос "а нахрена?" меня никак не покидает уже многие годы


Один я вижу противоречие между "а нахрена?" и "было дело, пару раз нашел ей применение"?
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: MPL/Fusion/Hana в примерах
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.05.15 02:45
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Один я вижу противоречие между "а нахрена?" и "было дело, пару раз нашел ей применение"?


Вообще-то да. Противоречия нет, т.к. пару раз найти применение паре функций из огромной библиотеки как раз и говорит о "а нахрена оно все". Как минимум для меня. Но ведь не зря люди столько написали, может я просто что-то не понимаю
Отредактировано 07.05.2015 2:47 kaa.python . Предыдущая версия .
Re: MPL/Fusion/Hana в примерах
От: Patalog Россия  
Дата: 07.05.15 03:15
Оценка: -1
Здравствуйте, kaa.python, Вы писали:

[]

Метапрограммирование вообще и сабжи в частности в основном применяются для производства других библиотек, которые и служат для "была пробелема Ы"решения конкретных прикладных задач, либо в свою очередь, служат основой для опять же библиотек, которые ... =)
Пример — boost.proto\boost.mpl -> boost.simd -> nt2 -> HPC
Почетный кавалер ордена Совка.
Re[3]: MPL/Fusion/Hana в примерах
От: jazzer Россия Skype: enerjazzer
Дата: 07.05.15 03:25
Оценка:
Здравствуйте, kaa.python, Вы писали:

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


J>>Один я вижу противоречие между "а нахрена?" и "было дело, пару раз нашел ей применение"?


KP>Вообще-то да. Противоречия нет, т.к. пару раз найти применение паре функций из огромной библиотеки как раз и говорит о "а нахрена оно все". Как минимум для меня. Но ведь не зря люди столько написали, может я просто что-то не понимаю


Очевидно, зависит от задач. У тебя задачи вот такие, что MPL в полный рост не понадобился.
Мне вот бесселевы функции ни разу не понадобились, и чего теперь Есть же люди, которые считают тяжелую математику, им оно нужно. То же с MPL — когда ты пишешь шаблонную библиотеку, которая должна работать с кучей разных типов разных свойств — тебе неизбежно понадобятся какие-то средства, чтоб со всем этим управляться. А если не пишешь — то тебе оно и не надо
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: MPL/Fusion/Hana в примерах
От: ELazin http://rsdn.ru/forum/prj/6225353.1
Автор: ELazin
Дата: 26.10.15
Дата: 07.05.15 09:45
Оценка:
Сначала подумал что ты про SAP Hana, вот это, думаю, вопросы пошли в С++ разделе.

KP>"была пробелема Ы, в при помощи замечательной MPL/Hana мы её очень эффективно решили"

я как-то раз применил, так код этот наверняка до сих пор живет без изменений из версии в версию, так как никто его не может изменить кроме меня (:
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.