diff --git a/.gitignore b/.gitignore index 2750770..f8be8f8 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ pelican/output/ # Ignore VIM temporary files. *.swp +.DS_Store diff --git a/en/news/2024-04_llm-first-py-cxx.md b/en/news/2024-04_llm-first-py-cxx.md new file mode 100644 index 0000000..6e479d0 --- /dev/null +++ b/en/news/2024-04_llm-first-py-cxx.md @@ -0,0 +1,42 @@ +Title: The first example of a portable code +Date: 2024-04-11 00:00 +Category: News +Slug: llm-first-py-cxx +Lang: en + +# Supported platforms + +To verify code portability, I selected the following platforms and languages: + +* C++: Linux, macOS, OpenWrt, Windows +* JavaScript: Chrome, Firefox, Safari +* Kotlin: Android +* Python: Linux, macOS, Windows +* Swift: iOS, macOS + +I created a simple "Hello World" example for each language to understand the basic requirements of each platform. + +By the way, OpenWrt turned out the most complex platform to create "Hello World" for, because my TP-Link TL-MR3020 r1 router is considered obsolete since 2018. I had to use the old 17.01.7 firmware, which took about three weeks. + +# Anchor language and limited language model + +For the whole month I was asking myself the same question: "Which language should I choose as a starting point to convert to other languages from?" Initial considerations were pointing me to C++ due to strong types. However, as soon as I found out Python has Type hints, I chose Python. + +Python is good because: +* one can specify a type with Type hints +* Python has portability across Linux, macOS, Windows out of the box +* pip simplifies distribution of the language conversion instrument +* Python does not require a separate compilation step, which speeds up development + + +However, not every Python code will suite the language conversion instrument under development. Only the code that satisfies the constraints of the `Limited language model`. + +Limited language model is a subset of Python with various restrictions in both syntax and a set of available functions. Here is a glimpse of those restrictions, the image below depicts Python to C++ conversion result: + +![Python to C++ example][pycxx] + +# April plans + +I'm going to write game logic for "Memory" in Python and convert it to C++ by the instrument under development. + +[pycxx]: ../../images/2024_llm-first-py-cxx.jpg diff --git a/en/news/index.html b/en/news/index.html index 32883b6..3786b5e 100644 --- a/en/news/index.html +++ b/en/news/index.html @@ -30,6 +30,30 @@

News

+
+

+ The first example of a portable code +

+

+ 2024-04-11 00:00 +

+
+

Supported platforms

+

To verify code portability, I selected the following platforms and languages:

+
    +
  • C++: Linux, macOS, OpenWrt, Windows
  • +
  • JavaScript: Chrome, Firefox, Safari
  • +
  • Kotlin: Android
  • +
  • Python: Linux, macOS, Windows
  • +
  • Swift: iOS, macOS
  • +
+

I created a simple "Hello World" example for each language to understand the basic requirements of each platform.

+

By the way, OpenWrt turned out the most complex platform to create "Hello World" for, because my TP-Link TL-MR3020 r1 router is considered obsolete since 2018. I had to use the old 17.01.7 firmware, which took about three weeks.. . .

+
+ +

Шина-iOS @@ -197,22 +221,6 @@ It seems that right now we have less completed features than before the release Continue reading

-
-

- Defending availability -

-

- 2019-04-16 00:00 -

-
-

Altai's Katun river

-

In this article, we describe the beginning of our efforts to protect ourselves from third-party solutions.

-

Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan.. . .

-
- -

Page 1 of 7

diff --git a/en/news/index2.html b/en/news/index2.html index e8948b6..01e30c9 100644 --- a/en/news/index2.html +++ b/en/news/index2.html @@ -30,6 +30,22 @@

News

+
+

+ Defending availability +

+

+ 2019-04-16 00:00 +

+
+

Altai's Katun river

+

In this article, we describe the beginning of our efforts to protect ourselves from third-party solutions.

+

Since day one of Opensource Game Studio project, we rely heavily on third-party solutions to help us achieve the goal of creating the best game development tools. To this date, we used forums, task trackers, mailing lists, social networks, code version control systems, hosting providers, compiler suites, libraries, and so on. Each third-party solution we used had its own lifespan.. . .

+
+ +
-
-

- Mahjong recreation start -

-

- 2018-01-26 00:00 -

