«Алгоритмы на языке Go». Книга, которую ждали
- четверг, 7 мая 2026 г. в 00:00:14
Привет, Хабр.
Сегодня познакомим вас с самой долгожданной новинкой апреля — книгой «Алгоритмы на языке 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 штук продано через наш интернет-магазин, с начала мая около сотни экземпляров ушло на маркетплейсы), и её читатель – это опытный и, главное, любознательный программист, изучающий алгоритмы для работы, а не для собеседования. Книга Артёма Михайлова нацелена на тех, кто хочет получить уверенный старт в обслуживании и модернизации сложного бэкенда, разобраться в надёжных транзакциях, прокачать собственные навыки работы с распределёнными системами и, самое важное, развиваться с опережением чужих ожиданий.