<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Language-Design on TrustLang</title>
		<link>https://trust-lang.net/ru/tags/language-design/</link>
		<description>Recent content in Language-Design on TrustLang</description>
		<generator>Hugo</generator>
		<language>ru</language>
		
		
		
		
			<lastBuildDate>Wed, 09 Sep 2026 15:37:53 +0300</lastBuildDate>
		
			<atom:link href="https://trust-lang.net/ru/tags/language-design/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Концепция</title>
				<link>https://trust-lang.net/ru/docs/syntax/concept/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/concept/</guid>
				<description>&lt;h2 id=&#34;фундаментальные-понятия&#34;&gt;Фундаментальные понятия&lt;a class=&#34;td-heading-self-link&#34; href=&#34;#%d1%84%d1%83%d0%bd%d0%b4%d0%b0%d0%bc%d0%b5%d0%bd%d1%82%d0%b0%d0%bb%d1%8c%d0%bd%d1%8b%d0%b5-%d0%bf%d0%be%d0%bd%d1%8f%d1%82%d0%b8%d1%8f&#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;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Язык построен на &lt;strong&gt;грамматических правилах&lt;/strong&gt;, а не на ключевых словах. Лексер и парсер&#xA;получаются однопроходными, простыми и быстрыми, а привычная запись с ключевыми словами&#xA;(&lt;code&gt;@if&lt;/code&gt;, &lt;code&gt;@while&lt;/code&gt;, &lt;code&gt;@func&lt;/code&gt;, &amp;hellip;) реализуется поверх базового синтаксиса через&#xA;&lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/macros/&#34;&gt;макросы&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Термины исходного текста сначала распознаются лексером и обрабатываются &lt;strong&gt;макропроцессором&lt;/strong&gt;,&#xA;и только затем попадают в парсер. Это позволяет с помощью макросов модифицировать даже базовые синтаксические конструкции.&lt;/li&gt;&#xA;&lt;li&gt;Инструкции (операторы) разделяются точкой с запятой &lt;code&gt;;&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Блоки кода записываются в фигурных скобках &lt;code&gt;{ ... }&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Любая конструкция (в том числе блок кода) является выражением и&#xA;&lt;a href=&#34;https://trust-lang.net/ru/blog/language-design/expression-statement/&#34;&gt;возвращает значение&lt;/a&gt;, поэтому её можно вкладывать&#xA;в другие выражения.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Синтаксис &lt;em&gt;TrustLang&lt;/em&gt; можно условно разделить на несколько слоёв, каждый из которых отвечает&#xA;за свою область:&lt;/p&gt;</description>
			</item>
			<item>
				<title>О проекте</title>
				<link>https://trust-lang.net/ru/docs/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/</guid>
				<description>&lt;p&gt;&lt;em&gt;TrustLang&lt;/em&gt; — язык программирования, который транслируется в C++ и собирается внешним&#xA;компилятором. Ключевые свойства модели:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Грамматика на правилах, а не на ключевых словах&lt;/strong&gt; — простой однопроходный парсер и&#xA;расширяемость; привычная запись с ключевыми словами реализуется макросами&#xA;(&lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/&#34;&gt;Синтаксис&lt;/a&gt;, &lt;a href=&#34;https://trust-lang.net/ru/docs/syntax/macros/&#34;&gt;Макросы&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Безопасная модель памяти без сборщика мусора&lt;/strong&gt; — RAII, сильные/слабые ссылки, запрет&#xA;сильных циклических ссылок, защита стека (&lt;a href=&#34;https://trust-lang.net/ru/docs/safety/&#34;&gt;Безопасность и качество&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;C/C++ — интеграция «первого класса»&lt;/strong&gt; — нативные типы/функции/классы и шаблоны, embed-вставки,&#xA;линковка; учитывается в каждом контексте (&lt;a href=&#34;https://trust-lang.net/ru/docs/types/native/&#34;&gt;Типы&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Гибкая типизация и вывод типов&lt;/strong&gt; — статическая и динамическая, автоматический вывод&#xA;(&lt;a href=&#34;https://trust-lang.net/ru/docs/types/&#34;&gt;Типы&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Контракты и верификация&lt;/strong&gt; — пред-/пост-условия и утверждения проверяются SMT-решателем (Z3)&#xA;(&lt;a href=&#34;safety/verification/&#34;&gt;Верификация&lt;/a&gt;).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Запуск как у скриптов&lt;/strong&gt; — файл с шебангом &lt;code&gt;#!.../trust --run&lt;/code&gt; запускается напрямую, как&#xA;Python-скрипт, но с полной компиляцией: транспиляция в C++, сборка и запуск бинарника происходят&#xA;автоматически, интерпретатор не нужен.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Синтаксис</title>
				<link>https://trust-lang.net/ru/docs/syntax/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/docs/syntax/</guid>
				<description></description>
			</item>
			<item>
				<title>Дизайн языков программирования</title>
				<link>https://trust-lang.net/ru/blog/language-design/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/</guid>
				<description></description>
			</item>
			<item>
				<title>Строительные блоки языков программирования</title>
				<link>https://trust-lang.net/ru/blog/language-design/building-blocks/</link>
				<pubDate>Fri, 03 May 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/building-blocks/</guid>
				<description>&lt;p&gt;В результате обратной связи по статье с &lt;a href=&#34;https://trust-lang.net/ru/blog/theory/structured-programming/&#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/language-design/reference-solution/</link>
				<pubDate>Tue, 23 Apr 2024 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/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>Вариант реализации DSL (domain-specific language) с помощью макросов</title>
				<link>https://trust-lang.net/ru/blog/implementation/dsl-with-macros/</link>
				<pubDate>Wed, 01 Mar 2023 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/implementation/dsl-with-macros/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/implementation/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;Данная статья содержит описание синтаксиса NewLang предыдущей версии.&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>Новый язык программирования</title>
				<link>https://trust-lang.net/ru/blog/language-design/trust-lang/</link>
				<pubDate>Fri, 18 Feb 2022 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/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;Данная статья содержит описание синтаксиса NewLang предыдущей версии.&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/programming/prog-styles-same-time/</link>
				<pubDate>Mon, 26 Jul 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/programming/prog-styles-same-time/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/programming/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;Данная статья содержит описание синтаксиса NewLang предыдущей версии.&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/language-design/unusual-prog/</link>
				<pubDate>Mon, 24 May 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/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;Данная статья содержит описание синтаксиса NewLang предыдущей версии.&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/programming/complex-prog/&#34;&gt;&amp;ldquo;Простое сложное программирование&amp;rdquo;&lt;/a&gt; и &lt;a href=&#34;https://trust-lang.net/ru/blog/language-design/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/programming/complex-prog/</link>
				<pubDate>Thu, 15 Apr 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/programming/complex-prog/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/programming/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/language-design/lang-final/</link>
				<pubDate>Wed, 07 Apr 2021 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/lang-final/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;https://trust-lang.net/ru/blog/language-design/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/language-design/inter-prog/</link>
				<pubDate>Sat, 05 Dec 2020 00:00:00 +0000</pubDate>
				<guid>https://trust-lang.net/ru/blog/language-design/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;Данная статья содержит описание синтаксиса NewLang предыдущей версии.&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>
	</channel>
</rss>
