Важно ли уметь реализовывать структуры данных и алгоритмы?
Я понимаю как работают 3-5 сортировок, представляю их плюсы и минусы.
Будет ли плюсом умение их написать? Т.е они есть, ты их используешь и понимаешь, но всех деталей реализации не улавливаешь.
Тоже самое и со структурами.
Я понимаю разницу между hash map и vector, и представляю, когда какую взять, но я не знаю деталей реализации. Стоит вообще тратить на это время?
Я писал реализации сортировок и поиска на Java и Python, просто для того, чтобы понимать, как и что работает, но, как показывает практика, крайне маловероятно, что придется это каким-то образом применять в будущем.
Почему я это вообще спрашиваю?
Минусом, знание реализаций тех или иных структур и алгоритмов точно не будет, а вот будет ли плюсом?
Качество реализации структур данных и алгоритмов в проекте определяет:
- Масштабируемость (scalability)
- Поддерживаемость (maintainability)
- Производительность (performance)
Если вы штампуете сайты на вордпрессе или магазины на битриксе и джумле пачками никакого смысла заморачиваться о этих понятиях нет, но судя по вашим же задачам, у вас более масштабная направленность. В проектах с высокой посещаемостью, big data, или на поддержке без знания алгоритмов и структур данных не обойтись. В поддерживаемых high-load проектах с big data, алгоритмы и структуры данных это в принципе главное о чем вам нужно думать.