<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="sib">
	<id>https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=C</id>
	<title>C - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://sibwiki.org/index.php?action=history&amp;feed=atom&amp;title=C"/>
	<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=C&amp;action=history"/>
	<updated>2026-05-31T12:25:03Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://sibwiki.org/index.php?title=C&amp;diff=85956&amp;oldid=prev</id>
		<title>Yaroslav: Bot: Automated import of articles</title>
		<link rel="alternate" type="text/html" href="https://sibwiki.org/index.php?title=C&amp;diff=85956&amp;oldid=prev"/>
		<updated>2026-05-30T21:59:52Z</updated>

		<summary type="html">&lt;p&gt;Bot: Automated import of articles&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Нова сторонка&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{YouTube|e6satwCRUHI|width=300|height=250}}&lt;br /&gt;
&lt;br /&gt;
C# (произносится как «Си-шарп») — это объектно-ориентированный язык программирования со статической типизацией, разработанный на рубеже 1990-х и 2000-х годов для программной платформы Microsoft .NET. Являясь языком прикладного уровня, он сочетает в себе строгую объектную модель, поддержку полиморфизма и широкие возможности компонентно-визуальной разработки. &lt;br /&gt;
&lt;br /&gt;
== Происхождение названия и история создания ==&lt;br /&gt;
Разработка языка началась в декабре 1998 года. Первоначально проект носил рабочее название «Cool», что являлось аббревиатурой от «C-style Object Oriented Language» (Объектно-ориентированный язык в стиле Си). В 2000 году, одновременно с анонсом платформы .NET, язык был официально представлен под названием C#. В 2002 году он стал доступен широкому кругу разработчиков в составе среды программирования Visual Studio .NET.&lt;br /&gt;
&lt;br /&gt;
Название «C#» имеет двойное смысловое происхождение. С одной стороны, символ решетки (Sharp) отсылает к музыкальной нотации, где диез означает повышение ноты на полутон (в латинской нотации ноте «до» соответствует буква C). Таким образом, название трактуется как «улучшенный Си». С другой стороны, графическое начертание символа «#» можно представить как четыре знака плюс («+»), расположенных в форме квадрата, что символически указывает на эволюционное развитие языка C++, то есть «C++++».&lt;br /&gt;
&lt;br /&gt;
Несмотря на название и визуальное сходство синтаксиса (использование фигурных скобок), C# концептуально далек от оригинального языка C. С архитектурной точки зрения язык является развитием идей Java (ранние версии C# часто называли «Java, адаптированной под платформу .NET») и среды визуальной разработки Delphi. Именно из Delphi была заимствована концепция удобной сборки графического интерфейса из готовых компонентов, что позволило C# стать основным инструментом разработки корпоративных приложений, вытеснив саму Delphi с рынка. Кроме того, на строгую объектно-ориентированную модель языка оказал влияние Smalltalk.&lt;br /&gt;
&lt;br /&gt;
== Архитектура и среда выполнения ==&lt;br /&gt;
Фундаментальным отличием C# от компилируемых языков (таких как C или C++) является архитектура его исполнения. Программный код на C# не транслируется напрямую в машинный код процессора. Вместо этого он компилируется в специальный низкоуровневый платформонезависимый байт-код — Common Intermediate Language (CIL), который фактически представляет собой ассемблер для платформы .NET.&lt;br /&gt;
&lt;br /&gt;
Выполнение этого промежуточного кода осуществляется виртуальной машиной Common Language Runtime (CLR). Именно среда CLR берет на себя выполнение критически важных операций, таких как автоматическая сборка мусора (высвобождение неиспользуемой памяти) и управление системой типов. Глубокая интеграция с CIL означает, что базовые типы данных в C# являются прямым отражением системы типов промежуточного ассемблера платформы .NET. &lt;br /&gt;
&lt;br /&gt;
На сегодняшний день, помимо официальной реализации от Microsoft (включая современные компиляторы, такие как Roslyn), существуют независимые кроссплатформенные реализации компиляторов и сред исполнения, среди которых наиболее известны проекты Mono и DotGNU.&lt;br /&gt;
&lt;br /&gt;
== Эволюция версий языка ==&lt;br /&gt;
Развитие языка шло по пути непрерывного включения в него наиболее удачных парадигм и конструкций из других языков программирования:&lt;br /&gt;
&lt;br /&gt;
* Первая версия (2000–2002 гг.) базировалась на концепциях Java, однако уже содержала такие элементы, как свойства, индексаторы, события, делегаты, специализированный цикл перебора коллекций, а также возможности из C++ (перегрузка операторов и оператор безусловного перехода).&lt;br /&gt;
* Версия 2.0 (октябрь 2003 г.) привнесла поддержку 64-разрядных систем, обнуляемые типы данных (nullable) и обобщения (дженерики). В отличие от шаблонов C++, обобщения в C# были реализованы на уровне виртуальной машины.&lt;br /&gt;
* Версия 3.0 (2004 г.) добавила мощные средства для интеграции с базами данных, внедрив в язык синтаксические конструкции, аналогичные SQL (ключевые слова для выборок и фильтрации данных). Также появились инициализаторы объектов, лямбда-выражения, деревья выражений и неявная типизация.&lt;br /&gt;
* Версия 4.0 (2010 г., в составе Visual Studio 2010) добавила механизмы позднего связывания и контракты в коде.&lt;br /&gt;
* Версии 6.0 и 7.0 существенно расширили функциональность: появились условные операторы на проверку нулевого значения, интерполяция строк, локальные функции, кортежи, бинарные литералы и оператор получения строкового имени переменной. Был внедрен механизм сопоставления с шаблоном (pattern matching).&lt;br /&gt;
* Версия 9.0 представила тип данных «запись» (record) — неизменяемый по умолчанию тип, концептуально заимствованный из языка Pascal. Было добавлено ключевое слово для инициализации свойств только в момент создания объекта.&lt;br /&gt;
* Версии 10.0–12.0 продолжили расширять возможности структур, записей (добавлено наследование и методы с телом) и интерфейсов. Появились статические абстрактные виртуальные методы в интерфейсах, позволяющие, в частности, перегружать математические операции для нестандартных числовых множеств.&lt;br /&gt;
&lt;br /&gt;
== Парадигма и синтаксические конструкции ==&lt;br /&gt;
В основе C# лежит объектно-ориентированная парадигма: всё программное пространство строится вокруг классов и объектов. Однако, в отличие от C++, язык не поддерживает множественное наследование классов, заменяя его реализацией множественных интерфейсов. С развитием языка в него были добавлены мощные элементы функционального и декларативного программирования (лямбда-выражения, локальные функции, записи).&lt;br /&gt;
&lt;br /&gt;
Отличительной чертой языка стала встроенная имитация SQL-синтаксиса для работы с коллекциями и базами данных, что позволяет разработчику формулировать сложные запросы непосредственно в коде программы.&lt;br /&gt;
&lt;br /&gt;
Концептуальные примеры использования специфических конструкций:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // Пример использования встроенных операторов выборок, аналогичных SQL&lt;br /&gt;
 var results = select item from database;&lt;br /&gt;
 &lt;br /&gt;
 // Пример интерполяции строк и использования оператора nameof&lt;br /&gt;
 string errorMessage = $&amp;quot;Ошибка в переменной {nameof(myVariable)}&amp;quot;;&lt;br /&gt;
 &lt;br /&gt;
 // Концепция типа записи (record) с инициализацией (init)&lt;br /&gt;
 record Person(string Name);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Преимущества и недостатки ==&lt;br /&gt;