-
-

Spherical tiles in a Mahjong layout

-

This article describes the start of Mahjong game recreation.

-

Plan

-

We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

-
    -
  • Load single layout
  • -
  • Place tiles in layout positions
  • -
  • Distinguish tiles
  • -
  • Implement selection
  • -
  • Implement matching
  • -
-

Just like any other plan, this one looked fine at first sight. However, once you get down to work, new details start to come out. This plan was no exception. Below are a few problems that came out during development.. . .

-
- -

Page 2 of 7

diff --git a/en/news/index3.html b/en/news/index3.html index b6f5f87..06f09be 100644 --- a/en/news/index3.html +++ b/en/news/index3.html @@ -30,6 +30,31 @@

News

+
+

+ Mahjong recreation start +

+

+ 2018-01-26 00:00 +

+
+

Spherical tiles in a Mahjong layout

+

This article describes the start of Mahjong game recreation.

+

Plan

+

We started Mahjong recreation endeavour by composing a brief plan to get gameplay with minimal graphics:

+
    +
  • Load single layout
  • +
  • Place tiles in layout positions
  • +
  • Distinguish tiles
  • +
  • Implement selection
  • +
  • Implement matching
  • +
+

Just like any other plan, this one looked fine at first sight. However, once you get down to work, new details start to come out. This plan was no exception. Below are a few problems that came out during development.. . .

+
+ +

The year of lessons @@ -168,26 +193,6 @@ Continue reading

-
-

- It's all fine -

-

- 2017-04-07 00:00 -

-
-

Flight of a rocket

-

This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

-

The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

-

The whole process of creating a single tutorial turned out to be pretty daunting because it includes several tasks:

-
    -
  1. Record original video depicting one or more steps. . .
  2. -
-
- -

Page 3 of 7

diff --git a/en/news/index4.html b/en/news/index4.html index 45bbae4..de84675 100644 --- a/en/news/index4.html +++ b/en/news/index4.html @@ -30,6 +30,26 @@

News

+
+

+ It's all fine +

+

+ 2017-04-07 00:00 +

+
+

Flight of a rocket

+

This article describes creation of the first four OpenSceneGraph tutorials in March 2017.

+

The first four OpenSceneGraph tutorials explain how to create a cube model with Blender and display the model under Linux, macOS, or Windows using OpenSceneGraph tool called osgviewer.

+

The whole process of creating a single tutorial turned out to be pretty daunting because it includes several tasks:

+
    +
  1. Record original video depicting one or more steps. . .
  2. +
+
+ +

Let's go @@ -183,24 +203,6 @@ Continue reading

-
-

- A few words about live session yesterday -

-

- 2016-09-26 00:00 -

-
- -

Mahjong Solitaire was successfully created, and it took less than 4 hours.

-

We will publish live session materials later this week.

-

Thank you for joining us.

-

. . .

-
- -

Page 4 of 7

diff --git a/en/news/index5.html b/en/news/index5.html index e97a360..45743e6 100644 --- a/en/news/index5.html +++ b/en/news/index5.html @@ -30,6 +30,24 @@

News

+
+

+ A few words about live session yesterday +

+

+ 2016-09-26 00:00 +

+
+ +

Mahjong Solitaire was successfully created, and it took less than 4 hours.

+

We will publish live session materials later this week.

+

Thank you for joining us.

+

. . .

+
+ +

Live session is in 24 hours @@ -168,23 +186,6 @@ It's time to create simple Mahjong solitaire game.

Continue reading

-
-

- "Rolling ball" live session videos and downloads -

-

- 2016-02-10 00:00 -

-
-

Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:

- - -

"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows is available at SourceForge.. . .

-
- -

Page 5 of 7

diff --git a/en/news/index6.html b/en/news/index6.html index 0eabfe5..d745842 100644 --- a/en/news/index6.html +++ b/en/news/index6.html @@ -30,6 +30,23 @@

News

+
+

+ "Rolling ball" live session videos and downloads +

+

+ 2016-02-10 00:00 +

+
+

Since we held 2 live sessions to create "Rolling ball" game, here are 2 YouTube videos of the process:

+ + +

"Rolling ball" game for Linux (Debian based), OS X (10.9+), Windows is available at SourceForge.. . .

+
+ +
-
-

