Files
ogs-site/ru/news/2024-04_llm-first-py-cxx.md
2024-04-11 22:31:49 +03:00

42 lines
2.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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