К сильным сторонам языка относятся читабельность, краткость кода и отсутствие необходимости ручного управления памятью. Язык предлагает идеальную инфраструктуру для визуальной компонентной разработки корпоративного программного обеспечения (особенно с использованием технологий ASP.NET для веб-разработки) и глубокую интеграцию с экосистемой Microsoft .NET. Наличие богатой стандартной библиотеки («крупного завода готовых компонентов») и мощных инструментов отладки делает C# одним из лучших языков для начального изучения программирования.&lt;br /&gt;
&lt;br /&gt;
Среди недостатков традиционно выделяют снижение производительности. Необходимость трансляции в промежуточный ассемблер и работа виртуальной машины делают C# более медленным языком по сравнению с низкоуровневыми C или C++. При создании высоконагруженных систем разработчикам приходится вручную взаимодействовать с промежуточным кодом. &lt;br /&gt;
&lt;br /&gt;
Кроме того, язык часто подвергается концептуальной критике со стороны противников объектно-ориентированного программирования. Отмечается, что строгая иерархичность приводит к созданию избыточных абстракций. В качестве классического примера критики приводится ситуация, когда для решения простой практической задачи («пнуть кирпич») парадигма ООП заставляет программиста описывать сложную иерархию сущностей (создавать объект «кирпич», наследовать его от объекта «глина» и т.д.), что неоправданно увеличивает объем кода и усложняет архитектуру там, где требуется простая функциональная логика. Наконец, сильная зависимость от платформы .NET утяжеляет разрабатываемые приложения и процесс компиляции.&lt;br /&gt;
&lt;br /&gt;
== См. также ==&lt;br /&gt;
[[C++]]&lt;br /&gt;
[[Снобол]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Языки программирования]]&lt;br /&gt;
[[Category:Объектно-ориентированное программирование]]&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=e6satwCRUHI Смотреть видео]&lt;/div&gt;</summary>
		<author><name>Yaroslav</name></author>
	</entry>
</feed>