«МК-Про»: далеко ли до «отлично»?

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

Поэтому высвободившееся внимание я направил на проект «МК-Про» — интерпретатор придуманного мной языка высокого уровня с мощным оптимизатором. Он должен уметь умещать программы разумного объёма в безумные 105 байт, доступных на программируемом калькуляторе «Электроника МК-61».

Этот проект родился в ответ на вопрос Ивана Чернякова, заданный в недавно вышедшем документальном фильме, при создании которого я выступал консультантом: не знаю ли я такой задачи, с которой не смогли бы справиться программирующие нейросети.

Со временем, у меня сложится такой критерий того насколько нейросеть хорошо решила эту задачу — насколько близко мы приблизились к оптимизированной версии игры «Пещера сокровищ» в варианте Сергея Анварова «Крестики-нолики 4×4» программиста Hs On — монстра оптимизации под эту ретроплатформу.

На настоящий момент разница составляет 34 байта или 25%, я попросил нейросеть нарисовать для наглядности график. Планирую сегодня запустить свежевышедшую на днях сеть «ГПТ-5.6 Сол» в режиме «ультра», посмотрим, продвинется ли она дальше. В режиме «очень высокого» усилия (это уровень, предшествующий режиму «ультра»), она продвинулась на два байта, это много.

График изменения размера в клетках с 28 мая по 11 июля: рост до 386 (полная игра), затем резкое снижение до 134 (UI fix), стабилизация около лимита 105.
Там где значения плюсовые — это исправления каких-то багов оптимизатора

Добавлено позднее: в итоге сеть мне сначала довела почти до 105 байт, а потом откатила часть прогресса, сделанного другими сетями и теперь программа у нас занимает 154 байта. Причина — оптимизации слишком заточены под конкретную программу, что противоречит задаче.

3 комментария

«МК-61»: размер программ

Много где говорится, что программы для «Электроники МК-61» занимают не более 105 ячеек памяти. На самом деле, смотря как считать.

Из-за ограниченности памяти у большинства программ константы в регистры вводятся ещё до ввода программы, отдельно и не занимают 105 ячеек, где хранится сама программа. То есть существует часть программы, которая как бы не считается, которая выполняется и результат её выполнения потом используется основной программой.

Например, на приведённом тетрадном развороте справа видно значения, которые надо ввести до ввода программы.

Рукописная программа «Звёздный бой» для ЭВМ: таблица команд с адресами, кодами и комментариями по вводу координат, вычислению энергии, выводу символов победы и управлению кораблём.
Разворот тетради Александра Долгушина, автора кучи программ для «Электроники МК-61»

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

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

И в «МК-Про», и в «MK-61s» это тоже приходится учитывать. И в первом и во втором проекте пришлось конструировать средства для предвыполнения кода перед основной программой.

В «МК-Про» я сделал особый блок state, где записываются такие конструкции, а в «MK-61s» я просто загружаю в память сначала первый блок и выполняю его, потом, в те же ячейки гружу саму программу.

3 комментария