6 поводов освоить Golang и 1 причина этого пока не делать



    Многие из вас наверняка присматривались к своеобразному Go и хоть раз, но задумывались о переходе на него. Руководитель онлайн-курса «Разработчик Golang» Антон Телышев (работал в Mail.ru, Kaspersky Lab, Сбербанк) рассказал, почему этот инструмент действительно оправдывает ажиотаж вокруг него и кому имеет смысл освоить Go.

    Привет! Я сам перешел на Go с «питона» и «плюсов», как и некоторые мои коллеги-преподаватели:



    И сейчас хочу выделить несколько причин, почему стоит освоить это язык.

    1. Простота и надежность Golang


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

    Golang изначально был создан на замену C++. «Плюсами» можно заткнуть различные bottle necks, писать сложный и высокопроизводительный код. Но при этом обучение C++ долгое и сложное, особенно понимание последних стандартов, а вероятность «выстрелить себе в ногу» у начинающих разработчиков довольно высока. Да, в плане производительности Go не дотягивает в каких-то местах, но он компенсирует это более низким порогом входа.

    2. На Go разрабатывается сложный и интересный софт


    По моим наблюдениям сейчас есть две тенденции. Первая, что вы на Go собираете сервисы, которые перекладывают JSON из одного места в другой — это в основном встречается в крупных компаниях, данные задачи не всегда отличаются особой сложностью и часто решаются готовыми инструментами, написанными за вас. А вторая тенденция — то, что Go занял нишу вещей, которые пишут обычно на C++: производительный бэкенд, математика, обработка данных, ключевая нетривиальная бизнес-логика. В общем то, что раньше возлагалось на плечи «плюсов», .Net или Java, сейчас пытаются возложить на Go. Вспомним тот же Docker или Kubernetes.

    3. Крупнейшие компании все активнее используют Golang


    Если зайти на ХедХантер, в топ Go-компаний можно обнаружить Авито, который с PHP почти весь перешел на Golang, OZON, который полностью на Go, Wildberries, который работает на C++/ Rust и Go, а также Joom и Mail.ru (Почта, Delivery Club и тд). Как мы видим, в основной массе сейчас это маркетплейсы. Кстати, Mail.Ru можно назвать первопроходцем Go: в своё время Почта была переписана с Си на Go и один только easyjson чего стоит своим вкладом в сообщество.

    4. Тренд «переписать на Go». Но при этом не для всего есть библиотеки на Go


    Как раньше все, например, переписывали с Perl на Python, теперь все переписывают с Python на Go. И пока еще не для всего есть библиотеки, при желании вы можете внести свой вклад в сообщество. Например, реализовать что-то для машинного обучения или очередную библиотеку для конфигурирования, работы с изображениями и пр. и пр. и т.д. Хотя библиотек на Go много, его экосистема все еще не такая богатая, как в других языках.

    5. Тренд на микросервисы


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

    6. Разработчиков мало, и они стоят дорого


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

    Резюмируя, я думаю, что Golang действительно перспективная технология и с точки зрения оптимизации процесса разработки, и с точки зрения карьеры.
    Единственная причина, по которой я советовал бы подождать пока с Go — если вы рассматриваете его для себя, как первый язык.

    Основная проблема новичка в том, что в Go есть вещи, которые все-таки немного пониже, чем в том же Python или любом другом интерпретируемом языке. Придется думать о том, как работает память, планировщик, как все же местами не выстрелить себе в ногу — обычно этих вещей новички не знают. Если вы учите, грубо говоря, C++, то вы спокойно ориентируетесь в указателях, в магии низкоуровнего программирования.

    Так и наш онлайн-курс «Golang Developer. Professional» ориентирован на тех, кто уже знаком с программированием. Тех, кто приходит учиться, я могу выделить в три категории:

    • Разработчики с опытом от 3-х лет, которые захотели перейти на новый язык ради новых и более сложных задач, работы в интересном проекте, вырасти в зарплате. После курса можно будет претендовать на Middle/ Senior позиции при условии, что уровень программирования у вас на достаточно высоком уровне.
    • Администраторы, DevOps-инженеры, сетевые инженеры, которые решили переквалифицироваться в разработчики и заинтересовались Go. При наличии понимания основных принципов программирования можно пройти обучение, хоть и будет сложно. А после этого подобрать начинающую вакансию будет несложно — в направлении Go-разработки их достаточно много.
    • Go-разработчики с опытом от 1 года, которые испытывают необходимость систематизировать и прокачать свои навыки. На курсе мы как раз углубляемся в возможности Go, разбираем рабочие кейсы и пробуем все на практике.

    Мы постарались сделать курс глубоким и полезным, а не «капитанским». Программа из 35 вебинаров прокрывает все необходимые знания в разработке и развертывании. И кроме того, с каждым потоком мы обновляем примеры, убираем то, что уже неактуально, и добавляем полезные тренды. Материала для освоения — вебинаров, конспектов, практики, ревью от преподавателей, рекомендуемой литературы и статей — получается очень много. Кстати, у нас есть студенты, которые записываются на курс повторно, чтобы пройти новые темы и закрепить старые знания.

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

    Если вы подумываете о том, чтобы освоить Golang, я приглашаю вас пройти вступительный тест на наш курс. Ждем вас в OTUS!
    OTUS
    Цифровые навыки от ведущих экспертов

    Комментарии 18

      +19

      Причины, чтобы освоить %что угодно%:


      1. За это платят деньги
      2. Это интересно

      Причины чтобы не осваивать %что угодно%:


      1. Это не интересно
      2. Денег за это не платят

      Спасибо, что пришли на мой TED Talk

        –1
        Не надо, не ходите сюда пока не накипело.
          +8

          Go отлично не подходит для написания бизнес логики, поэтому писать на нем корпоративные микросервисы можно либо из-под палки или ты фанат языка и разумные доводы для тебя пустой звук.
          А нишу С++ гораздо правильней закрывать Растом.
          И простота и надежность как то утомили, тк это — рекламный булшит, никак не связаный с реальностью.

            –2

            А где доводы?

              +5
              Довод в отсутствии метрик и какой-либо статистики/сравнений langname1 и langname2. Отсутствии в силу невозможности сравнения надежности ножниц и молотка:
              Ножницы сломаются через 10 000 разрезанных листков, молоток не сломается никогда, но листки «разрезанные» им будут, мягко говоря, сомнительного качества.
                +1

                Изначально статья (и не только эта) утверждает что-то и не пытается доказать. Мне же доводы повторять в каждой подобной статье утомительно.
                Хотите возьмем какое то утверждение из статьи и приведите ваши доводы.

                  –1
                  Изначально статья (и не только эта) утверждает что-то и не пытается доказать.

                  Конкретно эта статья целиком рекламная, и состоит на 99% из воды, которую в принципе доказать нельзя. Пункты, которые тут написаны применимы ко многим языкам и напоминают гороскоп.


                  Но, тем не менее, это вы категорично утверждаете, что "писать на нем корпоративные микросервисы можно либо из-под палки или ты фанат языка". Вот вы и приводите "разумные доводы".

                    +3

                    В Го у вас нет ни системы типов как в Хаскеле ни ООП с Генериками как в Джаве.
                    Поля у вас или доступные всем внутри пакета или вообще доступные всем. И сделать приватные поля/методы для вашего обьекта вы не можете.
                    Обработка ошибок кривая — мой комментарий к другой статье

                      –2

                      Это в каких-то летописях записано, что без системы типов хаскеля и дженериков бизнес-логику писать нельзя?


                      Или что приватные поля объекта — это необходимые условия для БЛ.


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


                      А вы, как и многие другие пробуете натянуть джаву на синтаксис от го, и говорите что получается говно. Конечно у вас говно получится, если использовать инструмент не так, как он задуман.

                        +2
                        Это в каких-то летописях записано, что без системы типов хаскеля и дженериков бизнес-логику писать нельзя?

                        Потому что это про различные типы. Там не надо с зеро-кост получать откуда то байты и потом их передавать. А надо уметь выражать бизнес сущности и их отношения между собой. В Го мы можете написать к примеру умный и сложный билдер для вашего User, но вы спокойно в методах UserAddress который в том же пакете сидит будете иметь возможность создать User напрямую с доступом ко всем приватным полям.


                        что изначально имеет совсем другие подходы к проектированию программ.

                        Расскажите какие правильные парадигмы для написания бизнес логики в Го, что они столь отличаются от всех других языков.


                        А вы, как и многие другие пробуете натянуть джаву на синтаксис от го,

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


                        И посмотрите на ваш ответ — в нем опять никакой конкретики в чем я не прав, а лишь отрицание фактов и ничего вы не понимаете

                          –1

                          Ещё раз: это вы утверждаете, что го для бизнес-логики не подходит, не я.


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


                          Вы не говорите почему он не подходит для бизнес логики, вы говорите, что в нем нельзя использовать инструменты и методы, к которым лично вы привыкли для написания БЛ.
                          Это не является принципиальным препятствием к написанию БЛ быстро и легко.


                          Я, может, хочу на курсы записаться потому что не понимаю ничего.

                            0

                            Начнет с того, что статья утверждает, что на все бросились переписывать с Питона на Го и распиливать свои монолиты на Го.


                            Вы не говорите почему он не подходит для бизнес логики,

                            Свое видение я привел, почитайте мой предыдущий коментарий.


                            Это не является принципиальным препятствием к написанию БЛ быстро и легко.

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

                              +2
                              Не обращайте на него внимания. Там по первому комментарию все понятно было.

                              Есть такая добрая традиция: в каждое обсуждение Golang всенепременнейше придет человек, который будет утверждать, что Go — ошибка, и переписывать надо было на Rust.

                              К слову, кое что, чего Go дать не может, Rust дает. Ощущение элитарности — неотъемлемая часть философии Rust.
                                –1
                                Вы не говорите почему он не подходит для бизнес логики, вы говорите, что в нем нельзя использовать инструменты и методы, к которым лично вы привыкли для написания БЛ.
                                Это не является принципиальным препятствием к написанию БЛ быстро и легко.

                                Это какая-то странная демагогия. Существуют общепринятые методы и подходы написания бизнес-логики, которые не зависят от языка. Подходы, которые строятся на абстракциях, изолировании бизнес и технической логики, кастомизируемости, SOLID и всех вот этих полезных штуках. Посмотрите сколько паттернов проектирования не получается нормально реализовать на go)


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


                                А еще go довольно низкоуровневый, среди высокоуровневых.


                                Разговоры про go-way мне кажутся довольно ироничными, потому что в итоге и ошибки им приходится двигать в нормальную сторону (ведь наступить на проблему с/с++ было необходимо) и зависимости (опять наступили на проблему с/с++).

                            0

                            Хоть я и тоже считаю, что на го сложно писать бизнес-логику в, скажем так, DDD стиле (сущности, сервисы и т. п.), но не считаю что из-за недостаточных модификаторов доступа или отсутствия дженериков. Го заставляет писать в стиле анемичных моделей или C-структур и функций. Опять же обработка ошибок громоздкая: за деревьями if err!=nil невидно леса предметной области. Хотя,, с большой вероятностью, я просто не умею готовить го, но вот внятных туториалов как в го выразить сложную БЛ не нашёл с полгода назад даже на английском. Всё как-то про перекладывание джсончиков в базу, внешний http сервис, очередь и обратно

                    0

                    Не туда отписал.

                      0
                      Спасибо за отличную статью!
                      Более 1,6 миллиона разработчиков программного обеспечения по всему миру, 1200 компаний, которые его приняли, растущая база поклонников, огромный потенциал для создания легких и хорошо масштабируемых приложений — все это о Golang!
                      Хочу поделиться интересной статьей по этой теме — https://blackthorn-vision.com/blog/what-golang-used-exciting-features-advantages. Это может быть интересно людям как дополнение к вашей статье.
                        +1
                        Статья попалась в поиске по слову «rust».
                        Прочитав название, решил, что 6 поводов перейти на go — стандартные рекламные лозунги. А причина этого не делать — существование Rust.
                        С первым был близок. Со вторым промахнулся)

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое