Мы в Quadcode любим Golang и можем рассказать о языке и его преимуществах много интересного. Всё это неспроста — не так давно мы переписали некоторые наши продукты или отдельные их модули именно на Go, чему радуемся до сих пор. В этой статье мы поделимся подборкой любимых книг, которые посвящены этому языку. Некоторые из них подходят для начинающих разработчиков, другие — для программистов с опытом.
Объединяет представленные в подборке книги одно — они могут оказаться ну очень полезными для тех, кто так или иначе связан с Go. Ещё одна ремарка: некоторые книги переведены на русский, некоторые — нет. Если перевода пока нет, то мы об этом скажем.
Эй, %username%, ты ещё не знаком с Go? Тогда пора!
Сейчас — парочка книг для начинающих. То есть совсем начинающих — тех разработчиков, кто умеет программировать на других языках, но вот с Go ещё не знаком.
Джей Макгаврен «Head First. Изучаем Go»
О чём книга: как и положено для технической литературы начального уровня, здесь обстоятельно и одновременно нескучно рассказывается о базовых понятиях, излагаются сведения, которые с вероятностью в 99,9% понадобятся разработчику, который только решился на изучение Go.
В первой части книги автор рассказывает о типах данных, функциях, переменных и массивах. Во второй уже чуть веселее — здесь разработчиков обучают более сложным нюансам работы с языком. В самом конце читателя знакомят с принципами работы с сетевыми коммуникациями, высоконагруженными системами и многопроцессорной обработкой.
Преимущества: книга написана очень хорошо, автор излагает достаточно сложные темы при помощи простого языка. Конечно, технических терминов здесь полным-полно, книга всё же о программировании, но текст осваивается быстро. Особых сложностей обычно ни у кого не возникает.
Возможно потому, что автор вплетает в повествование практические кейсы, которые позволяют быстро понять, то, что в виде голой теории воспринималось бы гораздо более продолжительное время. Не забывает автор и о теории, ведь фундаментальные знания ничем не заменить.
Минусы: разработчики, которые уже ознакомились с книгой, утверждают, что перевод мог бы быть и получше. Поэтому если вы хорошо владеете английским, лучше приобрести издание на английском языке.
Кроме того, есть мнение, что книга очень уж подробная, некоторые места можно было бы и сократить. Это уже вкусовщина — есть немало тех, кто остался очень доволен прочитанной книгой.
Максим Жашкевич «Язык Go для начинающих»
О чём книга: в ней рассматривается обширный спектр тем, куда вошло обсуждение типов переменных, функций, массивов, интерфейсов, горутин и каналов. Книга не менее полезная, чем предыдущая, причём мы бы рекомендовали прочитать и первую, и вторую, просто для полноты понимания языка. Ещё одна отличная книга для начинающих, которая написана русскоязычным автором.
Преимущества: хорошо читается, автор профессионально раскрывает тему. Как и в уже указанном выше издании, есть много примеров, кейсов, очень много тем. Прочитав книгу, разработчик совершенно точно получит представление о Go.
Минусы: некоторые читатели недовольны тем, что автор пропускает важные моменты. Встречается пара мест, где нам рассказывают «как рисовать сову». Ну то есть вы помните, да? «Рисуем два кружочка, а потом дорисовываем сову». В целом, потому и говорим, что желательно прочитать и первую, и вторую книгу. Они дополнят друг друга и не позволят читателю пропустить что-то критически важное.
Caleb Doxsey "Introducing Go"
О чём книга: её можно даже назвать брошюрой, поскольку она небольшая — всего 62 страницы. Глядя на неё, возникает сомнение, что автор реально может чему-то научить. Но, к счастью, сомнения напрасны: пособие даёт возможность быстро понять азы Go и начать ориентироваться в нюансах языка.
Плюсы: знакомство с языком пошаговое, в конце каждой главы есть задания для усвоения материала. Главы короткие, но не потому, что там мало информации, а потому, что автор не добавлял «воды». Объяснения идут в едином русле, каждый последующий раздел связан с предыдущим. Именно поэтому перескочить с раздела на раздел не получится — не изучив предыдущий материал, не сможете понять последующий.
Минусы: для этой книги нет русскоязычного перевода, так что если вы не очень хорошо знаете английский, это может быть проблемой. Кроме того, для ознакомления с книгой нужно уже быть знакомым с другими языками программирования. Без этого у вас вряд ли получится понять, что к чему. Хотя если есть большое желание попробовать — почему бы и нет.
Nathan Youngman, Roger Peppe "Get Programming with Go"
О чём книга: да все о том же — азы изучения языка Golang. Судя по отзывам тех, кто её прочел, авторы разработали оригинальную структуру обучения, так что новичок, который прочитал всё и выполнил указанные задачи, становится уже гораздо более знающим язык разработчиком.
Плюсы: книга разбита на 32 урока. Как и в предыдущем случае, уроки логически связаны между собой, детально объясняются важные нюансы, практически ничего не остается «за бортом». Пособие разбито на 7 модулей, каждый из которых знакомит с языком. Последний блок даёт возможность разобраться в таком относительно сложном вопросе, как параллельное программирование на Go. Естественно, обучают и синтаксису. Все задания можно выполнять в тестовой среде.
Минусы: книга издана только на английском, так что она подойдёт только тем из нас, кто более-менее неплохо знает язык.
Теперь переходим к среднему уровню владения Go. Если вы уже более-менее освоились и можете программировать на этом языке, рекомендуем следующие книги.
Мэтт Батчер, Мэтт Фарина «Go на практике»
О чём книга: здесь уже нет азов, предполагается, что читатель с ними знаком. Кроме того, нужно знать и другие языки программирования, включая Java или C#. Опираясь на базовые знания Golang, которые уже есть у читателя, книга знакомит с кейсами использования ЯП в облаке. Кроме того, авторы раскрывают нюансы тестирования и отладки, плюс показывают, как можно создавать относительно несложные веб-сервисы и приложения.
Плюсы: книга написана на вполне доступном языке, «воды» практически нет, авторы доступно и детально рассказывают о нюансах работы с Go. Более того, есть большое количество примеров кода, который нужен в обязательном порядке для знакомства с представленными кейсами.
Минусы: читатели говорят, что всё же в книге есть места, где хотелось бы больше технических подробностей. Кроме того, у русскоязычного перевода есть проблемы с адаптацией терминов, так что, если есть возможность, лучше ознакомьтесь с оригиналом на английском языке.
Марк Саммерфильд «Программирование на языке Go»
О чём книга: это уже подача более сложного материала, чем даже в предыдущем случае. Автор рассказывает о разработке высоконагруженных приложений и сервисов. Плюс более-менее детально показывает нюансы параллельного программирования на Golang. Раскрывает он и достоинства использования механизма динамической типизации.
Плюсы: уже после прочтения первых двух глав разработчик может создавать достаточно сложные комплексные сервисы и приложения. Отлично расписаны особенности синтаксиса, поданы несколько интересных кейсов, которые могут оказаться полезными в работе.
Минусы: их почти нет, единственное замечание — текст несколько сложный, но здесь удивляться не приходится, поскольку и тема непростая.
"The Go Bestiary: Bugs, gotchas and guidelines for go programmers"
О чём книга: её можно назвать сборником советов и рекомендаций для разработчика, которые скомпилированы и собраны воедино.
Плюсы: авторы рассказывают о практике структурирования проектов, что необходимо разработчику любого класса. Кроме того, в книге показаны наиболее распространенные и нежелательные для разработчика ошибки. Издание подходит тем, кто уже неплохо знаком с Go и способен работать над сложными проектами.
Минусы: их почти нет. Правда, отсутствует перевод на русский, но для более-менее опытного разработчика это обычно не проблема.
И, наконец, продвинутый уровень. Указанные ниже книги подойдут лишь для опытных разработчиков, которые знают не только другие языки, но и хорошо разбираются в Go — вероятно, выше среднего уровня.
Михалис Цукалос «Golang для профи»
О чём книга: она раскрывает такие важные аспекты языка Golang, как типы данных, работа с пакетами, конкурентность, сетевое программирование и многое другое. Книга не просто так получила уже второе издание — в ней рассматривается весьма обширный спектр тем.
Плюсы: автор показывает немало эффективных кейсов, охватывает широкий спектр важных для профессионального разработчика тем. Плюс рассказывает о нюансах работы в таких направлениях, как машинное обучение, нейросети, принципы совместимости Go c Git, JSON и т.д.
Минусы: их практически нет.
Nathan Cozyra "Mastering Concurrency in Go"
О чём книга: здесь раскрываются главные принципы параллелизма и показываются кейсы реализации разных проектов. Автор рассказывает об истории параллелизма, демонстрирует различия Golang с другими языками в этом аспекте. Основная задача издания — помочь разработчику создавать одновременно высокопроизводительные и безопасные приложения.
Достоинства: яркие примеры, относительно лёгкая подача материала, насколько это применимо к настолько высокотехнологическому тексту. Автор показывает нюансы различных кейсов, которые совершенно точно пригодятся разработчику в будущем.
Минусы: их нет, но книга посвящена лишь параллелизму, так что если вам нужна информация именно по этой теме, книга подходит идеально. Чему-то другому она вряд ли научит.
Ну а на сегодня всё. Если у вас есть книги по Golang, которые вы можете рекомендовать всем нам, добро пожаловать в комментарии. Кроме того, интересно будет узнать мнение читателей, которые уже успели ознакомиться с одной или несколькими книг из подборки.