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 — це інтерпрайз з усіма його проблемами. Тут буде дуже складна та заплутана предметна область, а також історичний софт, застарілі версії та ін.

Завжди ваш Сергій Немчинський.