Стоит ли учить golang как первый язык программирования
Перейти к содержимому

Стоит ли учить golang как первый язык программирования

  • автор:

Зачем вам учить Go

Источник картинки

Go — относительно молодой, но популярный язык программирования. По данным опроса Stack Overflow, именно Golang получил третье место в рейтинге языков программирования, которые хотели бы освоить разработчики. В этой статье мы попробуем разобраться в причинах популярности Go, а также посмотрим, где этот язык используется и почему его вообще стоит изучать.

Немного истории

Язык программирования Go был создан компанией Google. Собственно, его полное название Golang — производное от «Google language». Несмотря на то, что в анонсе язык был назван молодым, в этом году ему исполняется уже десять лет.

Цель, которая стояла перед создателями Go — разработать простой и эффективный язык программирования, который мог бы использоваться для создания качественного программного обеспечения. Роб Пайк, один из создателей Go, заявил, что Go разрабатывался для программистов компании, которые относительно недавно закончили учиться и знают Java, C, C++ или Python. Go для них — язык, в котором можно быстро разобраться и к которому быстро привыкаешь.

Изначально он был инструментом внутри Google, но с течением времени вышел из недр корпорации и стал достоянием общественности.

Преимущества языка

У Golang есть большое количество плюсов, как известных, так и не очень.

Простота. Собственно, это была основная цель создания языка, и ее удалось достичь. У Go достаточно простой синтаксис (с определенными допущениями), поэтому приложения можно разрабатывать быстрее, чем на некоторых других языках. И здесь есть два интересных момента.

Во-первых, Golang достаточно быстро может изучить полный новичок в программировании — тот, кто не знает вообще ни одного языка и только собирается стать разработчиком. О Go можно сказать, что он почти такой же несложный (относительно, конечно), как PHP или даже Pascal, но такой же мощный, как С++.

Во-вторых, Go может освоить уже «сформировавшийся программист», тот, кто уже знает один или несколько языков. Чаще всего разработчики изучают Go после того, как освоили Python или PHP. Далее некоторые программисты с успехом используют пару Python/Go или PHP/Go.

Большое количество библиотек. Если вам не хватает какой-либо возможности в Go, можно воспользоваться одной из множества библиотек и выполнить требуемую задачу. У Go есть еще одно преимущество — можно без проблем взаимодействовать с библиотеками языка Си. Есть даже мнение, что Go-библиотеки — это обертки для C-библиотек.

Чистота кода. Компилятор Go позволяет держать код «чистым». К примеру, неиспользуемые переменные считаются ошибкой компиляции. В Go решается большая часть проблем форматирования. Это делается, к примеру, при помощи программы gofmt при сохранении или компиляции. Форматирование правится автоматически. Подробнее обо всем этом можно узнать в туториале Effective.

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

GoDoc. Утилита, которая очень сильно упрощает документирование кода. Большим плюсом GoDoc является то, что здесь не используются дополнительные языки вроде JavaDoc, PHPDoc или JSDoc. Утилита использует максимальное количество информации, которую она извлекает из документируемого кода.

Обслуживание кода. Его легко обслуживать именно благодаря простому и лаконичному синтаксису. Все это — наследие Google. Поскольку у корпорации огромное количество кода для различных программных продуктов, а также десятки тысяч разработчиков, которые все это разбирают, то появляется проблема обслуживания. Код должен быть понятен всем, кто над ним работает, хорошо документированным и лаконичным. Все это возможно с Go.

При этом в Golang нет классов (есть структуры, struct), нет поддержки наследования, что значительно упрощает изменение кода. Плюс нет исключений, аннотаций и т.п.

Что можно написать на Go

Практически все, за исключением некоторых моментов (например, разработки, связанные с машинным обучением — здесь больше подходит все же Python с низкоуровневыми оптимизациями на C/C++ и CUDA).

Все остальное можно писать, особенно это актуально в отношении web-сервисов. Кроме того, на Go стоит разрабатывать приложения как для конечного пользователя, так и для разработки демонов, UI, он подходит для кроссплатформенных приложений и сервисов.

Востребованность Golang

С течением времени язык становится все более востребованным. Кроме тех компаний, что присутствуют на картинке выше, с Golang работают Mail.ru Group, Avito, Ozon, Lamoda, BBC, Canonical и другие.

«Мы решили масштабировать бизнес, нам важно построить принципиально новую технологическую платформу, которая обеспечит быстрое развитие продукта. Делаем ставку на Go из-за его скорости и надёжности, а главное — аудитории программистов, которая его использует», — заявили представители Ozon в 2018 году, после того как компания приняла решение перейти на Golang.

Ну а что насчет доходов заработная плата Go-разработчика в прошлом году составила в среднем 60-140 тыс. рублей по данным «Моего Круга». По сравнению с 2017 годом этот показатель увеличился на 8,3%. В 2019 году, скорее всего, рост продолжится, поскольку разработчики Golang нужны очень многим компаниям.

Что дальше?

Останавливаться в развитии Golang точно не будет. Потребность в хороших специалистах, которые знают этот язык, будет только возрастать, так что работу специалисту (начинающему или профи) найти будет несложно. В принципе, это утверждение актуально и сейчас, поскольку на рынке IT наблюдается постоянный дефицит разработчиков.

Go хорош как для начинающих программистов, так и для профи, кто уже знает один или несколько языков программирования. Выучить его или переучиться может практически любой программист.

Статья готовилась совместно с преподавателем курса Golang в GeekBrains Сергеем Кручининым, за что ему огромное спасибо!

Стоит ли учить golang как первый язык программирования

МЕРОПРИЯТИЯ

Всероссийский хакатон по биометрии

В чем, на ваш взгляд, преимущество Go перед другими языками?

Популярные По порядку
Не удалось загрузить комментарии.

ВАКАНСИИ

Преподаватель на курс БД SQL в Proglib.Academy
по итогам собеседования

Методист-педагогический дизайнер в Proglib.Academy
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

7 языков программирования, которые ты должен знать в 2020 году

Какой язык учить, чтобы стать востребованным разработчиком? Ловите ТОП-7 языков программирования, необходимых в 2020 году.

ТОП-10 языков программирования будущего: на чем кодить в 2019?

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

10 лучших языков программирования для изучения в 2018 году

Оставаться на высоте — это главный фактор в мире IT. При этом выбрать из более 600 уникальных языков программирования лучший язык — нелегкая задача.

Стоит ли учить Go в 2023 году

Да, если хотите хорошо зарабатывать и не переживать о поиске работы — на рынке специалистов по языку Golang критически не хватает.

Обложка поста Стоит ли учить Go в 2023 году

Сегодня Go входит в топ-10 самых востребованных языков по версии GitHub. Он уже обогнал C#, С и PHP и стремительно движется в пятёрку лучших, наступая на пятки JavaScript.

Чем так хорош Go и почему стоит начать учить его прямо сейчас, рассказываем в статье.

Для каких задач используют Go

Go, или Golang, — довольно молодой язык, который разработали в Google в 2009 году. Его задача — максимально ускорить и упростить программирование на бэкенде.

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

На этом языке написан Docker — самая популярная программная платформа для разработки, доставки и запуска контейнерных приложений. А ещё Kubernetes — сервис для автоматического управления контейнеризованными приложениями.

В чём плюсы языка программирования Go

Производительность

Разработчики хотели создать язык программирования, который будет таким же быстрым, как C и C++, и простым, как Python. Поэтому в основе Go — лучшие функции из этих языков в сочетании с Pascal, Oberon и Modula.

В первую очередь Go проектировался для конкурентных и параллельных вычислений, поэтому приложения на нём работают быстрее и потребляют меньше памяти, чем, например, на Java.

Встроенные инструменты

Они выполняют все монотонные действия: форматируют программы, создают документы, упрощают сложные синтаксические конструкции, ищут ошибки в коде и т. д.

Go-разработчики могут не тратить время на рутину и поиск дополнительных инструментов для упрощения работы — всё уже продумано.

Простой синтаксис

В Go всё просто и лаконично: нет наследования, классов, объектов и сложных функций.

За это его любят в больших компаниях, где разработчикам часто приходится переходить с одного проекта на другой. Чужой код на Go можно легко прочитать, следовательно, быстрее включиться в рабочий процесс.

Лёгкий вход из любого стека

Здесь можно выделить сразу несколько преимуществ:

  • Большое количество библиотек — внутри языка есть стандартные пакеты практически под каждую задачу. Сюда же можно подключить библиотеки для С и С++.
  • Простая и понятная документация — в официальном руководстве всего 50 страниц, включая примеры. Поэтому опытный разработчик сможет быстро освоить Go как второй язык.
  • Развитое дружелюбное комьюнити — оно активно продвигает Go в IT-сфере, регулярно разрабатывает для него новые инструменты и максимально открыто к общению. Так что можно спрашивать, не стесняясь.

Где работать Go-разработчиком

Судя по спросу на российском IT-рынке, там, где хочется. Компетентных Go-разработчиков довольно мало, а потребность в них высокая.

