Нужны ли алгоритмы и структуры данных?

Подскажите, как часто вы в своей работе сталкиваетесь с потребностью в знании алгоритмов и структур данных в PHP? Если это действительно важная часть знаний PHP-разработчика уровня Middle, то что посоветуете в качестве обучения. Я нашел несколько популярных ресурсов, но они все без привязки к PHP:

  • Алгоритмы. Построение и анализ - Томас Кормен (2013)
  • Лекции по алгоритмам и структурам данных - Бабичев С.Л. (2020)
  • Курс «Алгоритмы и структуры данных поиска» - Бабенко М.А. (2014)

Буду очень благодарен, если найдете минутку ответить на мой вопрос.

Алгоритмы и структуры не привязаны к какому-то языку.

Про алгоритмы можно просто прочитать, чтобы иметь представление, что это такое и какие распространённые бывают. А будут они полезны или нет – зависит от предметной области проекта. От того, будете ли вы что-то делать сами. И важно понимать тему сложности алгоритма, чтобы уметь выбирать или сочинять более быстрые способы решения.

Например, если пишем соцсеть и нужно хранение и обход графов, то можно взять готовую графовую БД. Но если мы сами программируем систему геонавигации с построением маршрутов, то уже нужно будет знать алгоритмы обхода графов.

В высокоуровневых языках вроде PHP основные вещи уже сделаны до нас. Для обычной работы не обязательно знать алгоритмы сортировки, так как есть готовые процедуры sort и rsort. И не нужно знать алгоритмы поиска, так как есть функции strpos и in_array.

Но если мы занимаемся низкоуровневой работой вроде написания своей СУБД, программирования игрового движка или обработки гигабайт данных, то там уже всё это нужно. Там критична скорость и экономия ресурсов, поэтому придётся оценивать сложность по времени и памяти и оптимизировать каждую строку кода.

Также как с математикой и другими науками. Если делаем интернет-магазин, то нужно уметь только считать проценты для скидок. Но если программируем игры, то там пригодятся знания математики и физики.

Так что про алгоритмы прочитать полезно чтобы иметь представление, какие они вообще существуют. Чтобы потом если возникнет похожая задача сразу вспомнить подходящий алгоритм, а не изобретать такой же свой. А пригодятся или нет - это уже как повезёт с задачами.

Дмитрий Елисеев
elisdn.ru
Комментарии (0)
Зарегистрируйтесь или войдите чтобы оставить комментарий

Или войти через:

Yandex
MailRu
GitHub
Google