Просмотров-1765
2

Программирование и алгоритмы решения задач

Как изучать алгоритмы

Нужны ли знания алгоритмов программисту?

В статье Что такое программирование? было показано, что выбор или разработка алгоритма решения поставленной задачи является неотъемлемой частью процесса программирования. В данной статье более подробно рассматривается вопрос как взаимосвязаны между собой программирование и алгоритмы решения задач на ЭВМ при разработке хорошего программного обеспечения.

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

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

Именно понимание принципов работы алгоритмов и используемых структур данных формирует специфическое мышление программиста и позволяет создавать высокопроизводительные и качественные программы.

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

Знания базовых алгоритмов решения задач обязательны

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

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

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

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

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

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

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

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

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

Заключение

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

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

Вот таковы краткие рекомендации. Успехов всем в этом трудном деле.

Связанные материалы

Внимание! Кто хочет своевременно узнавать о выходе новой статьи на сайте должен подписаться.

ПОДПИСКА НА РАССЫЛКУ

Статьи об онлайн курсах обучения

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 
Реклама. Информация о рекламодателе по ссылкам в статье.

brasm

Пенсионер с 33 - летним педагогическим стажем

2 комментария

  1. Можно ли зная результат выполнения программы раскрыть уровень абстракции по формальным признакам. Например, условно: есть машина которая делает шарики, условно. Можно ли исследуя вкус, запах, цвет шарика понять, хотя бы примерно, что именно происходит в машине? Пожалуйста, ответь.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *