Мы в Quadcode любим Golang и можем рассказать о языке и его преимуществах много интересного. Все это неспроста - не так давно мы переписали некоторые наши продукты или отдельные их модули именно на Go, чему радуемся до сих пор. Подробности самых интересных кейсов вскоре планируем раскрыть на Хабре, а пока что поделимся подборкой любимых книг, которые посвящены этому языку. Некоторые из них подходят для начинающих разработчиков, другие - для программистов с опытом. Объединяет все представленные в подборке книги одно - они могут оказаться ну очень полезными для тех, кто так или иначе связан с Go. Подборка - под катом, и, кстати, если вы уже читали какую-то из рекомендованных нами книг, расскажите о своих впечатлениях в комментариях. Поехали!

Да, кстати, еще одна ремарка - некоторые книги переведены на русский, некоторые - нет. Если перевода (пока, как хотелось бы надеяться) нет, то мы об этом скажем.

Эй, %username%, ты еще не знаком с Go? Тогда пора!

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

Джей Макгаврен. Head First. Изучаем Go

О чем книга: как и положено для технической литературы начального уровня, здесь обстоятельно и одновременно нескучно рассказывается о базовых понятиях, излагаются сведения, которые с вероятностью в 99,9% понадобятся разработчику, который только решился на изучение Go. Автор рассказывает о  типах данных, функциях, переменных и массивах. Это в первой части книги, во второй уже чуть веселее - здесь разработчиков обучают более сложным нюансам работы с языком. В самом конце читателя знакомят с принципами работы с сетевыми коммуникациями, высоконагруженными системами и многопроцессорной обработкой.

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

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

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

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

Максим Жашкевич. Язык Go для начинающих

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

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

Минусы: некоторые читатели недовольны тем, что автор пропускает некоторые важные моменты. Встречается пара мест, где нам рассказывают, "как рисовать сову". Ну то есть вы помните, да? "Рисуем два кружочка, а потом дорисовываем сову". В целом, потому и говорим, что желательно прочитать и первую, и вторую книгу. Они дополнят друг друга и не позволят читателю пропустить что-то критически важное.

Introducing Go

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

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

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

Минусы: для этой книги нет русскоязычного перевода, так что если вы не очень хорошо знаете английский, это может быть проблемой. Кроме того, для ознакомления с книгой нужно уже быть знакомым с другими языками программирования. Без этого у вас вряд ли получится понять, что к чему. Хотя если есть большое желание попробовать - почему бы и нет.

Get Programming with Go

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

Плюсы: она разбита на 32 урока. Как и в предыдущем случае, уроки связаны логически между собой, детально объясняются важные нюансы, практически ничего не остается "за бортом". Пособие разбито на 7 модулей, каждый из которых знакомит с языком. Последний блок дает возможность разобраться в таком относительно сложном вопросе, как параллельное программирование на Go. Естественно, обучают и синтаксису. Все задания можно выполнять в тестовой среде.

Минусы: книга издана только на английском, так что она подойдет только тем из нас, кто более-менее неплохо знает язык.

Теперь переходим уже к среднему уровню владения Go. Если вы уже более-менее освоились и можете программировать на Go, рекомендуем вот такие книги.

Мэтт Батчер, Мэтт Фарина. Go на практике

О чем книга: здесь уже нет азов, предполагается, что читатель с ними знаком. Кроме того, нужно знать и другие языки программирования, включая Java или C#. Опираясь на базовые знания Golang, которые уже есть у читателя, книга знакомит с кейсами использования ЯП в облаке. Кроме того, авторы раскрывают нюансы тестирования и отладки, плюс показывают, как можно создавать относительно несложные веб-сервисы и приложения.

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

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

Марк Саммерфильд. Программирование на языке Go

О чем книга: это уже подача более сложного материала, чем даже в предыдущем случае. Автор рассказывает о разработке высоконагруженных приложений и сервисов. Плюс более-менее детально показывает нюансы паралелльного програмирования на Golang. Более того, он раскрывает и достоинства использования механизма динамической типизации.

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

