Главная
страница 1страница 2 ... страница 5страница 6
Раздел № 3

Программные средства реализации информационных процессов.

Классификация, виды и характеристики программного обеспечения. Классификация языков программирования. Искусственный интеллект, базы знаний, экспертные системы.

Инструментальное программное обеспечение – это пакет программ, предназначенных для автоматизации создания, редактирования, отладки, тестирования различных программных продуктов.

Инструментальное программное обеспечение включает:

- компиляторы с языков высокого уровня (ЯВУ)

- интерпретаторы с ЯВУ

- библиотеки стандартных программ

- средства редактирования, отладки и тестирования

- прикладные утилиты

Трансляция программы (компиляция и интерпретация)

С помощью языка программирования создается не готовая программа, а только ее текст, описывающий разработанный алгоритм. Текст алгоритма задачи, записанный на любом языке программирования называется исходным модулем. Специальная программа - транслятор переводит исходный модуль в последовательность команд ЭВМ. Имеются два основных типа таких программ - трансляторов: компиляторы и интерпретаторы. Компилятор транслирует весь текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. Компилятор выдает промежуточный объектный код - двоичный файл с расширением .OBJ. Объектный модуль еще не может выполняться, т.к. он может содержать неразрешенные ссылки на другие модули или программы, а также перемещаемый код. К нему еще нужно добавить машинный код подпрограмм, реализующий стандартные функции (например, математические). Эти функции содержатся в стандартных библиотеках - файлах с расширением .LIB. Поэтому объектный модуль обрабатывается специальной программой – редактором связей. Редактор связи разрешает все внешние ссылки и создает загрузочный модуль. Далее начинает работу программа Загрузчик, она определяет для загрузочного модуля абсолютные адреса в ОП. Только после всех этих действий программ может выполняться. Часто функции редактора и загрузчика выполняет одна программа – редактирующий загрузчик. Итак, объектный код обрабатывается специальной программой - редактором связей или сборщиком, который выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в стандартных библиотеках, и формирует на выходе работоспособное приложение - исполнимый код.

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

Рассмотрим подробнее работу программы-компилятора

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

1. Лексический анализ. На основе исходного модуля идентифицируются различные символы и классифицируются по категориям: ключевые слова, числовые значения, идентификаторы переменных и т.д.

2. Синтаксический анализ. При этом определяются синтаксические отношения ключевых слов и строится структурный каркас программы.

3. Генерация объектного кода, который соответствует структуре программы.

4. Оптимизация объектного модуля с целью повышения его эффективности (по объему и быстродействию).

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



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

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



ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Ядро ИПО составляют ЯВУ (языки высокого уровня), позволяющие описывать алгоритмы решаемых пользователем задач. Существуют следующие уровни языков программирования.

1.Машинные языки.

2. Машинно-ориентированные языки.

3. Алгоритмические языки

4. Языки 4-го поколения.

Поколения языков программирования


Поколения программных средств ПС

Языки и системы программирования

Характерные черты программных средств

1-е

Машинные

Машинно-зависимые, быстрые, сложные для освоения, требуют хорошего знания архитертуры ЭВМ

2-е

Ассемблеры, макроассемблеры

Более удобные для использования, быстрые

3-е

Языки высокого уровня ЯВУ (Fortran, Basic, Pascal, PL/1, C)

Мобильные, более человеко-ориетированные, проще в освоении, более медленные

4-е

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

Ориентированы на непрофессионального пользователя; ориентированы на ЭВМ с параллельной архитектурой

5 -

Языки искусственного интеллекта ИИ, экспертных систем и баз знаний, естественные языки

Повышение интеллектуального уровня ЭВМ и интерфейса с ними


Уровни языков программирования

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

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

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



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

Ассемблеры - языки первых поколений - до сих пор используются системными программистами для разработки ПО, непосредственно управляющими аппаратными ресурсами ЭВМ. Первые три поколения ЯП требуют сложного синтаксиса написания программ (необходимы точные правила и конструкции) написания программ. Языки 4-го поколения тоже требуют соблюдения синтаксиса, но он легче в освоении. Естественные ЯП, разрабатываемые в 5-м поколении, позволят непрофессионалу решать задачи, используя предложения языка, близкого к естественному, не требующего соблюдения особого синтаксиса.

