Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Основные положения о программировании



Понятие программирования

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

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

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

Программирование включает в себя:

· Анализ

· Проектирование - разработка комплекса алгоритмов

· Кодирование и компиляцию - написание исходного текста программы и преобразование его в исполнимый код с помощью компилятора

· Тестирование и отладку - выявление и устранение ошибок в программах

· Испытания и сдачу программ

· Сопровождение

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

Единственный язык, напрямую выполняемый процессором - это машинный язык (также называемый «машинным кодом»). Как уже было сказано, изначально, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого, программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер, речь о которых пойдёт чуть позже) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Однако, в некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код «виртуальной машины», также называемый байт-кодом (byte-code). Такой подход применяется в Forth, Lisp, Java (данному языку посвящена 3 Глава реферата).

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

 

Парадигмы программирования

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

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

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

· Простота управляющих структур, используемых в задаче. Это положение означает, что логически задача должна состоять из минимальной, функционально полной совокупности достаточно простых управляющих структур. В качестве примера такой системы можно привести алгебру логики, в которой каждая функция может быть выражена через функционально полную систему: дизъюнкцию, конъюнкцию и отрицание.

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

Концепция модульного программирования.Так же как и для структурной технологии программирования, концепцию модульного программирования можно сформулировать в виде нескольких понятий и положений:

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

· Модуль - основа концепции модульного программирования. Каждый модуль в функциональной декомпозиции представляет собой «черный ящик» с одним входом и одним выходам. Модульный подход позволяет безболезненно производить модернизацию программы в процессе ее эксплуатации и облегчает ее сопровождение. Дополнительно модульный подход позволяет разрабатывать части программ одного проекта на разных языках программирования, после чего с помощью компоновочных средств объединять их в единый загрузочный модуль.

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

· Назначение всех переменных модуля должно быть описано с помощью комментариев по мере их определения.

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

· Инкапсуляция - объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.

· Наследование - свойство объектов порождать своих потомков. Объект - потомок автоматически наследует от родителей все поля и методы, может дополнять объекты новыми полями и заменять (перекрывать) методы родителя или дополнять их.

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

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

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

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

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

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

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

Функциональное программирование- метод программирования, основанный на разбиении алгоритма решения задачи на отдельные функциональные модули, а также описании их связей и характера взаимодействия. Для функционального программирования наиболее широко используются языки НОРЕ и ML. Элементы функционального программирования реализуются также другими языками, например Си.

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

 


Поделиться:



Последнее изменение этой страницы: 2020-02-16; Просмотров: 205; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.015 с.)
Главная | Случайная страница | Обратная связь