2024-04_llm-first-py-cxx.md 2.9KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. Title: Первый пример портируемого кода
  2. Date: 2024-04-11 00:00
  3. Category: News
  4. Slug: llm-first-py-cxx
  5. Lang: ru
  6. # Выбор платформ для портирования
  7. Для подтверждения портируемости кода я выбрал следующие платформы и языки:
  8. * C++: Linux, macOS, OpenWrt, Windows
  9. * JavaScript: Chrome, Firefox, Safari
  10. * Kotlin: Android
  11. * Python: Linux, macOS, Windows
  12. * Swift: iOS, macOS
  13. На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ.
  14. Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели.
  15. # Якорный язык и модель ограниченного языка
  16. Весь месяц я постоянно задавал себе вопрос: «Какой язык выбрать в качестве отправной точки для конвертации в другие языки?» Сначала склонялся к C++ ввиду наличия типов. Однако, как только узнал о наличии Type hints в Python, то выбрал Python.
  17. Плюсы Python:
  18. * возможность указать тип с помощью Type hints
  19. * встроенная портируемость кода Python между Linux, macOS, Windows
  20. * наличие pip, что даст возможность легко установить разрабатываемый инструмент в будущем на Linux, macOS, Windows
  21. * отсутствие шага компиляции, что существенно ускоряет итерации
  22. Однако, не любой код Python подойдёт разрабатываемому инструменту. Лишь тот код, который удовлетворяет `Модели ограниченного языка` (`Limited language model`).
  23. Модель ограниченного языка - это подмножество языка Python с различными ограничениями как по формату кода, так и по используемым функциям. Примерное представление можно получить из примера перевода Python в C++:
  24. ![Пример перевода Python в C++][pycxx]
  25. # Планы на апрель
  26. В апреле напишу игровую логику «Памяти» на Python, которую переведу инструментом на C++.
  27. [pycxx]: ../../images/2024_llm-first-py-cxx.jpg