Re: Метапрограммирование в C++20 (если примут)
От: denisko http://sdeniskos.blogspot.com/
Дата: 28.07.17 17:22
Оценка: +1
Здравствуйте, jazzer, Вы писали:

J>https://youtu.be/6nsyX37nsRs


J>Кто боялся — смотрите видео и не бойтесь больше.


J>З.Ы. Разве что кваз цитирование не помешало бы. Но посмотрим, что примут в результате.

J>Если примут — в моем коде исчезнет почти всё метапрограммирование на шаблонах и всё на препроцессоре, а код станет читабельнее в разы и компилироваться будет мгновенно, по сравнению с сейчас.
смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.
<Подпись удалена модератором>
Re[6]: Метапрограммирование в C++20 (если примут)
От: jazzer Россия Skype: enerjazzer
Дата: 29.07.17 07:14
Оценка: +3
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Отчасти согласен. Но в связи с этим это и превращается в тупую гонку стопицотого фреймворка JS. Ломать последнюю цитадель консерватизма, надежности и гибкости — лишнее.


Так метапрограммирование "на компиляторе" на порядок надежнее и гибче, чем метапрограммирование на шаблонах и препроцессоре, не говоря уже о внешней кодогенерации типа какого-нть moc, swig и прочих ужасов, которые почти всегда требуют, чтоб ты готовил им файлы определенным образом (чтобы их убогий парсер не скрючило), а то и вообще писал специальные файлы на их птичьем языке (IDL, к примеру).

Просто потому, что ты можешь заточить генерацию, основываясь на реальной информации, доступной компилятору (типы, члены, имена, размеры и выравнивания полей, наличие или отсутствие чего-то с конкретным типом/сигнатурой и т.п.), а не пользоваться эвристиками (которые всегда найдут, на чем сломаться) или зубодробительными указаниями, которые требуют еще одного языка в языке специально для этих целей.
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]: Метапрограммирование в C++20 (если примут)
От: jazzer Россия Skype: enerjazzer
Дата: 29.07.17 07:23
Оценка:
Здравствуйте, denisko, Вы писали:

D>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.


Сорри, ткни пальцем, где ты это увидел?
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[4]: Метапрограммирование в C++20 (если примут)
От: jazzer Россия Skype: enerjazzer
Дата: 29.07.17 07:26
Оценка:
Здравствуйте, night beast, Вы писали:

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


J>>Но на видео все очень понятно, рекомендую посмотреть за обедом


NB>смысла нет. до 20 года все кучу раз переделают.


Update от Саттера насчет С++20:

...there is zero chance of this being in C++20. Besides that this needs further development and trying out at increasing scales in more domains, the door for C++20 features closes in two years and this depends on two other features (reflection and compile-time programming) of which only one (reflection) is even yet in progress toward becoming a draft TS itself.

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: Метапрограммирование в C++20 (если примут)
От: _NN_  
Дата: 29.07.17 16:59
Оценка: :))) :))
Здравствуйте, jazzer, Вы писали:

Без упоминания сами-знаете-чего как-то скучновато
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Метапрограммирование в C++20 (если примут)
От: denisko http://sdeniskos.blogspot.com/
Дата: 30.07.17 14:11
Оценка:
Здравствуйте, jazzer, Вы писали:

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


D>>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.


J>Сорри, ткни пальцем, где ты это увидел?


Нафига is_virtual_in_base_class вместо (this.has_base_class() && this.base_class.is_virtual(f)) и что он должен вернуть в ситуации
1) Если такой функции нет в базовом классе
2) если нет базового класса
<Подпись удалена модератором>
Re[2]: Метапрограммирование в C++20 (если примут)
От: B0FEE664  
Дата: 30.07.17 20:34
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

J>>Кто боялся — смотрите видео и не бойтесь больше.

МД>Это всё баловство. Развлечение для студентов. Не будет этого в промышленном коде еще очень долго.
МД>Вот столько уже всего наизобретали, но тут подавляющее большинство видимо никогда не делало промышленный код либо никогда просто не участвовало в очень огромных проектах которые начинались в очень лохматых 90-ых годах, и которые до сих пор работают.

Вот как раз в промышленном коде метапрограммирование очень нужно и востребовано, но не для генерации кода, а для наложения на него (на код) ограничений. Для каждого класса можно написать внешний по отношению к нему код проверяющий соответствие некому стандартному подходу разработки. Если постановлено, что никакой метод начинающийся на get_... не может возвращать ссылки, то пишем проверяющий данное правило код и весь неверный код перестаёт компилироваться. Т.е. мы получаем unit test времени компиляции, а не выполнения.
И каждый день — без права на ошибку...
Re[4]: Метапрограммирование в C++20 (если примут)
От: jazzer Россия Skype: enerjazzer
Дата: 31.07.17 14:09
Оценка:
Здравствуйте, denisko, Вы писали:

D>>>смущает наличие составных функций типа is_base_of_base_of_base_of_base_function_contains_property(); Обычно когда так проектируют все кончается cmakе-ом или в лучшем случае киздецом.


