Область программирования, целью которой является поддержка процесса создания или исполнения других программ, называется системным программированием. Таким образом, пользователями системных программ являются сами программисты. К системным программам можно отнести следущее:
Системы программирования, осуществляющие перевод программ с языков программирования в машинные команды и сборку программ из модулей, поддерживающие процесс отладки, тестирования, документирования программ и т.п.
Операционные системы (ОС), осуществляющие запуск и взаимодействие программ как между собой, так и с внешними устройствами.
Системы управления базами данных (СУБД), предназначенные для хранения и быстрого доступа к большим объёмам информации.
Разделение на прикладное и системное программирование достаточно условно. Так, например, определённые знания и навыки программирования требуются инженерам при использовании системы автоматизации проектирования (САПР) и математических пакетов, реализующих сложные вычислительные методы.
|
|
Технология программирования
Программирование не ограничивается собственно написанием программ. Большие программные системы создаются большими коллективами разработчиков, тестировщиков, менеджеров, между которыми надо обеспечить взаимодействие, организовать последовательность работ, гарантировать выполнение как внешних, так и внутренних требований и соглашений и т.п. В этом смысле программирование можно рассматривать как коллективный инженерный процесс создания программного обеспечения. Этим занимается технология программирования. Помимо собственно составления программ (называемого также кодированием) технология должна поддерживать весь жизненный цикл программы, в частности:
Спецификацию создаваемого программного обеспечения, проверку соответствия требованиям заказчика.
Проектирование, то есть разработку общей архитектуры системы, взаимодействие компонентов и т.п.
Отладку и тестирование – нахождение и своевременное исправление ошибок. Идеальная технология программирования не должна допукать появления ошибок в программе, опираясь на строгий формальный или формализованный вывод программы из спецификации. Реальное положение дел, однако, свидетельствует, что именно отладка программы занимает большую часть времени разработчиков.
Документирование в виде как инструкций для пользователя, так и технического описания самой программы для тех программистов, которые будут её далее развивать или сопровождать.
Сопровождение, версионность – реакцию на замечания и рекламации пользователей, необходимость поддерживать несколько версий программы и т.п.
|
|
Большая часть технологии может быть в той или иной степени автоматизирована и поддержана соответствующими системными программами.
Теоретическое программирование
Сложность реальных программ для анализа и обработки приводят к необходимости построения формальных моделей и математического исследования. Предметом исследования теоретического программирования являются как структурные, так и поведенческие свойства программ. Естественно, что теоретическое программирование, как математическая дисциплина, опирается на знания из смежных областей.
Дискретная математика и кибернетика используются для изучения структуры данных и алгоритмов. Синтаксические деревья, графы управления и потоков данных и многие другие модели программ требуют знаний из теории графов;
Теория вероятности и математическая статистика необходимы для анализа сложности вычислений;
Алгебра, логика, теория алгоритмов – при формальном описании семантики программ и верификации, то есть проверки и доказательства соответствия программы спецификации;
Системный анализ необходим при проектировании программ, поскольку они представляют собой большое количество разнородных взаимодействующих компонент.
Естественно, этим перечисление не ограничивается, поскольку при переходе к прикладному программированию сюда привлекаются знания из конкретных областей - физики, социологии, экономики, биологии и т.д.
Окружение» программирования