Технология программирования и ее преимущества Технология программирования — это совокупность методов и средств для разработки программного обеспечения. В технологии должны быть определены последовательность выполнения операций, условия, при которых выполняется каждая операция, описание самих операций: исходные данные, нормативные документы, в том числе стандарты, критерии и методы оценки, результаты и др.
Любая задача начинается со словесного описания, которое называется условием задачи, а в программировании — спецификацией задачи. Далее условие следует формализовать, т. е. так записать спецификацию, чтобы можно было ее решить на компьютере. Формализацией условия начинается этап, который называется математической формулировкой задачи. Выводятся формулы и выбираются методы решения задачи, т. е. строится математическая модель задачи. Далее в виде алгоритма строится последовательность стандартных действий, выполнение которых даст искомый результат. На выбранном языке программирования проектируется и пишется программа для компьютера. Затем выполняется ее тестирование и отладка на компьютере. Выполняются необходимые расчеты. Таким образом, решение задачи проходит следующие этапы
(рис. 3.7).
Рис. 3.7. Схема решения задачи на компьютере Технология программирования предусматривает переход от алгоритма к программе. Программы пишут специалисты — программисты, т. е. люди, подготовленные в области создания программ. Каждый тип процессора имеет свою систему команд, из которых и создаются компьютерные программы. Но машинные коды сложны для восприятия человеком, поэтому постепенно и стали развиваться языки, более приближенные к естественным. Программисты стали писать программы (программировать) в удобной форме, на понятных им языках программирования. А написанные специальные программы (трансляторы), которые могут прочитать то, что написал программист, и перевести в машинные коды, стали инструментом программирования.
Постепенно программы накапливались, особенно на процессы, выполняемые наиболее часто, например ввод данных с клавиатуры, вывод информации на экран и др. Такие небольшие программы (процедуры) называют стандартными. В настоящее время программист при создании большой программы обращается к библиотекам стандартных программ, извлекает необходимые программы-процедуры и включает их в свою программу. Это значительно облегчает процесс программирования.
Под программированием понимается совокупность процессов, связанных с разработкой программ и их реализацией.
В зависимости от назначения программирование подразделяют на:
• системное — разработка средств общего программного обеспечения, в том числе операционных систем, вспомогательных программ, пакетов программ общесистемного назначения, например автоматизированных систем управления, систем управления базами данных и т. д.;
• прикладное — разработка и отладка программ для конечных пользователей, например бухгалтерских, обработки текстов и т. п.
В зависимости от метода программирование подразделяют на:
• процедурное — метод, в соответствии с которым программы пишутся как перечни последовательно выполняемых команд. При этом используются процедурно-ориентиро- ванные языки программирования, например, PL/1, Алгол-68, Паскаль, Си;
• структурное, модульное — метод написания программ небольшими независимыми структурированными частями (модулями), каждый из которых связан с какой-либо процедурой или функцией. Результирующая программа организуется в виде совокупности взаимосвязанных по определенным правилам модулей. Это упрощает разработку сложных программных продуктов и их тестирование. Языки для модульного программирования Турбо Паскаль (Turbo Pascal), Си++, Ада, Модула (Modula);
• декларативное — метод, предназначенный для решения задач искусственного интеллекта. В указанном контексте программа описывает логическую структуру решения задачи, указывая преимущественно, что нужно сделать, не вдаваясь в детали. Используются языки программирования типа Пролог;
• параллельное — разработка программ, обеспечивающих одновременное выполнение операций, связанных с обработкой данных;
• объектно-ориентированное (ООП) — метод, основанный на использовании концепции объекта, абстрагирующего конкретные его реализации в предметной области. При этом данные тесно связываются с выполняемыми над объектами процедурами;
• функциональное — метод, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия. Для этого наиболее широко используются языки Норе и М, частично Си и другие языки;
• эвристическое — метод, основанный на моделировании мыслительной деятельности человека. Используется для решения задач, не имеющих строго формализованного алгоритма или связанных с неполнотой исходных данных;
• компонентное — метод создания ПО путем сбора объектов-компонентов (физически отдельно существующих частей ПО), взаимодействующих между собой через стандартизованные двоичные интерфейсы, в библиотеки или исполняемые файлы.
Программисты разрабатывают все более мощные и сложные программы. Современные методы разработки качественных программ существенно сокращают время и затраты на их создание. Это структурное программирование, пошаговое нисходящее уточнение, разбиение на функции (модули), объектно-ориентированное и компонентное программирование. Широко используется мультипрограммирование, когда несколько задач или программ одновременно разделяют между собой ресурсы компьютера.
Технология программирования развивалась вместе с развитием ЭВМ и языков программирования. Она прошла этап «стихийного» программирования, когда программы состояли из машинных кодов или ассемблеров и обрабатываемых данных.
В 1949 г. сотрудник высшего технического училища Пенсильванского университета Дж. Мочли поручил своим программистам создать программу, которая позволила бы машине воспринимать алгебраические уравнения, записанные в традиционной форме. Созданная система кодирования под названием Short Code (Короткий код) позволяла записывать уравнения не в двоичном виде, а с помощью двухсимвольных комбинаций. Например, уравнение вида А = В + С могло быть введено в форме последовательности 00 S0 03 S1 07 S2, где переменные А, В, С обозначены SO, si, S2, а операции равенства и сложения — 03 и 07 (комбинация 00 определяет номер строки программы). Программист (кодировщик) мог затем дать указание присвоить переменной S0, например, значение 5, а переменной si — значение 3. После этого компьютер уже сам определял значение переменной S2.
Этап структурного программирования начался в 1960—1970-х годах. В его основе лежит представление задачи в виде иерархии подзадач простейшей структуры (линейной последовательности, альтернативы, многократного повторения — цикла), реализуемых в виде небольших подпрограмм и модулей.