Войти
ФлеймФорумПрограммирование

[C++] Язык управления компиляцией (кодогенерация) (2 стр)

Страницы: 1 2 3 Следующая »
#15
17:29, 20 янв 2017

/A\
> Ну это совсем тупо, я считаю что константу без явно указаного типа надо
> приводить к типу переменной.
> константу

template <typename T>
T Max (T a, T b);

Где константа? В упор не вижу.

#16
17:29, 20 янв 2017

/A\
> Не хочу, хочу с++.
Ты определись уже. Тебе вроде было нужно "управлять генерацией кода на 100%", в этом состояла основная цель, не?

#17
17:43, 20 янв 2017

9К720
Но я не хочу переписывать весь код на другой язык

#18
17:47, 20 янв 2017

/A\
> Но я не хочу переписывать весь код на другой язык
То есть тебе нужен язык, позволяющий "управлять генерацией кода на 100%" и при этом умеющий в дешевую, а лучше бесплатную интероперабельность с уже существующей кодобазой?
Я верно понял твою проблему? Ну тогда ответ #2

#19
17:50, 20 янв 2017

/A\

В чем проблема? Бери llvm, разбирай AST, генери все что угодно.
Там есть возможность делать source-to-source преобразования.

#20
18:11, 20 янв 2017

Ghost2
Похоже когда-нибудь сделаю свой с++))
Но все же хочется готовое решение, чтоб работало у всех одинаково.
Мне больше интересно было это мне одному такое нужно или действительно проблема более массовая?

#21
18:29, 20 янв 2017

/A\

попробуй D

проблемы нет. Озвуч задачу

Десять причин избегать метапрограммирования

#22
20:17, 20 янв 2017

А еще хочу такую фичу:

void Test (out int result)
{
  ...
}

int res;
Test( out res );

// компилируется в

void Test (int &result)
{
  Out<int>  outResult(result);
  ...
  static_assert(outResult.IsSet());
  return;
}

int res;
Test( &res );

// либо добавить такой оператор
template <typename T>
Out<T> operator out (T &value);

void Test (Out<int> result);

int res;
Test( out res );
#23
20:35, 20 янв 2017

/A\
> управлять генерацией кода на 100%

если машкод x86 считать языком, то он на 100% управляет генерацией кода :)
  </trollmode>

а вообще теоретически можно сделать такой ЯП, но если к нему не будет IDE/отладчика, то он скорее всего не взлетит.

#24
21:08, 20 янв 2017

Adler
Да проще всего сделать препроцессор и раскрывать самому шаблоны и тд. Но делать это чисто для себя чтобы применять в своих проектах, а на работе все равно придется пользоваться стандартным С++ с его недостатками, то смысла особого нету.

#25
1:33, 21 янв 2017

/A\
> Но все же хочется готовое решение, чтоб работало у всех одинаково.
Нету такого.

> Мне больше интересно было это мне одному такое нужно или действительно проблема
> более массовая?
Всем пофик. На Ц++ пишут бородатые дяди, которые умеют, стиснув зубы, не обращать внимания на боль, страдания и выкрутасы функциональщиков, засевших в комитете.

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

#26
11:12, 21 янв 2017

>Всем пофик. На Ц++ пишут бородатые дяди, которые умеют, стиснув зубы, не обращать внимания на боль, страдания и выкрутасы функциональщиков, засевших в комитете.
Хм...

>сделать многоступенчатый язык с единообразной основой, где может быть произвольное число "компайл-таймов",
>каждый следующий компайл-тайм - рантаймовая машина для предыдущего,
>и у каждого компайл-тайма - свой набор базовых типов, который является рантаймовым для него, но константно-компайлтаймовым для следующего компайл-тайма -
>в общем-то, лежит на поверхности
Хм...

>Но довести проблему до строгой формулировки и постановки задачи никто не пытался.
Хм...

> Потому что см. предыдущий абзац.
Возможно, что никто не смог ответить на два вопроса:
1. ЗАЧЕМ?
2. ЗАЧЕМ?
Ммммда?

#27
14:14, 21 янв 2017

Ну круто же. Еще бы знать как при этом сохранить время полной перекомпиляции в адекватных рамках и можно было бы сделать.

#28
16:01, 21 янв 2017

Adler
Джава. С офлайновым профилем оптимизатора. В хотспоте такого правда нет, но есть в азуле.

#29
16:29, 21 янв 2017

9К720
> Джава
А у нас такая хрень была с джавой: условие всегда работало по false ветке, хотя дебагер выводит что true и по логике должно быть true, но нет, джава лучше знает как выполнять этот код.
Java и C# это чисто для новичков, пока они не поймут насколько это хреновые языки. Но тут проблема как и с С++: очень много кода написано на всех этих языках и отказаться от них большая проблема.

Страницы: 1 2 3 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.