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 @@
+ 2024-04-11 00:00 +
+To verify code portability, I selected the following platforms and languages:
+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.. . .
+- 2019-04-16 00:00 -
-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 @@
+ 2019-04-16 00:00 +
+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.. . .
+- 2018-01-26 00:00 -
-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:
-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 @@
+ 2018-01-26 00:00 +
+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:
+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.. . .
+- 2017-04-07 00:00 -
-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:
-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 @@
+ 2017-04-07 00:00 +
+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:
+- 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 @@
+ 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.
+. . .
+- 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 @@
+ 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.. . .
+- 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 @@
+ 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.
+. . .
++ 2024-04-11 00:00 +
+To verify code portability, I selected the following platforms and languages:
+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.
+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:
+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:
+ +I'm going to write game logic for "Memory" in Python and convert it to C++ by the instrument under development.
++ 2024-04-11 00:00 +
+Для подтверждения портируемости кода я выбрал следующие платформы и языки:
+На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ.
+Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели.. . .
+- 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.
-Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:
-Страница 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.
+Процесс создания одного самоучителя оказался довольно утомительным, т.к. он состоит из следующих задач:
+- 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.. . .
+- 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 @@
+ 2015-07-22 00:00 +
+Как вы знаете, основная цель Редактора 0.7.0 - это возможность создать тестовый цех с помощью него. Редактору не хватает системы Действий и исправления некоторых ошибок для этого. Помимо выпуска Редактора мы опубликуем подробную статью, описывающую создание тестового цеха, чтобы каждый мог создать себе свой тестовый цех!
+Мы планируем завершить его в Октябре.
+. . .
++ 2024-04-11 00:00 +
+Для подтверждения портируемости кода я выбрал следующие платформы и языки:
+На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ.
+Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели.
+Весь месяц я постоянно задавал себе вопрос: «Какой язык выбрать в качестве отправной точки для конвертации в другие языки?» Сначала склонялся к C++ ввиду наличия типов. Однако, как только узнал о наличии Type hints в Python, то выбрал Python.
+Плюсы Python:
+Однако, не любой код Python подойдёт разрабатываемому инструменту. Лишь тот код, который удовлетворяет Модели ограниченного языка
(Limited language model
).
Модель ограниченного языка - это подмножество языка Python с различными ограничениями как по формату кода, так и по используемым функциям. Примерное представление можно получить из примера перевода Python в C++:
+ +В апреле напишу игровую логику «Памяти» на Python, которую переведу инструментом на C++.
+