Title: Первый пример портируемого кода Date: 2024-04-11 00:00 Category: News Slug: llm-first-py-cxx Lang: ru # Выбор платформ для портирования Для подтверждения портируемости кода я выбрал следующие платформы и языки: * C++: Linux, macOS, OpenWrt, Windows * JavaScript: Chrome, Firefox, Safari * Kotlin: Android * Python: Linux, macOS, Windows * Swift: iOS, macOS На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ. Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели. # Якорный язык и модель ограниченного языка Весь месяц я постоянно задавал себе вопрос: «Какой язык выбрать в качестве отправной точки для конвертации в другие языки?» Сначала склонялся к C++ ввиду наличия типов. Однако, как только узнал о наличии Type hints в Python, то выбрал Python. Плюсы Python: * возможность указать тип с помощью Type hints * встроенная портируемость кода Python между Linux, macOS, Windows * наличие pip, что даст возможность легко установить разрабатываемый инструмент в будущем на Linux, macOS, Windows * отсутствие шага компиляции, что существенно ускоряет итерации Однако, не любой код Python подойдёт разрабатываемому инструменту. Лишь тот код, который удовлетворяет `Модели ограниченного языка` (`Limited language model`). Модель ограниченного языка - это подмножество языка Python с различными ограничениями как по формату кода, так и по используемым функциям. Примерное представление можно получить из примера перевода Python в C++: ![Пример перевода Python в C++][pycxx] # Планы на апрель В апреле напишу игровую логику «Памяти» на Python, которую переведу инструментом на C++. [pycxx]: ../../images/2024_llm-first-py-cxx.jpg