- Test chamber for everyone (Editor 0.7.0) -

-

- 2015-07-22 00:00 -

-
-

As you know, the main goal of Editor 0.7.0 is the ability to create the test chamber with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber!

-

We estimate to complete it in October.

-

. . .

-
- -

Page 6 of 7

diff --git a/en/news/index7.html b/en/news/index7.html index f5c1ebd..4400a5b 100644 --- a/en/news/index7.html +++ b/en/news/index7.html @@ -30,6 +30,22 @@

News

+
+

+ Test chamber for everyone (Editor 0.7.0) +

+

+ 2015-07-22 00:00 +

+
+

As you know, the main goal of Editor 0.7.0 is the ability to create the test chamber with it. It needs Actions' system and a few stability fixes for that. We are going to publish a detailed article describing how to create the test chamber, too, so that anyone could create their own test chamber!

+

We estimate to complete it in October.

+

. . .

+
+ +

Roadmap for 2015-2016 diff --git a/en/news/llm-first-py-cxx.html b/en/news/llm-first-py-cxx.html new file mode 100644 index 0000000..992c139 --- /dev/null +++ b/en/news/llm-first-py-cxx.html @@ -0,0 +1,87 @@ + + + + + + + + + +

In the news...

+
+
+

+ The first example of a portable code +

+

+ 2024-04-11 00:00 +

+
+

Supported platforms

+

To verify code portability, I selected the following platforms and languages:

+
    +
  • C++: Linux, macOS, OpenWrt, Windows
  • +
  • JavaScript: Chrome, Firefox, Safari
  • +
  • Kotlin: Android
  • +
  • Python: Linux, macOS, Windows
  • +
  • Swift: iOS, macOS
  • +
+

I created a simple "Hello World" example for each language to understand the basic requirements of each platform.

+

By the way, OpenWrt turned out the most complex platform to create "Hello World" for, because my TP-Link TL-MR3020 r1 router is considered obsolete since 2018. I had to use the old 17.01.7 firmware, which took about three weeks.

+

Anchor language and limited language model

+

For the whole month I was asking myself the same question: "Which language should I choose as a starting point to convert to other languages from?" Initial considerations were pointing me to C++ due to strong types. However, as soon as I found out Python has Type hints, I chose Python.

+

Python is good because:

+
    +
  • one can specify a type with Type hints
  • +
  • Python has portability across Linux, macOS, Windows out of the box
  • +
  • pip simplifies distribution of the language conversion instrument
  • +
  • Python does not require a separate compilation step, which speeds up development
  • +
+

However, not every Python code will suite the language conversion instrument under development. Only the code that satisfies the constraints of the Limited language model.

+

Limited language model is a subset of Python with various restrictions in both syntax and a set of available functions. Here is a glimpse of those restrictions, the image below depicts Python to C++ conversion result:

+

Python to C++ example

+

April plans

+

I'm going to write game logic for "Memory" in Python and convert it to C++ by the instrument under development.

+
+
+
+ + + +
+ + diff --git a/images/2024_llm-first-py-cxx.jpg b/images/2024_llm-first-py-cxx.jpg new file mode 100644 index 0000000..5f26c37 Binary files /dev/null and b/images/2024_llm-first-py-cxx.jpg differ diff --git a/ru/news/2024-04_llm-first-py-cxx.md b/ru/news/2024-04_llm-first-py-cxx.md new file mode 100644 index 0000000..ecf5164 --- /dev/null +++ b/ru/news/2024-04_llm-first-py-cxx.md @@ -0,0 +1,41 @@ +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 diff --git a/ru/news/index.html b/ru/news/index.html index 73413cf..c6f6d7b 100644 --- a/ru/news/index.html +++ b/ru/news/index.html @@ -30,6 +30,30 @@

Новости

+
+

+ Первый пример портируемого кода +

+

+ 2024-04-11 00:00 +

+
+

Выбор платформ для портирования

+

Для подтверждения портируемости кода я выбрал следующие платформы и языки:

+
    +
  • 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, что заняло три недели.. . .

+
+ +

Шина-iOS @@ -196,22 +220,6 @@ Ubuntu Edge. Особенностью продукта должна была Читать далее

-
-

- Защита доступности -

-

- 2019-04-16 00:00 -

-
-

Алтайская река Катунь

-

