Ведущий .NET-разработчик EPAM Александр Кугушев рассказал, как выбрать первый язык программирования, какие направления развития есть в .NET, чем хорош C# и где искать полезную информацию начинающему «дотнетчику».
Как выбрать язык программирования новичкам в IT?
Это хороший вопрос. В первую очередь я бы предложил серьёзно подумать о том, чем вы хотите заниматься в IT «глобально»: фронтенд, бэкенд, геймдев, DevOps, Data Science. Потому что для каждой области нужны разные навыки.
Я не говорю о том, что фронтенд и бэкенд сильно отличаются (на самом деле не так сильно), но хороший фронтенд-специалист должен уметь, например, неплохо верстать. А вёрстка подразумевает умение чувствовать дизайн. Поэтому я бы предложил сфокусироваться на том, какое направление в IT вам нравится больше. Далее я бы посмотрел, какие языки есть в той области, которую вы выбрали. В бэкенде, например, самые популярные языки — это Java, C#, NodeJS, Python, Go. Помимо языка, есть ещё и платформа. Все эти языки кросс-платформенные, все работают на Windows и Linux. Осталось разобрать плюсы и минусы каждого.
Java
Java как язык программирования интересен. Но у него есть одна проблема.
Он довольно консервативный, и новый функционал появляется редко. Что значит консерватизм для разработчика? Мы не сможем попробовать новые подходы к разработке. А они понадобятся для более продвинутых проектов. И на Java их будет сложно реализовать. Чтобы расти профессионально в Java, нужно постоянно «расширять» свои компетенции. И если вы выбираете Java, я очень рекомендую попробовать и Kotlin, и Scala. Эти языки позволяют попробовать подходы, которые применяются в других языках, более богатых на функционал. Но это потребует дополнительных усилий. В Java-мире существует огромное количество библиотек и фреймворков, которые необходимо знать помимо самого языка программирования. В итоге остаётся мало пространства для творчества.
Если же вы решили изучать язык Java с нуля — обратите внимание на карту по изучению Java, дающую пошаговые инструкции, с чего начать свой путь.
NodeJS
NodeJS — это хороший вариант, если вы хотите стать fullstack-разработчиком. С этим языком можно быстро "войти в IT" и научиться создавать сайты. Но нужно понимать, что другие разработчики будут составлять вам большую конкуренцию.
Python
Python сам по себе язык интересный, но он динамической типизации. Соответственно, придётся писать больше тестов. Не будем забывать: когда говорят, что Python популярен, то имеют в виду, что он популярен для Data Science, DevOps, аналитиков, а для бэкенда — в гораздо меньшей мере. И главное: в языке есть сложности с параллельными обработками запросов; посмотрите на Global Interpreter Lock, и вы всё поймёте.
Go
В Go интересный подход к программированию. Я рекомендую посмотреть и почитать, как выглядит Go, сравнить с другими языками, но есть одна проблема. Go — это не мультипарадигменное, а чисто процедурное программирование. Он хорош для тех, кто знает объекто-ориентированное и функциональное программирование, но не очень хорош для новичков. Это как с машинами: если вы умеете водить только «автомат», то не сможете водить «механику».
С#
С# быстро развивался начиная с 2012. В какой-то момент был переписан компилятор на С# (раньше он был на С++). И после этого возможности языка увеличились в разы. Сейчас С# позволяет писать код в стиле Scala с минимальными отличиями. C# богат на функционал, и вы можете попробовать много разных подходов. Есть конкуренты вроде Kotlin, но для бэкенда он не очень подходит. Когда Microsoft разрабатывала кросс-платформенный С#, так называемый .NET Core, то сами библиотеки и веб-фреймворк в нём были новые, без устаревших подходов.
По сравнению с Java, у C# больше функционала и подходов.
Помимо бэкенда, где ещё применяется .NET?
У .NET долгое время существовало десктопное лобби, потому что в первой половине 2010-х десктопные приложения были очень популярны. И до сих пор их много разрабатывается и поддерживается. С точки зрения разработки, там действительно есть интересные задачи. Ещё C# применяется в кросс-платформенной мобильной разработке. Можно сделать кросс-платформенное приложение с бизнес-логикой, и при этом у него будет абсолютно нативный User Experience и для Android, и для iOS.
C# и .NET — это одно и то же?
В своё время Microsoft рассматривала вариант унифицированного подъязыка. В .NET есть Common Intermediate Language, в который компилируются .NET-языки: C#, Visual Basic для .NET, F# и другие. Visual Basic для .NET не очень популярен, а F# — это функциональный язык с возможностями объектно-ориентированной разработки. И .NET является той платформой, экосистемой, где выполняется Common Intermediate Language, в который компилируются C#, Visual Basic или F#.
Проблемы "не надо идти в .NET, потому что это только Windows" давно уже нет.
Какие тренды сейчас в .NET?
По-прежнему идёт упор на бэкенд-разработку. Ещё я бы выделил поддержку «облаков»: у Microsoft сейчас основной интерес с точки зрения программирования — это Azure Cloud. Соответственно, всё делается так, чтобы поддерживать облачные решения. Третий тренд — Machine Learning (ML) и Data Science. Вышла библиотека с функционалом для ML. В .NET-сообществе рассматриваются новые возможности C# 8.0.
Если вы интересуетесь C# и хотите стать .NET-разработчиком в крупной международной IT-компании, смотрите доступные возможности для .NET Juniors от EPAM.