C# – популярный язык программирования, доступный любому желающему. Попробуем разобраться, как можно изучить его с нуля и какие актуальные в 2021 году ресурсы лучше всего использовать новичку. Обсудить
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#.
Где изучать язык? Определившись со специализацией, можно перейти к получению знаний. Есть два варианта: самостоятельное изучение и/или курсы. Процесс может проходить в онлайне, но придется запастись терпением и, при необходимости, деньгами.
Онлайн-университеты: Coursera – американский провайдер онлайн-курсов. На сайте можно найти платные уроки, а также бесплатные. Coursera сотрудничает с различными учебными заведениями по всему миру и выдаёт сертификаты. GeekBrains – российская образовательная онлайн-платформа с уклоном в IT, но там хватает курсов и по смежным отраслям. Успешно завершившим обучение студентам выдают диплом о профессиональной переподготовке и помогают с трудоустройством. Занятия ведутся на русском языке. ITVDN – еще один российский портал, предлагающий видеокурсы по программированию и выдающий дипломы. Самообразование: Самостоятельное изучение – основа основ, особенно в программировании. Для этого потребуется время и источник информации. Вам обязательно понадобится официальная документация с сайта 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 страниц. ***
Если вы только начинаете путь в профессии, стоит обратить внимание на курс «Разработка на C#» образовательной онлайн-платформы GeekBrains. За 13 месяцев вы сможете изучить язык программирования и платформу .NET с нуля, а также разберетесь с особенностями создания веб-приложений и корпоративных приложений. Преподают на курсах ведущие разработчики российских технологических компаний, под руководством которых вы не только получите теоретические знания, но и сможете добавить в портфолио 4 реализованных проекта. Успешно завершившие курс студенты получат дипломы о профессиональной подготовке и помощь в трудоустройстве.
Интересно, хочу попробовать