<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE article PUBLIC "-//NLM/DTD JATS (Z39.96) Journal Publishing DTD v1.2 20120330//EN" "http://jats.nlm.nih.gov/publishing/1.2/JATS-journalpublishing1.dtd">
    <!--<?xml-stylesheet type="text/xsl" href="article.xsl">-->
<article xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="1.2" xml:lang="en">
	<front>
		<journal-meta>
			<journal-id journal-id-type="eissn">3034-1566</journal-id>
			<journal-title-group>
				<journal-title>Cifra. Компьютерные науки и информатика</journal-title>
			</journal-title-group>
			<publisher>
				<publisher-name>ООО Цифра</publisher-name>
			</publisher>
		</journal-meta>
		<article-meta>
			<article-id pub-id-type="doi">10.60797/COMP.2026.10.2</article-id>
			<article-categories>
				<subj-group>
					<subject>Brief communication</subject>
				</subj-group>
			</article-categories>
			<title-group>
				<article-title>СРАВНИТЕЛЬНЫЙ АНАЛИЗ НАИБОЛЕЕ ПОПУЛЯРНЫХ СИ-ПОДОБНЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ</article-title>
			</title-group>
			<contrib-group>
				<contrib contrib-type="author" corresp="yes">
					<contrib-id contrib-id-type="orcid">https://orcid.org/0009-0007-4657-9440</contrib-id>
					<contrib-id contrib-id-type="rinc">https://elibrary.ru/author_profile.asp?id=1194172</contrib-id>
					<name>
						<surname>Халиман</surname>
						<given-names>Влада Витальевна</given-names>
					</name>
					<email>vv.khaliman@mail.ru</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
				<contrib contrib-type="author">
					<name>
						<surname>Большаков</surname>
						<given-names>Кирилл Павлович</given-names>
					</name>
					<email>bolshacov199910@mail.ru</email>
					<xref ref-type="aff" rid="aff-1">1</xref>
				</contrib>
			</contrib-group>
			<aff id="aff-1">
				<label>1</label>
				<institution>Дальневосточный государственный университет путей сообщения</institution>
			</aff>
			<pub-date publication-format="electronic" date-type="pub" iso-8601-date="2026-04-29">
				<day>29</day>
				<month>04</month>
				<year>2026</year>
			</pub-date>
			<pub-date pub-type="collection">
				<year>2026</year>
			</pub-date>
			<volume>4</volume>
			<issue>10</issue>
			<fpage>1</fpage>
			<lpage>4</lpage>
			<history>
				<date date-type="received" iso-8601-date="2026-02-05">
					<day>05</day>
					<month>02</month>
					<year>2026</year>
				</date>
				<date date-type="accepted" iso-8601-date="2026-03-11">
					<day>11</day>
					<month>03</month>
					<year>2026</year>
				</date>
			</history>
			<permissions>
				<copyright-statement>Copyright: &amp;#x00A9; 2022 The Author(s)</copyright-statement>
				<copyright-year>2022</copyright-year>
				<license license-type="open-access" xlink:href="http://creativecommons.org/licenses/by/4.0/">
					<license-p>
						This is an open-access article distributed under the terms of the Creative Commons Attribution 4.0 International License (CC-BY 4.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original author and source are credited. See 
						<uri xlink:href="http://creativecommons.org/licenses/by/4.0/">http://creativecommons.org/licenses/by/4.0/</uri>
					</license-p>
					.
				</license>
			</permissions>
			<self-uri xlink:href="https://informatics.cifra.science/archive/2-10-2026-april/10.60797/COMP.2026.10.2"/>
			<abstract>
				<p>В работе приведён детальный сравнительный анализ наиболее популярных языков программирования, унаследовавших C-подобный синтаксис: Rust, Go, C# и Java. Рассмотрены ключевые характеристики, а именно производительность и эффективность использования ресурсов. Анализировались поддерживаемые парадигмы программирования и подход к системе типов. Также изучены принципы управления памятью и уровень обеспечиваемой безопасности (память, многопоточность). Кроме того, оценивалась простота изучения и богатство экосистемы.На основе сопоставления сильных и слабых сторон каждого языка для различных задач был сделан аргументированный выбор с оптимальным балансом характеристик, наиболее соответствующим заданным техническим требованиям и целям проекта.</p>
			</abstract>
			<kwd-group>
				<kwd>язык программирования</kwd>
				<kwd> СИ-подобные языки</kwd>
				<kwd> C</kwd>
				<kwd> C++</kwd>
				<kwd> C#</kwd>
				<kwd> Rust</kwd>
				<kwd> Java</kwd>
			</kwd-group>
		</article-meta>
	</front>
	<body>
		<sec>
			<title>HTML-content</title>
			<p>1. Введение</p>
			<p>За длительное время существования электронных вычислительных машин было создано огромное количество разнообразных языков программирования. Каждый из них создан для решения своего набора задач, из-за чего каждый обладает как набором преимуществ, раскрывающихся в работе над по­ставленными задачами, так и рядом недостатков, обуславливающих малую популярность использования того или иного языка в других сферах.</p>
			<p>Сейчас лидирующие позиции в рейтингах популярности занимают языки, подобные C, такие как C++, C#, Rust и Java </p>
			<p>[1]</p>
			<p>Вышеуказанные языки имеют схожую структуру кода, но имеют кардинальные отличия в наиболее важных характеристиках, таких как парадигма написания кода, типизация и методы управления памятью.</p>
			<p>Языки C++, C#, Rust и Java относятся к СИ-подобным, так как имеют схожий синтаксис (блоки кода обозначаются фигурными скобками, после каждой инструкции ставится точка с запятой, операторы if, for, switch имеют схожую реализацию). Однако не все из них являются прямыми наследниками C, и у каждого языка есть и свои особенности, которые и определяют сферу, в которой он используется чаще всего.</p>
			<p>2. Основная часть</p>
			<p>Самым первым из этих языков был С, разработанный в 1972 году как замена ассемблеру. Он представляет компилируемый язык программирования общего назначения со статической типизацией. Он сочетает в себе высокую функциональность и производительность ассемблера, но гораздо проще в освоении и в адаптации для устройств с разной аппаратной базой. Его особенность заключается в том, что несмотря на функциональность, схожую с языками программирования высокого уровня, он работает очень близко к аппаратной части компьютера. Используя С, разработчик может напрямую взаимодействовать с памятью и регистрами процессора, что, с одной стороны, является неоспоримым преимуществом, так как даёт возможность более эффективно распределять ресурсы устройства, но, с другой стороны, из-за отсутствия сборщиков мусора требуется каждый раз вручную очищать ресурсы </p>
			<p>[2]</p>
			<p>В 1985 году появился прямой наследник С – С++. Это высокоуровневый компилируемый язык программирования общего назначения со статической типизацией, поддерживающий разные парадигмы написания кода, как например функциональное, объектно-ориентированное и императивное. Обладает очень высокой производительностью, как у С, но имеет гораздо больший набор функций и библиотек, что позволяет использовать его под множество задач. Он, как и С, может напрямую взаимодействовать с ресурсами компьютера, но в отличие от предка в нём благодаря наличию ООП присутствует принцип RAII (Resource Acquisition Is Initialization). Его суть заключается в том, что если выделять память под объекты классов и контейнеры, а не просто под динамические массивы и переменные, то после выхода из зоны видимости программы объект неявно удаляется деструктором, и выделенная для него область памяти очищается </p>
			<p>[3]</p>
			<p>C# и C — пример синтаксического наследования без прямой преемственности. C# не является прямым потомком C и кардинально от него отличается, но всё же унаследовал синтаксис.</p>
			<p>C#, разработанный в 2002 году специально для платформы .NET, является компилируемым, объектно-ориентированным языком со статической типизацией. Благодаря развитию платформы .NET язык стал кроссплатформенным, хотя изначально был предназначен под написание приложений исключительно для операционной системы Windows. Он не так близко взаимодействует с аппаратной базой устройств и существенно медленнее C и C++, но всё ещё быстрее чем интерпретируемые языки и имеет положительную особенность – наличие JIT-компилятора </p>
			<p>[4]</p>
			<p>JIT (Just-In-Time) — технология, позволяющая оптимизировать выполняемый код и обеспечить его переносимость между устройствами с разными процессорами. Его суть состоит в осуществлении динамической компиляции. Код компилируется не перед запуском программы, а непосредственно во время её выполнения, и не напрямую в машинный код, а сначала в байт-код, а затем уже в машинный, оптимизированный под конкретное устройство. Также JIT-компилятор может скомпилировать наиболее часто используемые участки кода для оптимизации временных затрат. Из-за этой технологии есть задержки при запуске больших приложений, но это компенсируется динамической оптимизацией кода и анализом частоты использования его блоков. Такой тип компиляции позволяет подготовить ПО к запуску на конкретном устройстве, обеспечивая кроссплатформенность </p>
			<p>[7]</p>
			<p>Первая версия языка Java появилась 23 мая 1995 года в компании Sun Microsystems, впоследствии поглощённой компанией Oracle. Это объектно-ориентированный, статически типизированный, кроссплатформенный язык программирования общего назначения. Он популяризировал объектно-ориентированную парадигму программирования, предоставив простой, но мощный синтаксис, вдохновлённый C++, но исправив его недостатки в области управления памятью и сборщиков мусора. Это и сделало язык доступным для большого количества разработчиков, что привело к его популярности. Java уже долгие годы находится в тройке самых популярных языков программирования, на нём пишут корпоративные приложения, веб-сервисы (фреймворк Spring, апплеты), Android-приложения, работают с Big Data, IoT, ML </p>
			<p>[5]</p>
			<p>Его ключевой особенностью является концепция «Write Once, Run Anywhere» («Напиши однажды, запускай везде»). Код Java можно запустить почти на любом устройстве. Такой уровень переносимости стал возможен благодаря JVM (Java Virtual Machine) — фундаментальной основой всей платформы Java. Виртуальная машина выступает посредником между байт-кодом и операционной системой, на которой исполняется этот код. Работа JVM состоит из нескольких критически-важных процессов:</p>
			<p>1. Загрузка классов — находит и импортирует определения классов из файлов .class.</p>
			<p>2. Верификация байт-кода — проверяет загруженный код на наличие ошибок и структурную целостность.</p>
			<p>3. Выполнение кода — интерпретация программы JIT-компилятором, выявление «горячих» участков.</p>
			<p>4. Управление памятью — автоматическая очистка памяти от неиспользуемых объектов с помощью сборщиков мусора.</p>
			<p>5. Оптимизация — анализ и улучшение производительности кода во время выполнения.</p>
			<p>JVM — это не конкретная программа, а название механизма. Существуют различные её реализации от разных разработчиков, каждая из которых может иметь свои особенности, но соответствует стандартной спецификации JVM. В свою очередь, виртуальная машина входит в JRE — Java Runtime Environment, куда также входят библиотеки классов, интеграционные компоненты для взаимодействия с операционной системой и инструменты базовой конфигурации и настройки среды выполнения. JRE — необходимый минимум для запуска Java-программ. Если же на устройстве требуется не только запускать программы, но и разрабатывать их, то необходимо установить JDK (Java Development Kit — набор инструментов для разработки). Он содержит в себе отладчик, архиватор, генератор документации, инструменты мониторинга и анализа производительности, а также дополнительные наборы библиотек </p>
			<p>[8]</p>
			<p>Rust — компилируемый, строго типизированный язык программирования общего назначения, который так же, как и C++ делает упор на производительность и параллелизм. Изначально язык разрабатывался как личный проект Грейдона Хоара в 2006 году, когда он работал в Mozilla Research. В 2009 Mozilla официально начала спонсировать разработку и наняла инженеров для помощи Грейдону. До 2015 года Rust разрабатывался как внутренний проект, о котором мало кто знал и который нигде не использовался, пока он не стал выглядеть как потенциальный преемник C++. Именно тогда вышел первый релиз Rust 1.0 </p>
			<p>[9]</p>
			<p>Сразу после официального релиза этот проект начал привлекать к себе внимание комьюнити, а позже и крупных компаний, заинтересованных в развитии проекта. Так в 2020 году был создан фонд Rust Foundation. В него вошли 5 компаний — Mozilla, AWS, Huawei, Google, Microsoft. Постепенно Microsoft стал переписывать различные компоненты операционной системы Windows с C/C++ на Rust. Аналогично компания Google стала внедрять Rust в операционную систему Android. Постепенно Rust находит своё применение в Linux </p>
			<p>[6]</p>
			<p>Одной из ключевых особенностей Rust является обеспечение строгих гарантий безопасности памяти. Rust предотвращает большое количество ошибок, таких как гонки данных и неправильное использование памяти. Достигается это благодаря двум мощным механизмам: системе владения (ownership) и системы заимствования (borrowing). Эти механизмы управления памятью предотвращают гонки данных, гарантируя, что они будут доступны только одному владельцу за раз и не позволяют одновременно считывать и изменять данные.</p>
			<p>Кроме того, Rust проводит проверку времени жизни переменных и объектов, что гарантирует автоматическое освобождение памяти, когда время их жизни истечёт. Это предотвращает утечки памяти и другие проблемы, связанные с неправильным использованием памяти. Также язык предоставляет тип Option, который явно представляет значение, которое может отсутствовать, избавляя разработчиков от необходимости обрабатывать null-указатели и ошибки, связанные с ними </p>
			<p>[9]</p>
			<p>В совокупности с современным синтаксисом и методами управления памятью, этот язык также обладает хорошей производительностью, сравнимой с показателями C и C++. Добиться этого удалось благодаря отсутствию сборщиков мусора и использованием LLVM. LLVM (Low Level Virtual Machine) — мощный инструмент оптимизации, интегрированный в компилятор Rust — rustc. Он представляет собой инфраструктуру для анализа, оптимизации и генерации кода, работающего на различных архитектурах процессоров и операционных системах. Также, в сходстве с C/C++, Rust способен работать близко к аппаратной части компьютера, что вместе с высокой производительностью дало возможность использовать этот язык в системном программировании. Также Rust нашёл своё применение в веб-разработке благодаря интеграции с JavaScript. На нём написаны игровые движки Amethyst и Bevy, которые дают достаточный инструментарий для создания игр различной сложности, от инди-проектов до ААА-игр </p>
			<p>[10]</p>
			<p>Все вышеупомянутые языки программирования являются универсальными и подходят для разных сфер деятельности, от создания игр до написания операционных систем и программного обеспечения для микроконтроллеров. Их главным преимуществом над другими языками является скорость выполнения программ, достигаемая благодаря близкому взаимодействию кода и устройства или специальным технологиям оптимизации. Но всё же у них есть некоторые различия. Итоговое сравнение приведено в таблице 1.</p>
			<table-wrap id="T1">
				<label>Table 1</label>
				<caption>
					<p>Сравнение языков программирования</p>
				</caption>
				<table>
					<tr>
						<td>Язык</td>
						<td>C</td>
						<td>C++</td>
						<td>C#</td>
						<td>Java</td>
						<td>Rust</td>
					</tr>
					<tr>
						<td>Год создания</td>
						<td>1972</td>
						<td>1985</td>
						<td>2002</td>
						<td>1995</td>
						<td>2015</td>
					</tr>
					<tr>
						<td>Парадигма</td>
						<td>Процедурный</td>
						<td>Мульти-парадигменный</td>
						<td>ООП</td>
						<td>ООП</td>
						<td>Мульти-парадигменный</td>
					</tr>
					<tr>
						<td>Тип трансляции</td>
						<td>Компиляция</td>
						<td>Компиляция</td>
						<td>(.NET Runtime)</td>
						<td>(часть JVM)</td>
						<td>Компиляция</td>
					</tr>
					<tr>
						<td>Типизация</td>
						<td>Статическая слабая</td>
						<td>Статическая слабая (с шаблонами – сильная)</td>
						<td>Статическая сильная</td>
						<td>Статическая сильная</td>
						<td>Статическая сильная</td>
					</tr>
					<tr>
						<td>Управление памятью</td>
						<td>Ручное</td>
						<td>Ручное + RAII</td>
						<td>Автоматиче­ское (сборка мусора)</td>
						<td>Автоматиче­ское (сборка мусора)</td>
						<td>Владение + заим­ствование</td>
					</tr>
					<tr>
						<td>Безопасность потоков</td>
						<td>Требует руч­ной синхрони­за­ции</td>
						<td>Возможны гонки данных</td>
						<td>Возможны гонки данных</td>
						<td>Возможны гонки данных</td>
						<td>Компилятор не даст скомпи­лировать не­безопасный код</td>
					</tr>
					<tr>
						<td>Скорость выполнения</td>
						<td>Очень высо­кая</td>
						<td>Очень высокая</td>
						<td>Высокая</td>
						<td>Высокая</td>
						<td>Очень высокая (уровень С++)</td>
					</tr>
					<tr>
						<td>Кроссплатформенность</td>
						<td>Да (через переком­пиля­цию)</td>
						<td>Да (через переком­пиля­цию)</td>
						<td>Да (через JIT в .NET)</td>
						<td>Да (JVM)</td>
						<td>Да</td>
					</tr>
					<tr>
						<td>Стандартная библиотека</td>
						<td>Минимальная</td>
						<td>Богатая (STL, алгоритмы, контейнеры)</td>
						<td>Очень богатая (JDK)</td>
						<td>Очень богатая</td>
						<td>Небогатая (развивается)</td>
					</tr>
					<tr>
						<td>Основное применение</td>
						<td>ОС, драйверы</td>
						<td>Игры, браузеры, высоконагружен­ное ПО</td>
						<td>Приложе­ния под Windows, Unity, Web</td>
						<td>Enterprise, Android, Backend</td>
						<td>Системное ПО, блокчейн, веб-сервисы</td>
					</tr>
				</table>
			</table-wrap>
			<p>Благодаря своей многофункциональности, популярности и большому количеству образовательных материалов все вышеупомянутые языки хорошо подходят для изучения программирования, за исключением С. На данный момент этот язык устаревает, по нему становится всё меньше образовательных материалов, а большое количество устаревающего кода, который необходимо обслуживать, побуждает разработчиков к созданию новых технологий (например Rust), а не обслуживанию старых, в связи с чем язык программирования C в ближайшее время может потерять место в списке наиболее популярных.</p>
			<p>3. Заключение</p>
			<p>В результате сравнительного анализа пяти вышеупомянутых СИ-подобных языков программирования было выявлено, что каждый из них обладает своими преимуществами и ограничениями в зависимости от решаемых задач. В качестве наиболее подходящего для обучения языка был выбран Rust. Это обусловлено наличием у него эффективных и безопасных механизмов управления памятью и широким спектром возможных применений. Также, благодаря своей актуальности, он ещё долгое время будет развиваться и всё большее количество ПО будет переписано с более старых языков (C/C++) на новые, среди которых будет Rust.</p>
		</sec>
		<sec sec-type="supplementary-material">
			<title>Additional File</title>
			<p>The additional file for this article can be found as follows:</p>
			<supplementary-material xmlns:xlink="http://www.w3.org/1999/xlink" id="S1" xlink:href="https://doi.org/10.5334/cpsy.78.s1">
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://informatics.cifra.science/media/articles/23648.docx">23648.docx</inline-supplementary-material>]-->
				<!--[<inline-supplementary-material xlink:title="local_file" xlink:href="https://informatics.cifra.science/media/articles/23648.pdf">23648.pdf</inline-supplementary-material>]-->
				<label>Online Supplementary Material</label>
				<caption>
					<p>
						Further description of analytic pipeline and patient demographic information. DOI:
						<italic>
							<uri>https://doi.org/10.60797/COMP.2026.10.2</uri>
						</italic>
					</p>
				</caption>
			</supplementary-material>
		</sec>
	</body>
	<back>
		<ack>
			<title>Acknowledgements</title>
			<p/>
		</ack>
		<sec>
			<title>Competing Interests</title>
			<p/>
		</sec>
		<ref-list>
			<ref id="B1">
				<label>1</label>
				<mixed-citation publication-type="confproc">PYPL PopularitY of Programming Language. — URL: https://pypl.github.io/PYPL.html (accessed: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B2">
				<label>2</label>
				<mixed-citation publication-type="confproc">Документация по С // Metanit. — URL: https://metanit.com/c/tutorial/1.1.php (дата обращения: 05.02.2026). </mixed-citation>
			</ref>
			<ref id="B3">
				<label>3</label>
				<mixed-citation publication-type="confproc">Документация по C++ // Metanit. — URL: https://metanit.com/cpp/tutorial/1.1.php (дата обраения: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B4">
				<label>4</label>
				<mixed-citation publication-type="confproc">Документация по C# // Metanit. — URL: https://metanit.com/sharp/tutorial/1.1.php (дата обращения: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B5">
				<label>5</label>
				<mixed-citation publication-type="confproc">Документация по Java // Metanit. — URL: https://metanit.com/java/tutorial/1.1.php (дата обращения: 17.01.2026).</mixed-citation>
			</ref>
			<ref id="B6">
				<label>6</label>
				<mixed-citation publication-type="confproc">Документация по Rust // Metanit. — URL: https://metanit.com/rust/tutorial/1.1.php (дата обращения: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B7">
				<label>7</label>
				<mixed-citation publication-type="confproc">Как работать с JIT // Habr. — URL: https://habr.com/ru/companies/badoo/articles/321378/ (дата обращения: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B8">
				<label>8</label>
				<mixed-citation publication-type="confproc">JVM, JDK, JRE, OpenJDK: разбираемся в основах Java-платформы // Sky.pro. — URL: https://sky.pro/wiki/media/raznicza-mezhdu-jvm-jdk-jre-i-openjdk/ (дата обращения: 05.02.2026).</mixed-citation>
			</ref>
			<ref id="B9">
				<label>9</label>
				<mixed-citation publication-type="confproc">Языки программирования, которые могут заменить C++ — Rust, Go, Swift, Carbon // Habr. — URL: https://habr.com/ru/companies/ first/articles/838752/ (дата обращения: 18.01.2026).</mixed-citation>
			</ref>
			<ref id="B10">
				<label>10</label>
				<mixed-citation publication-type="confproc">Язык программирования Rust: безопасность, производительность и преимущества // Habr. — URL: https://habr.com/ru/ articles/722658/ (дата обращения: 19.01.2026).</mixed-citation>
			</ref>
		</ref-list>
	</back>
	<fundings/>
</article>