25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.9KB

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++.