Алгоритмы. Задача профессионального программирования

Задача профессионального программирования

Основная задача профессионального программирования заключается в создании качественного программного обеспечения.

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

Цель программирования – получение результатов работы программы.

Рекомендации к решению основной задачи программирования на профессиональном уровне:

1. Сначала следует определить методологию программирования, которая будет включать совокупность методов и концепций, объединённых общим философским подходом.

2. Далее следует выбрать технологический подход, который будет определять совокупность процессов, применяемых при разработке программного продукта. Определённая ранее методология включает совокупность методов, которые будут применены в технологическом подходе.

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

4. Технологические процессы будут исполняться на некоторых аппаратной и операционной платформах. Следует отметить, что аппаратная и операционная платформы могут существенно определять наличие и специфику инструментов (систем программирования). В большинстве разработок следует избегать зависимости от платформ, однако ряд проектов (как правило, системных) в большой степени опирается на их хорошее знание.

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

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

1. Конечность. Алгоритм всегда должен заканчиваться после выполнения конечного числа шагов.

2. Определённость. Каждый шаг алгоритма должен быть точно определён.

3. Наличие входных данных. Алгоритм имеет некоторое число входных данных, задающихся до начала его работы или определяющихся динамически во время его выполнения.

4. Наличие выходных данных. Алгоритм имеет одно или несколько выходных данных, имеющих определённую связь с входными данными.

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

С алгоритмами связаны следующие области исследований:

1. Анализ алгоритмов. Предмет этой области состоит в том, чтобы для заданного алгоритма определить рабочие характеристики.

2. Теория алгоритмов. В этой области рассматриваются вопросы существования или не существования эффективных алгоритмов вычисления определённых величин.

3. Построение алгоритмов. В этой области рассматриваются стандартные приёмы и методы, используемые при написании алгоритмов.

Большинство практических алгоритмов, с которыми работают программисты, являются полиномиальными. Это означает, что время работы алгоритма с данными на входе длины n составляло не более o(nk) для некоторой константы k, не зависящей от n.

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

Имеется особый класс задач, называемый «NP-полными» задачами. Для этих задач не известны полиномиальные алгоритмы, однако и не доказано, что таких алгоритмов не существует. Для программиста знание о NP-полных задачах важно по следующей причине. Если для некоторой задачи удалось доказать, что она NP-полная, то есть основания считать её практически неразрешимой. В этом случае лучше потратить время на построение приближенного алгоритма, чем продолжать искать быстрый алгоритм, решающий её точно.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: