07.08.2022

Сергей Немчинский: Что выбрать в 2022 году: C# или Python?

Сергей Немчинский
10 минут просмотра
Сергей Немчинский: Что выбрать в 2022 году: C# или Python?

Сравнение языков программирование — это то, чем занимается практически каждый, кто хочет стать разработчиком. Обычно человек берет целую вязанку языков и начинает их попарно сравнивать между собой. Сегодня у нас на сравнении популярная пара языков — C# и Python.

Сравнивать языки мы будем по таким параметрам, как область применения, зарплата разработчика, синтаксис, вакансии, фреймворки и перспективы. Сразу дисклеймер: все сравнение достаточно субъективное. Важно понимать, если какой-то из этих языков вам нравится больше, то независимо от того, что скажу я или кто-то другой — выбирайте и учите именно его. Это сравнение только для тех, кто не может определиться, мои доводы могут сместить чашу весов в сторону одного из них.

У нас есть курсы и по Python веб разработки, и по С# во всех трех его применениях. Это к тому, что для меня нет смысла переубеждать вас, что какой-то из этих языков лучше или хуже. Я просто делюсь своим мнением.

Области применения языков

Python

На данный момент это самый популярный скриптовый язык. Язык быстрой разработки. Фактически, на нем можно быстренько написать что угодно. Вы не сможете ни на чем другом разрабатывать также быстро, как на Python. Язык простой для изучения и простой в использовании. Поэтому у Python очень много областей применения. Чаще всего его используют там, где нужно просто автоматизировать какие-то действия, поэтому его любят в разных профессиях. Python используют DevOps, Automation QA  для автоматизированного тестирования, Data Scientist и другие специалисты. Но нужно понимать, что Python используется не там, где итогом работы является код, он применяется в качестве дополнительного инструмента. Т.е. специалист может сделать все руками или с использованием других инструментов, не завязанных на коде. Например, протестировать можно мануально, но со скриптом получается и надежнее, и быстрее. Вот для этих автоматических тестов и может использоваться Python.

Python также может использоваться именно в качестве программистского языка, т.е. когда выхлопом специалиста является именно код. Однако в этом случае область применения ровно одна — создание веб-приложений. В этом направлении очень популярен фреймворк Django. Есть и другие фреймворки, но Python+Django — классическое сочетание. Python позволяет создать сайты сложнее, чем на WordPress. Как правило, это сайты для e-commerce, т.е. любые сайты, которые ведет бизнес (записаться к врачу, прослушать курсы, поучаствовать в каких-то активностях и т.д.). Сделать такое на WordPress сложно и дорого, поэтому для этого используется Python, либо его прямые конкуренты — PHP и Ruby.

Еще раз повторюсь для тех, кто любит цепляться к словам. На Python, как на любом другом современном языке программирования, можно написать что угодно. Но все же есть основные области применения для того или иного языка. Например, если вы хотите разрабатывать приложения под Windows, то это не про Python. Да, технически можно их разработать на этом языке, но это будет очень редкое явление.

С#

У С# тоже довольно много областей применения, но в отличие от Python, он редко используется как дополнительный инструмент. Есть три основные направления, где используют С#:

  1. Энтерпрайз разработка (разработка крупных систем в интересах больших компаний, автоматизация их бизнеса и пр). Прямым конкурентов в этой области является Java. Однако С# выигрывает, если компания, для которой разрабатывается проект, завязана на документации Microsoft Office. У С# в этом случае прямая интеграция. Поэтому компании, связанные, с аналитикой, финансами, юриспруденцией, очень выгодно делать код на С#.
  1.  Разработка под Windows. Использоваться могут такие фреймворки как WinForms или WPF. Разработка программ под Windows — не самая обширная ниша С#, но все же работа в такой области есть.
  1. Разработка под Unity. Unity — второй по полярности в мире движок для игр. Если вас очень тянет в геймдев, то обратите внимание на Unity.

Разработчики С# могут переходить между этими тремя областями, доучивая соответствующие фреймворки.

Зарплаты разработчиков

Зарплаты разработчиков одинакового уровня примерно одинаковы на всех самых популярных языках программирования. Разница может быть +/- 100$, что совсем не критично.

Порог входа на Python несколько ниже чем на С#, язык действительно проще и с него многие стартуют. Поэтому зарплаты джунов на Python обычно ниже. Дальше, с повышением уровня, зарплаты примерно выравниваются.

Помним, что чтобы стать хорошим разработчиком, нужно любить, то что вы делаете. Если вам не нравится язык, то как бы хорошо он не был оплачиваем, работа не будет приносить вам радость.