В этой статье мы расскажем о начале усилий по защите себя от решений третьих сторон.

-

С первого дня существования проекта Opensource Game Studio мы используем решения третьих сторон для достижения своей цели по созданию лучших средств разработки игр. Мы использовали форумы, системы отслеживания задач, списки рассылок, социальные сети, системы контроля версий кода, хостинги, компиляторы, библиотеки и т.д.. Каждое решение третьих сторон имеет свой жизненный цикл.. . .

-
- -

Страница 1 из 7

diff --git a/ru/news/index2.html b/ru/news/index2.html index 75efe55..995346f 100644 --- a/ru/news/index2.html +++ b/ru/news/index2.html @@ -30,6 +30,22 @@

Новости

+
+

+ Защита доступности +

+

+ 2019-04-16 00:00 +

+
+

Алтайская река Катунь

+

В этой статье мы расскажем о начале усилий по защите себя от решений третьих сторон.

+

С первого дня существования проекта Opensource Game Studio мы используем решения третьих сторон для достижения своей цели по созданию лучших средств разработки игр. Мы использовали форумы, системы отслеживания задач, списки рассылок, социальные сети, системы контроля версий кода, хостинги, компиляторы, библиотеки и т.д.. Каждое решение третьих сторон имеет свой жизненный цикл.. . .

+
+ +
-
-

- Начало воссоздания Маджонга -

-

- 2018-01-26 00:00 -

-
-

Сферические фишки в раскладке Маджонг

-

Эта статья описывает начало воссоздания игры Маджонг.

-

План

-

Мы начали воссоздание Маджонга с составления краткого плана реализации игровой механики с минимальной графикой:

-
    -
  • Загрузить раскладку
  • -
  • Поместить фишки в позиции раскладки
  • -
  • Различить фишки
  • -
  • Реализовать выбор фишек
  • -
  • Реализовать сравнение фишек
  • -
-

Как и любой другой план, этот выглядел вполне адекватно на первый взгляд. Тем не менее стоит начать разработку, как появляются новые детали. Этот план не был исключением. Ниже представлена пара проблем, вскрывшихся во время разработки.. . .

-
- -

Страница 2 из 7

diff --git a/ru/news/index3.html b/ru/news/index3.html index df71086..e30a198 100644 --- a/ru/news/index3.html +++ b/ru/news/index3.html @@ -30,6 +30,31 @@

Новости

+
+

+ Начало воссоздания Маджонга +

+

+ 2018-01-26 00:00 +

+
+

Сферические фишки в раскладке Маджонг

+

Эта статья описывает начало воссоздания игры Маджонг.

+

План

+

Мы начали воссоздание Маджонга с составления краткого плана реализации игровой механики с минимальной графикой:

+
    +
  • Загрузить раскладку
  • +
  • Поместить фишки в позиции раскладки
  • +
  • Различить фишки
  • +
  • Реализовать выбор фишек
  • +
  • Реализовать сравнение фишек
  • +
+

Как и любой другой план, этот выглядел вполне адекватно на первый взгляд. Тем не менее стоит начать разработку, как появляются новые детали. Этот план не был исключением. Ниже представлена пара проблем, вскрывшихся во время разработки.. . .

+
+ +
-
-

- Всё проходит хорошо -

-

- 2017-04-07 00:00 -

-
-

Полёт ракеты

-

Эта статья рассказывает о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.

-

Первые четыре самоучителя OpenSceneGraph объясняют, как создать модель куба в Blender и затем отобразить её на Linux, macOS или Windows с помощью osgviewer, стандартного инструмента OpenSceneGraph.

-

Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:

-
    -
  1. Записать видео с одним или более шагами. . .
  2. -
-
- -

Страница 3 из 7

diff --git a/ru/news/index4.html b/ru/news/index4.html index 8f20eef..1884768 100644 --- a/ru/news/index4.html +++ b/ru/news/index4.html @@ -30,6 +30,26 @@

Новости

+
+

+ Всё проходит хорошо +

+

+ 2017-04-07 00:00 +

+
+

Полёт ракеты

+

Эта статья рассказывает о создании первых четырёх самоучителей OpenSceneGraph в марте 2017.

+

Первые четыре самоучителя OpenSceneGraph объясняют, как создать модель куба в Blender и затем отобразить её на Linux, macOS или Windows с помощью osgviewer, стандартного инструмента OpenSceneGraph.

+

Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:

+
    +
  1. Записать видео с одним или более шагами. . .
  2. +
+
+ +
-
-

- Пара слов о вчерашнем прямом эфире -

-

- 2016-09-26 00:00 -

-
- -

Создание пасьянса Маджонг прошло успешно, и заняло менее 4 часов.

-

Мы опубликуем материалы прямого эфира чуть позже на этой неделе.

-

Спасибо за участие.

-

. . .

-
- -

Страница 4 из 7

diff --git a/ru/news/index5.html b/ru/news/index5.html index f470669..bea100a 100644 --- a/ru/news/index5.html +++ b/ru/news/index5.html @@ -30,6 +30,24 @@

Новости

+
+

+ Пара слов о вчерашнем прямом эфире +

+

+ 2016-09-26 00:00 +

+
+ +

Создание пасьянса Маджонг прошло успешно, и заняло менее 4 часов.

+

Мы опубликуем материалы прямого эфира чуть позже на этой неделе.

+

Спасибо за участие.

+

. . .

+
+ +
-
-

- Запись прямого эфира "Катящийся мяч" и материалы -

-

- 2016-02-10 00:00 -

-
-

Т.к. мы провели 2 прямые трансляции для создания игры "Катящийся мяч", ниже вы можете увидеть 2 записи этого процесса на YouTube:

- - -

Игра "Катящийся мяч" для Linux (на основе Debian), OS X (10.9+), Windows доступна на SourceForge.. . .

-
- -

Страница 5 из 7

diff --git a/ru/news/index6.html b/ru/news/index6.html index 068370f..709f18b 100644 --- a/ru/news/index6.html +++ b/ru/news/index6.html @@ -30,6 +30,23 @@

Новости

+
+

+ Запись прямого эфира "Катящийся мяч" и материалы +

+

+ 2016-02-10 00:00 +

+
+

Т.к. мы провели 2 прямые трансляции для создания игры "Катящийся мяч", ниже вы можете увидеть 2 записи этого процесса на YouTube:

+ + +

Игра "Катящийся мяч" для Linux (на основе Debian), OS X (10.9+), Windows доступна на SourceForge.. . .

+
+ +
-
-

- Тестовый цех каждому (Редактор 0.7.0) -

-

- 2015-07-22 00:00 -

-
-

Как вы знаете, основная цель Редактора 0.7.0 - это возможность создать тестовый цех с помощью него. Редактору не хватает системы Действий и исправления некоторых ошибок для этого. Помимо выпуска Редактора мы опубликуем подробную статью, описывающую создание тестового цеха, чтобы каждый мог создать себе свой тестовый цех!

-

Мы планируем завершить его в Октябре.

-

. . .

-
- -

Страница 6 из 7

diff --git a/ru/news/index7.html b/ru/news/index7.html index 38ec7ec..aa2310c 100644 --- a/ru/news/index7.html +++ b/ru/news/index7.html @@ -30,6 +30,22 @@

Новости

+
+

+ Тестовый цех каждому (Редактор 0.7.0) +

+

+ 2015-07-22 00:00 +

+
+

Как вы знаете, основная цель Редактора 0.7.0 - это возможность создать тестовый цех с помощью него. Редактору не хватает системы Действий и исправления некоторых ошибок для этого. Помимо выпуска Редактора мы опубликуем подробную статью, описывающую создание тестового цеха, чтобы каждый мог создать себе свой тестовый цех!

+

Мы планируем завершить его в Октябре.

+

. . .

+
+ +

Дорожная карта 2015-2016 diff --git a/ru/news/llm-first-py-cxx.html b/ru/news/llm-first-py-cxx.html new file mode 100644 index 0000000..b6b6b17 --- /dev/null +++ b/ru/news/llm-first-py-cxx.html @@ -0,0 +1,87 @@ + + + + + + + + + +

В новостях...

+
+
+

+ Первый пример портируемого кода +

+

+ 2024-04-11 00:00 +

+
+

Выбор платформ для портирования

+

Для подтверждения портируемости кода я выбрал следующие платформы и языки:

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

+

Планы на апрель

+

В апреле напишу игровую логику «Памяти» на Python, которую переведу инструментом на C++.

+
+
+
+ + + +
+ +