Этот сайт — моя персональная записная книжка. Интересны мне, по большей части, программирование, история и события из моей жизни.

«МК-Про»: переписываю на Си++

Сейчас транслятор «МК-Про» — языка высокого уровня для «Электроники МК-61» — написан на ТайпСкрипте. Я выбрал этот язык по двум причинам: хотелось на него посмотреть, и была идея прикрутить транслятор к эмулятору «МК-61», который работает в браузере.

Но вчера я решил переписать его на Си++. При помощи нейросети, конечно. Производительность ТайпСкрипта стала серьёзным блокером: в процессе трансляции оптимизатор перебирает огромное количество вариантов, чтобы уместить программу в 105 байт, и иногда этот процесс занимает минуты. Надеюсь, перевод на Си++ решит эту проблему.

Интересно, за какое время нейросеть справится с этой задачей. Проект большой: около 80 тысяч строк только основного кода; кроме того, очень много тестов — около двух тысяч, если ничего не путаю, — и есть эталонные программы, которые должны скомпилироваться байт в байт.

Спустя полтора часа транслировалось уже десять программ и я удивился такой скорости, пошёл читать исходники, а там, то, что на скриншоте — чёртова ленивая нейросеть просто затолкала внутрь кода эталонный результат десяти программ. Офигенное решение.

2 комментария
Alexandr 27 дн

Это в них и поражает — нейронка показывает очень сильные программерские скилы, и если б это был человек, то понятно, что это ответственный, усидчивый работник был бы , с огромной эрудицией. А такое срезание углов пришло бы в голову только юному падавану.

Евгений Степанищев 27 дн

Да, приходится себя сильно корректировать, чтобы не считать нейронку человеком, но уйти от этого совсем невозможно, неизбежно очеловечиваешь нейронку, хотя какая в ней может быть ответственность? Каким образом она «ответит», то есть расплатится за свой промах или лень?

Антон 25 дн

Евгений, ты возможно писал раньше, если пропустил не обессудь, но скажи, используешь ли ты в работе, в частности вот в МК-Про подходы агентного программирования какие-то, есть ли AGENTS.md / .rules для инструкций для агента, или может быть подход с написанием спецификаций aka spek kit / open kit или что-то самобытное, типо цикл планирования -> декомпозиции -> реализации в файлах?
Либо же, условно, у тебя просто чат с диалогом, в котором ты направляешь агента, не фиксируя это как-то конкретно?
Поясни, почему спрашиваю. Удивила эта история с хардкодом эталонных результатов, хотелось бы хотя бы примерно понимать, как нейронка дошла до такого решения, чем руководствовалась и в каких рамках она при этом была.

Евгений Степанищев 25 дн

Нет, в «Кодексе» я ничего такого не делаю. В «Курсоре» было удобно — «Курсор» умеет писать развёрнутый план, со всем ходом будущего решения (там даже схемы могут быть), его читаешь, корректируешь и запускаешь. Я привык к такому. Правила пишу редко, единственный проект, где я это делал — violawww.

В «Кодексе» планы не работают вообще, а когда работают выглядят скромнее — просто как список пунктов. Поэтому единственное, что я делаю — ставлю цель. Цель работает. «Кодекс» вообще в целом примитивнее «Курсора». Цель была описана примерно так (примерно, потому что мне пришлось несколько раз перезапускать «Кодекс» и один раз он цель потерял:

перенести код TS на C++ со всеми оптимизациями, языком МК-Про, чтобы примеры были байт в байт с реализацией на TS и чтобы все тесты, которые надо перенести из TS, проходили. Исключение: можно править баги, даже если они сказываются на совпадении с эталонной реализацией на TS