Попросили инженеров YADRO поделиться избранными материалами про алгоритмы и структуры данных для «плюсовиков». Вспомнили и «классику» вроде книги Никлауса Вирта, и более современные источники, а также рассказали, почему стоит посвятить им время.

Статьи, лекции и курсы из подборки помогут опытным специалистам «вспомнить все» перед собеседованием или погрузиться в тему алгоритмов, если вы пока в ней не сильны. 

Дисклеймер: некоторые ссылки открываются только с VPN.

Кирилл Колодяжный

Ведущий инженер по разработке ПО в отделе оптимизации производительности СХД

Что рекомендует: Курс Algorithms от Стэнфордского университета  

Почему стоит смотреть: На мой взгляд, автор курса Тим Роугарден — отличный лектор. В Algorithms он буквально на пальцах объясняет базовую теорию и дает практические задания, которые проверяются на платформе Coursera автоматически. На внутреннем форуме можно обсудить решения и ошибки с другими студентами или кураторами курса.  

Новый поток стартовал 15 августа, поэтому вы еще успеваете присоединиться. Курс займет 2 месяца, если уделять учебе 10 часов в неделю. 

Анонимный инженер

Разработчик на С++ в YADRO

Что рекомендует: Лекции Павла Маврина 

Почему стоит смотреть: Автор лекций преподает курс по алгоритмам и структурам данных в ИТМО. А еще он чемпион мира ACM ICPC 2004 и занимает высокие места в соревнованиях по спортивному программированию типа TopCoder и Google Code Jam, что говорит о его высокой компетенции в этой сфере. Я слушал его лекции во время учебы в ИТМО. Из личного опыта: после курсов Павла я наконец-то начал понимать, как работают алгоритмы на графах. В лекциях, как правило, используется псевдокод, но я не считаю это проблемой.  Главное — понимать принципы работы алгоритмов, а умение реализовать их на определенном языке программирования вторично. 

Илья Казаков

Старший инженер по разработке ПО в группе разработки эмуляторов дисковой подсистемы

Что рекомендует: Выступление Романа Панова на C++ Russia «Дерево смещений: работаем с динамически изменяемыми сегментированными массивами» 

Пока доступно только тем, у кого есть билет, но скоро все видео выложат на каналы конференции.

Почему стоит смотреть: В прошлом веке Николаус Вирт написал книгу с говорящим названием «Алгоритмы + Структуры данных = Программы». Кажется, что данное утверждение сохраняет истинность и сегодня.

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

Если сравнивать с другими языками, стандартная библиотека С++ достаточно скудна относительно структур данных, которые она предоставляет. Хочешь использовать структуру данных, которой нет в стандартной библиотеке, — приходится обращаться за помощью к сторонним библиотекам или писать свою реализацию. А результат редко оправдывает усилия. Но каждый раз, когда возникает потребность в собственной реализации структуры данных, более того, когда задача требует ad hoc-структуры данных, становится невероятно интересно. Как раз под этот случай и попадает дерево смещений.

Елена Степанова, старший инженер: «Я училась программировать по книге «Алгоритмы + Структуры данных = Программы» Никлауса Вирта 20 лет назад, но информация в ней до сих пор актуальна — базовые принципы не изменились». 

Константин Владимиров

Руководитель отдела инструментов разработки и компиляторов

Что рекомендует: «Алгоритмы. Построение и анализ», Томас Кормен, Чарльз Эрик Лейзерсон, Рональд Линн Ривест, Клиффорд Штайн 

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

Что еще советуют разработчики на С++:

Какими материалами об алгоритмах на С++ вы бы дополнили подборку? Пишите в комментариях. 

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


  1. ryba1967
    15.08.2024 12:11

    Поделитесь, как пользоваться Coursera в 2024 году из России. Всё работает?


    1. yadro_team Автор
      15.08.2024 12:11

      Добрый день! Проверили: Coursera открывается с VPN.


      1. ryba1967
        15.08.2024 12:11

        По ссылке специализация из 6 курсов, Роугардена нет в списке инструкторов., там Куликов и Певзнер Остальное совпадает - 10 часов в неделю, 5 месяцев.

        Курс, о котором вы говорили - бесплатный?


        1. yadro_team Автор
          15.08.2024 12:11

          Спасибо, что заметили! Теперь в публикации верная ссылка — на тот самый курс Роугардена, о котором рассказывает Кирилл Колодяжный. И курс как раз стартует сегодня. Дублируем ссылку: https://www.coursera.org/specializations/algorithms


      1. ryba1967
        15.08.2024 12:11

        Нашёл, 7 дней бесплатно, потом надо оплатить