Минусы: их почти нет, единственное замечание - текст несколько сложен, но здесь удивляться не приходится, поскольку и тема непростая.

The Go Bestiary

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

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

Минусы: их почти нет. Правда, отсутствует перевод на русский, но для более-менее опытного разработчика это точно не проблема.

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

Михалис Цукалос. Golang для профи

О чем книга: она раскрывает такие важные аспекты языка Golang, как типы данных, работа с пакетами, конкурентность, сетевое программирование и многое другое. Книга не просто так получила уже второе издание - в ней рассматривается весьма обширный спектр тем.

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

Минусы: их практически нет.

Nathan Cozyra. Mastering Concurrency in Go

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

Достоинства: яркие примеры, относительно легкая подача материала, насколько это применимо к настолько высокотехнологическому тексту. Более того, автор показывает нюансы различных кейсов, которые совершенно точно пригодятся разработчику в будущем.

Минусы: их нет, но книга посвящена лишь параллелизму, так что если вам нужна информация именно по этой теме, книга подходит идеально. Чему-то другому она вряд ли научит.

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

Комментарии (13)


  1. aegoroff
    25.04.2022 19:11
    +5

    Тут нет самой правильной книги (по моему мнению) - Язык программирования Go

    Алан А. А. Донован, Брайан У. Керниган

    Одной которой достаточно чтобы идти в правильном направлении и развиваться


    1. quadcode_team Автор
      25.04.2022 19:41

      Спасибо за рекомендацию :)


    1. frkbvfnjh
      26.04.2022 16:10

      Это для какого уровня?


      1. aegoroff
        26.04.2022 16:22
        -1

        Да там любой для себя полезное найдет - от новичка до опытного разработчика


    1. Almas016
      27.04.2022 09:24

      А для какого уровня разработчиков это книга предназначена? И можете немного рассказать о книге(плюсы и минусы)


      1. aegoroff
        27.04.2022 15:36

        Ну вот если вы читали книгу Язык программирования С - эта примерно такая же, только для Go


  1. Tuwogaka
    25.04.2022 19:44
    +1

    Без даты выхода последнего издания оригинала - ни о чём. Тем более что Go заметно изменился совсем недавно.


  1. Thisnickname2019
    26.04.2022 08:27
    +1

    Жашкевич? Вы серьезно?)))


    1. aceofspades88
      26.04.2022 12:13

      Тоже удидивился) Из всех перечисленных достаточно Цукалоса, если чуть поглубже Bob Strecansky Hands-On High Performance with Go


    1. frkbvfnjh
      26.04.2022 16:17

      Что не так с Жашкевичем?


      1. Thisnickname2019
        27.04.2022 16:51

        Меня попросили запустить его проект на гитхабе.)) Рано ему книжки писать.


  1. eandr_67
    26.04.2022 15:34
    +2

    Вы действительно считаете книгу Цукалоса полезной? Моё личное впечатление, оставшееся от попытки прочитать этот «шедевр»:

    • Бессистемный поток сознания — постоянные перескакивания с темы на тему.
    • Куча обрывков тривиальной информации, которым не место в «для профи». Именно обрывков, а не системных знаний: новичку по ним научиться чему-то невозможно.
    • Когда же автор накнец-то добирается до более серьёзных тем, он тут же прекращает объяснения и предлагает прочитать документацию по Go.
    • И, как вишенка на торте, совершенно шедевральное объяснение указателей, сводящееся к предложению самостоятельно узнать о том, что такое указатели, у любого разработчика на языке C.
    • Сознательное демонстративное игнорирование Code Style — с мотивировкой «мне так больше нравится».
    • Крайне низкое качество кода в примерах.
    • Множественные фактические ошибки в тексте, демонстрирующие не слишком хорошее знание автором языка Go.

    И полностью согласен с высказанным выше мнением, что на первом месте должна быть книга Кернигана & Донована.


  1. Aleks2k
    27.04.2022 09:24

    Хорошо заходит "Профессиональный Go" \ "Pro Go" - Фриман Адам