Определения понятия среда программирования

4 Среда программирования

Средапрограммирования это совокупность программ, обеспечивающих технологический цикл разработки программ: анализ, спецификация, проектирование, кодирование (редактирование, компиляция, компоновка) , тестирование, отладка. Базовые компоненты среды Редактор – средство создания и изменения исходных файлов с текстом программы. Компилятор – транслирует исходный файл в объектный файл, содержащий команды в машинном коде для конкретного компьютера. Компоновщик (редактор связей) – собирает объектные файлы программы и формирует исполняемый файл (разрешая внешние ссылки между объектными файлами). Отладчик – средство управления выполнением исполняемого файла на уровне отдельных операторов программы для диагностики ошибок. Прочиекомпонентысреды Библиотекарь – средство ведения совокупностей объектных файлов (библиотек). Профилировщик – средство измерения времени выполнения программных компонент для последующей оптимизации критических компонентов. Загрузчик – копирует исполняемый файл с диска в память и осуществляет его запуск. 9

4.2 Техника разработки программ

Циклразработкипрограммыможетбытьпредставленследующейсхемой:

Анализ Спецификация Проектирование
Редактирование Компиляция, Тестирование
компоновка
Кодирование
Отладка Внедрение

Анализ – определение того, что должна делать программа (но не как она это должна делать). Спецификация – описание требований к программе в формальном виде. Проектирование – разработка структуры и алгоритма программы. Кодирование = редактирование + компиляция + компоновка. Тестирование – подготовка эталонных входных и соответствующих выходных данных (тестов), запуск программы и сравнение полученных данных с эталонными. Отладка – выявление и исправление ошибок.

4.3 Классификация ошибок в программе

Синтаксическаяошибка Связанаснарушениемсинтаксическихправил. Ошибкавременивыполнения(run-time error) происходит при выполнении (синтаксически верной) программы, когда она производит какое-либо недопустимое действие (деление на ноль и др.). Логическаяошибка Ошибка при разработке и написании алгоритма. При этом программа не содержит ни синтаксических ошибок, ни ошибок времени выполнения, но делает не то, что хотел автор программы. 10

Читайте также:  Решение канонической задачи линейного программирования графическим методом

4.4 Отладка

Отладка (Debugging) это процесс локализации и исправления ошибок, выявленных во время тестирования программы. Разновидности отладки: «Сухая» отладка – по листингу (тексту) программы, без использования компьютера, отладчика и др. Использование отладчика (Debugger) – программы, позволяющей отслеживать процесс выполнения программы по ее исходному тексту и просматривать текущие значения переменных. Основныефункцииотладчика Трассировка – пошаговое выполнение программы. Шагу соответствует одна строка исходного текста (в которой может быть более одного оператора). Режим»безтрассыподпрограмм» – пошаговое выполнение программы, при котором вызов подпрограммы отрабатывается как один оператор. Режим»трассаподпрограмм» – пошаговое выполнение программы, при котором трасса включает все операторы подпрограмм. Точкаостанова(breakpoint) приостанавливает выполнение программы. Может быть установлена только на выполняемом операторе (не на комментарии и др.). Возможен просмотр значений переменных при пошаговом выполнении программы. Языкипрграммирования

5. Основные виды языков программирования

Программы на традиционных языках программирования, таких как Си, Паскаль, Java и т.п. состоят их последовательности модификаций значений некоторого набора переменных, который называется состоянием. Если не рассматривать операции ввода-вывода, а также не учитывать того факта, что программа может работать непрерывно (т.е. без остановок, как в случае серверных программ), можно сделать следующую абстракцию. До начала выполнения программы состояние имеет некоторое начальное значение σ 0 , в котором представлены входные значения программы. После завершения программы состояние имеет новое значение σ’ , включающее в себя то, что можно рассматривать как «результат» рабо- 11