Если посмотреть на вакансии HeadHunter, специалистов активно нанимают в следующих сферах:

  • Финтех — 17,6% от всех вакансий;
  • E-commerce — 11,9%;
  • Телеком — 7,6%.

Go-разработчики нужны таким крупным компаниям, как Ozon, 2ГИС, Wildberries и МТС, конечно. У нас, например, на Go написаны десятки сервисов компании, так что мы тоже регулярно ищем компетентных людей.

За границей язык программирования Go используют такие гиганты рынка, как Microsoft, Netflix и другие.

Сколько зарабатывают Go-разработчики

Много. Поскольку Go-разработчиков мало, а вакансий значительно больше, работодатели готовы предлагать кандидатам хорошие деньги. И это при том, что зарплаты специалистов продолжают расти: в сравнении с первым полугодием 2022 года они уже выросли на 22%.

По данным «Хабр.Карьеры», Go вошёл в тройку самых прибыльных языков программирования. Медианная зарплата Go-разработчиков составляет 250 тысяч рублей в месяц — в этом вопросе они смело конкурируют с джавистами и питонистами.

Средняя вилка по российскому рынку — от 50 тысяч на позиции джуна до 450 тысяч у сеньора.

Как стать Go-разработчиком

Совет для новичков простой: начните с базы.

  • Общие принципы backend-разработки.
  • Основы разработки микросервисов.
  • Работа в Linux.
  • Базовые навыки по работе в Git.
  • Основные функции, операторы и типы данных языка Go.
  • Базы данных и умение формировать запросы.
  • Принципы работы с протоколом HTTP.
  • Основы многопоточности.
  • Тестирование качества кода.

Также в идеале нужно освоить дополнительный язык программирования для бэкенда: Python, PHP или JavaScript.

Если вы уже крепкий специалист — почаще заглядывайте в раздел «Вакансии». Мы регулярно ищем компетентных разработчиков на новые проекты.

Следите за новыми постами по любимым темам

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

Стоит ли браться полному новичку за язык Go?

Здравствуйте! Для новичков, которые вообще не программировал ни разу, ни на каких языках, стоит ли браться за язык Go? Я хотел освоить язык Си, но, книга которую я читал неудовлетворил меня, до половины прочёл и заброисил это дело, уж очень сложно там написано. Это Стивен Прат, Язык программирования C. Лекции и упражнения, 5-е издание (2013). И разачарован в языке Си. А теперь немного погуглив, нашёл язык Go, что, мол он тоже почти похож как Си, но только легкий для освоения. Посоветуйте как поступить в моём случае? Цели мои: понять, вообще что такое программирование, и сделать крепкую опору изучив один язык, мог понимать другие языки.

  • Вопрос задан более трёх лет назад
  • 4414 просмотров

Комментировать
Решения вопроса 0
Ответы на вопрос 9

EreminD

Кое-что умею

возьмите питон
у него порог вхождения тоже невысокий
только вот область применения шире — больше практической пользы для себя извлечете

Ответ написан более трёх лет назад
Нравится 7 5 комментариев

juhaceca

juhaceca @juhaceca Автор вопроса
питон так питон, а насчет rust’а что скажете?
juhaceca: нет. Rust точно не лучший выбор для новичка. Как и С++.

juhaceca

juhaceca @juhaceca Автор вопроса
Yustas Alexu: то есть они похожи по сложности?
juhaceca: не стоит лезть в омут с головой, для начала прогуляйтесь по луже воды, вдруг это не ваше.

juhaceca

juhaceca @juhaceca Автор вопроса
Yustas Alexu: ясно, спасибо за наводку!

fedorez

Хатуль мадан

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

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

Ответ написан более трёх лет назад
Нравится 5 2 комментария

10-летние дети обычно делают много ошибок в речи и письме, потому что последовали вашему примеру и не читали книжек.

fedorez

Yustas Alexu: неважно. зато они говорят. и их понимают. Примером обратного подхода является подавляющее большинство школьников, изучавших иностранные языки — имеются некие знания теории вопроса и грамматики — но общаться не могут, идиом не знают и ошибки в стиле «мгимо финишед». и полное отсутствие интереса к процессу.
я не говорю что не надо читать книжек, не надо так. я вообще за то чтобы читать монографии. но «изучать язык» по книге просто читая книгу с целью выучить язык — непродуктивно.

bitver

Для начала нормально, но без знания английского будет немного сложнее.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Легко начать, но тяжело стать мастером.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Go точно хорошо осваивается теми, кто знаком с другими языками. Программист на Java или C++ может начать писать код на Go за неделю. Стоит ли брать его как первый язык — это вопрос. Столкнувшись с другими языками вы можете начать искать аналогии из Го, которых в других языках нет. Впрочем как один из первых языков — кажется вполне. Попробуйте. Первичное ознакомление больше недели занять не должно.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Exception handler
Go сильно недоразвит и сырой. Не вижу смысла
Ответ написан более трёх лет назад

Там даже нет классов, а значит нет ООП. Конечно это не панацея, но большинство разработчиков все таки привыкли к ООП.

Tyranron

romy4 серьезно? Можно пруфы? Ничего, что разработчики с момента выхода стабильной версии Go 1.0 только и делают фактически что вместо ввода 100500 фич, топят в улучшение производительности и оптимизацию? Как Вам хотя бы это https://habrahabr.ru/company/mailru/blog/305614/ ?

Tyranron: можно. я писал на Go под гугл клауд платформу, так он выполняется по скорости на уровне пхп 5. но гемороя с ним на порядок больше! он ещё непонятнее, чем С. Он очень жрёт память, постоянные утечки. Я гуглил эту тему и в итоге решил, что ну его нафиг под серьёзные проекты юзать. Там слишком всё неочевидно и недопилено.
статейку читал)
могу лично скинуть то что писал на го под гугл клауд. это моё имхо, но за него надо браться лишь тем, кто уже хорошо шарит С и ему просто лень следить за памятью

Tyranron

romy4: видимо дело вкусовщины. Каждому удобен свой инструмент. Мой опыт как раз противоположен Вашему. Расход памяти меньше, работает шустрее, простые и понятные примитивы, которые удобно компонуются. С памятью проблем не было, не текло, управление ею ведь не ручное. В C шарю на уровне «понять что делает строка кода, с гуглением». После синхронного PHP, конечно же, понадобилось въехать в асинхронщину и concurrency, чтобы нормально писать на Go, но это дело наживное. Чего-то неочевидного и неявного я особо не встречал, да и у создателей одна из основных позиций «явное лучше неявного».
Я понимаю, что у Go не самый выразительные и изящные синтаксис и система типов, мягко сказано. Но как платформа по шустрости он очень даже ниче. А учитывая то кол-ва софта которое на нем пишется, причем далеко не только закрытыми компаниями, а огромными опенсорс-комьюнити, учитывая те решения, что на нем уже написаны и как они работают, я обьективно никак не могу сказать, что Go недопилен, недоразвит или сырой. Определенно ему есть куда развиваться. Но его и так в продакшне уже тоннами.

Tyranron: у нас система принимает реквест, оборачивает в json и сейвит статистику. казалось бы просто, но по скорости работы — php5. так что смысла не увидел. может, не та задача.

Николай:
type Book void print();
>
в принципе ничем не отличается от
class Book void print();
>

и
Book b1 = create Book(«Object Thinking») String title;
Book(String t) this.title = t;
>
public void print() print(«My title: » + this.title);
>
>
от
Book b1 = new class(«Object Thinking») extends Book String title;
Book(String t) this.title = t;
>
public void print() print(«My title: » + this.title);
>
>

всё это синтаксический сахар.

Ruby on Rails junior

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

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

Amfore

Для новичков, которые вообще не программировал ни разу, ни на каких языках, стоит ли браться за язык Go?

Я в данном случае вообще бы порекомендовал пройтись по основам программирования, алгоритмам и основам логики.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

А теперь немного погуглив, нашёл язык Go, что, мол он тоже почти похож как Си, но только легкий для освоения.

Нет, он сделан гораздо хуже, чем C. В нём многие недоделки выдаются за такие якобы гениальные возможности. Например, необходимый копипаст или if’ы на три страницы выдаются за очень ясный код, поэтому его типа так много. А дело только в том, что они придумали, что фигурные скобки должны стоять всегда и на отдельных строках. В C функция занимает одну или две строки, в Go та же самая функция занимает шесть строк и это всё выдаётся за гениальность. В итоге код из трёх функций в C занимает 25 строк, а в Go — три страницы. Также если брать длину строки в коде, то в Go вернулись к длинным строкам в стиле PHP, когда это всё просто невозможно читать, потому что для прочтения одной строки нужно три раза ходить чай пить. Когда в Питоне, например, вводят правило 80 символов на строку, которого даже в C не было, хотя оно хорошее и снимает много проблем, то в Go делают наоборот и на все вопросы заявляют, что они гении, поэтому знают, как лучше. Поэтому никакого желания читать Go’шный код нет, так как каждый раз ты знаешь, что это неповоротливый код в три строки, размещённый на трёх страницах.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *