Питання «Яку мову програмування вибрати» нам ставлять завжди, причому серед перших. Приплив новачків в IT не припиняється, він тільки посилюється, і всім цікаво, яку мову краще вивчати насамперед. Рік тому Сергій Немчинський вже детально відповідав на це запитання. Але ситуація на ринку змінюється, тому ми зробили новий огляд від Сергія Немчинського про те, яку мову програмування обрати у 2022 році.
Вибір професії
Дисклеймер. Ви повинні розуміти, що вибираєте не мову програмування, а професію: фронтендера, бекендера, фахівця з machine learning і так далі. Я раніше так говорив і все ще вірю в це. Але від того, який інструмент ви для себе оберете, залежить, наскільки вам буде подобатись ваша професія.
Поговоримо про вибір інструментів. Справа в тому, що якщо ви ніколи не займалися програмуванням, вам буде важко відразу вибрати професію. Звідки вам знати, що вам більше до вподоби, back end, front end, або взагалі бази даних. Для людини, яка ніколи не торкалася розробки, це все приблизно про одне.
А ось синтаксис мови – це те, що ви можете помацати та оцінити одразу. І знайомство з мовою допоможе зрозуміти, що вам подобається, а що ні. Можливо, вам одразу сподобається, і ви скажете:
– Вау, яка крута штука, я все хочу з нею зробити.
А може бути і навпаки, мова буде збивати вас з пантелику, вам буде незручно і неприємно, і вам не сподобається. Тобто саме мова допоможе вибрати професію, так що перш за все вибираємо мову.
Як вибрати мову програмування: рецепт від Немчинського
До мене часто на кар’єрні консультації приходять люди та кажуть:
– Я нічого не знаю, за що мені братися з самого початку?
У мене є фірмовий рецепт, записуйте.
Низькорівневі мови
Перш ніж говорити про вибір мови, я розповім вам про чотири з половиною основні групи мов. Нульова група — мови низького рівня, які пов’язані з доступом до заліза безпосередньо та прямим керуванням процесором, відеокартою та іншими пристроями. До них відношу С, С++, Rust.
Цей напрямок для тих людей, які засинають та прокидаються зі своїм улюбленим паяльником. Якщо вам нецікаво, куди побігли електрончики, із цими мовами вам буде некомфортно. Я сам із них починав, і саме так зі мною й було. Але якщо ви любитель поколупатися в залізі, вам і шукати більше не треба. Яку саме мову вибрати? За смаком. Я раджу почати з мови С. Цією мовою багато роботи, і вона ж вам допоможе скласти враження про низькорівневі мови.
Front End розробка
Перша група – мови для front end, до неї входить рівно одна мова, це JavaScript. Якщо вам у front end, сідаємо та вивчаємо JavaScript.
Мови динамічної типізації
Друга група – мови динамічної типізації, в першу чергу призначені для
написання невеликих сайтів. Найпоширеніші з них це шалено популярний PHP, хайповий Python та Ruby. Я з цього блоку рекомендую PHP: незважаючи на ваші розповіді, що ця мова померла, роботи нею багато.
Мови суворої типізації
Остання група – це мови суворої типізації, призначені для back end розробки. Сюди відносяться шалено популярні Java та C#. Що з них спробувати? На ваш смак.
Мови мобільної розробки
Окремо стоять мови мобільної розробки, і вибрати їх дуже просто. Якщо перед вами на столі лежить iPhone, вивчайте Swift. Якщо Android – Kotlin. А обирати кросплатформні мови типу Flutter я новачкам не раджу.
Що робити з групами мов
Що робити із цими групами? Вибираєте з них ті, у яких хочете спробувати. У кожній групі вибираєте одну мову. Вбиваєте у вашому улюбленому сайті – у гугл або в ютубі – щось на зразок «Курси програмування для початківців» плюс назва мови.
Вибираєте собі канал, спікера, скринкаст чи автора, які вам подобаються. І тиждень-два знайомитеся з цією мовою, вивчаєте її.
Якщо ви закохані в цю мову, і хочете займатися тільки нею, а решта вас не цікавлять, починайте поглиблене вивчення. Але якщо вам ніби подобається, але щось бентежить – рухайтеся далі і повторіть процедуру з ще однією мовою, тільки з іншої групи. Спробували front end — тепер спробуйте мови динамічної типізації.
Пробуйте так само, тиждень-два, залежить від вашого темпераменту. Так ви можете вибрати ту мову, яка вам подобається, і відштовхуватися вже від неї. Але таких щасливчиків серед вас буде десять відсотків. А решта сумніватимуться: начебто і ця мова хороша, і ця подобається, яку ж вибрати.
Якщо з першої спроби вибрати не вдалося
Ось мій рецепт. Візьміть аркуш паперу або відкрийте таблицю Excel. Впишіть туди всі мови, які встигли спробувати за цей час. І для кожної мови перераховуйте плюси та мінуси. Це має бути ваше суб’єктивне враження, а не факти з інтернету.
Припустимо, ви спробували C#. Пишете:
– Дуже легко встановлювати IDE.
Ви спробували Python. Пишете:
– Дуже легко написати першу програму.
Спробували Java. Пишете:
– Не сподобалося, складно та довго все налаштовувати.
На цьому етапі ви, швидше за все, визначитеся, яка мова вам подобається більше. Ви почнете підсвідомо підбирати плюси для тієї мови, яка вам сподобалася. Тільки не пишіть офіційні факти на кшталт “немає чіткої типізації” – це неважливо. Тільки те, що особисто вас зачепило.
Якщо ж і це не допомогло, берете свою близьку людину – дружину, маму-папу, дівчину, друга, і питаєте її:
- Скажи, яка мова мені більше підходить, ким ти мене бачиш?
І розповідаєте про мови, які спробували. Причому ваша близька людина може не мати жодного відношення до програмування, але вона має добре знати вас. До речі, поки ви розповідатимете про мови, можливо, ви й самі зрозумієте, яка мова вам сподобалася найбільше.
Ось ви й вибрали мову. Але якщо ви і на цьому етапі не вибрали – киньте монетку, зрештою. А після того як кинули, прислухайтеся до своїх відчуттів. Якщо ви зазнали радості від того, що монетка впала саме так, вітаю, ви зробили вибір. Якщо відчуєте роздратування чи прикрість – це теж підказка.
Які мови програмування актуальні у 2022 році
Тепер підемо за списком мов. У всіх списках популярності перші 10 позицій приблизно ті самі. Я, на свій погляд, відібрав мови, на які варто звернути увагу. Але це моє суб’єктивне уявлення, і якщо вам дуже подобається мова не зі списку — займіться нею, і не слухайте мене.
JavaScript
Перша мова – це JavaScript. Я не дуже її люблю, але ця мова входить до трійки найпопулярніших в усіх рейтингах. А вже в Україні це найпопулярніша мова. І це можна зрозуміти: JavaScript – це практично весь front end та трошки back end. Правда, в back end її зовсім небагато, це Node.js, але вона там є.
Всі спроби робити front end якимись іншими мовами настільки мізерні, що й говорити про них не будемо. Зате у front end разом із JavaScript мешкає її ідейна сестра-близнючка та її надбудова, це TypeScript. Мені вона подобається куди більше, я звик до мов із суворою типізацією, і мови з динамічною типізацією мені не до вподоби.
Якщо вам подобається JavaScript і ви йдете на фронтендера, хочу попередити вас про дві речі. По-перше, front end розробник — це людина, яка працює з версткою, хоче вона цього чи ні. Отже разом з основами JavaScript вивчіть HTML і CSS, тому що працювати з ними все одно доведеться. HTML непогано знати і бекендерам, навіть якщо вони пишуть не на JavaScript, а ось CSS для них зайвий.
По-друге, якийсь відсоток часу вам доведеться працювати у графічних пакетах. Вирівняти верстку, перефарбувати кнопочку, довести до розуму дизайн – для цього потрібні графічні пакети, більшість фронтендерів їх використовує. Звичайно, самих синіорних товаришів такого роду завданнями не навантажують, а ось від новачка, швидше за все, вимагатимуть, майте це на увазі.
Java
Другий номер нашої програми – звичайно, Java. Я не міг її пропустити та не поставити на друге місце. Java займає друге місце в рейтингу популярних мов України, і це найпопулярніша бекендова мова.
Java – мова суворої типізації, настільки жорстка, що якщо ваш код скомпілювався, він, швидше за все, спрацює. Мені це подобається, а людям, які звикли до мов з динамічною типізацією, – не дуже, адже в цих мовах можна трохи сподіватися на те, що воно саме спрацює. У Java це не пройде: крок убік – і все не компілюється.
Java – досить стара мова. І хоча вона молодша за ту же Python років на 10, складається враження, що вона стара як світ, і на ній дуже багато чого написано. І це правда. Наприклад, на Java написані всі банки світу, всі фінансові та страхові системи, більшість телекому. Java – це те, що знаходиться під капотом найстаріших і найдорожчих речей. Заміни не буде, швидше за все, ніколи, в цьому просто немає сенсу заміняти те, що працює.
У Java зараз досить все стабільно, хоча якийсь час тому вона вирувала оновленнями. Досить сказати, що зараз у ходу шістнадцята версія, але відсотків сімдесят програмістів працює на восьмий, і вона всіх влаштовує. Оновлення, що відбулися з моменту виходу цієї версії, настільки незначні, що переходити нема рації.
При цьому завдання Java дуже складні. Там величезні масиви коду та складні системи. Особливість Java, як то кажуть, у тому, що ви не зможете пояснити своїм рідним, чим ви займаєтеся на роботі. Зате ви постійно почуватиметеся спецназівцем, який може зробити те, що більше нікому не під силу.
Python
Наступна мова – це суперпопулярна зараз Python. Мова це досить стара, здається, вона з’явилася аж у 1989 році. Її раптова популярність має багато причин, але головна з них – Python – це зручний інструмент автоматизації для професій, не пов’язаних з розробкою. Виявилося, що на Python можна легко і швидко склепати якийсь скриптик. Тому ним користуються і DevOps інженери, і Automation QA, і фахівці з Machine Learning, і Data Science, – словом, все, що зараз автоматизується, робиться на Python.
Як ви зрозуміли, Python – мова гнучка і проста. Ось тому на ній так комфортно писати скрипти для автоматизації. На жаль, саме тому на ній можна писати дуже говняний код. В результаті розробляти на Python великі системи можна, але боляче. Ні, вони існують, але вибираючи Python як першу мову, будьте готові до роботи з невеликими програмами.
У 2022 році Python залишається на хайпі. Причому цей хайп не у замовників, вони в захваті від інших технологій. Python на хайпі у молодих розробників, у цей напрямок рушило дуже багато людей. Тому, перш ніж обирати цю мову, подумайте п’ять разів. Якщо ви зробили цей вибір, дивлячись на інших, одумайтеся та виберіть іншу. У Python сильно підвищився поріг входу за рахунок величезної кількості новачків. А як директор навчальної компанії можу сказати, що за випускниками Python до нас ніхто не звертався. Якщо ж ця мова вам дуже подобається, тоді вибирайте Python.
PHP
Наступна мова – незаслужено нелюбима PHP. Чомусь серед програмістів прийнято лаяти цю мову і називати її поганою. Мене радують новачки, які приходять і кажуть:
- Так PHP давно помер, ось є чудова мова, Python!
Є суворі цифри, які показують, що на PHP розробляється майже вдвічі більше проектів, ніж на Python. Плюс до того, PHP була створена в середині дев’яностих, і значить, вона молодша за Python років на 10. Ще плюс, приблизно вісімдесят відсотків всіх сайтів в інтернеті створено на PHP. Мабуть, не така вже й погана ця мова!
Мені синтаксис PHP подобається набагато більше, ніж у Python, хоч вона і більш багатослівнаий. Але це тому, що на PHP я працював, а на Python ні. А вам доведеться подумати самотужки.
Попит на PHP-розробників вищий, ніж на фахівців з Python. За завданнями, наявністю фреймворків, по можливості десь щось доучити PHP від Python не відстає. Python має безліч бібліотек для автоматизації речей, не пов’язаних з програмуванням – Data Science, розпізнавання образів, і так далі. Але якщо ви web-розробник, вам це особливо не потрібно, так що web-розробникам і на PHP відмінно.
C#
Наступна мова нашого огляду – Сі Шарп (C#). Потрібно віддати належне, компанія Microsoft усвідомила свої помилки і випустила .Net Core, з яким можна розкручувати додатки на Unix-like (читай Linux) системах. В результаті справи C# останні кілька років йдуть у гору.
Головна перевага C# перед Java – на ній можна писати не тільки великі корпоративні системи. Крім Enterprise soft, на C# можна писати програми під Windows, причому досить непогані. Дуже здорово, коли однією мовою можна і сайт написати, і додаток під нього, причому гарний і красивий. Говорять, ще програми з Linux можна робити, але я сам не пробував.
C# має і окрему нішу – розробку ігор під Unity. Але про геймдев я скажу кілька слів наприкінці. Ще у цієї мови хороший і приємний синтаксис, вона динамічно розвивається, швидше за Java.
Але є й недоліки, наприклад, її автори відмовляються від зворотної сумісності. Це зупиняє замовників: ми створимо проект, а Microsoft випустить оновлення, і що все переробляти? Таким чином, C# програє Java, в якій зворотна сумісність є завжди, і код, написаний на початку 2000-х, з великою ймовірністю працюватиме під сучасною версією. А в C# він, напевно, не запуститься.
C\C++
Мови C\C++ йдуть парою, тому що С++ є спадкоємцею і логічним продовженням мови С. Мова С процедурна, вона не вміє працювати з об’єктами. Зате вона дозволяє писати невеликі, але дуже потужні програми, які працюють безпосередньо із залізом.
Тому мова С використовується в embedded розробці, наприклад, в бортових комп’ютерах літаків, автомобілів та іншої техніки. Адже в наш час навіть холодильник має процесор, до якого потрібен софт. Саме цей софт і пишуть embedded розробники мовою С, і іноді С++.
До речі про розробку ігор
Мова С++ в розробці embedded використовується рідше, тому що програма виходить значно більшою. Але її активно використовують для навантажених додатків. А що у нас зараз найнавантаженіші додатки? Правильно, ігри. Тому безліч ігор пишеться на С + + із використанням відповідних движків, або енджинів.
Один з найпопулярніших енжинів зараз це Unreal, у нас по ньому є курс. А ще у нас є курс з Unity, це ще один движок, під нього пишуть ігри на C#. Це теж хороший двигун, але Unreal його випереджає, тому що звертається безпосередньо до заліза, і, отже, тягне більш навантажені ігри. Отже якщо ви мрієте працювати в гейм девелопменті, вибір мови очевидний: це С\С++.
Swift та Kotlin
Переходимо до мов мобільної розробки, і перша з них це Swift, а друга Kotlin. Як вибрати між ними? Дуже просто. Візьміть до рук свій телефон. Якщо у вас iPhone, вам потрібна Swift. Якщо телефон на Android – це Kotlin.
Я недолюблюю Apple, але ціную в них стабільність. Це не Google, яка змінює провідні мови десять разів. Якщо Apple сказала, що у них провідна мова Swift, то це буде Swift, і якщо ви хочете розробляти під Apple, вибору у вас немає. Вчіть Swift та пишіть код під MacOS та iOS.
Припускати, що компанія Apple кудись зникне, немає жодних підстав. Мову програмування вони міняти не мають наміру. І навіть якщо вони вирішать це зробити, нова мова буде розрахована на те, що нею користуватимуться розробники Swift. Але поки що перспектив зміни мови я не бачу. Swift став офіційною мовою Apple лише кілька років тому, це дуже сучасна мова, приємна в компонуванні. Швидше Apple розвиватиме її, чим замінить чимось іншим. Так що цей напрямок надійний, серйозний і надовго.
Друга мова мобільної розробки – Kotlin. На цю мову зробили ставку в Google, оголосивши, що вся Android-розробка у них тепер на Kotlin. Раніше я говорив, що вчити Kotlin як першу мову складно і не потрібно. Тепер це стало простіше, все ще важко, але можна.
Отже, якщо ви хочете займатися мобільною розробкою не під iOS, вчіть Kotlin. Правда, Google може будь-якої миті перейти на іншу мовою. Чи подбає компанія про розробників Kotlin? Не знаю. Хотілося б у це вірити.
Go
Цього року я додаю до огляду дві нові мови, які не згадував раніше. Перша це Go Lang. Ця мова добре зарекомендувала себе для роботи з мікросервісами. Пояснити розробнику-початківцю, як це працює, досить складно. Але якщо при розробці високорівневими мовами, тому ж PHP, потрібно щось зробити дуже швидко, зазвичай використовують Go Lang.
Ця мова зараз досить популярна, попит на розробників великий, так що можна успішно війти в цю нішу. Мова займає велике місце в екосистемі Google, на ньому написано вже багато коду, який потребує підтримки, так що попит на розробників залишиться. Навіть якщо Google відмовиться раптом від цієї мови – ви знаєте Google, вони вміють миттєво відмовлятися від найнесподіваніших речей – то попит залишиться. Так що якщо ви закохані в цю мову і не бажаєте знати нічого іншого, Go – ваш вибір.
Apex
Apex – це внутрішня мова найпопулярнішої у світі CRM-системи Salesforce. Постійні читачі зараз зітхнуть і скажуть:
- Ну ось, Немчинський знову нам впарює свій Salesforce.
По-перше, він не мій. По-друге, до нас постійно приходять із різних компаній і просять:
- У вас є курс з розробки на Salesforce, віддайте нам випускників, ми заберемо всіх.
Але вмовити людей вивчати цю мову дуже складно. Проте мова ця подібна до синтаксису з Джава, на ній можна робити різні речі, прості і складні. Робота практично гарантована: ця мова недавно з’явилася на ринку, і досвідчених розробників на Apex фактично немає. У розробників синіорів стаж 3-5 років, це вам не Java, де може бути і 15, і 20 років досвіду, як у мене.
Через те, що попит великий, а пропозиція невелика, розробників на Apex відривають із руками. Тому через ці двері можна успішно увійти до ІТ, при цьому маючи дуже невеликий рівень знань. Навіть якщо ви вмієте просто налаштовувати Salesforce, ви вже будете затребуваним фахівцем.
З іншого боку, якщо ви досвідчений фахівець, скажімо, Java, але не хочете йти в Enterpise лопатити газіліони коду, і мобільна розробка вам не дуже до душі, вам теж підійде цей варіант. Подумайте у цей бік.
Завжди ваш Сергій Немчинський
Яку мову програмування обрали ви? Поділіться в коментарях.
Залишити відповідь