Главная Другое
Экономика Финансы Маркетинг Астрономия География Туризм Биология История Информатика Культура Математика Физика Философия Химия Банк Право Военное дело Бухгалтерия Журналистика Спорт Психология Литература Музыка Медицина |
страница 1страница 2 ... страница 5страница 6 Программные средства реализации информационных процессов. Классификация, виды и характеристики программного обеспечения. Классификация языков программирования. Искусственный интеллект, базы знаний, экспертные системы. Инструментальное программное обеспечение – это пакет программ, предназначенных для автоматизации создания, редактирования, отладки, тестирования различных программных продуктов. Инструментальное программное обеспечение включает: - компиляторы с языков высокого уровня (ЯВУ) - интерпретаторы с ЯВУ - библиотеки стандартных программ - средства редактирования, отладки и тестирования - прикладные утилиты
С помощью языка программирования создается не готовая программа, а только ее текст, описывающий разработанный алгоритм. Текст алгоритма задачи, записанный на любом языке программирования называется исходным модулем. Специальная программа - транслятор переводит исходный модуль в последовательность команд ЭВМ. Имеются два основных типа таких программ - трансляторов: компиляторы и интерпретаторы. Компилятор транслирует весь текст исходного модуля в машинный код, который называется объектным модулем за один непрерывный процесс. Компилятор выдает промежуточный объектный код - двоичный файл с расширением .OBJ. Объектный модуль еще не может выполняться, т.к. он может содержать неразрешенные ссылки на другие модули или программы, а также перемещаемый код. К нему еще нужно добавить машинный код подпрограмм, реализующий стандартные функции (например, математические). Эти функции содержатся в стандартных библиотеках - файлах с расширением .LIB. Поэтому объектный модуль обрабатывается специальной программой – редактором связей. Редактор связи разрешает все внешние ссылки и создает загрузочный модуль. Далее начинает работу программа Загрузчик, она определяет для загрузочного модуля абсолютные адреса в ОП. Только после всех этих действий программ может выполняться. Часто функции редактора и загрузчика выполняет одна программа – редактирующий загрузчик. Итак, объектный код обрабатывается специальной программой - редактором связей или сборщиком, который выполняет связывание объектных модулей и машинного кода стандартных функций, находя их в стандартных библиотеках, и формирует на выходе работоспособное приложение - исполнимый код. Итак, чтобы получить работающую программу, надо текст программы, называемый исходным модулем, перевести в объектный модуль, пригодный для последующего редактирования и выполнения на ЭВМ. Рассмотрим подробнее работу программы-компилятора Программа-компилятор автоматически переводит исходный текст в машинный код, который потом используется отдельно от исходного текста. В общем случае работа компилятора состоит из 4-ч фаз. 1. Лексический анализ. На основе исходного модуля идентифицируются различные символы и классифицируются по категориям: ключевые слова, числовые значения, идентификаторы переменных и т.д. 2. Синтаксический анализ. При этом определяются синтаксические отношения ключевых слов и строится структурный каркас программы. 3. Генерация объектного кода, который соответствует структуре программы. 4. Оптимизация объектного модуля с целью повышения его эффективности (по объему и быстродействию). Компиляторы делают исходную программу компактной, эффективной, работающей в сотни раз быстрее программы, выполненной с помощью интерпретатора. Исполнимый код - это законченная программа, которую можно запустить на любом компьютере, где установлена ОС, для которой эта программа создавалась. Итоговый файл имеет расширение .EXE или .COM. Программа-интерпретатор сразу выполняет команды языка, указанные в тексте программы. Интерпретатор берет очередной оператор языка из текста программы, анализирует его и если все правильно, сразу же исполняет его. Только после успешного выполнения текущего оператора интерпретатор перейдет к следующему оператору. При выполнении одного оператора многократно, интерпретатор каждый раз работает с ним так, словно встретил этот оператор впервые. Программы с большим объемом повторяющихся операторов будут работать медленно. Интерпретатор удобен при изучении инструментов программирования, т.к. позволяет понять принцип работы отдельного оператора языка. В отличии от компилятора интерпретатор не создает объектный код, а выполняет исходный модуль программы в режиме «оператор за оператором», по ходу работы он превращает каждый оператор ЯВУ в машинные команды. ЯЗЫКИ ПРОГРАММИРОВАНИЯ Под языком программирования будем понимать алфавит, систему записи и набор правил, определяющих синтаксис правильной программы. Ядро ИПО составляют ЯВУ (языки высокого уровня), позволяющие описывать алгоритмы решаемых пользователем задач. Существуют следующие уровни языков программирования. 1.Машинные языки. 2. Машинно-ориентированные языки. 3. Алгоритмические языки 4. Языки 4-го поколения.
Поколения языков программирования
Уровни языков программирования Разные типы процессоров имеют разные наборы команд. Если язык программирования ориентирован на конкретный тип процессора и учитывает его способности, то он называется языком программирования низкого уровня. В данном случае «низкий уровень» не значит «плохой». Имеется ввиду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком самого низкого уровня является язык ассемблера, который просто представляет каждую команду машинного кода, но не в виде чисел, а с помощью символьных условных обозначений, называемых мнемониками. Однозначное преобразование одной машинной инструкции в одну команду ассемблера называется транслитерацией. Так как наборы инструкций для каждой модели процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык ассемблера, и написанная на нем программа может быть использована только в этой среде. С помощью языков низкого уровня создаются очень эффективные и компактные программы, так как разработчик получает доступ ко всем возможностям процессора. С другой стороны, при этом требуется очень хорошо понимать устройство компьютера, затрудняется отладка больших приложений, а результирующая программа не может быть перенесена на компьютер с другим типом процессора. Подобные языки обычно применяют для написания небольших системных приложений, драйверов устройств, модулей стыков с нестандартным оборудованием, когда важнейшими требованиями становятся компактность, быстродействие и возможность прямого доступа к аппаратным ресурсам. В некоторых областях, например в машинной графике, на языке ассемблера пишутся библиотеки, эффективно реализующие требующие интенсивных вычислений алгоритмы обработки изображений. Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности конкретных компьютерных архитектур в них не учитываются, поэтому создаваемые программы на уровне исходных текстов легко переносимы на другие платформы, для которых создан транслятор этого языка. Разрабатывать программы на языках высокого уровня с помощью понятных и мощных команд значительно проще, а ошибок при создании программ допускается гораздо меньше. Ассемблеры - языки первых поколений - до сих пор используются системными программистами для разработки ПО, непосредственно управляющими аппаратными ресурсами ЭВМ. Первые три поколения ЯП требуют сложного синтаксиса написания программ (необходимы точные правила и конструкции) написания программ. Языки 4-го поколения тоже требуют соблюдения синтаксиса, но он легче в освоении. Естественные ЯП, разрабатываемые в 5-м поколении, позволят непрофессионалу решать задачи, используя предложения языка, близкого к естественному, не требующего соблюдения особого синтаксиса. В настоящее время ЯВУ 3-го поколения составляют основу ПО всех классов ЭВМ, исключая ВС нетрадиционной параллельной архитектуры, а также широко используются ЯВУ 4-го поколения.
Основными этапами решения задач на ЭВМ являются: 1. Постановка задачи 2. Выбор метода решения. 3. Составление алгоритма. 4. Программирование. 5. Отладка и тестирование. 6. Анализ результатов. После того, как поставлена конкретная задача и выбран метод ее решения, приступают к составлению алгоритма, по которому и будет решаться задача.
Алгоритм - это точное и простое описание последовательности действий для решения данной задачи. Алгоритм содержит несколько шагов, которые должны выполняться в определенной последовательности. Каждый шаг алгоритма может состоять из одной или нескольких простых операций. Важным свойством алгоритма является то, что результат его выполнения не должен зависеть от исполнителя. Свойства алгоритмов Понятность – исполнитель алгоритма должен знать, как алгоритм выполнить. Дискретность – алгоритм должен состоять из последовательности выполнения отдельных простых шагов. Определенность – каждое правило алгоритма должно быть четким, определенным, не оставлять места для произвола. Результативность – алгоритм должен приводить к решению задачи за конечное число шагов. Массовость – алгоритм разрабатывается в общем виде и его можно применить к некоторому классу задач. Блок-схемы Для графической записи алгоритмов используют блок - схемы. На блок - схеме каждый шаг алгоритма обозначается специальной геометрической фигурой, а внутри нее записываются простые операции. ![]() ![]() ![]() ![]() ввод/вывод данных и вычисления ![]() ![]() проверка условия подпрограммы Направления выполнения алгоритма обозначаются стрелками. Существуют несколько типов алгоритмов. Линейный алгоритм. Алгоритм называется линейным, если он содержит N шагов, и все шаги выполняются последовательно друг за другом от начала до конца. Разветвляющийся алгоритм. Алгоритм называется разветвляющимся, если последовательность выполнения шагов алгоритма изменяется в зависимости от некоторых условий. Условие - это логическое выражения, которое может принимать два значения: "да" - если условие верно, "нет" - если условие неверно. Си во многом похож на Паскаль и имеет дополнительные средства для прямой работы с памятью (указатели). На этом языке в 70-е годы написано множество прикладных и системных программ и ряд известных операционных систем (Unix). Четвертое поколение языков программирования
Особое внимание в развитии этого языка уделяется двум направлениям: поддержке всевозможных мобильных устройств и микрокомпьютеров, встраиваемых в бытовую технику (технология Jini) и созданию платформонезависимых программных модулей, способных работать на серверах в глобальных и локальных сетях с различными операционными системами (технология Java Beans). Пока основной недостаток этого языка – невысокое быстродействие, так как язык Ява интерпретируемый. Это все алгоритмические языки. В настоящее время широко используются алгоритмические языки Паскаль и СИ. На основе алгоритмических языков стали создаваться языки объектного и объектно-визуального программирования. Объектно-ориентированными языками являются СИ++ и Object Pascal, они позволяют создавать различные приложения. Языки 4-го уровня позволяют создавать приложения, функционирующие на различных платформах:DOS, WINDOWS, UNIX. Особенности алгоритмических языков в том, что имеется конкретный заданный алгоритм решения задачи, используется оператор присваивания, возможен, но не приветствуется оператор goto. Алгоритмические языки по-другому называются процедурными или императивными. Императивное программирование Императивное программирование – это технология программирования, характеризующаяся принципом последовательного изменения состояния вычислителя пошаговым образом. При этом управление изменениями полностью определено и полностью контролируется. Императивный язык программирования – это тоже самое, что и процедурно-ориентированный язык программирования. Процедурно-ориентированный язык программирования - язык программирования высокого уровня, в основу которого положен принцип описания (последовательности) действий, позволяющей решить поставленную задачу. Обычно процедурно-ориентированные языки задают программы, как совокупности процедур или программ. Декларативный язык программирования (От лат.Declaratio – объявление) Декларативный язык программирования - язык программирования высокого уровня, построенный:
|