Учебник GO опубликован в Интернете.
Пламенный привет посетителям этой страницы, пришедшим из социальных сетей, да и всем остальным тоже!
В апреле 2021-го года наблюдал удивительное явление: обильный поток посетителей из 4-х социальных сетей. В связи с этим настоятельно рекомендую всем неоднократно и регулярно посещать сайт rtbsm.ru — там в общих чертах изложена Российская Теннисная Балльная Система Марии (Шараповой).
Приглашаю всех полюбоваться на Фото и Видео красавицы Марии — надеюсь, что Вы поделитесь адресом сайта rtbsm.ru с друзьями и знакомыми.
Главная проблема — известить Марию, чтобы она лично как можно скорее заявила на весь мир о РТБСМ.
Учебник GO лично мне нужен для того, чтобы составить чёткое представление о языке программирования GO и узнать его особенности и преимущества над PYTHON.
Информация со страницы https://habr.com/ru/companies/ncloudtech/articles/672906/ :
Что читать Golang-разработчику. Семь главных книг: от Донована и Кернигана до МакДауэлл
myoffice_ru
23 июня 2022 г.
7 мин
22 KСпрос на бэкенд-разработчиков — а Go неотделим от бэкенд-программирования — стабильно растёт. У самого же Golang немало плюсов: простой, строгий, статически типизированный, он обладает развитой стандартной библиотекой и славится поддержкой параллельного и асинхронного программирования.
При этом в Golang нет классов и нет поддержки наследования, что значительно повышает удобство поддержки кода. Благодаря этим и другим преимуществам Go в последние годы сохраняет статус популярного и перспективного языка.
В МойОфис мы широко используем Go в качестве основного языка для разработки корпоративной почты нового поколения Mailion. При этом разрабатываем на нём не только микро-сервисы, но и собственное хранилище с поддержкой дедупликации (про устройство Mailion читайте здесь).
В связи с этим мы постоянно следим за книжными новинками и актуальными темами современной бэкенд-разработки. Специальной литературы по теме Golang существует немало, однако с помощью наших разработчиков мы выбрали самые важные, профессионально полезные и увлекательно написанные издания.
Делимся рекомендациями книг под катом!
Алан А. А. Донован, Брайан У. Керниган «Язык программирования Go»
Нестареющая классика от создателей языка Go. Книга подробно описывает предназначение и преимущества Golang, показывает, как писать понятные идиоматические программы и решать практические задачи, а также отвечает на вопросы, которые могут возникнуть при изучении Go.
Более авторитетного издания по этой теме просто не существует. Руководство поэтапно переходит от общих вопросов и основных концепций к практическим инструкциям и низкоуровневым возможностям языка. Книга будет интересна и новичкам, и опытным разработчикам.
Достоинства:
- даёт структурное понимания языка от А до Я;
- легко читается.
Недостатки:
- не подходит для новичков: требуются знания базовых концепций информатики и языков программирования;
- нет информации о менеджере зависимостей, появившемся в более поздних версиях языка;
- отсутствуют ответы на задания.
Привожу информацию со страницы https://library-it.com/wp-content/uploads/2021/02/jazyk_programmirovanija_go_2016.pdf :
Донован, Алан А. А., Керниган, Брайан, У. Д67 Язык программирования Go. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2016. — 432 с. : ил.
Оглавление
Предисловие 11
Глава 1. Учебник 21
Глава 2. Структура программы 49
Глава 3. Фундаментальные типы данных 75
Глава 4. Составные типы 109
Глава 5. Функции 151
Глава 6. Методы 191
Глава 7. Интерфейсы 209
Глава 8. Go-подпрограммы и каналы 259
Глава 9. Параллельность и совместно используемые переменные 303
Глава 10. Пакеты и инструменты Go 333
Глава 11. Тестирование 353
Глава 12. Рефлексия 383
Глава 13. Низкоуровневое программирование 409
Предметный указатель 425Содержание
Предисловие 11
Происхождение Go 12
Проект Go 13
Структура книги 15
Дополнительная информация 17
Благодарности 18
Ждем ваших отзывов! 19Глава 1.
Учебник 21
1.1. Hello, World 21
1.2. Аргументы командной строки 24
1.3. Поиск повторяющихся строк 29
1.4. Анимированные GIF-изображения 34
1.5. Выборка URL 37
1.6. Параллельная выборка URL 39
1.7. Веб-сервер 41
1.8. Некоторые мелочи 46Глава 2.
Структура программы 49
2.1. Имена 49
2.2. Объявления 50
2.3. Переменные 52
2.3.1. Краткое объявление переменной 53
2.3.2. Указатели 54
2.3.3. Функция new 57
2.3.4. Время жизни переменных 58
2.4. Присваивания 59
2.4.1. Присваивание кортежу 60
2.4.2. Присваиваемость 61
2.5. Объявления типов 62
2.6. Пакеты и файлы 64
2.6.1. Импорт 66
2.6.2. Инициализация пакетов 68
2.7. Область видимости 70Глава 3.
Фундаментальные типы данных 75
3.1. Целые числа 75
3.2. Числа с плавающей точкой 81
3.3. Комплексные числа 86
3.4. Булевы значения 88
К сожалению, на этом копирование оглавления было прервано — как и вся книга, оно доступно по приведенному адресу. Скачал эту книгу целиком в формате PDF.
Продолжаю список книг:
Adam Freeman ‘Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang 1st ed. Edition’
Современное и исчерпывающее руководство по практическому применению языка Go. Фримен подробно рассказывает, как выжать максимум из языка, детально описывая не только основы, но и продвинутые возможности стандартной библиотеки. Книга начинается с примера разработки простого HTTP-сервера на Go, а заканчивается глубоким погружением в рефлексию и примитивы синхронизации.
Достоинства:
- полноценный мануал по стандартной библиотеке языка Go, построенный на конкретных примерах;
- подробное и детальное рассмотрение особенностей языка «от простого к сложному».
Недостатки:
- книга не подходит продвинутым разработчикам Go.
К. Индрасири, Д. Курупу «gRPC. Запуск и эксплуатация облачных приложений. Go и Java для Docker и Kubernetes»
Микросервисные cloud-native архитектуры уверенно заняли своё место в ИТ. Развитие механизмов межсервисной коммуникации позволяет сервисам подключаться друг к другу по сети и обмениваться информацией. Одной из наиболее востребованных на сегодняшний день технологий для организации межсервисного взаимодействия является gRPC. Он предлагает удобные кросс-языковые абстракции для обмена данными по сети. Разработчики на языке Go, а это в основном разработчики бэкенда, часто применяют gRPC и сталкиваются с рядом сложностей, в которых не всегда легко разобраться. Развёрнутой информации о gRPC не очень много, из-за чего остаётся немало «белых пятен». Пробел был восполнен этой книгой. Авторы подробно описали «кухню» gRPC и ответили на самые «больные» вопросы разработчиков и архитекторов.
Достоинства:
- написана простым языком;
- поможет структурировать знания тем, кто владеет базовыми навыками;
- много конкретных примеров.
Недостатки:
- примеры кода актуальны для более старых версий библиотеки gRPC;
- есть неточности в переводе терминологии;
- недостаточно деталей о внутренней имплементации gRPC.
Gayle Laakmann McDowell ‘Cracking the Coding Interview: 189 Programming Questions and Solutions 6th Edition’
Что делать, когда просят быстро разработать алгоритм, а затем также быстро написать безупречный код на доске? Определённо стоит быть к этому готовым. Автор, неоднократно побывавшая в ролях интервьюера и кандидата, учит тому, что даст возможность проявить себя на собеседовании наилучшим образом. Для написания этой книги МакДауэлл взяла интервью у сотен инженеров-программистов. Есть информация, что именно по ней разработчики Google готовятся к апгрейдам. Из издания вы узнаете, как раскрыть подсказки и обнаружить скрытые детали, как разбить сложную проблему на более простые подзадачи, как продвинуться, если вы застряли, изучите (или освоите заново) основные концепции программирования и попрактикуетесь в решении 189 задач для интервью. Problem solving — навык, который необходимо постоянно тренировать, если вам важно построить нетривиальную карьеру в ИТ.
Достоинства:
- 189 реальных задач из реальных интервью с вариантами их решения;
- самая популярная в Силиконовой долине книга для прохождения технического собеседования.
Недостатки:
- примеры в книге выполнены на языке Java (что, впрочем, вряд ли станет препятствием для Go-разработчика);
- целые главы книги посвящены столь нелюбимым многими программистами задачам на сдвиг битов (bit shifting) и головоломкам (brain teasers);
- мало задач высшего уровня сложности (за ними лучше идти на LeetCode).
Alex Xu ‘System Design Interview – An insider’s guide’
Собеседование в любую серьёзную технологическую компанию обязательно включает в себя system design интервью, и это один из самых сложных этапов при принятии на работу. Всё потому, что в проектировании ИТ-систем отсутствуют единственно верные решения. В данной книге представлен пошаговый алгоритм, который может быть использован для решения любой задачи этого этапа собеседования. Акцент делается на уточняющих вопросах, которые кандидат должен задать интервьюеру, чтобы правильно решить задачу. Помимо этого издание содержит множество примеров реальных систем, иллюстрирующих применение данного подхода, а заодно позволяет параллельно изучить архитектурные паттерны, применяющиеся в современной бэкенд-разработке.
Достоинства:
- качественная информация, которая позволяет сложить целостное представление о процессе построения архитектуры крупных веб-проектов;
- есть вариант с переводом на русский язык.
Недостатки:
- в некоторых примерах автор чрезмерно концентрируется на деталях конкретного алгоритма и забывает описать общую картину;
- редко бывает в продаже.
М. Клеппман «Высоконагруженные приложения. Программирование, масштабирование, поддержка»
Материалы этой книги будут полезны всем бэкенд-разработчикам вне зависимости от применяемого языка программирования. Издание обязательно к прочтению всем, кто занимается разработкой и проектированием высоконагруженных и отказоустойчивых распределенных систем. В книге Клеппмана представлены основные принципы, алгоритмы и трейд-оффы, встречающиеся при разработке высоконагруженных приложений. В первой части книги на конкретных примерах известных фреймворков и программных пакетов рассматривается общая проблематика распределённых вычислений и баз данных. Однако наибольший интерес представляют вторая и третья части, в которых автор даёт введение в теорию распределённых систем, объясняет ключевые понятия распределённых транзакций и консенсуса, рассказывает о возможностях и ограничениях протоколов синхронизации реплик в распределённых СУБД. Все эти концепции рассматриваются в контексте темы построения высоконагруженных приложений. Для изучения материала потребуется разноплановая алгоритмическая подготовка и базовое понимание внутреннего устройства баз данных.
Достоинства:
- рассмотрен широкий перечень вопросов, встающих перед разработчиком, занимающимся масштабированием веб-приложения;
- исчерпывающий список литературы для дальнейшего изучения темы.
Недостатки:
- «неровности» уровня книги: начало книги будет интересно только начинающим разработчикам, середина и конец — только продвинутым.
А. Петров «Распределенные данные. Алгоритмы работы современных систем хранения информации»
Данная книга — must-read для бэкендеров, желающих проникнуть в суть устройства баз данных. Построение баз данных является одной из самых захватывающих тем современной computer science. Реализация базы данных по сложности сравнима с написанием браузера или даже операционной системы. Огромные усилия надо приложить для реализации эффективного движка хранения данных, парсера и оптимизатора SQL-запросов, механизма concurrency control. Однако ещё больше проблем возникает при масштабировании СУБД. Дело в том, что любой высоконагруженный бэкенд всегда обладает распределённым состоянием, потому что данные никогда не умещаются на одну машину. Разработчикам приходится применять специализированные кластерные СУБД. В последние годы на рынок вышло множество систем подобного класса, однако многие проблемы, присущие таким системам, до сих пор ждут своего решения. Данное руководство помогает сориентироваться в многообразии баз данных, разобраться в их фундаментальных отличиях и оценить их потенциал. Автор, core-разработчик Cassandra с многолетним опытом работы, объясняет и систематизирует информацию по теме, доступную в Сети и других изданиях, а также делится собственным опытом.
Достоинства:
- концентрированное изложение проблематики современных баз данных;
- огромное количество систематизированного материала из других источников;
- легко читается.
Недостатки:
- в книге нет практических примеров;
- некоторые темы изложены очень детально, некоторые — поверхностно;
- возможно, цена, но книга того стоит.
***
Уверены, эти материалы помогут вам в более глубоком изучении Go. Непрерывное обучение — это хороший навык и качество, которое приносит множество преимуществ любому разработчику.
Мы обязательно продолжим делиться с Хабром рекомендациями книг и других полезных материалов для разработчиков, а также публиковать подробные статьи с экспертизой наших специалистов. Подписывайтесь на блог МойОфис и следите за нашими новостями!
Комментарии 7
1
«The Boar Book», она же «Высоконагруженные приложения» великолепна — кмк лучшее, что я прочитал за последние пять лет.
«gRPC. Запуск и эксплуатация облачных приложений» самая бесполезная книга из того. что я прочитал за последние 5 лет. В ней нет ничего, чего нельзя было бы нагуглить с более актуальными примерами и хорошим описанием. Пишу это как человек, который сначала нагуглил, а потом уже купил эту книгу, благо куплена она была в счёт L&D бюджета компании.
2
Донован. Не читал, но видение создателей языка нужно глянуть (может потом как-нибудь). Единственное, что отпугивает — год выпуска — 2018. Всё очень быстро меняется.
Эта книга больше про основы языка и как на нём можно программировать, я точно уже не помню, но там либо не используются, либо почти не используются сторонние пакеты. Основная особенность в том, что придётся самому искать много информации (в зависимости от уровня программиста) для выполнения упражнений и понимания материала. Лично для меня эта книга стала одной из самых полезных, но я встречал и максимально негативные отзывы о ней, но чаще всего это было связано с тем, что люди просто не делали упражнения, т. к. они довольно сложные, но только при выполнении упражнений начинаешь понимать полезность этой книги.
Я бы не сказал, что сам GO сильно изменился как язык за 4 года, даже интересно, чем язык в 2022 так сильно отличается от своей версии 2018 года (кроме дженериков). Как по мне сам язык почти не изменился, поменялось только окружение в виде БД, фреймворков и т.д.
4
Петрова про базы как раз читаю, очень хорошая, скорее она даже для того, чтобы спроектировать свою базу или на очень хорошем уровне понимать тонкости реализации любой современной базы. У нас выбирается хранилище для очень специфических условий, поэтому книга прям зашла.
..
!…
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В особо хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…
Опишу своё мнение от дилетанта. Сначала о представленном списке:
1. Донован. Не читал, но видение создателей языка нужно глянуть(может потом как-нибудь). Единственное, что отпугивает-год выпуска — 2018. Все очень быстро меняется.
2. Фримен. Не читал. Пролистал и сохранил себе, тк выглядит не плохо.
3. Индрасири. Может треть прочитал и бросил: очень поверхностно всё и не актуальная информация местами. Лучше уж доку читать или для поверхностного ознакомления.
4. Макдауэл. Алгоритмы… — алгоритмы никогда не меняются. Если только это не метод быстрой сортировки в go. Есть такое по алгоритмам на Go: https://github.com/TheAlgorithms/Go
5. Сюй. Есть на русском от Питера. Годная книга, т. к. у любого начинающего есть пробелы с архитектурой приложений.
6. Клеппман. Годная книга. Читать обязательно.
7. Петров. Кинул в закладки.
С каких бы я начал изучение (именно в таком порядке), если не брать во внимание банду четырёх, дядю Боба и т. д.:
1. Цукалос Михалис. «Golang для профи: работа с сетью, многопоточность, структуры данных и машинное обучение с Go». Как основа изучения Go – самодостаточная. В переводе 2-е издание. Есть третье в оригинале.
2. https://github.com/quii/learn-go-with-tests — Читать параллельно с 1. Следовать ТДД или нет — дело каждого, но без юнит-тестов никуда.
3. Мэтью А. Титмус. «Облачный Go». Читаю сейчас. Больше про высокоуровневое. Если читаете что-то в переводе, то обязательно нужен оригинал в некоторых местах.
3