|
1234567891011121314151617181920212223242526272829303132333435363738394041 |
- 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
|