2009-12-27 5 views
2

В настоящее время я работаю с PHP и Ruby on Rails в качестве веб-разработчика. Мой вопрос в том, почему мне нужно знать алгоритмы и структуры данных? Нужно ли сначала изучать C, C++ или Java? Каковы практические преимущества знания алгоритмов и структур данных? Что такое алгоритмы и структуры данных в условиях непрофессионала? (Как вы можете сказать, к сожалению, я не сделал курс CS.)Что такое алгоритмы и структуры данных в условиях неспециалиста?

Просьба представить как можно больше информации, насколько это возможно, и заранее спасибо ;-)

+5

Какое программное обеспечение вы пишете без структур данных? –

+3

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

+0

«Пожалуйста, предоставьте как можно больше информации» - см. Википедию. –

ответ

8

структуры данных способов хранения вещей, как вы можете класть вещи в стопки, очереди, кучи и ведра - вы можете сделать то же самое с данными.

Алгоритмы - это рецепты или инструкции, руководство для быстрого запуска вашего кофеварщика - это алгоритм приготовления кофе.

1

Алгоритм представляет собой список инструкций и структур данных - способы представления информации. Если вы пишете компьютерные программы, вы уже используете алгоритмы и структуры данных, даже если вы не знаете, что означают слова.

Я думаю, что самые большие преимущества в знании стандартных алгоритмов и структур данных являются:

  • Вы можете общаться с другими программистами, используя общий язык.
  • Другие люди смогут понять ваш код, как только вы уйдете.

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

0

Алгоритм представляет собой представление процесса, участвующего в вычислении.

Если вы хотите добавить два числа, то алгоритм может идти:

Получить первый номер; Получить второй номер; Добавить первое число ко второму номеру; Результат возврата.

В своем простом алгоритме алгоритм представляет собой всего лишь структурированный список вещей, которые нужно сделать - его использование в вычислительной технике - это то, что он позволяет людям видеть намерение кода и делает логические (в отличие от синтаксических) ошибки более легкими.

например. если шаг три выше умножается вместо добавления, тогда кто-то сможет указать ошибку в логике без необходимости отладки кода.

Структура данных представляет собой представление того, как следует ссылаться на данные системы. Он может точно соответствовать структуре таблицы или может быть отменен, чтобы облегчить доступ к данным. В самом простом случае он должен показать, как связаны объекты в системе.

Это слишком большая тема для подробностей, но в Интернете много ресурсов.

0

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

Возможно, вам не нужен новый язык программирования, чтобы использовать знания структур данных, хотя PHP (и другие языки высокого уровня) сделает его невидимым для вас, если вы не знаете, где искать. Java - это мой личный любимый язык обучения для таких вещей, но это довольно субъективно.

1

alt text http://mitpress.mit.edu/images/products/books/9780262033848-medium.jpg Эта книга является bible on algorithms. В общем, структуры данных связаны с тем, как организовать ваши данные для доступа к ней в памяти, а алгоритмы - это методы/небольшие программы для решения проблем (например: сортировка списка).
Причина, по которой вам следует заботиться, это сначала понять, что может пойти не так в вашем коде; плохо реализованные алгоритмы могут работать очень плохо по сравнению с «проверенными». Знание классических алгоритмов и ожидаемая от них производительность помогает понять, насколько хорош ваш код, и можете ли вы/его улучшить.
Тогда нет необходимости изобретать колесо и переписывать багги или неоптимальную реализацию хорошо известной структуры или алгоритма.

1

Алгоритмы - это просто шаги, по которым вы что-то делаете. Например кофеварка алгоритм будет работать что-то вроде

  1. Включите чайник
  2. Grind кофе в зернах
  3. Помещенные в фильтрующем и месте кофе в фильтре
  4. добавь воды
  5. Начать процесс пивоварения
  6. Питьевой кофе

Структура данных - это средство b которая хранит информацию организованно. Для получения дополнительной информации ознакомьтесь с Wikipedia Article.

1

Алгоритм представляет собой последовательность четко определенных шагов, ведущих к решению проблемы типа.

Структура данных - способ хранения и организации данных для облегчения доступа и модификаций.

Преимущество знания стандартных алгоритмов и структур данных заключается в том, что они в основном лучше, чем вы сами могли бы развиваться. Они являются результатом месяцев или даже лет работы людей, которые намного умнее большинства программистов. Знание целого ряда структур данных и алгоритмов позволяет подойти к проблеме примерно к структуре данных и/или алгоритму и настроить по мере необходимости.

1

В классическом «эквиваленте кулинарии/выпечки» алгоритмы являются рецептами и структурами данных - ваши измерительные чашки, ваши выпечки, ваши резаки для печенья, смесительные чаши и, по существу, любой другой инструмент, который вы будете использовать (ваша плита - это ваш компилятор/интерпретатор, хотя).

0

Мой вопрос: зачем мне знать алгоритмы и структуры данных?

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

Нужно ли сначала изучать C, C++ или Java?

Вам необходимо знать, как программировать на каком-либо языке, чтобы понять, что делают алгоритмы и структуры данных.

Каковы практические преимущества знания алгоритмов и структур данных?

Основные практические преимущества:

  • , чтобы избежать того, чтобы изобрести колесо все время,
  • , чтобы избежать проблемы квадратных колес.