Для начала разберём преимущества и недостатки этого популярного языка программирования.
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 Core (теперь ее называют просто .NET) основана на .NET Framework и предназначена для разработки ПО под различные операционные системы. Ее можно использовать и для создания приложений с графическим интерфейсом, но, справедливости ради, для кроссплатформенного GUI есть гораздо более удобные инструменты. .NET Core больше подходит для веб-приложений, притом к ее преимуществам можно отнести уже упомянутую модульность, возможность работы в облаке, а также разделение библиотеки CoreFX и среды выполнения CoreCLR. Компоненты .NET Core обновляются отдельно, в то время как у .NET Framework обновление накатывается сразу на весь пакет.
.NET Framework:
- Работает с множеством готовых библиотек и инструментов – нужно лишь освоиться и ознакомиться с ними.
- Можно напрямую пользоваться различными функциями Windows.
- Из-за тесной интеграции с Windows отсутствует кроссплатформенность.
.NET Core:
- Открытая платформа.
- Кроссплатформенность и модульность дают разработчику массу преимуществ. Например, создавая приложение для Windows, можно включить и необходимые модули для Linux.
- Код .NET переписан с нуля, что повышает быстродействие.
Выбор инструмента сводится к решению конкретной задачи и долгосрочному планированию профессионального развития. Перед началом обучения стоит создать индивидуальную дорожную карту освоения специальности (roadmap).
Веб-разработка
Для работы в этом направлении потребуются дополнительные подготовительные курсы. Придётся разобраться с основными CSS, HTML и JavaScript хотя бы на базовом уровне, чтобы понимать их устройство и при необходимости уметь написать простенький код.
Потом опять придется выбирать между .NET Framework и .NET Core:
- ASP.NET – развитие Microsoft ASP. Предназначенная для создания веб-приложений платформа входит в состав .NET Framework и включает веб-сервисы, программную инфраструктуру, а также модель программирования.
- ASP.NET Core – свободно-распространяемый кросс-платформенный фреймворк для создания веб-приложений. Разрабатывается Microsoft совместно с сообществом и отличается более высокой производительностью по сравнению с ASP.NET.
- 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 – еще один российский портал, предлагающий видеокурсы по программированию и выдающий дипломы.
Самообразование:
Не стоит забывать и об актуальности знаний – в этом вам помогут блоги и различные каналы для программистов:
- Официальный блог .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 страниц.
Хочу освоить алгоритмы и структуры данных, но сложно разобраться самостоятельно. Что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения: не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры данных», на котором в формате еженедельных вебинаров вы:
- изучите сленг, на котором говорят все разработчики независимо от языка программирования: язык алгоритмов и структур данных;
- научитесь применять алгоритмы и структуры данных при разработке программ;
- подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.
Комментарии