C# – популярный язык программирования, доступный любому желающему. Попробуем разобраться, как можно изучить его с нуля и какие актуальные в 2022 году ресурсы лучше всего использовать новичку.
C# (C Sharp – произносится как си шарп) можно назвать ответвлением от языка С, но с большим уклоном в объектно-ориентированное программирования (ООП). Его синтаксис схож с синтаксисом С++ или Java, но значительно проще для изучения. Благодаря интеграции с .NET Framework и .NET Core, язык C# используется для разработки приложений Windows, игр, кроссплатформенных приложений, а также для создания веб-сайтов.
Для начала разберём преимущества и недостатки этого популярного языка программирования.
C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, переменные, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
Источник
Преимущества:
- Глубокая связь с Windows. Разрабатывая приложение на C#, можно не заботиться о проблемах с поддержкой – с высокой вероятностью оно заработает везде, где установлены требуемые версии компонентов .NET.
- Если на какой-то платформе есть проблемы с поддержкой, благодаря .NET их легко устранить.
- C# – компилируемый язык. Не имея доступа к исходным текстам, программу на нем сложнее взломать или модифицировать.
- C# легко учить: времени на освоение синтаксиса языка тратится намного меньше, чем, например, на С++. К тому же у C# большое комьюнити, в котором охотно помогают новичкам.
Недостатки:
- C# – компилируемый язык. Это значит, что после любого изменения в коде придётся заново компилировать всю программу. Лучше заранее распланировать все связанные с разработкой действия.
- Язык является частью инфраструктуры .NET, поэтому для работы требуется установленная платформа и Windows. Можно писать и приложения для Linux, но все-таки чаще C# используют для создания кроссплатформенных продуктов и программ для операционных систем Microsoft.
- Из-за прекращения поддержки старых версий .NET нужно своевременно обновлять фреймворк до актуальных версий или придётся решать многочисленные проблемы совместимости.
.NET Framework и .NET Core
.NET Framework – созданная в Microsoft платформа, основанная на среде CLR (Common Language Runtime). CLR транслирует байт-код на CIL (Common Intermediate Language или высокоуровневый ассемблер) в машинный код во время исполнения. Все NET-совместимые языки высокого уровня и среды разработки должны (с некоторыми оговорками) уметь компилировать программы в промежуточный язык CIL. Его реализация от Microsoft называется MCIL, а виртуальная машина CLR также обеспечивает приложениям доступ к библиотеке классов .NET Framework.
Открытая модульная платформа .NET Core (теперь ее называют просто .NET) основана на .NET Framework и предназначена для разработки ПО под различные операционные системы. Ее можно использовать и для создания приложений с графическим интерфейсом, но, справедливости ради, для кроссплатформенного GUI есть гораздо более удобные инструменты. .NET Core больше подходит для веб-приложений, притом к ее преимуществам можно отнести уже упомянутую модульность, возможность работы в облаке, а также разделение библиотеки CoreFX и среды выполнения CoreCLR. Компоненты .NET Core обновляются отдельно, в то время как у .NET Framework обновление накатывается сразу на весь пакет.
.NET Framework:
- Работает с множеством готовых библиотек и инструментов – нужно лишь освоиться и ознакомиться с ними.
- Можно напрямую пользоваться различными функциями Windows.
- Из-за тесной интеграции с Windows отсутствует кроссплатформенность.
.NET Core:
- Открытая платформа.
- Кроссплатформенность и модульность дают разработчику массу преимуществ. Например, создавая приложение для Windows, можно включить и необходимые модули для Linux.
- Код .NET переписан с нуля, что повышает быстродействие.
Существует также отдельная спецификация под названием .NET Standard, поддерживаемая всеми реализациями платформы .NET. По ней разрабатываются, например, совместимые с .NET Framework и .NET Core библиотеки.
Выбор инструмента сводится к решению конкретной задачи и долгосрочному планированию профессионального развития. Перед началом обучения стоит создать индивидуальную дорожную карту освоения специальности (roadmap).
Первые шаги
Если вам еще не приходилось заниматься разработкой, начинать придётся с азов: принципов объектно-ориентированного программирования, синтаксиса C# , оформления кода и работы с базами данных. На этом этапе стоит подумать о специализации: веб-приложения (серверное ПО), игры или программы с графическим интерфейсом. Также потребуется изучить приёмы работы со средой Visual Studio (на C# программируют преимущественно в ней): это, например, горячие клавиши, хитрости для быстрой генерации кода и прочее, прочее, прочее.
Продвинутое изучение
Освоив простые вещи, можно перейти к асинхронному и многопоточному программированию на C# , особым форматам файлов, библиотеке классов .NET Framework, тонкостям архитектуры Windows и к другим необходимым профессионалу вещам. Их список зависит от вашей специализации.
Специализация разработчика игр
Этот путь стоит рассмотреть отдельно и после первых шагов сразу идти по нему. Дальнейшее углублённое изучение будет не столь эффективно: лучше приступить к освоению игрового движка, например, Unity.
Прочие специализации
Если заложен прочный фундамент, самое время поточнее определиться со специализацией. Выбранная ранее технология веб-приложений или программ для десктопа начнёт оказывать прямое влияние на изучение C#.
Веб-разработка
Для работы в этом направлении потребуются дополнительные подготовительные курсы. Придётся разобраться с основными CSS, HTML и JavaScript хотя бы на базовом уровне, чтобы понимать их устройство и при необходимости уметь написать простенький код.
Потом опять придется выбирать между .NET Framework и .NET Core:
- ASP.NET – развитие Microsoft ASP. Предназначенная для создания веб-приложений платформа входит в состав .NET Framework и включает веб-сервисы, программную инфраструктуру, а также модель программирования.
- ASP.NET Core – свободно-распространяемый кросс-платформенный фреймворк для создания веб-приложений. Разрабатывается Microsoft совместно с сообществом и отличается более высокой производительностью по сравнению с ASP.NET.
Взаимодействие с базами данных в .NET Core осуществляется с использованием технологии Entity Framework Core (EFC, EF Core). EF Core работает на высоком уровне абстракции, предполагающем манипуляцию данными без привязки к их типу.
- ASP.NET MVC Framework – инструментарий для создания веб-приложений, реализующий шаблон Model-view-controller. Сейчас разрабатывается как часть ASP.NET Core, а вместо EF Core здесь используют EF 6.
Разработка настольных приложений
Здесь особого выбора нет, поскольку пытаться писать кроссплатформенные NET-приложения с графическим интерфейсом – экзотическое развлечение. Придется использовать .NET Framework и две основные платформы: WPF (Windows Presentation Foundation) или UWP (Universal Windows Platform). Последняя – более современная. Она позволяет создавать универсальные приложения для Windows в т.ч. на C#.
Где изучать язык?
Определившись со специализацией, можно перейти к получению знаний. Есть два варианта: самостоятельное изучение и/или курсы. Процесс может проходить в онлайне, но придется запастись терпением и, при необходимости, деньгами.
Самообразование:
Самостоятельное изучение – основа основ, особенно в программировании. Для этого потребуется время и источник информации. Вам обязательно понадобится официальная документация с сайта Microsoft. Лучше читать в английском варианте, поскольку перевод на русский может быть неточным.
Не стоит забывать и об актуальности знаний – в этом вам помогут блоги и различные каналы для программистов:
- Официальный блог .NET от Microsoft. Здесь можно найти описания обновлений, обсуждения нововведений и напоминания обновить платформу, если истекает срок поддержки.
- С# Helper. Конкретные примеры кода, объяснения новинок.
- Eric Lippert`s Blog. Блог одного из разработчиков программного кода для Facebook и создателя C#.
- Уголок “С-шарперов”. Огромное количество материалов от людей, занимающихся в .NET или программированием на C#.
- BestDotNetTraining. Сайт и одноимённый канал на Youtube о программировании от индийских разработчиков. На сайте есть платные обучающие курсы, а также бесплатный контент.
- #SimpleCode. Русскоязычный Youtube-канал о практическом применении возможностей C#.
- CodeBlog. Ещё один русскоязычный Youtube-канал о C#. Здесь можно найти обзоры книг и способы решения практических задач.
- Habr. Это один из основных IT-порталов в русскоязычном сегменте. Публикации, обсуждения, обзоры и многое другое – на Хабре можно сидеть часами, при этом всё время пойдёт на самообразование. Если, конечно, выбирать обучающие публикации.
- GitHub. Открытая библиотека программного кода со всего мира. Здесь собираются команды разработчиков, и хранится код в открытом доступе.
Книги тоже считаются серьёзным источником знаний для программистов:
- Герберт Шилдт. C# <версия>. Полное руководство, но актуальны только версии, начиная с 4.0. Каждая книга подробно расписывает возможности языка и их практическое применение. Можно сказать, что это авторская переработка документации кода. Она отлично подойдёт не знакомым с синтаксисом языка.
- Джефри Рихтер. CLR via C#. Это издание углублённо рассказывает о C#, так что без уверенного знания синтаксиса языка информация в нем покажется вам слишком сложной.
- Албахари. C# <версия>. Карманный справочник по языку, среде CLR и сборкам .NET. Обычный справочник слишком объемный, но этот вариант удобно держать под руками.
- Джон Скит. C# для профессионалов. Один из основных учебников для программистов на C#.
- Эндрю Троелсен и Филипп Джепикс. Язык программирования C# 7 и платформы .NET и .NET Core. Отличная книга, разбирающая всё ещё актуальные возможности C#, платформу .NET и их прикладное применение. Объём велик – 1300 страниц.
***
Мы продолжаем выпускать познавательный контент, чтобы вы оставались на плаву и не забывали получать новые знания.
Больше полезной информации вы найдете на наших телеграм-каналах «Библиотека программиста» и «Книги для программистов».
А также на наших образовательных курсах в Proglib.academy.