Як і для чого вивчати Golang. Переваги і недоліки мови
Привіт! Мене звати Ігор, і я займаюсь програмуванням от вже 14 років. Зараз працюю в компанії Blackbird Lab. Чи помічали ви, як одні технології знаходяться на ринку вже багато років, а інші з’являються та зникають дуже швидко? Нам як розробникам постійно потрібно вивчати щось нове для того, щоб бути конкурентоспроможними на ринку праці. Але чи траплялося у вас так, що технології, які вивчаєш заради задоволення, потім знадобляться вам для роботи? Так сталось у мене.
Я почав працювати у 2008 році та довгий час займався платформою .NET. Тоді ще не було front-end чи back-end розробників, не було DevOps інженерів, не було бізнес-аналітиків. Того часу я обіймав посаду Web Developer та робив усе, що казав PM: трохи back, трохи front, трохи бази даних та всяке інше. Потім було багато різних проєкт, різних компаній.
У 2018 році я почув про мову програмування Go. На той час я працював у EPAM Systems, де деякі замовники вже використовували цю технологію. І як завжди відкрив якісь туторіали, подивився, щось написав — стало цікаво! Але реального проєкту не було, тож вивчення цієї мови було більш як хобі. Раптом одного дня мені запропонували проєкт, який вже був написаний на Go, але мігрував на .NET. Дивна ситуація, але я погодився. Так почалась моя карʼєра Go розробника.
Для чого створювався Golang
Спочатку мова програмування Go створювалась як внутрішній продукт у компанії Google. Вперше мова була представлена у 2009 році, а перший реліз відбувся у 2012. Основною метою створення цієї мови програмування було поєднання високої продуктивності компільованих мов з легкістю написання коду з підтримкою Garbage Collector. Мова вийшла досить лаконічна, але при цьому код залишається легким для читання і сприйняття.
За основні переваги мови програмування Go можна вважати наступне:
- Простий та лаконічний синтаксис.
- Статична типізація.
- Швидкість компіляції.
- Паралелізм.
- Дуже потужна стандартна бібліотека.
- Можливість писати у функціональному стилі.
Варто сказати трохи детальніше про паралелізм. Go надає механізм горутин (goroutines) та каналів, який є кілер-фічею цієї мови програмування для роботи з багатопотоковістю та паралельних обчислювань.
Чому Golang є актуальним сьогодні
Через те, що я дуже давно працював з платформою .NET в деяких аспектах я буду порівнювати Go із C# або подібними мовами. На цю мить мова програмування Go досить популярна на IT-ринку. Можна з упевненістю сказати, що попит на Go розробників перевищує пропозицію. Але чому ця мова стала популярною?
Як вже було зазначено раніше, Go — проста і лаконічна, але має переваги компільованих мов та таких платформ як .NET та Java, які керують пам’яттю та займаються прибиранням сміття. З популярністю мікросервісної архітектури Go дає можливість швидко створювати сервіси, мінімізуючи кількість написаного коду в багато разів, у порівнянні з іншими мовами. До речі, всім відомий Docker написаний на Go.
Окрім того, Go працює дуже швидко та її іноді порівнюють за швидкістю виконання з С++. Тому ця мова дуже актуальна в обчислюваннях, де критична швидкість. Дуже багато проєктів для Blockchain та криптовалют використовують цю мову програмування. Також застосовують її ті проєкти, де використовується системне програмування або взаємодія з мережею.
Go має дуже велике ком’юніті, де є величезна кількість безплатних бібліотек та фреймворків, якім можна завантажити та додати до свого проєкту. Взагалі ця мова має відкритий код, тож будь-хто може подивитись, як влаштовані ті чи інші аспекти.
Щодо вакансій на ринку України, звісно Go не може поки конкурувати з PHP, Java або .NET. Відповідно до знайденої мною статистики кількість вакансій Go розробників приблизно дорівнює кількості вакансій на iOS/Adroid або Ruby.
Але варто зазначити якість цих вакансій. Через те, що Go дуже часто використовується у стартапах або у проєктах, де необхідна швидкість обчислювань та багатопотоковість, скоріш за все вакансії будуть від відповідних компаній. Тобто майже всі вакансії повʼязані з новими проєктами у різноманітних галузях. Вірогідність, що ви будете працювати з найновітнішими суміжними технологіями дуже велика. Відповідно заробітна платня може бути у верхньому сегменті ринку та на
Недоліки Golang
Попри те, що мова програмування Go є досить потужною та дозволяє писати менше коду, є певні недоліки, які потрібно згадати. Я не буду детально вдаватися в подробиці, але зазначу лише дві основні проблеми на мою думку.
Перша проблема полягає в тому, що в Go не імплементований класичний підхід ООП. Так тут можна створювати свої типи та додавати їм певні функції, але це відбувається через механізм вбудовування, та немає класичного успадкування. Це може бути незрозуміло, якщо ви вже маєте досвід, або навчити вас «неправильному» підходу, якщо ви початківець.
Друга проблема полягає в тому, що в Go немає єдиного фреймворку для розробки. Річ у тім, що коли у Google створили Go, вони віддали її у ком’юніті, щоб мова розвивалась. Тому існує безліч фреймворків для різноманітних задач. Через це вам потрібно самим ретельно підходити до вибору того чи іншого фреймворку.
Вивчення Golang з нуля без попереднього досвіду
Важливе зауваження: якщо ви вивчаєте будь-яку технологію або мову програмування, знайдіть хороші курси, де ви можете онлайн чи офлайн навчатися та консультуватися з викладачем, та/або знайдіть ментора, який допоможе вам вибудувати правильний шлях навчання. Також я вважаю, що дуже бажано мати базові знання з архітектури комп’ютера, дискретної математики та основ програмування. Але це тема для окремої статті.
На мою думку, Go достатньо проста мова програмування для вивчення в цілому, але є нюанси у порівнянні з класичними ООП мовами, такими як С# або Java. Якщо розглядати поглиблене вивчення Go, то воно може бути складніше, ніж, наприклад, JavaScript, бо вимагає глибоких знань, як працювати з терміналом та файловою системою. Але якщо ви добре орієнтуєтесь в операційній системи та вигляд термінала не викликає у вас паніки, то у вас все вийде.
Go досить дружня мова с точки зору початку вивчення. Почати писати можна, відкривши The Go Playground прямо у браузері! Але все ж таки я б порекомендував встановити Go на компʼютер. Після цього можна встановити Visual Studio Code. Це безплатний редактор коду, який дозволить писати код та запускати ваші програми.
Далі можна зануритись у вивчення за допомогою того формату, який вам підходить більше. Це може бути перегляд відеоуроків на YouTube, курси на Udemy чи Pluralsight, або проходження матеріалу у книжках. Памʼятайте головне — пишіть більше коду. Перегляд відео уроків або читання книг саме собою не дає результатів та не відкладає знання, доки ви не відкриєте IDE та не напишете код.
Ще дуже важлива навичка — це виправлення помилок у вашому коді та вміння вирішувати труднощі. Для цього потрібно буквально вміти гуглити вашу проблему та знаходити вирішення. Звісно тут може дуже допомогти ментор, який скерує ваші зусилля.
Можу сказати, що будь-яка книга з Go буде корисна, але маю порекомендувати:
Відеоуроки на YouTube:
- Плейлист з вивчення Go
- Курси анлійскою: TechWorld with Nana та FreeCodeCamp.org
Курси на Udemy:
- GOLANG NINJA — Разработка Веб-Приложений на Go
- Go Bootcamp: Master Golang with 1000+ Exercises and Projects
Вивчання Golang як другої мови програмування
Якщо ви вже досвідчений програміст, то вивчення Go має буди для вас легкою задачею. По суті потрібно вивчити синтаксис та деякі нюанси цієї мови програмування. Але в цілому їх в рази менше ніж, наприклад, у C# чи Java.
Для професіоналів я б лише додав книгу Mihalis Tsoukalos — Mastering Go — Third Edition, також є у російському перекладі, має назву «Golang для профи». І наостанок — дуже корисний ресурс з прикладами Go by Example.
Висновок
На мою думку, мова програмування Go дуже перспективна та займатиме надалі суттєву долю ринку. Через те, що багато хто недооцінює цю технологію, поки ще відчувається дефіцит спеціалістів. Тому є можливість отримати цікавий проєкт зі свіжими технологіями на борту. Так, поки що це навряд буде великий ентерпрайз та проєкт на 150 осіб. Цю нішу ще довгий час будуть займати .NET та Java проєкти. Але якщо подивитись на перспективу розвитку back-end проєктів, то використання Go з кожним роком стає все цікавішими.
Найкращі коментарі пропустити