В настоящее время ЯВУ 3-го поколения составляют основу ПО всех классов ЭВМ, исключая ВС нетрадиционной параллельной архитектуры, а также широко используются ЯВУ 4-го поколения.

Этапы решения задач на ЭВМ

Основными этапами решения задач на ЭВМ являются:

1. Постановка задачи

2. Выбор метода решения.

3. Составление алгоритма.

4. Программирование.

5. Отладка и тестирование.

6. Анализ результатов.

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

Алгоритм

Алгоритм - это точное и простое описание последовательности действий для решения данной задачи. Алгоритм содержит несколько шагов, которые должны выполняться в определенной последовательности. Каждый шаг алгоритма может состоять из одной или нескольких простых операций. Важным свойством алгоритма является то, что результат его выполнения не должен зависеть от исполнителя.



Свойства алгоритмов

Понятность – исполнитель алгоритма должен знать, как алгоритм выполнить.

Дискретность – алгоритм должен состоять из последовательности выполнения отдельных простых шагов.

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

Результативность – алгоритм должен приводить к решению задачи за конечное число шагов.

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

Блок-схемы

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



начало конец
присвоение значений

ввод/вывод данных и вычисления



вызов

проверка условия подпрограммы

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



Линейный алгоритм. Алгоритм называется линейным, если он содержит N шагов, и все шаги выполняются последовательно друг за другом от начала до конца.

Разветвляющийся алгоритм. Алгоритм называется разветвляющимся, если последовательность выполнения шагов алгоритма изменяется в зависимости от некоторых условий. Условие - это логическое выражения, которое может принимать два значения: "да" - если условие верно, "нет" - если условие неверно.

Пример: A>0; X

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

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



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

Для создания программы нужны:

-текстовый редактор;

- компилятор;

- редактор связей;

- библиотеки стандартных функций.

Все вышеперечисленные компоненты составляют интегрированную систему программирования. В современных интегрированных системах есть еще один компонент - отладчик. Он позволяет анализировать работу программы во время ее выполнения. С его помощью можно последовательно выполнять отдельные операторы исходного текста по шагам, наблюдая при этом, как меняются значения различных переменных. Без отладчика разработать большое приложение очень сложно. Кроме перечисленного в интегрированную среду разработки входят средства управления проектом и оперативной помощи и стандартные заготовки, упрощающие разработку стандартных задач (типа Мастер). После отладки программы, с помощью контрольного примера проверяется правильность решения программы, т.е. тестирование. Далее проводится анализ результатов

Здесь же уместно привести определение кросс-системы.

Кросс-система – это система программирования, которая обеспечивает подготовку программ в среде, отличающейся от целевой вычислительной среды. Обычно кросс-системы применяются в тех случаях, когда целевая среда не имеет ресурсов, необходимых для подготовки программы.

Программа – последовательность команд (операторов), задающая алгоритм решения задачи на одном из языков программирования.

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

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

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

Рекурсивная подпрограмма обычно выполняется медленнее, чем ее нерекурсивный аналог и сложнее отлаживается.


Итерация (цикл) — способ организации обработки данных, при котором определенные действия повторяются многократно, не приводя при этом к рекурсивным вызовам программ.

Лекция Языки программирования высокого уровня

Алгоритмический язык программирования

Programming language; Algorithmic language

Алгоритмический язык программирования - искусственный (формальный) язык, предназначенный для записи алгоритмов. Язык программирования задается своим описанием и реализуется в виде специальной программы: компилятора или интерпретатора.


Pascal (Паскаль). Язык Паскаль, созданный в конце 70-х годов основоположником множества идей современного программирования Николасом Виртом, во многом напоминает Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов.

Basic (Бейсик). Для этого языка имеются и компиляторы, и интерпретаторы, а по популярности он занимает первое место в мире. Он создавался в 60-х годах в качестве учебного языка и очень просто в изучении.

С (Си). Данный язык был создан в лаборатории Bell и первоначально не рассматривался как массовый. Он планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы, и в то же время не зависеть от конкретного типа процессора.

Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix).

Четвертое поколение языков программирования

С++ (Си++). Си++ - это объектно-ориентированное расширение языка Си, созданное Бьярном Страуструпом в 1980 году. Множество новых мощных возможностей, позволивших резко повысить производительность программистов, наложилось на унаследованную от языка Си определенную низкоуровневость, в результате чего создание сложных и надежных программ потребовало от разработчиков высокого уровня профессиональной подготовки.

Java (Джава, Ява). Этот язык был создан компанией Sun в начале 90-х годов на основе Си++. Он призван упростить разработку приложений на основе Си++ путем исключения из него всех низкоуровневых возможностей. Но главная особенность этого языка – компиляция не в машинный код, а в платформонезависимый байт-код (каждая команда занимает один байт). Этот байт-код может выполняться с помощью интерпретатора – виртуальной Java-машины JVM (Java Virtual Machine), версии которой созданы сегодня для любых платформ. Благодаря наличию множества Java-машин программы на Java можно переносить не только на уровне исходных текстов, но и на уровне двоичного байт-кода, поэтому по популярности язык Ява сегодня занимает второе место после Бейсика. Язык Java позволяет создавать программы для работы в Интернет.

Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini) и созданию платформонезависимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка – невысокое быстродействие, так как язык Ява интерпретируемый.

Это все алгоритмические языки. В настоящее время широко используются алгоритмические языки Паскаль и СИ. На основе алгоритмических языков стали создаваться языки объектного и объектно-визуального программирования. Объектно-ориентированными языками являются СИ++ и Object Pascal, они позволяют создавать различные приложения. Языки 4-го уровня позволяют создавать приложения, функционирующие на различных платформах:DOS, WINDOWS, UNIX.

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



Императивное программирование

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



Декларативный язык программирования

(От лат.Declaratio – объявление)

Декларативный язык программирования - язык программирования высокого уровня, построенный:
- на описании данных; и
- на описании искомого результата.
Декларативные языки подразделяются на функциональные и логические языки.
Тексты программ на функциональных языках программирования описывают "как решить задачу", но не предписывают последовательность действий для решения. (языки F# и O'Caml )
Функциональный (аппликативный) язык программирования – язык программирования, позволяющий задавать программу в виде совокупности определений функций.
В функциональных языках программирования:
- функции обмениваются между собой данными без использования промежуточных переменных и присваиваний;
- переменные, однажды получив значение, никогда его не изменят;
- циклы заменяются аппаратом рекурсивных функций.
Самым главным отличием функциональных языков является отсутствие
оператора присваивания

следующая страница >>
Смотрите также:
№3 Программные средства реализации информационных процессов. Классификация, виды и характеристики программного обеспечения. Классификация языков программирования. Искусственный интеллект, базы знаний, экспертные системы
1116.78kb.
6 стр.
Рабочая программа учебной дисциплины «программные средства пэвм» Направление подготовки бакалавра
120.79kb.
1 стр.
Аппаратное и программное обеспечение копьютера
73.67kb.
1 стр.
«Понятие программы, программного обеспечения. История и перспективы развития по. Классификация и общая характеристика по»
125.91kb.
1 стр.
Классификация и основные характеристики компьютерных обучающих систем
47.02kb.
1 стр.
Тема № аппаратное обеспечение компьютерной графики
333.25kb.
1 стр.
Искусственный интеллект
222kb.
1 стр.
Базы знаний интеллектуальных
3023.87kb.
13 стр.
Программа вступительных испытаний по дисциплине «Основы информационных технологий»
98.72kb.
1 стр.
Примерный перечень вопросов к экзамену Осн сет технологий — при-41 0910 Классификация
50.21kb.
1 стр.
Методы и средства обеспечения целостности и достоверности используемого программного кода
197.45kb.
1 стр.
2. Технические средства реализации информационных процессов
1455.13kb.
9 стр.