Обязательно ли изучать структуры данных, если вы хотите быть программистом на Java/С++?
Так мне действительно нужно узнать о них? Нет ли интересного способа узнать о стеках, связанных списках, кучах и т.д.? Я нашел это скучным предметом.
** При публикации этого вопроса было показано некоторое предупреждение. Разве мне не разрешено публиковать такой вопрос? Админы, пожалуйста, уточните, и я удалю его:/
Предупреждение:: Вопрос, который вы задаете, кажется субъективным и, вероятно, будет закрыт.
ладно.. я его получаю
Итак, что является лучшим способом их освоить? В какую книгу я отношусь? Какой сайт?
Ответы
Ответ 1
Обязательно изучить структуры данных, если вы хотите быть программистом. Структуры данных - это ваше хлебное масло - если вы не понимаете такие вещи, как поведение, использование и сложность во время выполнения ( "большой-O" ), по крайней мере, основных структур (массивы, связанные списки, стеки, очереди, деревья (двоичные/n-арные, самобалансирующиеся varietes), хеш-таблицы, кучи, графики) и алгоритмы, которые выполняются на них (вставить/найти/удалить), вы не будете знать, что подходит для использования под обстоятельства.
Каждая торговля имеет свои инструменты; они наши. Структуры данных - это самые основные основы практически любого алгоритма, который вы собираетесь изучить. Если вы не хотите быть грузовым культовым программистом, вам нужно понять, как они работают.
Есть ли интересные способы узнать о них, это отдельный вопрос полностью...:)
Ответ 2
Я бы даже дошел до того, что большинство программ вращается вокруг манипулирования структурами данных, это основа вычислений в конце концов: вы получаете некоторые данные, обрабатываете их, вы можете дать результат. Все данные, обычно находящиеся в структурах данных, и выбор несоответствующих структур будут иметь большее влияние, чем больше проект.
Ответ 3
По мере того, как вы получите больше опыта, вы обнаружите, что алгоритмы и структуры данных неоценимы для вашей повседневной разработки и на самом деле довольно интересны.
Изучив их сейчас, вы узнаете:
- Какая структура данных подходит для какого контекста, т.е. когда использовать односвязный список, когда использовать стек, когда использовать очередь, когда использовать дерево
- Какие алгоритмы подходят для этой цели, такие как поиск глубины дерева или поиск по ширине.
- Пространственная и временная сложность алгоритмов, например, почему quicksort иногда является лучшим решением, а иногда и heapsort.
- В целом, это научит вас основам и основам информатики, даже если вам никогда не придется снова реализовывать стек, вы будете знать, какие мысли и соображения входят в него. Если вам когда-нибудь понадобится реализовать свою структуру данных СОБСТВЕННОСТИ (и, скорее всего, вы будете часто), вы будете знать, что делать и что не делать.
Ответ 4
Если вы хотите быть успешным программистом, структура данных является обязательной. Как вы будете программировать, если не знаете структуры данных и алгоритмы?
Ответ 5
Если вам это нравится или нет, все программирование построено на структурах данных. Вам, возможно, никогда не придется писать, но вам придется выбирать, какой из них использовать много раз. На самом деле это не требование программирования вообще, но если вы хотите преуспеть в этой области, понимание основ обязательно.
Любой человек может построить сарай без знания материалов или методов строительства. Вы можете даже работать в доме, кладя кирпичи и минометы по приказу кого-то другого, но если вы хотите самостоятельно построить дом, вам нужно понять материалы и методы.
Структуры данных - это материалы для программирования. Алгоритмы - это методы. Будете ли вы использовать структуры данных? Вы будете использовать самые простые из них ежедневно, каждый так часто вам придется решать проблему, когда требуется конкретная структура данных, и, хотя вам не удастся построить собственные кирпичи, вам нужно будет понять, нужны ли вам кирпичи или бетонную стену для ваших целей.
Ответ 6
Если вам нужны некоторые доказательства важности структур данных, ознакомьтесь с процессом . Независимо от того, что вы думаете о Google как компании, нельзя отрицать, что у них есть очень хорошие люди, которые работают на них. Их процесс собеседования настроен для определения знаний кандидатов о структурах данных и алгоритмах. Потому что, когда дело доходит до этого, это то, что лежит в основе программирования, независимо от того, на каком языке вы работаете или в каком домене вы программируете.
Если вы планируете карьеру профессионального программиста, вам нужно знать основы, а не только, как выкачать код, который "работает". В противном случае, вы просто играете.
Ответ 7
Обязательно ли узнать об арифметике как инженера?
Ответ 8
Если вы принимаете отношение "это обязательно" в отношении любого из строительных блоков языков программирования, вы, вероятно, не вырезаны, чтобы быть кодером. Независимо от "обязательного" или нет, вы должны всегда искать новые концепции, чтобы узнать и посмотреть, улучшит ли он стиль/стандарт кодирования.
Но в ответ на ваш вопрос: да.
Ответ 9
Обязательно ли их изучать?
Нет, вы можете запрограммировать их без них, так как это не обязательно, чтобы разбить свой код на функции.
Если вы хотите быть эффективным программистом, который может писать по крайней мере достойный код, не получая ваш автомобиль под эгидой ваших коллег, вы хотите, по крайней мере, сделать достойный выбор классов библиотеки.
Каждый программист должен понимать компромисс между LinkedList и Array, или почему двоичные запросы и двоичные деревья полезны для отсортированных данных. Речь идет не только о производительности, но и о правильности, поскольку вы не можете просто поместить что-либо в набор деревьев.
Означает ли это, что вам нужно знать, как реализовать свое собственное дерево AVL, построить супер-умные структуры данных и т.д.? Не обязательно. Это вопрос того, сколько вы хотите знать, что происходит "под капотом", и требуют ли ваши задачи.
Я не большой поклонник глубоких вопросов структуры данных и алгоритмов в интервью, потому что подавляющему большинству разработчиков не нужно реализовывать эти вещи, просто чтобы использовать материал библиотеки. Я предпочитаю задавать вопросы, связанные с работой, в интервью. Однако примите, что если вы не узнаете эти вещи, вам придется столкнуться с более жесткой битвой, чтобы получить другие задания.
Ответ 10
Я бы сказал, что в какой-то момент вашего развития обязательно иметь твердое понимание. Я не уверен, что стандартный курс Data Structures - лучший способ узнать. Иногда лучший способ узнать их - "У меня проблема X. По какой-то причине это требует моего алгоритма долгое время для решения X. Как я могу сделать это быстрее?"
Одна книга, которую я очень рекомендую, - программирование жемчуга. У этого есть некоторые действительно хорошие анализы, подкрепленные множеством примеров того, откуда взялись реальные мотивы для решений. Он представляет проблемы интересным образом и никогда не учит, предоставляя вам список стилей данных.
Ответ 11
Должно быть, да...
Ответ 12
Да 99% книг по структурам данных скучны, а упражнения надуманны. Они чувствуют, что они просто составляют проблемы, которые не имеют никакой практической цели:(
Эта книга является единственным исключением из правила, с которым я столкнулся. К концу книги у вас будет наивная, но работающая ролевая игра:
Структуры данных для игровых программистов
Прочитайте вышеприведенную книгу, и вы решите проблему с курицей и яйцом и увидите, что вы действительно не можете многое сделать без структур данных.
Ответ 13
Ну, это может показаться немного неудобным, но я бы не сказал, что это COMPULSORY, чтобы узнать, что Data Structures - это обычный разработчик. Шутки в сторону! Если вы учитесь, а затем жестко , это даст вам много идей и знаний по нескольким аспектам программирования, и это всегда хорошо. Но обязательно... ну, я думаю, это слишком много. ОЧЕНЬ ХОРОШЕЕ будет достаточно.
Позвольте мне объяснить, почему. Не так уж часто на сегодняшний день писать код Data Structures, потому что - пусть это будет выглядеть - это будет RE-запись, RE-изобретать то, что мы уже знаем в течение стольких лет! Я бы сказал, что COMPULSORY - это изучение только общей теории их и API/библиотек, которые уже обычно используются (и проверены и оптимизированы), как API коллекций в Java. Вы должны знать наизусть различия между списком и набором (например, в Java), а также их возможностями и надлежащим использованием, но вам не нужно точно знать, КАК они реализованы - проверка каждого частного метода и атрибута - для решения большинства общий, день за днем, проблемы с кодированием. Вы отлично справитесь без всякой "кишки" Data Structures для общих вещей. Сейчас мы сталкиваемся с различными проблемами.
Но не поймите меня неправильно - не думаю, что я сумасшедший или наивный! Конечно, есть ситуации, когда вам понадобится реализовать собственную структуру данных (возможно, ваш собственный BalancedBinaryTreeMap!). Вы должны быть готовы ко всему.
Я просто спорю о том, чтобы быть обязательным или нет. Опять же, я не думаю, что это обязательно, но это действительно очень хорошо.
Приветствия.
Ответ 14
Я предполагаю, что вы могли бы научиться программированию, не изучая много о структурах данных или алгоритмах. Чтобы сделать эквивалентный пример, подумайте об этом, как если бы столяр знал, как строить вещи, но не знал об измерениях и тому подобных. Смог ли он получить карьеру в столярном деле? Возможно, но позвольте сказать, что ему нужно знать точный материал, который ему потребуется для завершения проекта. Вероятно, его уволят, потому что он не знает, какой материал или измерения использовать.
Итак, с структурами данных и алгоритмами вы можете сказать, что это возможность давать точные измерения приложения и знать, какую производительность вы выберете.
Ответ 15
Как и в масштабах обучения музыкантов, структуры данных являются частью инструментов торговли программным обеспечением. Конечно, вы можете работать программистом без ведома, но вы сами мешаете себе. Если я беру интервью у двух человек за позицию, и один из них понимает и использует структуры, а другой даже не может объяснить, что такое стек, мой выбор довольно ясен.
Если вы хотите, чтобы вас оценили как компетентного, трудоустроенного программиста, вам нужно изучить свое ремесло.
Ответ 16
Никакое тело не должно заставлять вас учиться чему-либо, чему вы не хотите учиться.
Если вы тип человека, который принужден быть лучшим, что он/она может быть тем, что он/она делает, и вам нравится то, что вы делаете для жизни, вы узнаете все, что нужно знать по своему усмотрению.
@happysoul: Вы должны спросить себя, ПОЧЕМУ изучают структуры данных данных. Кроме того, это поможет, если вы также определите, что НЕ ДОЛЖНО вас беспокоить.
Если вы хотя бы любите узнавать об алгоритмах, я уверен, что мы все можем предложить идеальный брак двух, которые были бы интересными для изучения!
Моя рекомендация по лучшему алгоритму/структуре данных для наиболее интересного обучения: графики.