Там кто-либо самоулучшает компилятор вокруг?

ikvm представляет классы Java в.NET. Не преобразователь, но на основе моего опыта я рекомендовал бы его любому делающему переход от Java до.NET

14
задан 4 revs, 3 users 100% 15 November 2009 в 15:12
поделиться

7 ответов

Хотя это правда, что компиляторы могут улучшить код без вмешательства человека, однако утверждение о том, что «компиляторы самоулучшаются», довольно сомнительно. Эти "

13
ответ дан 1 December 2019 в 08:42
поделиться

Я не уверен, подходит ли он, но компилятор Java HotSpot улучшает код во время выполнения, используя статистику.

Но во время компиляции? Как этот компилятор узнает, что несовершенно, а что нет? Какая мера добра?

Существует множество примеров людей, использующих генетические методы, чтобы противопоставить алгоритмы друг другу, чтобы найти «лучшие» решения. Но обычно это хорошо изученные проблемы, у которых есть метрика.

Итак, какие показатели мы можем применить во время компиляции? Минимальный размер скомпилированного кода, циклометрическая сложность или что-то еще? Что из этого имеет значение во время выполнения?

0
ответ дан 1 December 2019 в 08:42
поделиться

25 лет программирования, и я никогда не слышал о таком (если вы не говорите о компиляторах, которые автоматически загружают обновления программного обеспечения!).

4
ответ дан 1 December 2019 в 08:42
поделиться

Насколько мне известно, еще не реализовано на практике, но да, теория есть:

  • Машины Геделя : самореференциальные универсальные решатели проблем, обеспечивающие доказуемо оптимальные самоусовершенствования.
4
ответ дан 1 December 2019 в 08:42
поделиться

Самосовершенствующийся компилятор по определению должен иметь самомодифицирующийся код. Если вы посмотрите вокруг, вы можете найти примеры людей, делающих это (самомодифицирующийся код). Однако это очень редко можно увидеть, особенно в таких больших и сложных проектах, как компилятор. И это необычно по той очень веской причине, что до смешного сложно (то есть почти невозможно) гарантировать правильную работу. Многие программисты, которые считают себя умными (особенно кодировщики на ассемблере), в тот или иной момент экспериментируют с этим. Те, кто на самом деле умны, в большинстве своем выходят из этой фазы. ;)

2
ответ дан 1 December 2019 в 08:42
поделиться

MilepostGCC - это компилятор MachineLearning, который со временем улучшается в том смысле, что он может измениться, чтобы стать «лучше» с течением времени. Более простой подход итеративной компиляции может улучшить практически любой компилятор.

8
ответ дан 1 December 2019 в 08:42
поделиться

Ну, есть JIT (just in time) методы. Можно утверждать, что компилятор с некоторыми JIT-оптимизациями может перенастроить себя для более эффективной работы с программой, которую он компилирует ???

0
ответ дан 1 December 2019 в 08:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: