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

Сегодня наконец закончился процесс переноса кода «МК-Про» на C++. Переписывание заняло около восьми дней, использовались три нейросети. Основной каркас был перенесён с помощью «ГПТ-5.5», часть тестов довольно механически переносилась нейросетью «ГПТ-5.3-Кодекс-Спарк», а последние штрихи вносил и баги чинил «Опус 4.8».

Производительность трансляции улучшилась в среднем в 2,5 раза. Есть один регресс у одной короткой программы, которая выполняются до 50 миллисекунд, но это, скорее всего, погрешность: не исключено, что в этот момент в фоне стартовало что-то тяжёлое.

За восемь дней было переписано 122 тысячи строк, которые превратились в 145,5 тысяч строк на C++.

Таблица сравнения времени выполнения примеров на TypeScript и C++: C++ быстрее в большинстве случаев (от 1.13x до 9.52x), кроме e-94-digits, где TS быстрее в 1.67x.

Читайте также

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

Комментарии 10

Alexey Tomin № 1
А ты смотрел на код, который нейросеть создала?
Как оно внутри?
Евгений Степанищев автор № 2
На этот — очень мало, но в некоторых проектах смотрю. По-разному бывает, всё как у людей, но обычно код очень хороший
Макс № 3
Жесть. Я на верилоге за пару дней написал (тогда ещё нейронок не было) процессор 8080, а тут столько мучений. Реально не понимаю что там может быть сложного? Строк кода наверное больше чем транзисторов в микросхемах этого калькулятора
Евгений Степанищев автор № 4

Как уж что? Огромное количество совершенно разношёрстных оптимизационных стратегий, которые надо уметь применять. Эффективные компиляторы/трансляторы писать очень сложно.

Попробуйте, например, прикинуть как бы вы реализовали оптимизационную стратегию использования регистра X2, учитывая все его ограничения. Если сложно, можно глянуть на конкретные оптимизации с его участием.

Leonid № 5
А сколько по деньгам вышло?
Евгений Степанищев автор № 6
до $300 — в основном всё делалось в рамках одной самой топовой подписки на «Кодекс» (я три раза тратил там недельный лимит, но у меня откуда-то было два сброса и один раз я подождал, в это время работал с «Опусом» и «ГПТ-5.3», у которой отдельный лимит).
1
Макс № 7
Тяжёлый слог у описания оптимизаций, но примерно понял, стараться подгонять числа чтоб одно число можно было использовать и тут и там. Я таким занимался когда хотелось чисто теоретически написать самый маленький резидентный вирус, там размер вируса и сегмент было одним числом (или что-то такого). Ладно, я не вникал в эти запрограммированные оптимизации, но разве нельзя просто смоделировать-скомпилировать лярд вариантов и выбрать тот, который вышел меньше? (Или какой там критерий)
Евгений Степанищев автор № 9
…стараться подгонять числа чтоб одно число можно было использовать и тут и там.

Это отношения к //X2// не имеет, это ещё одна оптимизация.

…но разве нельзя просто смоделировать-скомпилировать лярд вариантов и выбрать тот, который вышел меньше?

В смысле просто перебрать все операции в 105 ячейках и посмотреть получится ли нужная программа или как это? Во-первых, перебираться это будет до тепловой смерти Вселенной, а во-вторых, как понять что получилась искомая программа?