Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Вопросы, на которые должен ответить HN

Кроме практической ценности для моей работы, HN выполняет и образовательную функцию. Вот обновленная версия списка вопросов, которые я задал себе полгода назад:

Открытые вопросы

  • Какая фича сколько будет стоить, можно ли 80% возможностей реализовать с помошью 20% кода?
  • Какие фичи требуют наибольших усилий по реализации? Какие фичи современных языков самые прожорливые в плане разрастания исходного текста компилятора?
  • Какой язык получится, если жертвовать красотой и удобством языка ради простой и эффективной компиляции?
  • Может ли компилятор генерировать хороший читабельный код на выходном языке высокого уровня, и если нет, то чем это обусловлено?

Закрытые вопросы

Кто и почему ест производительность? Какие фичи современных языков самые прожорливые?
В основном производительность едят:
  • собранные на коленках генераторы native code
  • ленивость (косвенно, т.к. она влечет необходимость собирать на коленке graph reductor при написании компилятора и следить за "утечками" памяти при написании программ на ленивых языках)
Почему компилятор не в состоянии решить задачу распределения памяти статически (расставив на этапе компиляции все new и delete), а человек - может?
Компилятор прекрасно справляется с этой задачей, сборщик мусора или подсчет ссылок не обязателен. В области статического распределения памяти ведется много исследований, спрятанных под следующими ключевыми словами:
  • escape analysis
  • region inference
  • static reference counting
Более того, есть даже схемы обычного runtime reference counting, справляющиеся с циклическими ссылками.
Как именно реализуется нормальный порядок редукции? Зачем и в каких местах нужны thunks, реализующие вычисления по требованию? Как минимизировать количество thunks? Как минимизировать количество косвенных вызовов?
Отвечая на эти вопросы, можно писать диссертации. Вкратце - лучше отказаться от ленивых вычислений, пока не придумают способа эффективной реализации ленивых языков.
Насколько экспоненциальны экспоненциальные расходы при замене обобщенного кода на инстанцированный? Как ведет себя при этом общая производительность системы?
Изучение литературы показало, что в проектах моего масштаба инстанцирование полиморфного кода в мономорфный увеличивает производительность
Tags: compiler design, hn0
Subscribe

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 115 comments