HeadlinesBriefing favicon HeadlinesBriefing.com

Код-гольф интерпретатор Python 1024 байта

Hacker News •
×

Остин З. Хенли, разработчик, который пишет код от руки по выходным, объявил вызов код-гольф для создания интерпретатора Python всего в 1024 байта кода C. Проект явно избегает макросов и внешних библиотек. Хенли начал с реализации программы FizzBuzz, которая имитирует синтаксис Python, используя двоеточия и отступы без скобок. Он отметил, что поместить весь язык Python в такое маленькое пространство невозможно, поэтому он сосредоточился на подмножестве синтаксиса, которое выглядит «питоноподобно». Его первые попытки были безуспешными; простой калькулятор быстро превысил лимит в 512 байт. Затем он изменил стратегию, перечислив элементы, которые выглядят как Python, признавая, что его навыки код-гольфа недостаточны для цели в 512 байт. Он решил сначала заставить это работать, а затем сделать это маленьким. Интерпретатор использует минимальное состояние, хранящееся в глобальных переменных, массив фиксированной длины для исходного кода и таблицу символов для переменных. Он рекурсивно анализирует выражения и обрабатывает поток управления с помощью стека вызовов C. Циклы работают путем перехода назад и повторного анализа исходного кода на каждой итерации. Проект представляет собой уникальное упражнение в ограничениях реализации языков.