<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>TrustLang</title>
		<link>https://trust-lang.net/ru/</link>
		<description>Recent content on TrustLang</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<atom:link href="https://trust-lang.net/ru/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Система типов</title>
				<link>https://trust-lang.net/ru/docs/types/type-system/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/type-system/</guid>
				<description>&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; имеет закрытую систему типов. т.е. любой новый тип данных, который создается пользователем,&#xA;обязательно должен быть наследником одного из уже существующих, т.е. расширять один из них.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; данный документ содержит концептуальные заметки и черновиковые пометки автора (в т.ч. со знаками &amp;#39;???&amp;#39;), а не описание реализованного синтаксиса. Приведённая иерархия типов, описание чистых функций, корутин и Thread/Async/ThreadPool не соответствуют текущей реализации (корутины, потоки, чистые функции `:-`/`::-` не реализованы; см. docs/types/funcs)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Числа и тензоры</title>
				<link>https://trust-lang.net/ru/docs/types/numbers/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/numbers/</guid>
				<description>&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; является языком с динамической типизацией и явное указание типа не влияет на размер памяти, занимаемой переменной.&#xA;Информация о типах используется при преобразовании значаений, когда существующему объекту присваивается значение другого типа.&#xA;Такая операция возможна только тогда, когда типы совместимы между собой и допускают автоматическое приведение.&#xA;Это справедливо как во время парсинга/компиляции исходного теста, так и во время выполнения в режимах интерпретатора и/или скомпилированного файла.&lt;/p&gt;&#xA;&lt;h2 id=&#34;арифметические-типы-данных&#34;&gt;Арифметические типы данных&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b0%d1%80%d0%b8%d1%84%d0%bc%d0%b5%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d0%b5-%d1%82%d0%b8%d0%bf%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; поддерживает использование несколько типов чисел, которые могут использоваться для различных целей:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Символьные строки</title>
				<link>https://trust-lang.net/ru/docs/types/strings/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/strings/</guid>
				<description>&lt;h2 id=&#34;символьные-строки&#34;&gt;Символьные строки&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%81%d0%b8%d0%bc%d0%b2%d0%be%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d1%81%d1%82%d1%80%d0%be%d0%ba%d0%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;TrustLang&lt;/strong&gt; поддерживает два типа строк:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;em&gt;:StrChar&lt;/em&gt; - универсальные байтовые UTF-8 строки&lt;/li&gt;&#xA;&lt;li&gt;&lt;em&gt;:StrWide&lt;/em&gt; - системные символьные (широкие символы)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Единичным элементом универсальной UTF-8 строки является один байт,&#xA;тогда как у системных символьных строк единичным элементом строки является широкий символ &lt;em&gt;wchar_t&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;И хотя строки различаются типами единичного элемента строки, но внутреннее представление у обоих типов строк одинаковое.&#xA;Все данные символьных строки хранятся в виде универсальной байтовой UTF-8 последовательности.&lt;/p&gt;&#xA;&lt;h3 id=&#34;StrChar&#34;&gt;Байтовые строки &lt;em&gt;:StrChar&lt;/em&gt;&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#StrChar&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Единичным элементом универсальной байтовой строки является один байт (точнее &lt;em&gt;:Int8&lt;/em&gt;, т.е. 8-ми битное целое число со знаком).&#xA;Количество символов байтовой строки возвращается в байтах и обращение к элементу строки по индексу происходит к байту символьной последовательности.&#xA;&lt;em&gt;Так как данные строки интерпретируется как последовательность UTF-8 символов, нужно соблюдать осторожность при изменении отдельных байт!&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Словари и наборы (перечисления)</title>
				<link>https://trust-lang.net/ru/docs/types/dicts/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/dicts/</guid>
				<description>&lt;h3 id=&#34;словарь&#34;&gt;Словарь&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%81%d0%bb%d0%be%d0%b2%d0%b0%d1%80%d1%8c&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Словарь (&lt;em&gt;:Dictionary&lt;/em&gt;) — набор данных произвольного типа с доступом к отдельным элементам по целочисленному индексу&#xA;или по имени элемента при его наличии (это похоже и на tuple и на структуру одновременно).&lt;/p&gt;&#xA;&lt;p&gt;Словари отличаются от &lt;a href=&#34;https://trust-lang.net/type_nor.html&#34;&gt;тензоров&lt;/a&gt; тем, что всегда имеют только одно измерение,&#xA;но каждый элемент может содержать произвольное количество элементов любого типа, в том числе и другие словари.&lt;/p&gt;&#xA;&lt;p&gt;Доступ к элементам словаря происходит по имени элемента, которое записывается через точку от имени переменной, либо по целочисленному индексу.&#xA;Индекс начинается с 0 и как у тензоров, тоже может быть отрицательным (индекс элемента от &amp;ldquo;конца&amp;rdquo;).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Классы</title>
				<link>https://trust-lang.net/ru/docs/types/class/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/class/</guid>
				<description>&lt;p&gt;Тип данных &lt;em&gt;:Class&lt;/em&gt; аналогичен словарю, но все его поля обязаны иметь имена (хотя доступ к свойствам класса по индексу так же возможен).&#xA;При создании экземпляра класса, создается новый тип, для которого копируются свойства и методы всех родителей.&lt;/p&gt;&#xA;&lt;p&gt;Различия между классом и словарем заключается в том, что поля словаря могу изменять динамически,&#xA;тогда как состав полей класса определется во время компиляции и могут только расширяться по сравнению родительскими типами??????&lt;/p&gt;&#xA;&lt;p&gt;Создание нового сложного типа (класса), происходит согласно &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/create/&#34;&gt;правилам синтаксиса&lt;/a&gt; как создание нового типа&#xA;как функции в пользовательском &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/namespace/&#34;&gt;пространстве имен&lt;/a&gt;.&#xA;Имя типа является именем нового класса, а его вызов как функции будет вызовом конструктора.&#xA;Области видимости &lt;a href=&#34;https://trust-lang.net/ru/docs/5_arch/visibility/&#34;&gt;тут&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Функции</title>
				<link>https://trust-lang.net/ru/docs/types/funcs/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/funcs/</guid>
				<description>&lt;p&gt;Определение функции происходит с помощью операторов &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/create/&#34;&gt;создания объектов&lt;/a&gt;,&#xA;а имя функции должно соответствовать &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/naming/&#34;&gt;правилам именования&lt;/a&gt;,&#xA;после которого указываются круглые скобки.&#xA;Телом обычной функции должен быть &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/block/&#34;&gt;блок кода&lt;/a&gt;,&#xA;который всегда находится в пространстве имен определения функции.&lt;/p&gt;&#xA;&lt;p&gt;Все функции поддерживают аргументы по умолчанию.&#xA;При определении функции вначале перечисляются обязательные аргументы,&#xA;далее идут аргументы со значениями по умолчанию,&#xA;где имя аргумента отделяется от значения по умолчанию знаком равно &amp;ldquo;&lt;strong&gt;=&lt;/strong&gt;&amp;rdquo;.&#xA;Если функция допускает обработку произвольного количества аргументов,&#xA;то последним в списке параметров должно быть указано многоточие &amp;ldquo;&lt;strong&gt;&amp;hellip;&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Итераторы</title>
				<link>https://trust-lang.net/ru/docs/types/iters/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/iters/</guid>
				<description>&lt;p&gt;Итераторы в &lt;em&gt;TrustLang&lt;/em&gt;, как и в остальных языках программирования, предназначены для перебора элементов. Но, в отличии от итераторов в С++, итераторы &lt;em&gt;TrustLang&lt;/em&gt; являются самостоятельными объектами, а не указателями на отдельные элементы объекта-контейнера. Итераторы &lt;em&gt;TrustLang&lt;/em&gt; поддерживают фильтрацию элементов по имени за счет использования функций обратного вызова.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; описанный здесь протокол итераторов (`?`, `!`, `?!`, `!!`, `??` и макросы @iter/@next/@curr/@first/@all) в текущей версии НЕ реализован: `dict ?`, `dict!` и т.п. не работают, `@iter`/`@next`/`@curr` дают &amp;#39;undefined name&amp;#39;. Обходной путь: цикл `@while(коллекция)` с деструктуризацией (см. playground/foreach.src)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Другие типы данных</title>
				<link>https://trust-lang.net/ru/docs/types/other/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/other/</guid>
				<description>&lt;h3 id=&#34;пусто-none&#34;&gt;Пусто (:None)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bf%d1%83%d1%81%d1%82%d0%be-none&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;em&gt;:None&lt;/em&gt; (пусто) — не содержит значения (точнее имеет одно значение &lt;em&gt;:None&lt;/em&gt;). Указывается в тексте программы как один подчерк «_». Значение &lt;em&gt;None&lt;/em&gt; имеют не инициализированные переменные и при попытке чтения из такой переменной возникает ошибка.&lt;/p&gt;&#xA;&lt;p&gt;Тип переменной может быть явно указан или выведен автоматически из присваиваемого значения. Присвоить новое значение уже инициализированной переменной можно только для совместимого типа, так как неявное преобразование типов не допускаются.&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var&lt;/span&gt; :&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; _&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Создать не инициализированную переменную&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var2&lt;/span&gt; :&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; var&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Ошибка!!! Нельзя прочитать не инициализированную переменную var&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; 1000&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# У переменной будет тип Short (минимальный размер для хранения значения)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; 0,5&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Ошибка!!! Short ← Float не совместимы&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; _&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Очистить значение переменной&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000&#34;&gt;$var&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; 0,5&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Теперь можно, т. к. None совместим с любым типом&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;диапазон-range&#34;&gt;Диапазон (:Range)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b4%d0%b8%d0%b0%d0%bf%d0%b0%d0%b7%d0%be%d0%bd-range&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Диапазон — специальный тип данных, являющейся приблизительным аналогом типа «генератор» в Python. К диапазону можно обращаться как к итератору и он будет поочередно выдавать элементы в указанном интервале с заданным шагом. Диапазон в тексте программы указывается как два или три элемента через две точки, например 1..5 — диапазон от единицы до пяти с шагом по умолчанию 1. В качестве параметров диапазона можно указывать не только литералы, но и имена переменных и даже рациональные числа. Например, 0,1..$stop..0,1 — диапазон от 0,1 до значения, указанного в переменной $stop с шагом 0,1 или 0..1\10 - диапазон рациональных числе от 0 до 10.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Нативные типы</title>
				<link>https://trust-lang.net/ru/docs/types/native/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/native/</guid>
				<description>&lt;h2 id=&#34;нативные-типы-данных&#34;&gt;Нативные типы данных&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bd%d0%b0%d1%82%d0%b8%d0%b2%d0%bd%d1%8b%d0%b5-%d1%82%d0%b8%d0%bf%d1%8b-%d0%b4%d0%b0%d0%bd%d0%bd%d1%8b%d1%85&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Нативными (машинными) данными могут быть как переменные, так и функции, а имя нативных объектов начинается на символ процента &amp;ldquo;&lt;strong&gt;%&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;В случае переменных, это двоичные данные, которые располагаются в одной неразрывной области машинной памяти&#xA;по определенному адресу и имеют строго определенный формат.&lt;/p&gt;&#xA;&lt;p&gt;Чтобы использовать уже существующие библиотеки, нужно либо импортировать нативный объект,&#xA;тем самым создав объкт TrustLang, но с реализацией на другом языке, например на С/С++,&#xA;либо сделать предварительное определение (декларацию) нативного объекта.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Именование объектов</title>
				<link>https://trust-lang.net/ru/docs/syntax/naming/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/naming/</guid>
				<description>&lt;p&gt;В качестве имен объектов и названий типов данных можно использовать буквы, цифры и знаки подчеркивания в любых комбинациях, при условии, что первый символ имени не является цифрой.&lt;/p&gt;&#xA;&lt;p&gt;Имя не может состоять из единственного знака подчеркивания, так как это специальный термин, который используется в служебных целях.&lt;/p&gt;&#xA;&lt;p&gt;Для избежания коллизий имен можно использовать &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/namespace/&#34;&gt;пространство имен&lt;/a&gt;&#xA;и &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/modules/&#34;&gt;модульную структуру кода&lt;/a&gt;, которые &lt;em&gt;TrustLang&lt;/em&gt; поддерживает одновременно.&#xA;Допускается &lt;a href=&#34;https://trust-lang.net/ru/docs/types/funcs/#overriding&#34;&gt;переопределение&lt;/a&gt; и &lt;a href=&#34;https://trust-lang.net/ru/docs/types/funcs/#overload&#34;&gt;перегрузка&lt;/a&gt; функций.&lt;/p&gt;&#xA;&lt;p&gt;При &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/create/&#34;&gt;создании объектов&lt;/a&gt; имя идентификатора может содержать один или несколько специальных символов - квалификаторов&#xA;(или &lt;a href=&#34;https://en.wikipedia.org/wiki/Sigil_%28computer_programming%29&#34;&gt;сигилов&lt;/a&gt;), за которыми закрепелено определенное значение.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Преобразование типов</title>
				<link>https://trust-lang.net/ru/docs/types/convert/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/types/convert/</guid>
				<description>&lt;p&gt;Несмотря на динамическую типизацию языка, если тип переменной указан явно, то автоматическое приведение типов не выполняется,&#xA;и чтобы присвоить переменой значение не совместимого типа, требуется его явное преобразование.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; описанные здесь преобразования через :Tensor[...](...), :Tensor[2,2](...), :Bool[0], :Bool[...], :StrWide(тензор) не реализованы: многомерные тензоры и их конструкторы/преобразования не реализованы в текущей версии (см. docs/types/numbers). Доступно приведение скаляров через :Int32(...)/:Bool(...) и аналоги (языковой каст с контролем диапазона)&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Так как символьные названия типов относятся к деталям реализации, то явное преобразование в конкретный тип данных производится&#xA;с помощью вызова функции с именем типа, т.е. :Bool(), :StrWide(), :Int64() и т.д.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Создание объектов</title>
				<link>https://trust-lang.net/ru/docs/4_operators/create/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/create/</guid>
				<description>&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;h5 id=&#34;important&#34;&gt;Область видимости объекта != время жизни объекта&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#important&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h5&gt;&lt;p&gt;У объекта &lt;em&gt;имя&lt;/em&gt; есть всегда, даже тогда, когда сам объект физически еще не создан.&#xA;Область видимости &lt;em&gt;имени&lt;/em&gt; определяется его расположением в программном коде (блок кода, пространство имен, модуль и т.д.).&#xA;Объект может существовать, но быть не доступен из текущей области видимости, например, перекрыт другим объектом с таким же именем.&lt;/p&gt;&#xA;&lt;p&gt;Время жизни локального/автоматического (т.е. временного) объекта всегда ограничено областью видимости текущего блока кода,&#xA;а время жизни статического объекта ограничено временем жизни модуля, в котором он определен или временем жизни программы, если объект глобальный.&#xA;Но &lt;em&gt;инициализация начального занчения статического объекта&lt;/em&gt; происходит в соответствии с выполняемым программным кодом,&#xA;(т.е. при выполнении кода с оператором создания статического объекта).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Блоки кода</title>
				<link>https://trust-lang.net/ru/docs/4_operators/block/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/block/</guid>
				<description>&lt;p&gt;Блок кода, это сгруппированный набор идущих подряд инструкций, которые выполняются как единое целое&#xA;с возвращением результата выполнения последней из них.&#xA;Блок кода, как и любая синтаксическая конструкция языка, должен завершаться точкой с запятой &amp;ldquo;&lt;strong&gt;;&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Блоки кода используются для ограничения области видимости переменных.&#xA;С их помощью определяется иерархия области имен и реализуется система именования свойств и методов для классов.&#xA;Именованные блоки кода могут выступать в качестве локальных меток для передачи потока выполнения.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Многопоточное и асинхронное программирование</title>
				<link>https://trust-lang.net/ru/docs/4_operators/async/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/async/</guid>
				<description>&lt;p&gt;&lt;a href=&#34;https://github.com/jbaldwin/libcoro&#34;&gt;https://github.com/jbaldwin/libcoro&lt;/a&gt;&#xA;&lt;a href=&#34;https://github.com/kelbon/kelcoro&#34;&gt;https://github.com/kelbon/kelcoro&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/lewissbaker/cppcoro&#34;&gt;https://github.com/lewissbaker/cppcoro&lt;/a&gt;&#xA;&lt;a href=&#34;https://github.com/David-Haim/concurrencpp/&#34;&gt;https://github.com/David-Haim/concurrencpp/&lt;/a&gt;&#xA;&lt;a href=&#34;https://github.com/facebookexperimental/libunifex&#34;&gt;https://github.com/facebookexperimental/libunifex&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rcoro-capture&#34;&gt;https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rcoro-capture&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://colinchcpp.github.io/2023-09-25/11-28-57-239780-coroutine-timeouts-and-cancellation-tokens-in-c/&#34;&gt;https://colinchcpp.github.io/2023-09-25/11-28-57-239780-coroutine-timeouts-and-cancellation-tokens-in-c/&lt;/a&gt;&#xA;&lt;a href=&#34;https://markaicode.com/coroutine-cancellation-patterns/&#34;&gt;https://markaicode.com/coroutine-cancellation-patterns/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://habr.com/ru/articles/326138/&#34;&gt;https://habr.com/ru/articles/326138/&lt;/a&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Современные операционные системы и микропроцессоры уже давно поддерживает многозадачность и вместе с тем,&#xA;каждая из этих задач может выполняться в несколько потоков. Это дает ощутимый прирост производительности вычислений&#xA;и позволяет лучше масштабировать пользовательские приложения и сервера, но за это приходится платить&#xA;цену — усложняется разработка программы и ее отладка.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;Многопоточное и асинхронное программирование в &lt;em&gt;NewLnag&lt;/em&gt;, это способы повышения производительности&#xA;&lt;strong&gt;одного экзмпляра приложения&lt;/strong&gt; при работе под большой нагрузкой для более полной утилизации вычислительных ресурсов компьютера.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Внутреннее имя и манглинг имен</title>
				<link>https://trust-lang.net/ru/docs/5_arch/mangling/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/mangling/</guid>
				<description>&lt;p&gt;Именование объектов основано на &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/naming/&#34;&gt;правилах&lt;/a&gt; и выбирается из расчёта удобства для программиста.&#xA;Название переменной или функции должно нести смысл, понятные параметры и тип возвращаемого значения,&#xA;которые упрощают понимание алгоритма при последующем чтении исходного текста программы.&lt;/p&gt;&#xA;&lt;p&gt;Но обычные имена мало о чём говорят компьютеру. Поэтому при компиляции программы,&#xA;имена объектов преобразуются для удобства машинной обработки и к ним добавляется служебная информация.&lt;/p&gt;&#xA;&lt;p&gt;Манглинг &lt;a href=&#34;https://trust-lang.net/ru/docs/types/native/&#34;&gt;&lt;em&gt;нативных&lt;/em&gt;&lt;/a&gt; имен переменных и функций происходит в соотвествии с правилами компилятора языка реалиазции,&#xA;а все остальные объекты именются следующим образом:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Математические операторы</title>
				<link>https://trust-lang.net/ru/docs/4_operators/math/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/math/</guid>
				<description>&lt;p&gt;Все математические операторы имеют парный аналог с присвоением значения:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;+&lt;/strong&gt; и &lt;strong&gt;+=&lt;/strong&gt; — сложение арифметических типов данных;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;-&lt;/strong&gt; и &lt;strong&gt;-=&lt;/strong&gt; — вычитание арифметических типов данных;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;/&lt;/strong&gt; и &lt;strong&gt;/=&lt;/strong&gt; — деление (результат число с плавающей точкой);&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;//&lt;/strong&gt; и &lt;strong&gt;//=&lt;/strong&gt; — целочисленное деление с округлением к меньшему числу (как в Python);&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;*&lt;/strong&gt; и &lt;strong&gt;*=&lt;/strong&gt; — умножение (он же используется и для повторения текстовых строк);&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;%&lt;/strong&gt; и &lt;strong&gt;%=&lt;/strong&gt; — остаток от целочисленного деления;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Отдельный оператор для возведения в степень отсуствует.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Пространства имен</title>
				<link>https://trust-lang.net/ru/docs/syntax/namespace/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/namespace/</guid>
				<description>&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; поддерживает пространства имен, разделителем в которых, как и в С++, выступает двойное двоеточие &amp;ldquo;&lt;strong&gt;::&lt;/strong&gt;&amp;rdquo;.&lt;/p&gt;&#xA;&lt;p&gt;Область имен может быть указана как для отдельного индетификатора, так и для целого &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/block/&#34;&gt;блока кода&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;В отличии от &lt;em&gt;namespace&lt;/em&gt; в С++, области имен в &lt;em&gt;NewLnag&lt;/em&gt; используются не только для организации кода в виде логических групп&#xA;и с целью избежания конфликтов имен, но и для отнесения идентификатора, в котором явно указана область имен, к статическим объектам&#xA;(память под которые выделяется на этапе комиляции программы).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Модули и пакеты</title>
				<link>https://trust-lang.net/ru/docs/syntax/modules/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/modules/</guid>
				<description>&lt;p&gt;В &lt;em&gt;TrustLang&lt;/em&gt; реализована концепция программных модулей и пакетов - которая повторяет идею иерархического расположения файлов&#xA;в каталогах файловой системы, примерно так же, как это сделано в языке Python, но разделителем имен выступает не точка,&#xA;а символ &amp;ldquo;&lt;strong&gt;\&lt;/strong&gt;&amp;rdquo; (как разделитель каталогов в Windows).&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;Имя модуля может содержать только строчные английские буквы, цифры или символ подчерка (кроме первой и последеней позиции).&#xA;Данное ограничение связано с прямым отображением имен модулей на объекты в файловой системе,&#xA;так как у разных файловых систем могут быть различные возможности с поддержкой кодировок&#xA;и разные требования к преобразованию регистров символов.&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Операторы сравнения и типизация</title>
				<link>https://trust-lang.net/ru/docs/4_operators/compare/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/compare/</guid>
				<description>&lt;h3 id=&#34;арифметическое-сравнение&#34;&gt;Арифметическое сравнение&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b0%d1%80%d0%b8%d1%84%d0%bc%d0%b5%d1%82%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%be%d0%b5-%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d0%b5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Операторы арифметического сравнения представленными классическими &lt;strong&gt;&amp;lt;&lt;/strong&gt;, &lt;strong&gt;&amp;gt;&lt;/strong&gt;, &lt;strong&gt;&amp;lt;=&lt;/strong&gt;, &lt;strong&gt;&amp;gt;=&lt;/strong&gt;, &lt;strong&gt;==&lt;/strong&gt; и &lt;strong&gt;!=&lt;/strong&gt;.&#xA;Они использются для сравнения между собой скаляров и рациональных чисел, а операторы сранвения на равенство &lt;strong&gt;==&lt;/strong&gt; и &lt;strong&gt;!=&lt;/strong&gt;,&#xA;позвоялют сравнивать между собой в том числе и матрицы.&lt;/p&gt;&#xA;&lt;h3 id=&#34;операторы-сравнения&#34;&gt;Операторы сравнения&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%be%d0%bf%d0%b5%d1%80%d0%b0%d1%82%d0%be%d1%80%d1%8b-%d1%81%d1%80%d0%b0%d0%b2%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;==&lt;/strong&gt; и &lt;strong&gt;!=&lt;/strong&gt; — операторы сравнения с автоматическим приведением совместимых типов для любых объектов&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;==&lt;/strong&gt; и &lt;strong&gt;!=&lt;/strong&gt; — операторы сравнения с автоматическим приведением совместимых типов для любых объектов&lt;/p&gt;</description>
			</item>
			<item>
				<title>Реализация прерываний и обработки ошибок</title>
				<link>https://trust-lang.net/ru/docs/5_arch/errors/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/errors/</guid>
				<description>&lt;p&gt;Чтобы не усложнять обработку ошибок и не разделять их на внутренние и внешние,&#xA;реализовано всего два класса для сообщения об ошибоках, накопительные и непосредственные + возврат значений.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; описанная здесь схема обработки ошибок (макросы LOG_ERROR, опция --nlc-error-limit, классы :IntAny/:IntPlus/:IntMinus) относится к устаревшей архитектуре `nlc`. Текущая реализация использует компонент diag (Severity::Error/Warning/... и накопительные отчёты в pipeline), а опции задаются через -W&amp;lt;name&amp;gt; (см. README.md)&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;h3 id=&#34;накопительные-ошибки-и-их-реализация&#34;&gt;Накопительные ошибки и их реализация&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bd%d0%b0%d0%ba%d0%be%d0%bf%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%be%d1%88%d0%b8%d0%b1%d0%ba%d0%b8-%d0%b8-%d0%b8%d1%85-%d1%80%d0%b5%d0%b0%d0%bb%d0%b8%d0%b7%d0%b0%d1%86%d0%b8%d1%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Накопительные ошибки используются при обработке исходного текста программы при его парсинге, анализа или компиляции.&#xA;&lt;em&gt;Накопительнность&lt;/em&gt; данных ошибок заключается в том, что процесс обработки исходного текста прерывается не сразу после возникновения первой ошибки,&#xA;а только после превышения определнного лимита (по умолчанию &amp;ndash;nlc-error-limit=10).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Управление памятью и совместный доступ</title>
				<link>https://trust-lang.net/ru/docs/syntax/memory/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/memory/</guid>
				<description>&lt;p&gt;В &lt;em&gt;TrustLang&lt;/em&gt; реализовано безопасное автоматическое управление памятью без сборщика мусора.&lt;/p&gt;&#xA;&lt;p&gt;Автоматическое освобждение памяти реализовано за счет принципа &lt;a href=&#34;https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization&#34;&gt;RAII&lt;/a&gt;&#xA;и использования двух типов указателей: сильных и слабых ссылок (&lt;em&gt;shared_ptr&lt;/em&gt; и &lt;em&gt;weak_ptr&lt;/em&gt; в терминологии С++).&lt;/p&gt;&#xA;&lt;p&gt;Чтобы не допускать утечек памяти из-за &lt;a href=&#34;https://doc.rust-lang.org/book/ch15-06-reference-cycles.html&#34;&gt;циклических ссылок&lt;/a&gt;,&#xA;создание &lt;em&gt;&lt;strong&gt;сильных&lt;/strong&gt;&lt;/em&gt; &lt;em&gt;циклических&lt;/em&gt; ссылок запрещено на уровне &lt;em&gt;определений типов данных&lt;/em&gt; (классов любого уровня вложенности)&#xA;и контролируется статическим анализатором на этапе &lt;em&gt;компиляции&lt;/em&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Потенциальные гонки при обращении к памяти из разных потоков решаются за счет &lt;em&gt;автоматической&lt;/em&gt; межпотоковой синхронизации доступа.&#xA;Способ синхронизации доступа указывается при определении переменной,&#xA;а захват и освобождение объекта синхронизации при разименовании ссылки выполняются &lt;em&gt;автоматически&lt;/em&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>LLVM</title>
				<link>https://trust-lang.net/ru/docs/5_arch/llvm/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/llvm/</guid>
				<description>&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; LLVM-бэкенд не используется: текущая реализация — транспилятор в код C&amp;#43;&amp;#43; с последующей сборкой через clang&amp;#43;&amp;#43; (LLVM IR не генерируется). Документ является справочником по инструкциям LLVM IR и не отражает фактический вывод компилятора&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Инструкция возврата:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;‘ret’ - инструкция возврата&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-llvm&#34; data-lang=&#34;llvm&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ret&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;type&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt;       &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;; Return a value from a non-void function&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ret&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;void&lt;/span&gt;                 &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;; Return from void function&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Инструкция передачи потока выполнения:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;‘br’ - инструкция перехода (условного или безусловного)&lt;/li&gt;&#xA;&lt;li&gt;‘switch’ - Инструкция передачи управления в одно из нескольких различных мест (обобщение инструкции «br»)&lt;/li&gt;&#xA;&lt;li&gt;‘indirectbr’ - инструкция косвенного безусловного перехода&lt;/li&gt;&#xA;&lt;li&gt;‘callbr’ - аналог безусловного перехода&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Инструкции для обработки исключений:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Обобщенное программирование</title>
				<link>https://trust-lang.net/ru/docs/syntax/generics/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/generics/</guid>
				<description>&lt;p&gt;Обобщённое программирование (generic programming) - это одна из фундаментальных парадигм современного программирования, позволяющая писать алгоритмы и структуры данных независимо от конкретных типов, с которыми они работают. Несмотря на единство цели, каждый язык программирования реализуют эту парадигму по своему. И такие различия не случайны, так как каждый варинат реализации обощеного программирования является следствием философии языка, исторического контекста и компромиссов между производительностью, безопасностью и выразительностью.&lt;/p&gt;&#xA;&lt;p&gt;Для понимания причины выбора концепции обобщенного программирования, которая реализована в языке, имеет смысл предварительно ознакомиться со сравнительным анализом различных подходов в других языках программирования, который опубликован в &lt;a href=&#34;https://trust-lang.net/ru/blog/generics/&#34;&gt;отдельной статье блога&lt;/a&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Реализация JIT</title>
				<link>https://trust-lang.net/ru/docs/5_arch/jit/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/jit/</guid>
				<description>&lt;p&gt;В состав языка взодят следующие компоненты:&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; JIT-компиляция, интерпретатор и REPL (компоненты nlc-jit, nlc-rt, LLVM) в текущей версии НЕ реализованы. Реализация `trust` транспилирует исходный текст в C&amp;#43;&amp;#43; и собирает исполняемый файл через clang&amp;#43;&amp;#43; (см. README.md и _build/trust --help); режима JIT/REPL нет&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Приложение компилятор и REPL одновременнно &lt;strong&gt;nlc&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Библиотека nlc-rt - минимально необходимые компоненты для работы с обощенными типами данных.&lt;/li&gt;&#xA;&lt;li&gt;Рантайм компоненты проекта libtorch - для тензорных вычислений.&lt;/li&gt;&#xA;&lt;li&gt;Библиотека nlc-jit - реализация REPL и JIT и нативного компилятора&lt;/li&gt;&#xA;&lt;li&gt;Рантайм библиотека LLVM как зависимость для nlc-jit.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Варианты сборки приложения и необходимые для его работы библиотеки зависят от следующих факторов:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Запустить свой узел-исполнитель (worker)</title>
				<link>https://trust-lang.net/ru/docs/host-a-worker/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/host-a-worker/</guid>
				<description>&lt;p&gt;Playground TrustLang работает по трёхуровневой схеме: статический сайт →&#xA;балансировщик (playground) → множество &lt;strong&gt;исполнительных VPS (worker)&lt;/strong&gt;. Воркеры&#xA;сами подключаются к балансировщику (исходящее соединение — двойной NAT не мешает),&#xA;регистрируются и выполняют транспиляцию Trust → C++. Когда свободных воркеров нет,&#xA;playground отвечает «нет воркеров» со ссылкой на эту инструкцию.&lt;/p&gt;&#xA;&lt;p&gt;Вы можете помочь проекту и запустить свой узел-исполнитель за несколько минут.&lt;/p&gt;&#xA;&lt;h2 id=&#34;требования&#34;&gt;Требования&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%82%d1%80%d0%b5%d0%b1%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d1%8f&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Linux-сервер (VPS) с &lt;code&gt;systemd&lt;/code&gt; и возможностью исходящего TCP-соединения к&#xA;балансировщику (обычный интернет).&lt;/li&gt;&#xA;&lt;li&gt;Дистрибутив &lt;code&gt;trust-lang-*.tar.gz&lt;/code&gt; (содержит &lt;code&gt;trust-playground&lt;/code&gt; и &lt;code&gt;trust-lsp&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Токен воркера (64 hex-символа) и URL балансировщика — выдаются администратором.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;шаги&#34;&gt;Шаги&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%88%d0%b0%d0%b3%d0%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Получите токен&lt;/strong&gt; у администратора playground (&lt;code&gt;label&lt;/code&gt; + токен). Воркер&#xA;аутентифицируется этим токеном; при отзыве токена доступ прекращается.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Макросы</title>
				<link>https://trust-lang.net/ru/docs/syntax/macros/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/macros/</guid>
				<description>&lt;p&gt;Макросы в &lt;strong&gt;TrustLang&lt;/strong&gt; являются элементами метапрограммирования.&lt;/p&gt;&#xA;&lt;p&gt;Макрос - это один или несколько последовательных терминов, которые заменяются на другой термин&#xA;или на целую синтаксическую конструкцию (последовательность лексем) и&#xA;выступают в роли специализированных регулярных выражений для поиска и замены последовательностей терминов.&lt;/p&gt;&#xA;&lt;p&gt;Макросы обработываются &lt;strong&gt;лексером&lt;/strong&gt; перед отправкой токенов в парсер для синтаксического анализа,&#xA;что позволяет изменять даже синтаксис языка, например, превратить синтаксис &lt;em&gt;TrustLang&lt;/em&gt; на основе грамматических правил&#xA;в более привычный синтаксис на основе &lt;a href=&#34;https://trust-lang.net/syntax_dsl.html&#34;&gt;ключевых слов&lt;/a&gt;,&#xA;так как такой текст легче воспринимается при последующем чтении исходного кода программы.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Реализация областей видимости</title>
				<link>https://trust-lang.net/ru/docs/5_arch/visibility/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/visibility/</guid>
				<description>&lt;p&gt;Управление времем жизни объектов и их областью видимости возможно в рамках модуля, пакета и класса.&#xA;На область видимости так же влияет и тип объекта (локальный, статический или глобальный).&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; описанная здесь модель времени выполнения (классы Runtime/Module/Context, Obj, Variable, VariablePair, LatterType, именованные прерывания как исключения) относится к устаревшей интерпретируемой архитектуре и не соответствует текущей реализации-транспилятору в C&amp;#43;&amp;#43;&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Каждый объект имеет владельца.&lt;/p&gt;&#xA;&lt;p&gt;Встроенными и глобальными объектами владеет среда выполнения (Runtime),&#xA;статическиме объекты принадлежат модулю (Module),&#xA;а локальные (автоматические) находятся на стеке выполненения (Context).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Keyword syntax (DSL)</title>
				<link>https://trust-lang.net/ru/docs/syntax/dsl/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/dsl/</guid>
				<description>&lt;h3 id=&#34;особенности-ассоциативной-памяти&#34;&gt;Особенности ассоциативной памяти&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%be%d1%81%d0%be%d0%b1%d0%b5%d0%bd%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%b0%d1%81%d1%81%d0%be%d1%86%d0%b8%d0%b0%d1%82%d0%b8%d0%b2%d0%bd%d0%be%d0%b9-%d0%bf%d0%b0%d0%bc%d1%8f%d1%82%d0%b8&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Синтаксис языка &lt;em&gt;TrustLang&lt;/em&gt; основан на строгих правилах без использования ключевых слов,&#xA;и как бы он не выглядел логичным, ассоциация по ключевым словам вспоминается гораздо легче, например &lt;strong&gt;if&lt;/strong&gt;,&#xA;чем комбинация &lt;em&gt;минус минус правая угловая скобка&lt;/em&gt; &lt;strong&gt;&amp;ndash;&amp;gt;&lt;/strong&gt;.&#xA;Из-за этого имеет смысл использовать не &amp;ldquo;чистый&amp;rdquo; базовый синтаксис, а более привычный диалект с использованием ключевых слов.&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; уже содержит набор макросов, которые расширяют базовый синтаксис &lt;em&gt;TrustLang&lt;/em&gt;, основанный на правилах,&#xA;набором предопределенных ключевых слов как в классических языках программирования,&#xA;которые можно адаптировать или дополнить под собственную предметную область.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Доказательство корректности</title>
				<link>https://trust-lang.net/ru/docs/syntax/proof/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/proof/</guid>
				<description>&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; формальный анализ AoRTE (проверка доказательства корректности программы) в текущей версии компилятора НЕ реализован: в pipeline отсутствует соответствующий проход, а SMT-решатель — только инфраструктура (solver), по умолчанию подключён заглушка (SolverStub возвращает kUnsupported)&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Реализация статической проверки динамических выражений AoRTE (“Absence of Run-Time Errors”), которая не даёт ложных срабатываний, хотя возможны ложные отрицательные результаты. То есть, если ошибки при компиляции отсутствуют, то можно быть уверенными, что проблем в коде нет, тогда как указание на возможную ошибку не всегда соответствует действительности и инструмент может ошибаться.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Условный оператор</title>
				<link>https://trust-lang.net/ru/docs/4_operators/if/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/if/</guid>
				<description>&lt;p&gt;В качестве оператора проверки условия используется синтаксическая конструкция, которая соответствует по смыслу термину «следует»,&#xA;т.е. два тире и угловая скобка &lt;strong&gt;--&amp;gt;&lt;/strong&gt;. Такая запись условного оператора очень похожа на математическую и легко объединяется&#xA;в последовательности для проверки множественных условий вида «else if».&lt;/p&gt;&#xA;&lt;p&gt;В общем случае условный оператор имеет вид: &lt;strong&gt;[&lt;/strong&gt; условие &lt;strong&gt;] --&amp;gt; {&lt;/strong&gt; действие &lt;strong&gt;};&lt;/strong&gt; или&#xA;с условием иначе &lt;strong&gt;[&lt;/strong&gt; условие &lt;strong&gt;] --&amp;gt; {&lt;/strong&gt; действие &lt;strong&gt;}, [&amp;hellip;] --&amp;gt; {&lt;/strong&gt; действие иначе &lt;strong&gt;};&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Системные свойства</title>
				<link>https://trust-lang.net/ru/docs/5_arch/sysprop/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/sysprop/</guid>
				<description>&lt;h3 id=&#34;системные-свойства&#34;&gt;Системные свойства&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%bd%d1%8b%d0%b5-%d1%81%d0%b2%d0%be%d0%b9%d1%81%d1%82%d0%b2%d0%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; системные свойства объектов `__name__`, `__type__`, `__module__`, `__str__` и т.п. в текущей реализации-транспиляторе не реализованы (нет интерпретируемой объектной модели; данные компилируются в C&amp;#43;&amp;#43;). Нижеследующее описание относится к устаревшей архитектуре&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Несмотря на то, что не все объекты &lt;em&gt;TrustLang&lt;/em&gt; являются классами с точки зрения &lt;a href=&#34;https://trust-lang.net/ru/docs/types/class/&#34;&gt;реализованной концепции ООП&lt;/a&gt;,&#xA;тем не менее, каждый объект имеет системные свойства, которые можно считать во время выполнения как обычные свойства объекта:&lt;/p&gt;&#xA;&lt;h4 id=&#34;у-всех-переменных-объектов-есть-системные-свойства&#34;&gt;У всех переменных (объектов) есть системные свойства&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%83-%d0%b2%d1%81%d0%b5%d1%85-%d0%bf%d0%b5%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d1%8b%d1%85-%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%be%d0%b2-%d0%b5%d1%81%d1%82%d1%8c-%d1%81%d0%b8%d1%81%d1%82%d0%b5%d0%bc%d0%bd%d1%8b%d0%b5-%d1%81%d0%b2%d0%be%d0%b9%d1%81%d1%82%d0%b2%d0%b0&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;__name__ - краткое имя переменной (объекта)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Опции и настройки компилятора</title>
				<link>https://trust-lang.net/ru/docs/5_arch/pragmas/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/5_arch/pragmas/</guid>
				<description>&lt;h2 id=&#34;прагмы&#34;&gt;Прагмы&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bf%d1%80%d0%b0%d0%b3%d0%bc%d1%8b&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;h3 id=&#34;предварительное-объевления-объектов&#34;&gt;Предварительное объевления объектов&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bf%d1%80%d0%b5%d0%b4%d0%b2%d0%b0%d1%80%d0%b8%d1%82%d0%b5%d0%bb%d1%8c%d0%bd%d0%be%d0%b5-%d0%be%d0%b1%d1%8a%d0%b5%d0%b2%d0%bb%d0%b5%d0%bd%d0%b8%d1%8f-%d0%be%d0%b1%d1%8a%d0%b5%d0%ba%d1%82%d0%be%d0%b2&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;@__PRAGMA_DECLARE__&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; прагма @__PRAGMA_DECLARE__ в текущей версии не существует (см. список поддерживаемых @__PRAGMA_* в src/syntax/parser.cpp)&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    @__PRAGMA_DECLARE__( func(arg) );&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;импорт-нативной-функции--переменной&#34;&gt;Импорт нативной функции / переменной&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b8%d0%bc%d0%bf%d0%be%d1%80%d1%82-%d0%bd%d0%b0%d1%82%d0%b8%d0%b2%d0%bd%d0%be%d0%b9-%d1%84%d1%83%d0%bd%d0%ba%d1%86%d0%b8%d0%b8--%d0%bf%d0%b5%d1%80%d0%b5%d0%bc%d0%b5%d0%bd%d0%bd%d0%be%d0%b9&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;@__PRAGMA_NATIVE__&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; прагма @__PRAGMA_NATIVE__ в текущей версии не существует; импорт нативных объектов выполняется через @extern/@forward или `name(...):T := %native...` (см. docs/types/native)&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;    // import native int printf(char *format, ...)&#xA;    @__PRAGMA_NATIVE__( printf(format:FmtChar, ...):Int32 );&#xA;&lt;/code&gt;&lt;/pre&gt;&lt;h3 id=&#34;diag&#34;&gt;Управление диагностикой компилятора&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#diag&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;@__PRAGMA_DIAG__ -&lt;/p&gt;</description>
			</item>
			<item>
				<title>Оценка выражения</title>
				<link>https://trust-lang.net/ru/docs/4_operators/match/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/match/</guid>
				<description>&lt;p&gt;Синтаксическая конструкция с помощью которой реализуется примерный аналог оператора &lt;em&gt;switch&lt;/em&gt; или &lt;em&gt;match&lt;/em&gt; выглядит следующим образом:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Выполнится проверка условия $var == 1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Выполнится проверка условия ($var == 1 || $var == 2)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;--&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Ветка условия иначе&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Или тоже самое, но с использованием &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/dsl/&#34;&gt;макросов из модуля dsl&lt;/a&gt;:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@match&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;$&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;==&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@case&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@case&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#5c35cc;font-weight:bold&#34;&gt;@default&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;code&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;default&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;};&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Этот оператор очень похож на &lt;em&gt;Pattern Matching&lt;/em&gt;, но все же не является сопоставлением с образцом,&#xA;а скорее более краткая запись множественного оператора сравнения,&#xA;так как в качестве оператора для оценки могут быть использован любые имеющиеся операторы сравнения на равенство:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Операторы циклов</title>
				<link>https://trust-lang.net/ru/docs/4_operators/while/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/while/</guid>
				<description>&lt;p&gt;Для записи циклов используются оператор &lt;strong&gt;&amp;lt;-&amp;gt;&lt;/strong&gt;, который ставится между условием цикла (проверкой логического выражения) и телом цикла.&#xA;Условие цикла записывается в квадратных скобках и в зависимости от взаимного расположения цикл может быть с предусловием (while)&#xA;или постусловием (dowhile):&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;условие &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &amp;lt;-&amp;gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        тело цикла &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        тело цикла &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt; &amp;lt;-&amp;gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;условие &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;do&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;while&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Цикл с предусловием (&lt;strong&gt;while&lt;/strong&gt;) поддерживает конструкцию &lt;strong&gt;else&lt;/strong&gt;, которая выполняется, если условие входа в цикл не было выполнено.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;&lt;em&gt;Внимание!&lt;/em&gt;&#xA;&lt;em&gt;Это поведение отличается от аналогичных конструкций в языке Python, у которого секция &lt;strong&gt;else&lt;/strong&gt; выполняется всегда, кроме прерывания цикла по break.&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Менеджер контекста</title>
				<link>https://trust-lang.net/ru/docs/4_operators/with/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/with/</guid>
				<description>&lt;p&gt;Одиночный оператор захвата &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/memory/&#34;&gt;ссылки и синхронизации доступа&lt;/a&gt; к объекту &amp;lsquo;&lt;strong&gt;*&lt;/strong&gt;&amp;rsquo; или &amp;lsquo;&lt;strong&gt;*(&amp;hellip;)&lt;/strong&gt;&amp;rsquo;&#xA;выполняется только для одной переменной при использовании в одном действии.&#xA;Но захват ссылки и объекта синхронизации, это относительно медленная операция и выполнять её для каждого действия над переменной не рационально.&lt;/p&gt;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-warning&#34;&gt;&#xA;  &lt;p&gt;&lt;strong&gt;⚠️ НЕ РЕАЛИЗОВАНО:&lt;/strong&gt; описанный здесь менеджер контекста (`**()` / `@with`), операторы захвата ссылок (`*`, `&amp;amp;`, `&amp;amp;?`, `&amp;amp;&amp;amp;`), межпотоковая синхронизация и тип `:Class`/`:Thread` в текущей версии НЕ реализованы&lt;/p&gt;&#xA;  &#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Для того, чтобы захватить одновременно сразу несколько объектов синхронизации&#xA;для выполнения группы последовательных действий используется менеджер контекста.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Ввозврат, прерывания и обработка ошибок</title>
				<link>https://trust-lang.net/ru/docs/4_operators/throw/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/4_operators/throw/</guid>
				<description>&lt;p&gt;Последовательность команд &lt;a href=&#34;https://trust-lang.net/ru/docs/4_operators/block/&#34;&gt;(блок кода)&lt;/a&gt; можно прервать в любом месте с помощью специальных операторов.&lt;/p&gt;&#xA;&lt;p&gt;Для этого используются две разные команды, которые условно можно назвать &lt;em&gt;положительным&lt;/em&gt; и &lt;em&gt;отрицательным&lt;/em&gt; прерыванием потока выполнения,&#xA;что примерно соответствует семантике их записи.&#xA;&amp;ldquo;Отрицательное&amp;rdquo; прерывание записывается в виде двух минусов, а &amp;ldquo;положительное&amp;rdquo; прерывание в виде двух плюсов, т.е. &lt;strong&gt;--&lt;/strong&gt; или &lt;strong&gt;++&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Оператор прерывания не возвращает никакого значения (точнее, возвращает пустое значение).&#xA;Чтобы прерывание вернуло другое значение, возвращаемые данные нужно записать между парой соответствующих символов,&#xA;т.е. &lt;strong&gt;--&lt;/strong&gt; 100 &lt;strong&gt;--&lt;/strong&gt;, что является примерным аналогом оператора &lt;code&gt;return 100;&lt;/code&gt;&#xA;в других языках программирования, а &lt;strong&gt;++&lt;/strong&gt;&amp;lsquo;Строка&amp;rsquo;&lt;strong&gt;++&lt;/strong&gt; - аналогом &lt;code&gt;return &#39;Строка&#39;;&lt;/code&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Обобщённое программирование в разных языках</title>
				<link>https://trust-lang.net/ru/blog/generics/</link>
				<pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/generics/</guid>
				<description>&lt;p&gt;Обобщённое программирование (generic programming) — парадигма, позволяющая описывать алгоритмы и структуры данных в абстракции от конкретных типов. Несмотря на единую концепцию, каждый язык реализует её по-своему: через шаблоны, параметрический полиморфизм, стирание типов или утиную типизацию. В данной статье проводится детальный анализ механизмов обобщённого программирования в восьми языках — C++, Java, C#, Python, Rust, Haskell, TypeScript, Julia — с оценкой сильных и слабых сторон каждого подхода и сравнительным итогом.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;1-введение&#34;&gt;1. Введение&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#1-%d0%b2%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Идея обобщённого программирования восходит к работам Александра Степанова и Дэвида Мусера в конце 1980-х годов. Её суть — отделение алгоритмов от конкретных типов данных при сохранении типовой безопасности и управляемой производительности. На практике разные языки решают эту задачу через разные механизмы:&lt;/p&gt;</description>
			</item>
			<item>
				<title>УТП для языков программирования</title>
				<link>https://trust-lang.net/ru/blog/ups-lang/</link>
				<pubDate>Sun, 13 Jul 2025 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/ups-lang/</guid>
				<description>&lt;pre class=&#34;mermaid&#34;&gt;---&#xA;config:&#xA;      theme: redux&#xA;---&#xA;flowchart TD&#xA;        A([&amp;#34;Start&amp;#34;])&#xA;        A --&amp;gt; B{&amp;#34;Decision&amp;#34;}&#xA;        B --&amp;gt; C[&amp;#34;Option A&amp;#34;]&#xA;        B --&amp;gt; D[&amp;#34;Option B&amp;#34;]&lt;/pre&gt;</description>
			</item>
			<item>
				<title>Неоднозначный термин «искусственный интеллект»</title>
				<link>https://trust-lang.net/ru/blog/wrong-term-ai/</link>
				<pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/wrong-term-ai/</guid>
				<description>&lt;p&gt;Последнее время кто только не говорит про успехи искусственного интеллекта (ИИ), часто подразумевая под этим очередное достижение в области генеративных нейросетей. И как обычно, одни делают деньги на хайпе, другие жаждут появления &lt;del&gt;Сары Коннор&lt;/del&gt; настоящего сильного ИИ (который в будущем захватит мир), а кто-то просто в очередной раз насилует журналиста.&lt;/p&gt;&#xA;&lt;p&gt;И очень мало тех, кто при упоминании ИИ пытается пояснить, а что он сам понимает под  термином &amp;ldquo;искусственный интеллект&amp;rdquo;. Ведь одно дело писать про &amp;ldquo;область задач из разряда ИИ&amp;rdquo;, и совсем другое, наделять обычный компьютерный алгоритм хотя бы зачатками разума.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Простое сложное программирование</title>
				<link>https://trust-lang.net/ru/blog/simple-complex-programming/</link>
				<pubDate>Sat, 04 May 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/simple-complex-programming/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://habrastorage.org/webt/yx/tt/qq/yxttqqw--euowcslniugotlbmkw.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;В очередной раз увидел на Хабре статью про сложное дело под названием «программирование». И то, что программирование действительно является делом не простым воспринимается как факт и обычно не требует какого либо подтверждения.&lt;/p&gt;&#xA;&lt;p&gt;Но понятие «сложность» сродни термину «куча». Для кого-то и пять кокосов это не куча, а кого-то съел один и «больше не хочется» - значит для него и единственного кокоса будет много.&lt;/p&gt;&#xA;&lt;p&gt;Так и со сложностью ПО. Вроде бы увеличение сложности является для всех очевидным и наблюдается во всех сферах применения IT технологий,&#xA;да и сами языки программирования по мере своего развития становятся все сложнее, а вот оценивать «сложность» с помощью численных метрик —&#xA;дело заведомо неблагодарное, но и «нельзя управлять тем, что невозможно измерить &amp;hellip;».&lt;/p&gt;</description>
			</item>
			<item>
				<title>Building blocks in programming languages</title>
				<link>https://trust-lang.net/ru/blog/building-blocks/</link>
				<pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/building-blocks/</guid>
				<description>&lt;p&gt;В результате обратной связи по статье с &lt;a href=&#34;https://habr.com/ru/articles/784238/&#34;&gt;размышлениями о структурном программировании&lt;/a&gt;, было много отзывов и споров в комментариях, за которые я хочу сказать всем большое спасибо.&lt;/p&gt;&#xA;&lt;p&gt;И под впечатлениями от обсуждения предыдущей статьи я задался вопросом, а существует ли минимальный набор лексем, операторов или синтаксических конструкций, с помощью которых можно построить произвольную грамматику для современного языка программирования общего назначения?&lt;/p&gt;&#xA;&lt;h2 id=&#34;ведение&#34;&gt;Ведение&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%b2%d0%b5%d0%b4%d0%b5%d0%bd%d0%b8%d0%b5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Практически все языки программирования строятся либо по принципу подобия (сделать как вот этот, только со своим блекждеком), либо для реализации какой-то новой концепции (модульность, чистота функциональных вычислений и т.д.). Либо и то и другое одновременно.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Возможное решение проблемы ссылок в языках программирования</title>
				<link>https://trust-lang.net/ru/blog/reference-solution/</link>
				<pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/reference-solution/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://habrastorage.org/webt/xl/4d/uy/xl4duyyseltgpsqlhu09_vp-zvk.jpeg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Любому программисту знакомо понятие &amp;ldquo;ссылка&amp;rdquo;. Под этим термином обычно понимают небольшой объект, главная задача которого обеспечить доступ к другому объекту, физически расположенному в другом месте. Из-за этого ссылки удобно использовать, они легко копируются, и с их помощью очень просто получить доступ к объекту, на который эта ссылка ссылается и можно получить доступ к одним и тем же данным из разных мест программы.&lt;/p&gt;&#xA;&lt;p&gt;К сожалению ссылки, точнее ручное управление памятью, является наиболее частой причиной  возникновения различных ошибок и уязвимостей в программном обеспечении. А все попытки автоматического управления памятью с помощью различных менеджеров упираются в необходимость контролировать создание и удаление объектов, а так же периодически запускать сборщик мусора, что отнюдь не положительно сказывается на производительности приложений.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Релиз языка программирования TrustLang 0.4</title>
				<link>https://trust-lang.net/ru/blog/release-v0.4/</link>
				<pubDate>Tue, 06 Jun 2023 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/release-v0.4/</guid>
				<description>&lt;h2 id=&#34;новые-возможности-и-изменения-в-синтаксисе-trustlang&#34;&gt;Новые возможности и изменения в синтаксисе TrustLang&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%b8-%d0%b8%d0%b7%d0%bc%d0%b5%d0%bd%d0%b5%d0%bd%d0%b8%d1%8f-%d0%b2-%d1%81%d0%b8%d0%bd%d1%82%d0%b0%d0%ba%d1%81%d0%b8%d1%81%d0%b5-trustlang&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Переработано определение типов объектов с помощью &lt;a href=&#34;https://trust-lang.net/docs/syntax/naming/&#34;&gt;префикса имен (сигила)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Прерывание потока выполнения и возврат теперь может выполняться для &lt;a href=&#34;https://trust-lang.net/docs/ops/throw/&#34;&gt;именованных блоков кода&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Упрощен синтаксис импорта &lt;a href=&#34;https://trust-lang.net/docs/types/native/&#34;&gt;нативных переменных и функций (С/С++)&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;Стабилизирован синтаксис для &lt;a href=&#34;https://trust-lang.net/docs/ops/create/#comprehensions&#34;&gt;заполнение начальными данными&lt;/a&gt; значений тензоров, словарей и аргументов при вызове функций.&lt;/li&gt;&#xA;&lt;li&gt;Появились встроенные макросы для написания кода с использованием ключевых слов в стиле &lt;a href=&#34;https://trust-lang.net/docs/syntax/dsl/&#34;&gt;DSL&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;новые-возможности-компилятора-nlc&#34;&gt;Новые возможности компилятора (nlc)&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d0%bd%d0%be%d0%b2%d1%8b%d0%b5-%d0%b2%d0%be%d0%b7%d0%bc%d0%be%d0%b6%d0%bd%d0%be%d1%81%d1%82%d0%b8-%d0%ba%d0%be%d0%bc%d0%bf%d0%b8%d0%bb%d1%8f%d1%82%d0%be%d1%80%d0%b0-nlc&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;Полностью переделан макропроцессор.&lt;/li&gt;&#xA;&lt;li&gt;Переработана архитектура компилятора с разделением на парсер, макропроцессор, синтаксический анализатор, интерпретатор и генератор кода.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;разное&#34;&gt;Разное&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%80%d0%b0%d0%b7%d0%bd%d0%be%d0%b5&#34; aria-label=&#34;Heading self-link&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;http://trust-lang.net&#34;&gt;Сайт&lt;/a&gt; с документацией переведен на &lt;a href=&#34;https://gohugo.io/&#34;&gt;Hugo&lt;/a&gt; и сделан двуязычным.&lt;/li&gt;&#xA;&lt;li&gt;Вместо бинарных сборок на сайт добавлен раздел &lt;a href=&#34;https://trust-lang.net/playground/&#34;&gt;Playground and example code&lt;/a&gt; для небольших экспериментов.&lt;/li&gt;&#xA;&lt;li&gt;Выполнен переход на clang-16 (переход на clang-17 и старше планируется после полной реализации корутин и поддержки расширенных форматов чисел с плавающей запятой).&lt;/li&gt;&#xA;&lt;li&gt;Количество контрибуторов проекта стало больше одного!&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Нюансы разработки парсера для своего языка программирования</title>
				<link>https://trust-lang.net/ru/blog/parser-nuances/</link>
				<pubDate>Wed, 29 Mar 2023 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/parser-nuances/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Недавно прочитал на Хабре статью &lt;a href=&#34;https://habr.com/ru/post/723400/&#34;&gt;Свой язык, или как я устал от ассемблера и С&lt;/a&gt;, и невольно взглядом зацепился за один абзац:&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Я решил не сильно париться, поэтому использовал библиотеку parglare. Она очень легкая и удобная, всем рекомендую. Для описания синтаксиса парсер принимает строку в соответствующем формате, использует регулярные выражения (не надо осуждать регулярки, они всесильны!).&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;В результате решил опубликовать статью на основе своих старых записей еще с тех времен, когда идея &lt;a href=&#34;https://trust-lang.net/&#34;&gt;TrustLang&lt;/a&gt; до конца еще не выкристаллизовалась, но уже хотелось писать реальный код и тестировать разные концепции.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Вариант реализации DSL (domain-specific language) с помощью макросов</title>
				<link>https://trust-lang.net/ru/blog/dsl-with-macros/</link>
				<pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/dsl-with-macros/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/dsl.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Близится релиз языка &lt;strong&gt;&lt;a href=&#34;https://trust-lang.net/&#34;&gt;TrustLang&lt;/a&gt;&lt;/strong&gt; с принципиальной новой «фишкой», переделанным вариантом препроцессора, который позволяет расширять синтаксиса языка для создания различных диалектов DSL за счет макросов.&lt;/p&gt;&#xA;&lt;p&gt;И, как всегда, используя ранее найденный лайфхак &lt;a href=&#34;https://habr.com/ru/post/539674/&#34;&gt;Хабр — ума палата&lt;/a&gt;, хотелось бы получить от читателей обратную связь насчет предлагаемого ниже подхода, который планируется к реализации в новом препроцессоре &lt;strong&gt;TrustLang&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Релиз языка программрования TrustLang 0.3</title>
				<link>https://trust-lang.net/ru/blog/release-v0.3/</link>
				<pubDate>Mon, 07 Nov 2022 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/release-v0.3/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;TrustLang — это язык программирования высокого уровня общего назначения. Основной особенностью языка является простой, логичный и не противоречивый синтаксис, который основан на строгой системе грамматических правил. За счет использования макросов, синтаксис языка легко расширяется до более привычного вида на основе ключевых слов.&lt;/p&gt;&#xA;&lt;p&gt;TrustLang находится в процессе активного развития. Это третий публичный &lt;a href=&#34;https://github.com/afteri-ru/trust-lang/releases/tag/v0.3.0&#34;&gt;релиз&lt;/a&gt; в который добавлены новые существенные возможности по сравнению с предыдущей версией.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Релиз языка программрования TrustLang 0.2</title>
				<link>https://trust-lang.net/ru/blog/release-v0.2/</link>
				<pubDate>Fri, 12 Aug 2022 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/release-v0.2/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; - это язык программирования высокого уровня в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.&lt;/p&gt;&#xA;&lt;p&gt;Основной особенностью языка является простой, логичный и не противоречивый синтаксис, который основан не на использовании зарезервированных ключевых слов, а на строгой системе грамматических правил с использованием знаков препинания (в список которых входят и операторы языка).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Релиз языка программрования TrustLang</title>
				<link>https://trust-lang.net/ru/blog/release-v0.1/</link>
				<pubDate>Fri, 24 Jun 2022 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/release-v0.1/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;&lt;strong&gt;TrustLang&lt;/strong&gt; - это язык программирования высокого уровня, в котором можно сочетать стандартные алгоритмические конструкции с декларативным программированием и тензорными вычислениями для задач машинного обучения.&lt;/p&gt;&#xA;&lt;p&gt;Основной особенностью языка является простой, логичный и не противоречивый синтаксис, который основан не на использовании зарезервированных ключевых слов, а на строгой системе грамматических правил с использованием знаков препинания (в список которых входят и операторы языка).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Новый язык программирования</title>
				<link>https://trust-lang.net/ru/blog/trust-lang/</link>
				<pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/trust-lang/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Более года назад я начал публикацию статей с описанием особенностей нового языка программирования.&#xA;С тех пор утекло много воды, было протестировано множество идей, в итоге несколько раз все поменялось кардинальным образом&#xA;и сейчас представляю на суд читателей описание предфинальной версии языка и его особенностей.&lt;/p&gt;&#xA;&lt;p&gt;Данная статья предназначена в первую очередь для проверки основных концепций нового языка программирования, а также для получения обратной связи от читателей Хабра.&#xA;Ведь согласно наблюдению &lt;a href=&#34;https://habr.com/ru/post/539674/&#34;&gt;Хабр-ума палата&lt;/a&gt;, не замыленный взгляд со стороны очень сильно помогает в проработке новых идей.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Можно ли использовать декларативный и императивный стили написания программ одновременно?</title>
				<link>https://trust-lang.net/ru/blog/prog-styles-same-time/</link>
				<pubDate>Mon, 26 Jul 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/prog-styles-same-time/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/matrix.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;При разработке своего собственного языка программирования автор должен определиться, какими свойствами его язык должен обладать,&#xA;ведь в конечном итоге именно это и будет определять назначение языка и особенности его использования.&#xA;Причем некоторые свойства  настолько сильно влияют на итоговую концепцию языка и его синтаксис,&#xA;что впоследствии их изменение невозможно в принципе, либо новый синтаксис получается очень запутанным и непонятным.&#xA;Наверно из-за этого многие свойства языков программирования рассматриваются и изучаются как взаимоисключающие.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Необычная концепция синтаксиса языка программирования</title>
				<link>https://trust-lang.net/ru/blog/unusual-prog/</link>
				<pubDate>Mon, 24 May 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/unusual-prog/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;Хочу представить на обсуждение читателей немного необычный концепт языка программирования, в котором отсутствует проблема,&#xA;присущая практически всем промышленным языкам -  постоянное увеличение сложности синтаксиса языка из-за его естественного развития по мере выхода новых версий и добавления новых фич.&#xA;Эта проблема описана в статье &lt;a href=&#34;https://trust-lang.net/ru/blog/complex-prog/&#34;&gt;&amp;ldquo;Простое сложное программирование&amp;rdquo;&lt;/a&gt; и &lt;a href=&#34;https://trust-lang.net/ru/blog/lang-final/&#34;&gt;Какая &amp;ldquo;идеальная&amp;rdquo; цель развития у языков программирования?&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;После нескольких экспериментов с синтаксисом, хочется проверить выработанную идею на широкой аудитории &lt;a href=&#34;https://habr.com/ru/companies/timeweb/articles/558738/&#34;&gt;Хабра&lt;/a&gt;, которая как нельзя лучше подходит для этих целей.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Простое сложное программирование</title>
				<link>https://trust-lang.net/ru/blog/complex-prog/</link>
				<pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/complex-prog/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/complex-prog/complex-prog.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;В очередной раз увидел на Хабре статью про сложное дело под названием «программирование».&#xA;И то, что программирование действительно является делом не простым воспринимается как факт и обычно не требует какого либо подтверждения.&lt;/p&gt;&#xA;&lt;p&gt;Но понятие «сложность» сродни термину «куча».&#xA;Для кого-то и пять кокосов это не куча, а кого-то съел один и «больше не хочется» - значит для него и единственного кокоса будет много.&lt;/p&gt;&#xA;&lt;p&gt;Так и со сложностью ПО. Вроде бы увеличение сложности является для всех очевидным и наблюдается во всех сферах применения IT технологий,&#xA;да и сами языки программирования по мере своего развития становятся все сложнее,&#xA;а вот оценивать «сложность» с помощью численных метрик — дело заведомо неблагодарное, но и «нельзя управлять тем, что невозможно измерить &amp;hellip;».&lt;/p&gt;</description>
			</item>
			<item>
				<title>Какая «идеальная» цель развития у языков программирования?</title>
				<link>https://trust-lang.net/ru/blog/lang-final/</link>
				<pubDate>Wed, 07 Apr 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/lang-final/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/lang-final/lang-final.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;С постоянной периодичностью появляется информация о выходе новой версии того или иного языка программирования.&#xA;И с каждой новой версией расширяются его возможности, добавляются новые синтаксические конструкции или иные улучшения.&lt;/p&gt;&#xA;&lt;p&gt;И это очень сильно напоминает развитие технологий, как и в любой другой области техники.&#xA;Когда с очередным этапом совершенствуются создаваемые творения.&#xA;Быстрее, выше, сильнее … и одновременно значительно сложнее.&lt;/p&gt;&#xA;&lt;p&gt;Об этой проблеме меня заставила задуматься первоапрельская статья &lt;a href=&#34;https://habr.com/ru/post/550270/&#34;&gt;«Доказательное программирование»&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Понятно, что дата публикации статьи говорит сама за себя.&#xA;Тем не менее, новые стандарты С++, постоянно выходящие спецификации Java или новый синтаксис у PHP 8,&#xA;невольно заставляют задуматься, а в нужную ли сторону идет развитие языков программирования?&#xA;Ведь большинство нововведений добавляют сложность в основной рабочий инструмент и решая одни проблемы, неявно добавляя множество других.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Проблема логических языков программирования</title>
				<link>https://trust-lang.net/ru/blog/logic-prog/</link>
				<pubDate>Sat, 09 Jan 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/logic-prog/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Некоторое время назад я писал про &lt;a href=&#34;https://trust-lang.net/ru/blog/inter-prog/&#34;&gt;«Интернациональное программирование на естественных языках»&lt;/a&gt;,&#xA;в которой попытался представить достойную цель для абстрактного языка программирования,&#xA;попробовав примерить на него роль связующего звена между миром программистов с компьютерами и не программистов.&lt;/p&gt;&#xA;&lt;p&gt;Но в результате оказалось, что это не нужно в принципе, т.к. «не программистам» просто не требуется учиться писать программы.&#xA;А если иногда такое желание и возникает, то вполне хватает обычных формализованных языков программирования,&#xA;которых уже сейчас насчитывается наверно более десяти тысяч.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Интернациональное программирование на естественных языках</title>
				<link>https://trust-lang.net/ru/blog/inter-prog/</link>
				<pubDate>Sat, 05 Dec 2020 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/inter-prog/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/langs.jpeg&#34; alt=&#34;КДПВ&#34;&gt;&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;pageinfo pageinfo-primary&#34;&gt;&#xA;&lt;p&gt;Внимание!!!&lt;/p&gt;&#xA;&lt;p&gt;Данная статья содержит описание синтаксиса NewLnag предыдущей версии.&lt;/p&gt;&#xA;&lt;p&gt;Актуальную версию синтаксиса языка можно посмотреть &lt;a href=&#34;https://trust-lang.net/ru/docs/&#34;&gt;тут&lt;/a&gt;.&lt;/p&gt;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;p&gt;В последнее время часто попадаются на глаза статьи о новых языках программирования,&#xA;а так же различные рейтинги и прогнозы, связанные с популярностью компьютерных языков.&lt;/p&gt;&#xA;&lt;p&gt;Заявляют о себе и новые &lt;a href=&#34;https://habr.com/ru/company/testo_lang/blog/521682/&#34;&gt;инструментальные средства&lt;/a&gt;,&#xA;которые в своей работе используют  собственные форматы описания конфигурационных файлов или последовательности выполняемых команд,&#xA;которые так же очень сильно приближает их к понятию «язык программирования».&lt;/p&gt;</description>
			</item>
			<item>
				<title>Search Results</title>
				<link>https://trust-lang.net/ru/search/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/search/</guid>
				<description></description>
			</item>
	</channel>
</rss>
