article-spots
article-carousel-spots
programs
Технології

.Net чи не .Net: де, коли та як застосовують .Net-розробку

18 трав 2023

Провідний .NET-розробник EPAM Олександр Кугушев розповів, як обрати першу мову програмування, які напрямки розвитку є в .NET, які переваги приховує C# і де шукати корисну інформацію початківцю в бекенді.

Як новачкам в ІТ обрати мову програмування?  

Це гарне питання. В першу чергу я запропонував би серйозно поміркувати, що ви хочете робити в ІТ «глобально»: будувати front-end чи back-end, займатися геймдевом чи DevOps, або ж навіть розбиратися у Data & Analytics. Визначитися потрібно якнайраніше, адже для кожної області потрібно розвивати різні навички. Я говорю не про те, що фронтенд і бекенд сильно відрізняються (насправді не так сильно, як здається на перший погляд), а намагаюсь пояснити, що гарний фронтенд-фахівець повинен вміти верстати — а верстка передбачає вміння відчувати стиль. Тому спочатку я б порадив сфокусуватися на питанні, який напрям в ІТ вам подобається.  

Відтак, я б подивився, які мови популярні в тій області, якою ви цікавитесь. В бекенді, скажімо, найбільш популярні мови — C#, Java, NodeJS, Python, Go. Окрім мови, потрібно обрати ще й платформу. Добре, що всі ці мови крос-платформні та працюють на Windows і Linux: залишилося розглянути плюси та мінуси кожної і зробити для себе висновки.  

Java  

Java, як мова програмування, має чим зацікавити — але в неї є одна проблема. Вона доволі консервативна, і новий функціонал для неї є рідкісною справою.

Що означає консерватизм для девелопера? Неможливість спробувати нові підходи до розробки, які можуть знадобитися для більш просунутих проєктів, або ж складність їх реалізації на Java. Щоб зростати професіонально, Java-розробнику потрібно постійно «розширювати» свої компетенції — і якщо ви обираєте цю мову, я дуже рекомендую придивитися також до Kotlin і Scala, які дозволяють застосувати підходи з інших мов з багатішим функціоналом. Але це вимагатиме додаткових зусиль.  

У Java-світі існує безліч бібліотек і фреймворків, які необхідно знати окрім безпосередньо мови програмування. Зрештою, для творчості залишається мало простору. Якщо ж ви вирішили вивчати мову Java з нуля — зверніть увагу на мапу з вивчення Java, яка дає покрокові інструкції, з чого почати свій шлях.

NodeJS  

NodeJS — це гарний варіант, якщо ви плануєте в майбутньому розвиватися як fullstack-розробник. З цією мовою можна швидко "увійти в ІТ" і навчитися створювати сайти. Однак, потрібно розуміти, що інші розробники складатимуть вам відчутну конкуренцію на вашому кар'єрному шляху.  

Python  

Python, як мова, є доволі цікавим варіантом, але її недолік для застосування у back-end розробці — це динамічна типізація (читайте — доведеться писати дуже багато тестів). Не будемо забувати, що, коли розповідають про популярність Python, мова йдеться про його розповсюдженість у Data & Analytics, DevOps, і значно меншою мірою — у бекенді. І головне, що потрібно пам'ятати: у мові присутні складнощі з паралельною обробкою запитів. Почитайте, лишень, про Global Interpreter Lock і ви все зрозумієте.  

Go  

Мова Go відрізняється нетривіальним підходом до програмування. Я рекомендую почитати і подивитися, як виглядає Go, та порівняти її з іншими мовами. Головне пам'ятати, що Go — це не мультипарадигменне, а суто процедурне програмування. Воно чудово підійде тим, хто вже знайомий з об’єктно-орієнтованим і функціональним програмуванням, а ось новачкам може не підійти. Це як з автівками: якщо ви вмієте керувати тільки «автоматом», то на «механіці» без додаткової практики проїхатись не вдасться.

С#  

С# стрімко розвивається починаючи з 2012 року. Увесь цей час не пройшов для мови даремно: за останні роки її можливості зросли в рази. Зараз С# дозволяє писати код в стилі Scala з мінімальними відмінностями. C# є багатою на функціонал мовою, і в ній ви зможете спробувати багато підходів до написання коду. Звісно, у C# є конкуренти на кшталт мови Kotlin, але остання не дуже підходить саме для backend-розробки. Ще один плюсик в користь C#: коли Microsoft розробляла крос-платформний .NET Core, то бібліотеки і веб-фреймворки компанія використовувала найновіші — тому застарілі підходи тут знайти важко.

Окрім бекенду, де ще застосовується .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, тому що це тільки для Windows" давно вже не існує

Які тренди зараз спостерігаються в .NET?  

Як і раніше, ро́биться наголос на бекенд-розробці; другим з найвизначніших трендів я б виділив підтримку «хмар»: Microsoft зараз демонструє неабиякий інтерес до Azure Cloud. Відповідно, все робиться для підтримки хмарних рішень. Третій тренд — Machine Learning (ML) і Data Science, для практики в цьому напрямку вже створили бібліотеку з функціоналом для ML. Ну і, звісно, в .NET-спільноті розглядаються нові можливості C# 8.0 — можливо, скоро стане відомо ще про якесь сучасне застосування мови. Треба слідкувати.

Де ти знаходиш інформацію про C# і .NET?  

Раніше я читав DOU, але нещодавно став приділяти більше уваги офіційному блогу Microsoft. Якщо говорити про подкасти, я би рекомендував би крутий україномовний Shit I Know Live. І зрештою, інструмент Feedly, який допомагає збирати новини за ключовими темами, які вас цікавлять — я активно ним користуюсь.  

Ну й найкраще, що можна запропонувати — офіційна документація Microsoft, яка захоплює не гірше за деякі художні твори!


Якщо ви цікавитесь платформою .NET і бажаєте стати .NET-розробником у великій міжнародній IT-компанії, передивіться доступні можливості для .NET Juniors від EPAM University :)