Здравствуйте, Евгений Музыченко, Вы писали:
A>>Идея в том, чтобы писать макросы типа is_in_set на внешнем языке (типа PHP), пропускать через процессор (например, через pre build steps), он их будет разворачивать в нужное количество сравнений, а затем результат подавать на вход компилятору.
ЕМ>Ну сделаете Вы так, а дальше-то что? Задача ж сугубо частная, не так уж много задач можно решить таким образом, чтоб вся эта возня окупилась. Если уж делать механизм, то более-менее универсальный.
Так это и есть универсальное решение.
Кагбе сказать... Вот конкретно начать писать на пыхе плюсовые программы, это я пока всерьёз не рассматриваю. Но всё же тут есть здравое зерно. Оно в том, что мне не нравится, во что превращается язык (и давно превратился). Взять другой ЯП я не могу, т.к. их нет. Написать свой я тоже не могу, т.к. я ваще не умею писать языки прикладник. Да и глупо это. Кто мне за такое заплатит.
Но можно потихоньку писать макросы на верхнем языке просто по мере написания прикладного кода. Я и раньше писал всякие библиотеки, в т.ч. библиотеки макросов. Получится такой квазиязык.
A>>Это не самая практичная задача, а просто пример того, что язык и его процессор должны уметь делать.
ЕМ>В том-то и дело, что подобные решения всегда будут лишь частными. Чтоб можно было делать удобные и эффективные решения для разных задач, язык должен, с одной стороны, позволять извлекать из компилятора информацию о компилируемой программе, а с другой стороны — применять эту информацию для порождения других элементов программы.
Оно не частное, а общее.
Частный тут только пример. Не могу вспомнить, откуда он, с этого форума, или на Хабре видел, или ещё где, но вот недавно совсем обсуждался вопрос с гардами, какой-то там компилер, как оказалось, без них не может. И спрашивается, как жить. Таскать и прагму, и гарды? А я взял и обобщил: нужна вставка в произвольные места, со стеком, чтобы разруливать вложенности. Если это делать через препроцессинг, конечно.