Ну ты докопался до столба
У них вообще пока нет никакого более-менее законченного предложения про то, каким именно будет API и из каких функций он будет состоять. Это статья была (и выступление, которое на нем основано) — просто для оценки, насколько народ (и комитет) вообще готов принять такую фичу в таком виде.

Плюс оно все в любом случае будет базироваться на рефлексии, которую сейчас активно обсуждают (там в работе предложений 5 как минимум, о разных аспектах оной).
Конкретно про функции там http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0670r0.html и в нем есть пока просто is_virtual/is_pure_virtual/is_override, безо всяких base. Правда, непонятно, что там с унаследованными, но не переопределенными, но, опять же, это не финальный дизайн, естественно, такого маразма, как ты написал, никто предлагать не будет. Как вариант, должна быть просто рефлексия по всем унаследованным членам, типа
for ( auto f: $class.inherited().functions() )
{
  if ( f.is_virtual() && ! $class.member[f.name()].is_override() )
    error("override missing");
}
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]: Метапрограммирование в C++20 (если примут)
От: jazzer Россия Skype: enerjazzer
Дата: 31.07.17 14:12
Оценка: 2 (1)
Здравствуйте, _NN_, Вы писали:

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


_NN>Без упоминания сами-знаете-чего как-то скучновато


Догадайся с полраза, почему
http://www.rsdn.org/forum/trash/5283252
http://www.rsdn.org/forum/trash/5304078
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[3]: Метапрограммирование в C++20 (если примут)
От: uncommon Ниоткуда  
Дата: 03.08.17 17:02
Оценка: 10 (1) :)
Здравствуйте, jazzer, Вы писали:

J>Догадайся с полраза, почему

J>http://www.rsdn.org/forum/trash/5283252
J>http://www.rsdn.org/forum/trash/5304078

Сейчас Rust в моде.
Re[3]: Метапрограммирование в C++20 (если примут)
От: Vain Россия google.ru
Дата: 05.08.17 12:12
Оценка:
Здравствуйте, jazzer, Вы писали:

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

_NN>>Без упоминания сами-знаете-чего как-то скучновато
J>Догадайся с полраза, почему
J>http://www.rsdn.org/forum/trash/5283252
J>http://www.rsdn.org/forum/trash/5304078
Да мы все в курсе про язык который упоминать нельзя.. Но ссылки что-то не открываются, надо www убрать.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re[4]: Метапрограммирование в C++20 (если примут)
От: Aleх  
Дата: 10.08.17 01:07
Оценка:
Здравствуйте, Vamp, Вы писали:


J>>у меня в моем промышленном коде это очень даже нужно.


J>>Далее, как насчёт Qt? IDL? C++/CLI? ProtoBuf?


V>Протобаф это ужас, летящий на крыльях ночи.


Можешь раскрыть мысль?
Re[5]: Метапрограммирование в C++20 (если примут)
От: Vamp Россия  
Дата: 10.08.17 14:04
Оценка:
V>>Протобаф это ужас, летящий на крыльях ночи.
A>Можешь раскрыть мысль?

Очень медленные, невыносимо кривая реализация расширений.
Да здравствует мыло душистое и веревка пушистая.
Re[5]: Метапрограммирование в C++20 (если примут)
От: niXman Ниоткуда https://github.com/niXman
Дата: 10.08.17 21:36
Оценка: 3 (1)
Здравствуйте, Aleх, Вы писали:

A>Можешь раскрыть мысль?

ну, как минимум — тотальный тормоз, у которого хваленная компактная сериализация мало того, что не компактит, так еще и дико тормозит:
https://github.com/niXman/cpp-serializers
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re: Метапрограммирование в C++20 (если примут)
От: Evgeny.Panasyuk Россия  
Дата: 27.08.17 15:40
Оценка:
Здравствуйте, jazzer, Вы писали:

J>З.Ы. Разве что кваз цитирование не помешало бы.


На 41:55 это практически оно и есть, там где инжектится кусок кода с подстановкой. Но, скорей всего, без доступа к дереву самой цитаты — то есть видимо всё что с ним можно сделать это заинжектить (что является основным use-case'ом).
Re: Метапрограммирование в C++20 (если примут)
От: MasterZiv СССР  
Дата: 15.09.17 09:12
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Кто боялся — смотрите видео и не бойтесь больше.


Страшно не это. Это -- нестрашно. Страшно всё ВМЕСТЕ...
Re: Groups "SG 7 - Reflection" group.
От: ollv СССР https://youtu.be/DQDoYs6wHoo
Дата: 02.10.17 16:48
Оценка:
Здравствуйте, jazzer, Вы писали:

welcome to the Groups "SG 7 — Reflection" group. ))

Может я проглядел, но есть ли что-то выходящее за рамки этого контекста ?
Compiler can be as trained AI but can't compose music.
Antheil piano jazz sonata. Я болен ПГМ.
Отредактировано 02.10.2017 16:49 Маркуша Шулин . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.