golang

«Алгоритмы на языке Go». Книга, которую ждали

  • четверг, 7 мая 2026 г. в 00:00:14
https://habr.com/ru/companies/bhv_publishing/articles/1032182/

Привет, Хабр.

Сегодня познакомим вас с самой долгожданной новинкой апреля — книгой «Алгоритмы на языке Go», которую мы успели выпустить в продажу 30 числа.

Автор книги — Артём Михайлов, пишущий на Хабре под ником Morettom @morett1m, Go- и Rust-разработчик, также ведущий телеграм-канал  t.me/coreartem.

Внимательные читатели не будут удивлены увидеть эту книгу, поскольку мы систематически наполняем наш ассортимент качественными книгами по алгоритмам для очень разной целевой аудитории. Наиболее фундаментальный труд в этой области, который мы переиздаём и допечатываем на протяжении многих лет — это «Алгоритмы» Стивена Скиены (сейчас актуально 3-е издание). Важнейшие книги по алгоритмам для начинающих, которые мы выпустили в последние годы – это «Алгоритмический тренинг. Решение практических задач на Python и C++» Максима Иванова и «Базовые алгоритмы. Реализация на Python и C++ на примере классических игр»  Павла Довгалюка.

Таким образом, мы стараемся учитывать, на каком языке программирования объясняются алгоритмы — это важно с точки зрения подготовки к собеседованию (для большей наглядности код в двух последних вышеупомянутых книгах даётся в виде билингвы).

Своеобразный левел-ап в этом стратегическом направлении, задуманный нами — это книги по алгоритмам с реализациями на Go и Rust. Книга по алгоритмам с реализациями на Rust сейчас активно готовится, но постепенно перешла в категорию «не трогай, это на новый год!» (уважаемый автор, если вы это читаете - мы вас не торопим, но, как видите, уже начинаем готовить аудиторию к встрече с вашей книгой). Артём Михайлов справился с работой раньше — и бурный старт продаж его книги полностью оправдал наши ожидания. Постараемся в достаточном количестве привезти её на книжный салон, который пройдёт на Дворцовой площади в Санкт-Петербурге с 21 по 24 мая.

Что в книге

К настоящему времени язык Go, как правило, изучается как второй язык программирования. Первым языком для Go-разработчиков зачастую выступает Python, реже – С или C++. Такой вывод можно сделать эмпирически, а также, например, по этому и этому тредам на Reddit. Кстати, не так давно на Go переписали TypeScript, так что в эту группу добавляется и JavaScript как первый язык. Ранее в этом году у нас выходила книга Юлии Поповой «Go: разработка приложений в микросервисной архитектуре с нуля», о которой мы также писали на Хабре.  Поэтому и подбор алгоритмов в книге Артёма Михайлова ориентирован преимущественно на middle- и senior-аудиторию, а также, естественно, сильно перекликается с профессиональными интересами автора. Вот как сам автор в предисловии характеризует материал и целевую аудиторию книги:

В эпоху обилия фреймворков легко забыть, что в основе любой задачи лежит поиск оптимального решения. Алгоритмы — это как рецепты: хороший рецепт творит чудеса, позволяя даже скромному коду обогнать сырой и неоптимизированный вариант, запущенный на самом мощном сервере. Причем идеи алгоритмов универсальны и не зависят от языка программирования — разобравшись в них на Go, вы сможете с тем же успехом применять их и на Python, и на Java, и на любом другом языке. Недаром алгоритмы и структуры данных называют сердцем программирования — без них не обойтись ни одному разработчику.

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

Под традиционным спойлером – оглавление книги.

Оглавление

Покупая книгу, рассчитывайте на то, что кривая обучения в ней довольно крутая. Центральное место в книге занимает глава 4, в которой рассмотрен алгоритм PAXOS и поиск консенсуса. Глава 3, посвящённая алгоритмам для распределённых систем, несколько проще, но помогает читателю понять четвёртую. Более ранние главы можно считать вводными — автор полагает задачи поиска и сортировки настолько универсальными, что вводная часть пригодится вам даже для беглого знакомства с Go, участия в поддержке чужого кода или переписывания на Go критически важных частей приложения для повышения производительности или обеспечения совместимости с новым API.

Кстати, последнее лирическое отступление о наших смежных проектах. Как многие знают, точечные вставки кода на Go в старинной и постоянно обновляемой базе кода давно обкатаны в ядре Linux. Об этом рассказывается в выходившей у нас и регулярно допечатываемой книге Олега Цилюрика «Linux и Go. Эффективное низкоуровневое программирование. 2-е издание». Что касается использования языка Go в низкоуровневой оптимизации — такую книгу мы также для вас готовим. Мы перевели с английского электронную книгу «Go Optimization Guide», которую автор тщательно вычитал и для печатной версии – дополнил. Книга прошла литературную редактуру и сейчас находится в вёрстке. Следите за рекламой.

Возвращаясь к рассматриваемой сейчас книге «Алгоритмы на языке Go»  Артёма Михайлова, обращаем ваше внимание именно на три последние главы, в особенности на главу 6 (37 страниц), посвящённую криптографическим алгоритмам, в частности, таким востребованным, как MD-5, SHA-256, Blake2 и Argon2. Глава 7, дополняющая шестую, посвящена реализации цифровых подписей. Наконец, в главе 8 рассматриваются методы атак, то есть, она прямо ориентирована на специалистов по offensive/defensive security. Таким образом, предлагаемая книга более чем наполовину сближается с интересами обширной гильдии безопасников, читающей и попутно создающей нашу серию «Глазами хакера».

Для кого эта книга. Вместо заключения

Спустя неделю продаж можем уверенно утверждать, что книга Михайлова оправдала наши первые ожидания (за последние двое суток 12 штук продано через наш интернет-магазин, с начала мая около сотни экземпляров ушло на маркетплейсы), и её читатель – это опытный и, главное, любознательный программист, изучающий алгоритмы для работы, а не для собеседования. Книга Артёма Михайлова нацелена на тех, кто хочет получить уверенный старт в обслуживании и модернизации сложного бэкенда, разобраться в надёжных транзакциях, прокачать собственные навыки работы с распределёнными системами и, самое важное, развиваться с опережением чужих ожиданий.