82 lines
5.6 KiB
HTML
82 lines
5.6 KiB
HTML
<!DOCTYPE html>
|
||
<html>
|
||
<meta charset="utf-8">
|
||
<head>
|
||
<link rel="stylesheet" href="../../style.css">
|
||
</head>
|
||
<body>
|
||
<script data-goatcounter="https://services.opengamestudio.org:443/count" async src="//services.opengamestudio.org:443/count.js"></script>
|
||
<div id="header">
|
||
<div class="header2">
|
||
<div class="menu">
|
||
<a href="../../ru/news/index.html">Новости</a>
|
||
<a href="../../ru/game/index.html">Игры</a>
|
||
<a href="../../ru/tool/index.html">Инструменты</a>
|
||
<a href="../../ru/page/about.html">О нас</a>
|
||
</div>
|
||
<div id="lang">
|
||
<a href="../../en/news/llm-first-py-cxx.html">EN</a>
|
||
<a href="../../ru/news/llm-first-py-cxx.html">RU</a>
|
||
</div>
|
||
<div class="clear"></div>
|
||
</div>
|
||
</div>
|
||
<h3 class="left_item_title">В новостях...</h3>
|
||
<center>
|
||
<div class="news_item">
|
||
<h2 class="news_item_title">
|
||
<a href="llm-first-py-cxx.html">Первый пример портируемого кода</a>
|
||
</h2>
|
||
<p class="news_item_date">
|
||
2024-04-11 00:00
|
||
</p>
|
||
<div class="news_item_contents">
|
||
<h1 id="">Выбор платформ для портирования</h1>
|
||
<p>Для подтверждения портируемости кода я выбрал следующие платформы и языки:</p>
|
||
<ul>
|
||
<li>C++: Linux, macOS, OpenWrt, Windows</li>
|
||
<li>JavaScript: Chrome, Firefox, Safari</li>
|
||
<li>Kotlin: Android</li>
|
||
<li>Python: Linux, macOS, Windows</li>
|
||
<li>Swift: iOS, macOS</li>
|
||
</ul>
|
||
<p>На указанных языках я сделал простейший аналог «Hello World», тем самым изучив требования каждой из платформ.</p>
|
||
<p>Отдельно отмечу, что самой сложной для обуздания платформой оказалась OpenWrt, т.к. поддержка моего маршрутизатора TP-Link TL-MR3020 r1 закончилась в 2018-м году. Пришлось ставить старую версию OpenWrt, что заняло три недели.</p>
|
||
<h1 id="-1">Якорный язык и модель ограниченного языка</h1>
|
||
<p>Весь месяц я постоянно задавал себе вопрос: «Какой язык выбрать в качестве отправной точки для конвертации в другие языки?» Сначала склонялся к C++ ввиду наличия типов. Однако, как только узнал о наличии Type hints в Python, то выбрал Python.</p>
|
||
<p>Плюсы Python:</p>
|
||
<ul>
|
||
<li>возможность указать тип с помощью Type hints</li>
|
||
<li>встроенная портируемость кода Python между Linux, macOS, Windows</li>
|
||
<li>наличие pip, что даст возможность легко установить разрабатываемый инструмент в будущем на Linux, macOS, Windows</li>
|
||
<li>отсутствие шага компиляции, что существенно ускоряет итерации</li>
|
||
</ul>
|
||
<p>Однако, не любой код Python подойдёт разрабатываемому инструменту. Лишь тот код, который удовлетворяет <code>Модели ограниченного языка</code> (<code>Limited language model</code>).</p>
|
||
<p>Модель ограниченного языка - это подмножество языка Python с различными ограничениями как по формату кода, так и по используемым функциям. Примерное представление можно получить из примера перевода Python в C++:</p>
|
||
<p><img src="../../images/2024_llm-first-py-cxx.jpg" alt="Пример перевода Python в C++" /></p>
|
||
<h1 id="-2">Планы на апрель</h1>
|
||
<p>В апреле напишу игровую логику «Памяти» на Python, которую переведу инструментом на C++.</p>
|
||
</div>
|
||
</div>
|
||
<div id="disqus_thread"></div>
|
||
<script>
|
||
var disqus_config = function () {
|
||
this.page.url = "https://opengamestudio.org/ru/news/llm-first-py-cxx.html";
|
||
this.page.identifier = "llm-first-py-cxx.html";
|
||
};
|
||
(function() { // DON'T EDIT BELOW THIS LINE
|
||
var d = document, s = d.createElement('script');
|
||
s.src = 'https://opengamestudio.disqus.com/embed.js';
|
||
s.setAttribute('data-timestamp', +new Date());
|
||
(d.head || d.body).appendChild(s);
|
||
})();
|
||
</script>
|
||
<noscript>Пожалуйста, включите JavaScript для просмотра <a href="https://disqus.com/?ref_noscript">комментариев на платформе Disqus.</a></noscript>
|
||
<div id="footer">
|
||
Сайт сгенерирован <a href="http://opengamestudio.org/pskov/ru">ПСКОВОМ</a>
|
||
из <a href="http://github.com/ogstudio/site-opengamestudio">этого исходного кода</a>.
|
||
</div>
|
||
</center>
|
||
</body>
|
||
</html>
|