Введение в C#
На сегодняшний момент язык программирования C# один из самых мощных, быстро развивающихся и востребованных языков в ИТ-отрасли. В настоящий момент на нем пишутся самые различные приложения: от небольших десктопных программок до крупных веб-порталов и веб-сервисов, обслуживающих ежедневно миллионы пользователей.
C# уже не молодой язык и как и вся платформа .NET уже прошел большой путь. Первая версия языка вышла вместе с релизом Microsoft Visual Studio .NET в феврале 2002 года. Текущей версией языка является версия C# 12, которая вышла 14 ноября 2023 года вместе с релизом .NET 8.
C# является языком с Си-подобным синтаксисом и близок в этом отношении к C++ и Java. Поэтому, если вы знакомы с одним из этих языков, то овладеть C# будет легче.
C# является объектно-ориентированным и в этом плане много перенял у Java и С++. Например, C# поддерживает полиморфизм, наследование, перегрузку операторов, статическую типизацию. Объектно-ориентированный подход позволяет решить задачи по построению крупных, но в тоже время гибких, масштабируемых и расширяемых приложений. И C# продолжает активно развиваться, и с каждой новой версией появляется все больше интересных функциональностей.
Роль платформы .NET
Когда говорят C#, нередко имеют в виду технологии платформы .NET (Windows Forms, WPF, ASP.NET, .NET MAUI). И, наоборот, когда говорят .NET, нередко имеют в виду C#. Однако, хотя эти понятия связаны, отождествлять их неверно. Язык C# был создан специально для работы с фреймворком .NET, однако само понятие .NET несколько шире.
Как-то Билл Гейтс сказал, что платформа .NET — это лучшее, что создала компания Microsoft. Возможно, он был прав. Фреймворк .NET представляет мощную платформу для создания приложений. Можно выделить следующие ее основные черты:
- Поддержка нескольких языков . Основой платформы является общеязыковая среда исполнения Common Language Runtime (CLR), благодаря чему .NET поддерживает несколько языков: наряду с C# это также VB.NET, C++, F#, а также различные диалекты других языков, привязанные к .NET, например, Delphi.NET. При компиляции код на любом из этих языков компилируется в сборку на общем языке CIL (Common Intermediate Language) — своего рода ассемблер платформы .NET. Поэтому при определенных условиях мы можем сделать отдельные модули одного приложения на отдельных языках.
- Кроссплатформенность . .NET является переносимой платформой (с некоторыми ограничениями). Например, последняя версия платформы на данный момент — .NET 8 поддерживается на большинстве современных ОС Windows, MacOS, Linux. Используя различные технологии на платформе .NET, можно разрабатывать приложения на языке C# для самых разных платформ — Windows, MacOS, Linux, Android, iOS, Tizen.
- Мощная библиотека классов . .NET представляет единую для всех поддерживаемых языков библиотеку классов. И какое бы приложение мы не собирались писать на C# — текстовый редактор, чат или сложный веб-сайт — так или иначе мы задействуем библиотеку классов .NET.
- Разнообразие технологий . Общеязыковая среда исполнения CLR и базовая библиотека классов являются основой для целого стека технологий, которые разработчики могут задействовать при построении тех или иных приложений. Например, для работы с базами данных в этом стеке технологий предназначена технология ADO.NET и Entity Framework Core. Для построения графических приложений с богатым насыщенным интерфейсом — технология WPF и WinUI, для создания более простых графических приложений — Windows Forms. Для разработки кроссплатформенных мобильных и десктопных приложений — Xamarin/MAUI. Для создания веб-сайтов и веб-приложений — ASP.NET и т.д. К этому стоит добавить активной развивающийся и набирающий популяность Blazor — фреймворк, который работает поверх .NET и который позволяет создавать веб-приложения как на стороне сервера, так и на стороне клиента. А в будущем будет поддерживать создание мобильных приложений и, возможно, десктоп-приложений.
- Производительность . Согласно ряду тестов веб-приложения на .NET в ряде категорий сильно опережают веб-приложения, построенные с помощью других технологий. Приложения на .NET в принципе отличаются высокой производительностью.
Также еще следует отметить такую особенность языка C# и фреймворка .NET, как автоматическая сборка мусора. А это значит, что нам в большинстве случаев не придется, в отличие от С++, заботиться об освобождении памяти. Вышеупомянутая общеязыковая среда CLR сама вызовет сборщик мусора и очистит память.
.NET Framework и .NET 8
Стоит отметить, что .NET долгое время развивался премущественно как платформа для Windows под названием .NET Framework. В 2019 вышла последняя версия этой платформы — .NET Framework 4.8. Она больше не развивается
С 2014 Microsoft стал развивать альтернативную платформу — .NET Core, которая уже предназначалась для разных платформ и должна была вобрать в себя все возможности устаревшего .NET Framework и добавить новую функциональность. Затем Microsoft последовательно выпустил ряд версий этой платформы: .NET Core 1, .NET Core 2, .NET Core 3, .NET 5. И текущей версией является расматриваемая в этом руководстве платформа .NET 8. Поэтому следует различать .NET Framework, который предназначен преимущественно для Windows, и кросплатформенный .NET 8. В данном руководстве речь будет идти о C# 12 в связке с .NET 8, поскольку это актуальная платформа.
Управляемый и неуправляемый код
Нередко приложение, созданное на C#, называют управляемым кодом (managed code). Что это значит? А это значит, что данное приложение создано на основе платформы .NET и поэтому управляется общеязыковой средой CLR, которая загружает приложение и при необходимости очищает память. Но есть также приложения, например, созданные на языке С++, которые компилируются не в общий язык CIL, как C#, VB.NET или F#, а в обычный машинный код. В этом случае .NET не управляет приложением.
В то же время платформа .NET предоставляет возможности для взаимодействия с неуправляемым кодом..
JIT-компиляция
Как выше писалось, код на C# компилируется в приложения или сборки с расширениями exe или dll на языке CIL. Далее при запуске на выполнение подобного приложения происходит JIT-компиляция (Just-In-Time) в машинный код, который затем выполняется. При этом, поскольку наше приложение может быть большим и содержать кучу инструкций, в текущий момент времени будет компилироваться лишь та часть приложения, к которой непосредственно идет обращение. Если мы обратимся к другой части кода, то она будет скомпилирована из CIL в машинный код. При том уже скомпилированная часть приложения сохраняется до завершения работы программы. В итоге это повышает производительность.
По сути это все, что вкратце надо знать о платформе .NET и языке C#. А теперь создадим первое приложение.
C# (Си Шарп, C Sharp): что это за язык программирования, что на нем пишут и его преимущества
В названии C# (Си шарп или С решетка) есть сакральный смысл. Знак «решетка» — диез в музыкальной нотации, означает повышение высоты звука на полтона (от англ. sharp — диез). Но в названии языка программирования этот знак имеет другой смысл. Он символизирует 4 знака «+» и показывает следующую эволюционную цепочку C → C++ → C++++ (C#).
694 показа
596 открытий
Бесплатный вебинар о 6 популярных IT-профессиях
Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2 IT-специальностях под присмотром опытного эксперта в прямом эфире
В этом материале рассмотрим характеристики C#, особенности синтаксиса, сферы применения, плюсы и минусы, а также разберемся, стоит ли начинать его изучать.
Скриншот: Как стать разработчиком на C# / proglib.io
- Описание
- Пример синтаксиса
- Где используется C#
- Какие компании используют C#
- Программы, написанные на C#
- Преимущества и недостатки C#
- Зарплата шарпистов
- Востребованность
- Как стать C#-разработчиком
- Итоги
- ТОП-3 курса по разработке на C# в 2023 году
Для начала краткая выжимка из истории языка программирования:
- Начало. Работа над C# началась в конце 1990-х годов под руководством Андерса Хейлсберга, который ранее работал над Delphi в Borland. Целью работы программиста было создать язык, который сочетал бы простоту и многофункциональность, а также был бы частью платформы .NET, продвигаемой Microsoft.
- Выпуск первой версии. Первая версия C# была выпущена в 2000 году. Это была часть Microsoft Visual Studio .NET. Версия включала те же концепции и возможности, которые есть у C# сегодня.
- Развитие. С 2003 года C# продолжает развиваться. Выпускались новые версии, каждая из которых включала улучшения, доработки и расширение функционала. Наиболее значимые в истории версии — C# 2.0 (с введением обобщений), C# 3.0 (с LINQ и выражениями-лямбда), C# 5.0 (с асинхронным программированием).
- Свободное распространение. В 2014 году Microsoft объявила о выпуске компилятора C# и .NET Framework под лицензией с открытым исходным кодом. Это позволило сообществу разработчиков по всему миру вносить свой вклад в развитие C#.
- Кроссплатформенность. С появлением .NET Core (а позже — .NET 5 и .NET 6) C# стал кроссплатформенным языком, поддерживаемым на разных операционных системах, включая Windows, Linux и macOS. Программисты пишут приложения для Windows C# и по сегодняшний день.
- Фреймворк Blazor (ASP.NET Core). С выходом этого фреймворка C# получил большую популярность в веб-разработке, так как программисты получили возможность создавать веб-приложения с использованием C# и HTML как клиентского языка.
C# написан на C++, а ребята из Microsoft создали его для решения следующих задач:
- развития платформы .NET;
- упрощения работы программистов с разным опытом;
- стимулирования написания приложения для Windows сторонними разработчиками;
- обеспечения простоты при разработке приложений для Windows.
C# (C-Sharp) — современный язык программирования. Он пользуется популярностью благодаря следующим характеристикам:
- Объектно-ориентированность. Полностью ориентирован на объекты, что позволяет программистам разрабатывать модульный и масштабируемый код.
- Типобезопасность. Обеспечивает строгую типизацию, что помогает предотвращать ошибки времени выполнения.
- Совместимость. Язык программирования разработан нацелен на платформу .NET, что обеспечивает высокую совместимость с Windows-приложениями.
- Многозадачность. C# поддерживает параллельное программирование и асинхронные операции, что улучшает производительность и отзывчивость приложений.
- Огромная стандартная библиотека. Поставляется с обширной стандартной библиотекой классов (FCL). Она включает в себя множество инструментов для работы с файлами, сетью, базами данных и т. д.
- Синтаксис. Синтаксис языка программирования чистый и легкочитаемый, что делает код довольно понятным для тех, кто с ним работает. То есть разработка на C# происходит в короткие сроки.
- Кроссплатформенность. Начиная с версии C# 5.0 и появлением .NET Core, приложения на C# могут работать на разных платформах, включая Windows, Linux и macOS.
- Интеграция с Visual Studio. Microsoft предоставляет среду разработки Visual Studio для работы с C#, которая облегчает создание, отладку и тестирование приложений.
- Активное сообщество. C# имеет огромное активное сообщество разработчиков, что обеспечивает доступ к множеству ресурсов и библиотек, написанных программистами из разных уголков планеты.
Эти характеристики делают C# прекрасным выбором для разработки мобильных и десктопных веб-приложений, игр.
Пример синтаксиса
Вот пример простейшей программы на C#, которая выводит «Hi!» в консоль:
using System; class Program < static void Main() < Console.WriteLine("Hi!"); >>
Рассмотрим код подробнее:
- using System; — директива using позволяет использовать пространство имен System, включающее базовые классы и структуры C#;
- class Program — определение класса с именем Program;
- static void Main() — метод Main, входная точка программы;
- < . >— фигурные скобки обозначают блок кода;
- Console.WriteLine(«Hi!»); — вызов метода WriteLine для вывода строки в консоль.
Этот код создает консольное приложение, которое при запуске выведет «Hi!!» на экран.
Где используется C#
C# применяется для разработки самых разнообразных программ, включая desktop- и веб-приложения, мобильные приложения, игры на базе Unity, облачные приложения на Microsoft Azure, приложения для работы с базами данных, интеграции с другими системами и создания инструментов разработки. Это очень гибкий язык программирования, который используется на разных платформах. Рассмотрим самые популярные сферы его применения.
Скриншот: Почему C# программисты скоро будут нарасхват / proglib.io
Игры и виртуальная реальность на Unity
C# — основной язык программирования для разработки игр в среде Unity. Именно он позволяет создавать 2D- и 3D-игры для разных платформ, включая ПК, мобильные устройства и консоли.
А вот какие задачи в VR можно решить с помощью C# и Unity:
- разработка VR-игр и симуляторов;
- создание обучающих и тренировочных VR-приложений для образования и промышленности;
- реализация виртуальных туров, позволяющих пользователям путешествовать по разным локациям;
- разработка VR-приложений для медицинских целей (например, тренинги хирургов или реабилитация пациентов);
- интерактивное моделирование и визуализация виртуальных объектов и окружений.
C# для разработчиков игр и VR-приложений — функциональный инструмент управления объектами и анимацией.
Серверная логика веб-сайтов
C# используется для разработки серверной логики веб-приложений. С помощью ASP.NET и ASP.NET Core можно создавать масштабируемые:
- Веб-приложения. C# позволяет разрабатывать веб-приложения с использованием ASP.NET, ASP.NET Core и других веб-фреймворков. С его помощью можно делать динамические сайты, онлайн-магазины, социальные сети и прочие веб-проекты.
- Обработчики данных. Язык программирования предлагает средства для обработки данных на сервере. Сюда входит считывание и запись данных в БД (базе данных), валидация данных и выполнение бизнес-логики.
- Бэкенд веб-сервисы. C# подходит для создания бэкенд-сервисов, обеспечивающих взаимодействие фронтенда веб-приложения с БД и другими ресурсами. Это включает в себя обработку запросов, аутентификацию, авторизацию и т. п.
- Системы управления контентом (CMS). Некоторые CMS (например, Umbraco) используют C# для разработки пользовательских расширений и плагинов.
C# — отличный инструмент для создания серверной логики, обеспечивает высокую производительность, масштабируемость и безопасность.
Программы для Windows
C# — ключевой язык разработки приложений под Windows. С помощью технологий Windows Forms и Windows Presentation Foundation (WPF) на C# можно создавать разнообразные десктопные приложения, включая текстовые редакторы, графические приложения и т. п.
Вот несколько типов программ, которые могут быть созданы с использованием C#:
- Desktop Applications (приложения для рабочего стола). C# позволяет создавать приложения для Windows с графическим пользовательским интерфейсом. Например, текстовые и графические редакторы, приложения для управления файлами.
- Игры под Windows. С помощью C# можно писать игры для Windows, используя различные игровые движки по типу Unity3D и MonoGame. Это позволяет создавать как 2D-, так и 3D-игры.
- Утилиты и инструменты. Язык программирования используется для создания утилит, для облегчения решения задач в Windows. Например, на C# можно писать утилиты для управления файлами, резервного копирование данных, архивации.
- Системные приложения. C# можно использовать в разработке системных приложений для мониторинга ресурсов компьютера, управления правами доступа, администрирования сети и т. д.
- Приложения для управления БД. Язык программирования позволяет создавать приложения для управления, анализа и визуализации данных.
- Образовательные приложения. C# используется для разработки образовательных программ по обучению, включая интерактивные учебники и тренажеры.
- Бизнес-приложения. На C# можно писать программы для учета финансов, управления складом, даже полноценные CRM-системы.
- Приложения для IoT (интернета вещей). С помощью C# можно разрабатывать приложения для IoT-устройств, работающих под Windows IoT Core.
- Программное обеспечение для HoloLens. Платформа Universal Windows Platform (UWP) и C# позволяют создавать приложения для гарнитур виртуальной и дополненной реальности Microsoft HoloLens.
- Серверные Windows-приложения. C# также используется для разработки серверных приложений под управлением Windows Server. Например, на нем написаны многие веб-сервисы и службы обработки данных.
Скриншот: Microsoft работает над стандартами для открытого исходного кода C# / osp.ru
Кроссплатформенные приложения
С помощью платформы Xamarin, основанной на C#, можно разрабатывать кроссплатформенные мобильные приложения для iOS и Android. Это упрощает разработку и обслуживание приложений для разных платформ. Xamarin предоставляет доступ к нативным API и библиотекам каждой платформы, что позволяет создавать приложения с полным набором функций.
Кроме того, Xamarin полностью интегрирован с средой разработки Visual Studio, что облегчает создание, отладку и развертывание мобильных приложений. А еще Xamarin был поглощен Microsoft, и его интеграция с продуктами Microsoft (например, с Azure) обеспечивает широкие возможности для создания мобильных приложений.
C# можно использовать для разработки нейронных сетей и машинного обучения с помощью библиотеки ML.NET и интеграции с популярными фреймворками. Вот самые популярные из них:
- CNTK (Microsoft Cognitive Toolkit). Библиотека машинного обучения от Microsoft, которая предоставляет поддержку для C#. Имеет широкие возможности для создания и обучения нейронных сетей.
- TensorFlow.NET. Библиотека позволяет использовать TensorFlow, один из наиболее популярных фреймворков, позволяет создавать и обучать нейронные сети.
- Keras.NET. Высокоуровневый API для глубокого обучения. С Keras.NET можно без больших усилий создавать нейронные сети.
- Accord.NET. Библиотека машинного обучения для C#, включающая инструменты для работы с нейронными сетями и другими методами машинного обучения.
Какие компании используют C#
C# занимает 5 место в рейтинге самых популярных языков программирования в мире. Поэтому он применяется очень широко. Множество российских и зарубежных корпораций используют C# для разработки приложений и сервисов. Например:
- Microsoft использует C# для создания приложений и игр под Windows и Xbox.
- Tesla применяет C# для разработки корпоративных веб-сервисов и программного обеспечения.
- Stack Overflow использует C# для реализации серверной логики своих веб-сайтов.
- Программисты Сбербанка пишут на C# 3D-графику и приложения виртуальной реальности.
- В Ozon C# нужен для создания складских и логистических систем управления заказами.
- В Яндексе применяют C# для разработки приложений, направленных на автоматизацию процессов продаж.
Этот язык программирования невероятно популярен и имеет массу преимуществ. На нем создается программное обеспечение для решения разнообразных задач. Его используют практически все крупные компании, имеющие отношение к веб-разработке или созданию мобильных и десктопных приложений.
Программы, написанные на C#
Есть масса известных программ и приложений, написанных на C#. Вот некоторые из них:
- Microsoft Visual Studio. Одна из самых популярных интегрированных сред разработки (IDE) для создания программ на C# и других языках программирования.
- Microsoft Office. Некоторые компоненты пакета Microsoft Office (Microsoft Word и Excel) написаны на C#.
- Unity. Интегрированная среда разработки для создания игр и виртуальной реальности, где C# используется для написания игровой логики.
- Visual Studio Code. Легковесная кроссплатформенная IDE, написанная на C# и JavaScript.
- Adobe Photoshop Elements. Графический редактор, который использует C# для реализации некоторых функций и плагинов.
- Skype. Популярное приложение для голосовых месенджей, видеозвонков, текстовых сообщений. Полностью создано на C#.
- Paint.NET. Графический редактор с открытым исходным кодом, также полностью реализован на C#.
- AutoCAD. Популярное приложение для проектирования (САПР), использует C# для расширения функциональности.
- GitHub Desktop. Графический клиент для платформы GitHub, написанный на C# с использованием технологий WPF.
- ShareX. Бесплатная утилита для создания скриншотов и записи видео экрана, разработанная на C#.
Это всего лишь несколько примеров. Инструменты C# позволяют реализовать буквально любую задумку программиста. Поэтому язык и пользуется большой популярностью среди разработчиков.
Скриншот: Введение в интегрированную среду разработки Visual Studio (C#) / learn.microsoft.com
Преимущества и недостатки C#
Как и любые другие решения, язык программирования имеет свои плюсы и минусы. Достоинства C#:
- Простота изучения. C# имеет чистый и интуитивно понятный синтаксис, что делает его отличным выбором для начинающих программистов.
- Интегрированная среда разработки (IDE). Visual Studio предоставляет множество инструментов и функций для упрощения разработки на C#. Например, она предлагает разработчикам отладчик и функцию автодополнения кода.
- Широкое применение. Язык программирования используется для создания самых разнообразных приложения — игр, веб-решений, мобильных приложений, программ под Windows и т. д.
- Многопоточность. C# предоставляет средства для работы с многопоточностью, что делает его подходящим для создания высокопроизводительных приложений.
- Сильная типизация. Помогает предотвратить ошибки на этапе компиляции и значительно повышает надежность кода.
- Большая стандартная библиотека. Включает обширный набор различных классов (FCL) и множество готовых решений для типовых задач.
- Поддержка объектно-ориентированного программирования. C# спроектирован с учетом принципов ООП, что упрощает создание и поддержку объектно-ориентированных приложений.
Слабые стороны C#:
- Ориентированность на Windows. Несмотря на кроссплатформенность, C# все равно ассоциируется с Windows, что в некоторых случаях может усложнить разработку мультиплатформенных приложений.
- Производительность. В определенных ситуациях C# будет менее производительным, чем другие низкоуровневые языки программирования, такие как C++.
- Зависимость от .NET Framework. Приложения, написанные на C#, обычно требуют наличие .NET Framework на компьютере пользователя, что иногда создает проблемы совместимости.
- Замкнутость на Microsoft. Развитие C# и его инструментов контролируется Microsoft, что может вызвать определенные ограничения и зависимость от компании.
Несмотря на эти недостатки, C# остается популярным языком программирования, особенно в мире разработки приложений для Windows и игр на платформе Unity.
Зарплата шарпистов
По данным hh.ru, средние зарплаты C#-разработчиков на российском рынке — 150 000–250 000 ₽. Разумеется, зарплата зависит от разных факторов (опыт, география, специализация, уровень навыков, тип работодателя). В зарубежных компаниях можно получать более высокие зарплаты (от $5 000 и выше) при тех же требованиях к разработчику.
Сколько получают программисты в России и других странах / sky.pro
Востребованность
C# — один из топовых языков программирования. Также это очень популярная платформа разработки в современной IT-индустрии. Вот несколько основных причин, почему C# остается и будет оставаться востребованным:
- Игры и виртуальная реальность на Unity. Именно С# — основной язык программирования для создания игр и приложений виртуальной реальности на платформе Unity. Этот фактор делает C# неотъемлемым инструментом разработчиков в сфере развлечений и виртуальной реальности.
- Серверная логика веб-сайтов. Фреймворк C#, ASP.NET, активно применяется в веб-разработке и обеспечивает функциональность веб-сайтов.
- Программы для Windows. C# — ключевое решение для создания десктопных приложений под ОС семейства Windows. Сюда входит огромный спектр приложений — от офисных инструментов до настольных игр.
- Кроссплатформенное ПО. С появлением платформы .NET Core C# стал основным языком для кроссплатформенной разработки.
- Нейросети. C# широко используется в машинном обучении и разработке нейронных сетей. А все благодаря библиотекам по типу TensorFlow.NET и CNTK. Они обеспечивают комфортное и быстрое создание интеллектуальных приложений.
C# сохраняет свою актуальность и востребованность благодаря разнообразным сферам его применения и обширной экосистеме разработчиков и инструментов.
Бесплатный вебинар о 6 популярных IT-профессиях
Примерьте IT на себя, узнайте куда легко попасть после 25 лет и получите первый опыт в 2 IT-специальностях под присмотром опытного эксперта в прямом эфире
Бонус: получите персональный пошаговый план перехода к формату удаленной работы
Как стать C#-разработчиком?
Скриншот: Как стать разработчиком на C#: обучение с нуля до профи / eddu.io
Прежде всего стоит почитать книгу Чарльза Петцольда «Код» и руководство «Грокаем алгоритмы» — это база для новичков. Они дадут понимание основ программирования. Затем можно переходить к освоению основ программирования конкретно на C#. Так как C# — язык, ориентированный на объекты, нужно научиться понимать принципы ООП (классы, объекты, наследование, инкапсуляция и полиморфизм).
Чтобы создавать, отлаживать и разрабатывать приложения на C#, нужно разобраться с основами Visual Studio. Также потребуется изучить .NET Framework (или .NET Core/.NET 5+), ASP.NET для веб-разработки и прочие библиотеки, которые связанны конкретно с вашей областью интересов.
Это может выглядеть сложно, но на практике все не так трудно. Главное — помните, чтобы стать хорошим C#-разработчиком, придется тратить время, прикладывать усилия, регулярно обновлять знания и практиковаться. Успех придет с опытом, поэтому развивайтесь и страйтесь чаще применять знания на практике
C# — один из тех языков программирования, который будет присутствовать на мировом рынке еще очень-очень долго. Изучать его имеет смысл любому, кто планирует заняться разработкой программного обеспечения для Windows. Да, он немного «замкнут» на продуктах от Microsoft, но ведь именно продукты от Microsoft в топе по популярности. Поэтому мы рекомендуем ознакомиться с его синтаксисом — сами того не заметите, как «втянетесь» и начнете создавать программы на C#.
ТОП-3 курса по разработке на C# в 2023 году
«C# Developer» от OTUS — лучший курс для новичков, соответствует требованиям работодателей
«Инженер-программист C#» от GeekBrains — лучший курс с гарантией трудоустройства
«C#-разработчик» от SkillFactory — лучший курс с высоким пользовательским рейтингом
Больше вариантов смотрите в нашей подборке курсов по разработке на C#.
Язык программирования C#: краткая история, возможности и перспективы
Обзорная статья на тему С#. Кратко рассказываем о том, зачем этот язык нужен, где его учить и как им пользоваться.
С# («Си Шарп») – один из наиболее быстро растущих, востребованных и при этом «удобных» языков программирования. Это модификация фундаментального языка С от компании Microsoft, призванная создать наиболее универсальное средство для разработки программного обеспечения для большого количества устройств и операционных систем.
Краткая история C# и его характеристики
С# – это объектно-ориентированный язык программирования. Он был создан в период с 1998 по 2002 год командой инженеров Microsoft под руководством Андерса Хейлсберга и Скотта Вильтаумота.
Язык входит в семью С-подобных языков. Синтаксис приближен к Java и C++. Его особенности:
- статистическая типизация,
- поддерживается полиморфизм,
- поддерживается перегрузка операторов,
- доступна делегация, атрибуты, события, обобщенные типы и анонимные функции.
Разработка Microsoft много особенностей унаследовала у Delphi, Smalltalk и Java. При этом создатели нового языка исключили из своего детища многие практики и спецификации, считающиеся «проблемными».
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Основные преимущества языка
С# популярен за счет своей «простоты». Простоты для современных программистов и больших команд разработчиков, чтобы те могли в сжатые сроки создавать функциональные и производительные приложения. Этому способствуют нетипичные конструкции языка и специфичный синтаксис, помогающий максимально органично реализовать намеченные функции.
Популярность языка – еще одно значимое преимущество. Большое количество поклонников C# способствуют его развитию. Также это благоприятно влияет на рост числа вакансий, связанных с разработкой на языке Microsoft. Программисты, хорошо знакомые с С#, востребованы в индустрии, несмотря на их большое и постоянно увеличивающееся количество.

Понятный синтаксис C# заметно упрощает не только разработку как таковую, но и другие важные аспекты совместной работы, например, чтение чужого кода. Это упрощает процесс рефакторинга и исправления ошибок при работе над приложениями в больших командах.
Также нельзя не упомянуть низкий порог вхождения. С# – популярная и достаточно простая в освоении технология. Уже через полгода можно поднатореть в разработке и начать делать полноценные программы.
Что разрабатывают с помощью С#
Язык C# практически универсален. Можно использовать его для создания любого ПО: продвинутых бизнес-приложений, видеоигр, функциональных веб-приложений, приложений для Windows, macOS, мобильных программ для iOS и Android.
Видеоигры
C# без преувеличения крайне популярен среди создателей видеоигр. Язык используется для разработки игр под Windows, macOS, Android и iOS. Все дело в Unity – платформе для работы с 3D-графикой. С# лучше остальных языков адаптирован под работу с этим движком. Поэтому программисты обычно не выбирают, а сразу используют связку Unity + C#.

Из популярных проектов стоит выделить такие хиты игровой индустрии, как Bastion (кросплатформенная РПГ-адвенчура с изометрическим видом), Wasteland (популярный шутер в пост-апокалиптической вселенной), знаменитый Doom 3 и Hearthstone (карточная игра во вселенной World of Warcraft, созданная силами Blizzard).
ПО для защиты систем
Безопасность ваших программ и операционных систем обеспечивается благодаря мощным утилитам на базе C#. Колоссальное количество вирусов, на ежедневной основе атакующих компьютеры пользователей, блокируется инструментами, созданными с помощью языка Microsoft. Аналогичная ситуация наблюдается в крупном бизнесе – мировые корпорации защищаются от хакерских атак с помощью ПО, написанного на С#.
Приложения для Windows
Практически вся операционная система Microsoft существует благодаря С#. Привычные вам утилиты и приложения созданы с использованием этого языка и фреймворков, разработанных для него.
В эту категорию попадает мессенджер Skype, браузер Internet Explorer, среда для разработки Visual Studio 2012, Microsoft Office (все его составляющие, включая Word, PowerPoint, Excel, Outlook и так далее).
Сюда же можно отнести продукты компании Adobe (Photoshop, Lightroom), браузер Mozilla Firefox и Winamp.
Мобильные приложения
В некоторых кругах программистов С# считается чуть ли не лучшим языком для проектирования мобильных приложений. Все благодаря возможности создавать с помощью этого языка нативные программы для любых платформ (iOS, Android). Для создания приложений, которые идеально работают на Айфоне и на Андроид-смартфонах, используется IDE Xamarin.
Из известных программ, написанных на С#, стоит отметить Slack, Pinterest, Tableau, The World Bank и другие. «Плиточные» программы, появившиеся в Windows 8, практически все построены на базе C# и XAML.
Как стать C#-разработчиком?
Перед началом необходимо ознакомиться с основами языка, синтаксисом и т.п. Для этого стоит прочитать один из актуальных учебников по разработке на С#. Опытные программисты рекомендуют руководство по созданию программ с использованием платформы .net, размещенное на сайте metanit.com.

Тем, кто вообще не разбирается в программировании и только начинает его изучать, следует разыскать книгу Чарльза Петцольда «Код» и запастись всеми любимыми руководствами в духе «Грокаем алгоритмы». Этого должно быть достаточно на ранних этапах знакомства с языком.
Какие программы и технологии изучать?
Есть шесть ключевых программных продуктов, на изучении которых стоит сосредоточиться в первую очередь:
- Windows Presentation Foundation – фреймворк для быстрого создания интерфейсов.
- Xamarin – фреймворк, добавляющий C# функции компилирования кода с адаптацией под различные платформы, включая Windows, Android и iOS. Проще говоря, он делает ПО универсальным.
- ASP.NET – технология для создания «мостов» между серверным кодом и клиентской частью программ.
- Entity – фреймворк для взаимодействия с базами данных как с объектами.
- Language Integrated Query – технология с собственным синтаксисом для фильтрации данных. Под данными подразумевается любой тип, включая массивы, структуры, отдельные файлы и целые БД.
- Visual Studio – основная среда для разработки программ на языке С#.
По ходу изучения и с появлением опыта этот список увеличится. Появятся новые фреймворки, возможно, изменится IDE, появятся дополнительные технологии, необходимые для реализации некоторых функций и т.п.
Где можно научиться программированию на С#?
В сети хватает школ, где учат разработке приложений на различных языках. Например, Яндекс.Практикум. Там есть довольные дорогие, но эффективные курсы по созданию программ на базе C#.
Есть Coursera, где учат вообще всему на этой планете, в том числе и программированию. Стоимость курсов на этой площадке варьируется, но при желании всегда можно выбить хорошую скидку, если сослаться на плохое финансовое положение.

Есть школы в духе Skillbox и GeekBrains. На них тоже есть соответствующие курсы, причем со льготной оплатой (сначала вас учат и стажируют, а потом просят оплатить обучение) и изначально невысокими ценами.
Вместо заключения делаем простейшую программу на С#
Итак, быстро приступаем к разработке своей первой программы на языке C#. Будем делать простейший калькулятор.
- Загружаем программу Visual Studio.
- В окне приветствия выбираем пункт Create a new project.
- Указываем язык C#, систему – Windows, а тип – Console.
- Потом даем имя созданной программе и выбираем место на диске, куда она будет сохранена.
- Перед вами появится код базовой программы, выводящий в консоль фразу «Hello World». Стираем его.
- Затем добавляем переменные с помощью встроенного типа int. Например, int a = 10, int b = 20.
- Создаем переменную resultSum для сложения, введя код int result = a + b.
- А затем вписываем Console.WriteLine(resultSum) и Console.ReadKey().

Ваша программа выведет в консоль результат вычисления (в нашем случае 30). Можно заменить переменные, добавить результат деления, умножения и т.п. В общем, усложнить код как вздумается.
На этом все. Базовое знакомство с C# завершено. Теперь вы знаете, где учить язык, для чего он нужен и как сделать хотя бы маленькую, но рабочую программу. Дальше дело за опытом и упорным обучением.
Язык С#: где используют, что пишут, как появился и чем хорош
Изучаем под микроскопом популярный язык от Microsoft, который называется совсем не «Си решётка».


Иллюстрация: Polina Vari для Skillbox Media

Максим Сафронов
Автор, редактор, IT-журналист. Рассказывает о новых технологиях, цифровых профессиях и полезных инструментах для разработчиков. Любит играть на электрогитаре и программировать на Swift.
C# (читается как «Си шарп») — это язык программирования от компании Microsoft. Изначально его создавали для проектов под Windows, но теперь это по-настоящему универсальный язык: на нём пишут игры, десктопные приложения, веб-сервисы, нейросети и даже графику для метавселенных.
Один из ведущих разработчиков языка — легендарный Андерс Хейлсберг, который до C# успел сделать Turbo Pascal и Delphi, а после — TypeScript (майкрософтовский JS на стероидах).
Если коротко, этот язык:
- Кросс-платформенный — запускается почти на любом железе.
- Объектно-ориентированный — состоит из классов и объектов, которые умеют передавать свойства друг другу.
- Постоянно развивается — для тех, кто любит учиться.
- Дружит с экосистемой Windows — для этого и был написан.
Есть две основных версии, зачем Microsoft стала делать свой язык программирования.
Официальная: чтобы упростить разработку приложений под Windows. А то языки в то время были сложные и плохо адаптировались под разные Windows-компьютеры.
Правдоподобная: чтобы заменить Java, на который у Microsoft не было лицензии. В итоге получился почти такой же язык, но с интеграцией под Windows. Как и Java, он основан на языке C и легко запускается на любом устройстве. А название «Си» с решёткой как бы говорит: «У нас тут не копия Java, а новый язык в линейке „Си“».

Кстати, всю эту историю о борьбе Microsoft за Java и причинах появления C# мы рассказывали в статье о Java Virtual Machine — в разделе о конкурентах JVM.
Привет, C#: пишем первую программу
Запуск любой программы на C# начинается с главной функции — Main(). В ней прописано, как программа будет себя вести дальше — что за чем пойдёт, что за что отвечает и так далее. Выполняется она из главного класса — назовём его HelloWorld. Если перевести это на программистский, получится как-то так:

В теории на Unity можно делать не только игры, но и любые проекты, где нужна 3D-графика, — метавселенные, программы для VR-устройств, дизайн интерьеров и так далее. А пишут под Unity в основном на языке C# — отличный повод выучить именно его, если видите себя в геймдеве или виртуальной реальности.
Программы для Windows
Поскольку C# — это язык от Microsoft, на нём удобно писать настольные приложения для Windows. Для этого разработчики придумали специальную платформу — называется .NET Framework. Она умеет переводить код из понятного человеку в понятный процессору — то есть компилировать.
Преимущество платформы в том, что она может исполнить любую C#-команду на любом процессоре — а на Windows работает не меньше тысячи разных моделей. Если бы не .NET, пришлось бы компилировать код под каждое железо отдельно. А ещё .NET поддерживает много плагинов, библиотек и шаблонов для наглядной разработки интерфейсов — это фактически целый мир и экосистема для программиста на Windows.

Кросс-платформенные приложения
С помощью фреймворка Mono один и тот же С#-код можно запускать в разных десктопных системах — например, в Linux или macOS. А если код надо запустить на мобильных платформах, используют версию Mono для смартфонов — Xamarin.
Допустим, мы пишем приложение для смартфона — мобильные карты. Они должны одинаково работать и на айфоне, и на Android-устройстве, но выглядеть нативно — то есть по дизайн-коду своих платформ. Вот как эту идею можно воплотить на Xamarin:

- Проектируем дизайн приложения в визуальном редакторе.
- Привязываем к нему логику на C#.
- Всё это дело подхватывает Xamarin и переводит в родные для iOS и Android интерфейсы.
- На выходе получаем целых два приложения — для Android и iPhone. А программировали мы всего один раз — удобно вышло.
Подробнее о том, как писать мобильные приложения на Xamarin, мы рассказываем в этой статье.
Серверная логика веб-сайтов
Когда пользователь что-то нажимает на сайте, его действия сначала обрабатывает сервер. Например, мы ставим лайк фотографии — сервер это получает и записывает у себя в базе данных: «Вот такому пользователю понравилось». Или, допустим, логинимся на сайте — сервер сверяет пароли и отвечает: «Войти разрешаю».
В чистом виде сервер — это просто машина, и, чтобы она заработала, нужен специальный софт. Нередко его пишут на языках PHP и Java, но если вам нужен софт для сервера на Windows, эксперты рекомендуют именно C#. Он хорошо работает с фреймворками от Microsoft и быстро запускается на Windows-машинах.
Нейросети
В любое приложение на C# можно встраивать алгоритмы машинного обучения — например, компьютерное зрение, распознавание лиц или музыкальные рекомендации в плеере. Фишка в том, что для этого не надо глубоко разбираться в математике или Data Science. Достаточно подключить специальную библиотеку от Microsoft — ML.NET, — и она возьмёт все внутренности на себя.
А ещё с ML.NET работает кросс-платформенность — то есть алгоритмы в теории можно запускать вообще где угодно. Например, на банкомате, если надо сделать авторизацию по лицу.

Преимущества C#
Независимость от железа. Программисту не надо адаптировать программу под разные платформы и системы — за него это делает виртуальная машина, вшитая в .NET Framework. В итоге один и тот же код можно запускать на любых устройствах — смартфонах, компьютерах, серверах, банкоматах и даже умных часах.
Отличная совместимость с Windows. Не зря же язык разработали именно в Microsoft. Так же как Swift идеально подходит для программирования под экосистему Apple, C# прекрасно вписывается в экосистему Windows.
Управление памятью. Чтобы программа работала стабильно, её надо иногда чистить от ненужных объектов, ссылок, кэша и прочего мусора. В C# это происходит автоматически — разработчику не надо следить за расходом памяти, бороться с её утечками или удалять мёртвые куски кода.
Строгая типизация. Когда вы объявляете переменную в C#, надо сначала указать, что в ней лежит — строка, число или массив. Так разрабатывать чуть дольше, зато ваш код работает предсказуемо — числа взаимодействуют с числами, строки со строками и так далее. В языках со слабой типизацией свободы и драйва больше, но есть шанс пропустить ошибку, которая всплывёт в готовой программе.
Большое сообщество. На С# пишут более миллиона программистов по всему миру. В соцсетях полно чатов и сообществ «шарпистов», где можно задать вопрос, обсудить сложную тему или найти готовое решение. В теории можно даже найти ментора, который поделится знаниями и поможет быстрее освоить язык.
Синтаксический сахар. В С# есть много способов сократить код, не нарушая логику программы. Программисты называют такие приёмы «синтаксическим сахаром» — они помогают сделать код проще, понятнее и в целом симпатичнее. Сравните, например, как выглядит сложение чисел с «сахаром» и без.

На российском hh.ru мы нашли около 4 тысяч вакансий для разработчиков на C#. Больше всего предложений в Москве и Петербурге — это неудивительно, ведь там сосредоточена львиная доля энтерпрайза, где C# является стандартом. В основном компании ищут программистов для разработки бэкенда и десктопных программ, но есть варианты и в геймдеве, и в больших данных.
Интересно, что стажёры, которые только пришли в профессию, могут получать в районе 40 тысяч рублей в месяц. А если у новичка хорошая теоретическая база или уже есть какой-то опыт разработки, можно сразу пробоваться на Junior-позиции — там зарплаты уже около 64 тысяч рублей. Среди крупных компаний, которые готовы брать джунов-шарпистов, — Сбербанк, «МТС», Ozon и Kaspersky.

Более опытным Middle-разработчикам компании готовы платить в районе 120–150 тысяч рублей, а сеньорам и тимлидам — от 234 тысяч. Но такие программисты должны не только хорошо кодить, но и кое-что понимать в управлении командой и проектом.

Подходит ли С# новичку?
Если вы ищете язык для старта в программировании, обязательно рассмотрите С# — он популярен, широко распространён и официально поддерживается Microsoft. Его используют тысячи компаний, поэтому новичок может довольно быстро получить оффер. Особенно понравится язык тем, кто хочет делать 3D-графику на Unity или писать программы для Windows.