ты программы. Во время исполнения каждая команда изменяет состояние; следовательно, состояние проходит через некоторую конечную последовательность значений: Состояние модифицируется с помощью команд присваивания, записываемых в виде v = E или v := E , где v — переменная, а Е — некоторое выражение. Эти команды следуют одна за другой; операторы, if и while , позволяют изменить порядок выполнения этих команд в зависимости от текущего значения состояния. Такой стиль программирования называют императивным или процедурным. Функциональное программирование представляет парадигму, отличную от рассмотренной модели. Функциональная программа представляет собой некоторое выражение (в математическом смысле); выполнение программы означает вычисление значения этого выражения. Считая, что результат работы императивной программы полностью и однозначно определен ее входом, можно сказать, что финальное состояние (или любое промежуточное) представляет собой некоторую функцию (в математическом смысле) от начального состояния, т.е.. В функционально программировании используется именно такая точка зрения: программа представляет собой выражение, соответствующее функции f . Функциональные языки программирования поддерживают построение таких выражений. При сравнении функционального и императивного подхода к программированию можно отметить следующие свойства функциональных программ: • Функциональные программы не используют переменные в том смысле, в котором они используются в императивном программировании. В функциональных программах не используется оператор присваивания. • Как следствие из предыдущего пункта, в функциональных программах нет циклов. • Выполнение последовательности команд в функциональной программе бессмысленно, поскольку одна команда не может повлиять на выполнение следующей.

Читайте также:  При программировании atmega 128

• Функции можно передавать в другие функции в качестве аргументов и возвращать в качестве результата, и проводить вычисления, результатом которых будет функция. • Вместо циклов функциональные программы широко используют рекурсивные функции. Многие характеристики императивных языков программирования являются результатом абстрагирования от машинных кодов к языкам ассемблера, а затем к языкам типа Фортран и т.д. Более привлекателен подход, при котором языки программирования появляются как абстрактные системы для записи алгоритмов, а затем происходит их перевод на императивный язык компьютера. Функциональный подход имеет ряд преимуществ перед императивным. Функциональные программы более непосредственно соответствуют математическим объектам, и следовательно, позволяют проводить строгие рассуждения. Установить значение императивной программы, т.е. той функции, вычисление которой она реализует, в общем случае довольно трудно. Значение функциональной программы может быть выведено практически непосредственно. Следует сделать замечание относительно употребления термина «функция» в императивных языках. В математическом смысле «функции» импераивного языка не являются функциями, поскольку: • Их значение может зависеть не только от аргументов; • Результатом их выполнения могут быть разнообразные побочные эффекты (например, изменение значений глобальных переменных) • Два вызова одной и той же функции с одними и теми же аргумен тами могут привести к различным результатам. Функции в функциональных программах являются функциями в математическом смысле. Из этого следует, что вычисление любого выражения не может иметь никаких побочных эффектов, и порядок вычисления его подвыражений не оказывает влияния на результат. Функциональные программы легко поддаются распараллеливанию, поскольку отдельные компоненты выражений могут вычис-

Источник

1.2. Понятие системы и среды программирования

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

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

Для долговременного хранения программа на ЯВУ и программа после каждого преобразования размещается на внешнем запоминающем устройстве в виде файлов. Часть программы, которая хранится в одном файле, называется модулем. В простейшем случае вся программа хранится в одном файле. Имена файлов, как правило, назначает разработчик, а расширения файлов назначаются автоматически по правилам, принятым в среде исполнения.

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

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

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

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

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

Программа на языке Си++ – это текст. С помощью произвольного текстового редактора программист записывает инструкцию, в соответствии с которой компьютер будет работать, выполняя данную программу.

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

Рис. 1. Схема компиляции

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

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

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

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

Схема интерпретации используется для непосредственного распознавания и выполнения операторов исходного модуля (рис.2). Распознавание и выполнение операторов возлагается на специальную программу – интерпретатор. Понятия исходного и исполняемого модуля в этом случае совпадают.

Таким образом, можно уточнить составные части системы программирования, как показано на рис.3.

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

Рис. 2. Схема интерпретации

Средства разработки, объединенные в систему на основе общего интерфейса и общей базы данных, образуют среду программирования.

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

Источник

Оцените статью