Узнать актуальную зп разработчиков можно на DOU (для Украины).

Синтаксис

Python — язык динамической типизации. Т.е когда вы пишите код, вы не указываете тип переменных. Когда интерпретатор переводит этот код в исполняемые команды, он сам определяет, какого типа была переменная. Что, с одной стороны, облегчает процесс написания кода, с другой стороны — усложняет реализацию многого функционала.  

С# — язык строгой типизации. Каждую переменную вы обязаны объявить, сказать какого она типа. Из-за этого разработка идет чуть-чуть медленнее, однако это дает более мощное средство для разработки. Соответственно, на С# можно реализовывать более сложные проекты.

Синтаксис обоих языков очень похож на язык С, хотя официально Python не С-подобный язык, потому что там вместо фигурных скобок используются отступы. Но чтобы понять, какой язык вам нравится больше, нужно попробовать оба.

Вакансии

Вакансий по С# ощутимо больше если мы говорим про вакансии именно разработчиков. Как я писал выше, на Python много работы, которая не относится к разработчиком. Если же собрать всех специалистов, которые в своей работе используют Python, то это будет один из самых популярных языков. Но если говорить только о разработчиках, у которых код является результатом работы, то Python отстает процентов на 20 даже от своего прямого конкурента PHP, не говоря уже о С#. Но это вообще ничего не значит, потому что и разработчиков С# тоже больше.

По поводу вакансий Python я бы хотел немного предостеречь. Сейчас очень много необоснованных мнений, что Python — язык будущего и кто-то очень активно рекомендует учить именно его. На самом деле это ровно такой же язык, как все другие современные языки, просто в данный момент Python на волне хайпа. Поэтому если вам он не нравится, но вас кто-то переубедил, что учить нужно именно этот язык — не слушайте.

Фреймворки

  • Python

Основной фреймворк для разработке на Python — Django, который является отраслевым стандартом. Некоторые ругают Django за то что он немного тормозит, не очень удобный и пр. Как по мне — вполне нормальный фреймворк. Но для Пайтона есть большое количество и других фреймворков, так что будет не скучно. Кроме всего прочего, поскольку Python используется в разных направлениях, есть еще и библиотеки для разных тем, которых нет в других языках.

  • С#

В зависимости от того, в каком направлении С# работает разработчик, это может быть .NET Core, WPF или Unity. Фактически .NET Core — это стек фреймворков, который встроен в платформу. По уровню он совершенно соответствует джавовским фреймворкам, которые общепризнаны лучшими в мире. Но это для энтерпрайза. Если мы говорим про разработку под Windows, то тут используются устаревший фреймворк WinForms или современный WPF. Если вы разрабатываете под Unity, то и используете фреймворк Unity.

Перспективы языков

Python набирает популярность, хотя этот взлет, с моей точки зрения, мало чем обоснован. Не смотря на то, что Python старый язык, даже более старый чем Java (разработан в 1991 г), у него слава модного молодежного языка. Дело в том, что Python очень удачно подошел под запросы целевой аудитории. Людям нужен был удобный инструмент для быстрого программирования и Python соответствовал этому. Постепенно хайп будет спадать, но язык по-прежнему будет достаточно популярным. Пока у него нет конкурентов, которые могли бы его заменить в нише быстрой разработки и автоматизации различных задач. Так что Python с нами очень на долго. Тоже самое касается С#, который используется аж в трех нишах.

Поэтому нет смысла выбирать язык по перспективности. Просто на одном языке вы будете выполнять одни задачи, на втором языке — другие задачи. На Python вы фактически гарантировано будете разрабатывать сайты для e-commerce. На С# вы будете разрабатывать игры под Unity, приложения под Windows или системы корпоративного управления компаний. Все это совершенно разные типы работы, с разным майндсетом и подходят они для разных людей.

При разработке для e-commerce на Python, у вас будет большое количество достаточно однотипной работы, потому что компаниям, которые разрабатывают на Python, удобно и выгодно брать однотипные заказы.

При работе на С# под Unity, большую часть рынка занимают казуальные и гиперказуальные игры. Если вам не нравится это, то работать будет тяжело. Это не значит, что на Unity не разрабатывают ничего серьезного, но все же львиная часть рынка — это именно такой тип игр. При работе под WPF — это разработка чего-то для конкретной компании. Разработка под .Net Core — это интерпрайз со всеми его проблемами. Тут будет очень сложная и запутанная предметная область, а также исторический софт, устаревшие версии и пр. 

Всегда ваш Сергей Немчинский.