Andy Melnikov (nponeccop) wrote,
Andy Melnikov
nponeccop

Я ориентируюсь прежде всего на применимость в своих проектах, и применимость раних версий HNC в чьих-либо других проектах меня волнует постольку поскольку. Стратегически я, конечно, нацелен на революцию в индустрии и несметные богатства, но тактика состоит в абсолютной минимизации объема работ для первого релиза.

На первых порах развитый FFI, позволяющий затаскивать любые сколь угодно кривые и сложные библиотеки хост-языка в HN, мне не нужен. Boost через FFI? No way! В моих проектах вся грязная работа выполняется низкоуровневыми компонентами, которые у меня почему-то оказываются очень стабильными, хоть на сях, хоть на жс. Относительная выгода писать их на NH невелика. Основная масса работы в проектах - это нестабильный высокоуровневый клей между этими компонентами.

Я собираюсь адаптировать интерфейс этих компонентов для удобства скриптования из HN, заимпортировать этот адаптер через FFI, написать для него подобие DSL, используя ФВП в HN и дальше писать скрипты.

Основные трудности при этом - кодогенерация и устранение ФВП-каши. Я не пошел по пути EDSL, поскольку он даст мне только метапрограммирование. Тайпчекинг мне всё равно второй раз надо делать, чтобы выводить (в случае кодогенерации в крестики) шаблонные параметры в местах использования. Да и количество кода в algorithm W смехотворное, как и в случае парсинга.

Много времени было потрачено на кодогенератор крестиков из AST, от которого EDSL меня никак бы не защитил. Текущая задача - избавиться от ФВП-каши в AST. Предварительные результаты очень хорошие, но подход к инлайнингу оказался в корне неверным, и я наметил план из 5 пунктов, из которых один уже готов.

После чего надо будет избавиться от остатков каши, для чего мне наконец придется добавить присваивания и циклы. Люди говорят, что пустяки, а я подозреваю, что будет та ещё песня.
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.
  • 4 comments