4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ 4.1. Понятие алгоритма

advertisement
41
4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ЭВМ
4.1. Понятие алгоритма и программы
4.1.1. Понятие алгоритма [1]
Алгоритм — это фундаментальное понятие математики и программирования. Название “алгоритм” происходит от латинизированного воспроизведения арабского имени узбекского математика Аль-Хорезми, жившего в конце
VIII — начале IX вв., который первым сформулировал правила, позволяющие
систематически составлять и решать квадратные уравнения.
В соответствии с ГОСТ 19.004-80: “алгоритм — это точное предписание,
определяющее вычислительный процесс, ведущий от варьируемых начальных
данных к искомому результату”.
Другое распространенное определение: алгоритм — это конечный набор
правил (процедур или команд), однозначно раскрывающих содержание и последовательность выполнения операций для систематического решения определенного класса задач за конечное число шагов.
Основные свойства алгоритма: детерминированность, массовость, результативность, дискретность, а также наличие входных и выходных данных.
Детерминированность — определенность, однозначность действий в каждом возможном случае — определяет однозначность результата работы алгоритма при заданных исходных данных.
Массовость — возможность варьирования исходных данных в определенных пределах — определяет пригодность использования алгоритма для решения множества задач данного класса.
Результативность алгоритма означает, что для любых допустимых исходных данных он должен через конечное число шагов (или итераций) завершить свою работу.
Дискретность — возможность разбиения определенного алгоритмического процесса на отдельные элементарные этапы, возможность реализации которых человеком или ЭВМ не вызывает сомнения, а результат выполнения каждого элементарного этапа вполне определен и понятен.
С понятием алгоритма тесно связано понятие данные. В алгоритмическом
аспекте данные — это информация, несущая полезную смысловую нагрузку,
представленная в формализованном виде, позволяющем собирать, передавать,
вводить и обрабатывать эту информацию с помощью заданных алгоритмов.
Реализация алгоритма на конкретных исходных данных решаемой задачи называется алгоритмическим процессом.
4.1.2. Схемы алгоритмов
Способы описания алгоритмов. Существует несколько способов описания
алгоритмов: словесный, формульно-словесный, графический, средствами специального языка операторных схем, с помощью таблиц решений и др. Помимо
требования обеспечения наглядности, выбор конкретного способа диктуется
рядом факторов, из которых определяющими являются: степень необходимой
В.Б. Альгин «Курс лекций по компьютерной информатике»
42
детализации представления алгоритма, степень формализации алгоритма, уровень логической сложности задачи и т.п.
Графический способ описания алгоритмов. Представляет собой изображение логико-математической структуры алгоритма, при котором все этапы
процесса обработки данных представляются с помощью определенного набора
геометрических фигур (блоков), имеющих строго конфигурацию в соответствии с характером выполняемых действий.
Наиболее распространенными способами графического изображения алгоритмов являются блок-схемы и структурограммы Насси-Шнейдермана.
Пример изображения блока разветвления алгоритма показан на рис. 4.1.
На изображение блок-схем существует ГОСТ 19701-90 (ИСО 5807-85) —
“Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения” и ГОСТ 19.003-80 “Схемы алгоритмов и программ. Обозначения условные графические”.
Условные графические изображения, называемые символами, делятся на
основные и вспомогательные. Основные символы используются для представления операций, раскрывающих характер обработки данных в процессе решения задачи (рис. 4.2). Вспомогательные символы предназначены для пояснения
отдельных элементов схемы алгоритма, а также обозначения связей между ними.
Все блоки в схеме располагаются в последовательности сверху вниз и слева направо и объединяются между собой линиями потока. Нормальным направлением линий потока, т.е. следования этапов процесса решения задачи, принято
направление сверху вниз и слева направо. В этом случае направление линий потока не идентифицируется (указывается) с помощью стрелок, при других направлениях стрелки ставятся.
а
б
условие
условие
действие 1
действие 2
действие 3
да
нет
действие 1
действие 3
действие 2
действие 4
действие 4
Рис. 4.1. Изображение блока разветвления алгоритма:
а — блок-схема; б — структурограмма
В.Б. Альгин «Курс лекций по компьютерной информатике»
43
Графическое
обозначение
по ГОСТ
Названия блоков:
Word\ Автофигуры \ блок-схема
начало, конец
знак завершения
вычисление
процесс
ввод, вывод
данные
проверка условия
решение
модификация
подготовка
подпрограмма
типовой процесс
Рис. 4.2. Графические обозначения и названия блоков
Условием корректности схем алгоритмов является недопустимость более
чем одного выхода из символов, обозначающих обрабатывающие блоки, и не
менее двух выходов из символов, обозначающих логические операции по проверке выполнения условий.
4.1.3. О современных подходах к понятию алгоритма [2]
Рассмотренное понятие алгоритма основывается на интуитивном понимании алгоритма и предположении, что рассматриваемые задачи всегда имеют
решение. Иначе обстоит дело, когда задача или класс задач могут и не иметь
решения. В этом случае требуется строго формализованное понятие алгоритма,
чтобы доказать его отсутствие и избежать двусмысленностей.
Такое формализованное понятие алгоритма было определено в середине
30-х годов ХХ века в двух эквивалентных формулировках: на основе рекурсивных функций (Д.Гильберт, К.Гедель, А.Черч, С.Клини) и абстрактных автоматов (А.Тьюринг, Э.Пост). В настоящее время теория алгоритмов и математическая логика образует фундаментальную основу современной вычислительной техники, позволяющую решать любые алгоритмически описанные задачи.
4.1.4. Понятие программы
Программа — это последовательность команд для ЭВМ, выполнение которых реализует алгоритм. Программирование (кодирование) — это перевод
В.Б. Альгин «Курс лекций по компьютерной информатике»
44
алгоритма на язык понятных ЭВМ команд. С расширением сферы применения
ЭВМ, появлением технологий программирования и различного типа инструментальных средств разработка программных средств приобретает все больше
индустриальных черт (индустрия программирования).
Программное обеспечение (ПО) в современном понимании включает совокупность собственно программных средств, связанных с ними данных и программной документации.
4.2. Развитие программного обеспечения [2]
4.2.1. Место программного обеспечения в общей архитектуре ЭВМ
Аппаратная и программная среды образует общую архитектуру ЭВМ
(рис. 4.3).
В общей архитектуре современных вычислительных систем (ВС) — программное обеспечение (ПО; Software) является наиболее гибкой ее компонентой, обеспечивающей не только функционирование аппаратной компоненты
(Hardware) в различных режимах, но и развитый пользовательский интерфейс в
процессе подготовки, отладки и решения его задач. Программная среда является своего рода оболочкой аппаратной среды, расширяющей ее возможности и с
которой пользователь работает непосредственно на основе тех или иных программных средств (ПС).
ПО — это совокупность ПС для ЭВМ и их систем любого класса и типа,
обеспечивающих функционирование, диагностику и тестирование их аппаратных средств, а также разработку, отладку и выполнение любых задач пользователя с соответствующим документированием.
В качестве пользователя может выступать как человек, так и любое внешнее устройство (ВУ), подключенное к ЭВМ и нуждающееся в ее вычислительных ресурсах. Таким образом, ПО служит интерфейсом между аппаратными
ресурсами ЭВМ/ВС и проблемной средой, определяя логические возможности
и применимость ВС, обеспечивая адаптационные возможности систем обработки информации при изменениях как аппаратных средств ВТ, так и требований
предметной области.
Рис. 4.3. Интерфейс проблемной среды с аппаратно-программной средой ВС
В.Б. Альгин «Курс лекций по компьютерной информатике»
45
4.2.2. История развития программного обеспечения
Подобно архитектуре аппаратных средств ПО имеет свою историю развития, тесно связанную с развитием первых и наглядно отражающуюся на фоне
интерфейса: пользователь — ЭВМ.
Программирование для ЭВМ 1-го поколения велось в кодах машины, и
пользователь при решении своей задачи получал в свое распоряжение все ресурсы, работая с ними напрямую. Первые операционные системы (ОС), появившиеся в конце 1940-х годов и представляющие собой наборы простых программ ввода/вывода суммарным объемом в несколько сотен команд, не изменили сути дела, т.к. пользователи либо знали их наизусть, либо для своих целей
создавали собственные сервисные ПС.
В середине 1950-х годов большинство ЭВМ 2-го поколения работало под
управлением ОС, обеспечивающих пакетный режим обработки: система собирала программы, подготовленные разными пользователями, и быстро выполняла их одну за другой, сокращая накладные издержки оператора и лучше планируя вычислительные ресурсы машины. Таким образом, ОС уже в значительной
мере осуществляли интерфейс между логическим уровнем пользователя и физическим уровнем аппаратуры. ОС этого периода назывались супервизорами
или мониторами, дополнительно к своей основной функции загрузки программ
распределяя ОП, обслуживая ВП и управляя вводом/выводом. Многие из ОС
данного периода включали библиотеки стандартных и часто используемых
процедур и программ, а также трансляторы с первого языка программирования
высокого уровня (ЯВУ) Fortran, разработанного в ф. IBM в 1956 г.
Наряду с наличием отрицательных качеств данный подход имел революционизирующее влияние на дальнейшее развитие прикладного аспекта использования ЭВМ, из которых отметим только некоторые. Прежде всего, появление
более развитого базового ПО (БПО) позволило автоматизировать многие функции по обеспечению работы пользователя с ВС, существенно снизив требования к его квалификации в области знания архитектурной организации аппаратной части ВС. Важным следствием этого явилась возможность существенного
расширения круга пользователей ЭВМ за счет упрощения интерфейса с ними.
Пользователей освободили от целого ряда специальных знаний по ЭВМ и обеспечили рядом важных ПС (библиотеки стандартных программ, ЯВУ с трансляторами и др.), позволивших снизить требования к специальным знаниям по ВТ,
сложность которой существенно возросла к этому времени.
В начале 1960-х годов появились первые ОС с разделением времени, которые позволили ЦП переключать обслуживание с одной задачи на другую,
создавая иллюзию одновременной работы с ЭВМ многих пользователей. Наиболее бурное развитие ОС данного периода началось с появлением ЭВМ 3-го поколения, имеющих аппаратную поддержку основных элементов функционирования ОС: системы прерываний, средств защиты ОП от несанкционированного
доступа, а также развитую систему ввода/вывода, развитые средства микропрограммирования и др.
При создании подобных систем возник и был успешно решен ряд важных
проблем, позволивших обеспечить разделение во времени основных ресурсов
В.Б. Альгин «Курс лекций по компьютерной информатике»
46
ЭВМ. Решение этих проблем привело к разработке механизмов синхронизации
параллельных процессов, виртуальной памяти и системы ввода/вывода, а также
интерактивных командных языков. Наряду с этим ОС данного периода включали достаточно большое число различного назначения ЯВУ (Fortran, Algol,
Basic, PL/I и др.), позволяющих пользователю решать разнообразные задачи из
различных областей.
По мере того как ОС становились все более сложными (беря на себя все
больше функций по управлению достаточно сложной системой разнообразных
аппаратных средств и мультипрограммными процессами обработки информации), они разрастались в объеме. Наиболее известная система 1960-х годов
OS/360 фирмы IBM содержала более 1 млн команд, а ОС Multics (1975 г.), разработанная MTI и фирмой Bell Laboratories — уже более 20 млн команд. ОС
1970-х годов не только обеспечивали режим мультипрограммирования на
сложной архитектуре аппаратных средств, но и режим телеобработки, что еще
больше отдалило пользователя от непосредственного общения с аппаратной частью ВС.
Лишь 4-е поколение, в недрах которого появилась персональная компьютерная технология на базе ПК, позволило вновь приблизить массового пользователя к вычислительным ресурсам, но не к самой аппаратной среде. Первые
ПК, имеющие очень простые операционные среды, еще позволяли пользователю брать на себя некоторые функции по управлению основными ресурсами. С
ростом мощности ПК (превосходящими по возможностям ЭВМ общего назначения 3-го поколения) происходило усиление оболочки БПО не только за счет
усложнения ОС, но и в связи с появлением оболочек для самих ОС. Такие оболочки, например MS Windows3.x, используя ОС в качестве программного ядра,
существенно повышают уровень интеллектуальности интерфейса пользователь
— ЭВМ, вместе с тем еще больше отдаляют его от аппаратной компоненты.
Учитывая массово-персональный характер использования ПК, такое решение
является единственно верным — физически максимально приблизить вычислительные ресурсы к пользователю, максимально удалить от него внутреннюю
кухню ПК (его аппаратную среду + БПО), повысив уровень логического интерфейса с ней.
Операционные оболочки Window3.x-типа избавили пользователя от командного языка ОС (MS-DOS, CP/M, Unix и др.). Он получил возможность работы с ресурсами ПК на логико-графическом уровне, который потребовал от
большинства прикладных пользователей только самых общих знаний о БПО и
используемых ими ПС. Для пользователей, разрабатывающих ПС в той или
иной предметной области, потребовались лишь знания некоторого ЯВУ и организации интерфейса его ПС с операционной средой.
4.2.3. Структура программного обеспечения
Схема современного интерфейса проблемной среды пользователя с аппаратно-программной средой ВС показана на рис. 4.1. Из представленной схемы следует, что программное обеспечение (Software) ЭВМ, является оболочкой
ее аппаратной среды (Hardware), обеспечивает логический уровень интерфейса
В.Б. Альгин «Курс лекций по компьютерной информатике»
47
с проблемной средой (в частности с пользователем), содержит три компоненты: базовое (системное), инструментальное (ИПО) и прикладное ПО. Некоторые авторы относят инструментальное ПО к базовому. В этом случае имеем две
компоненты ПО: базовое (системное) и прикладное. В свою очередь, составляющие ПО компоненты допускают дальнейшую детализацию, представленную в табл. 4.1.
Таблица 4.1
Структура программного обеспечения ЭВМ
Программное обеспечение ЭВМ
базовое (системное)
Операционные
системы (ОС)
Утилиты
Операционные
оболочки (ОО)
Средства
тестирования и диагностики
инструментальное
Компиляторы
Интерпретаторы
Ассемблеры
Библиотеки стандартных
программ (БСП)
Средства редактирования,
отладки, тестирования и
загрузки
Системы программирования
прикладное
ППП:
общего назначения;
проблемноориентированные;
расширяющие функции
ОС;
интегрированные
ПО пользователей
4.2.4. Базовое программное обеспечение
Базовое (системное) ПО (БПО) управляет всеми ресурсами ЭВМ и осуществляет общую организацию процесса обработки информации и интерфейс
ЭВМ с проблемной средой, в частности с пользователем.
БПО включает операционные системы (ОС), средства расширения функций ОС, операционные оболочки (ОО) и средства тестирования и диагностики
ЭВМ. ОС предназначена для управления всеми ресурсами, обеспечивая логический уровень интерфейса проблемной среды ЭВМ с аппаратной. ОС обеспечивает поддержку работы всех программных средств и их взаимодействие с аппаратными ресурсами, а также функции общего управления работой ЭВМ. Различные классы и типы ЭВМ используют различных архитектуры, структуры и
возможностей ОС, которые требуют для своего функционирования различные
ресурсы и которые предоставляют пользователю различного уровня сервис для
разработки, отладки, выполнения и сопровождения ПО, организации процесса
обработки, а также интерфейса с вычислительными ресурсами ЭВМ.
Операционные системы. В качестве примеров ОС можно привести MSDOS, CP/M, Unix, OS/2, Novell, Linux, Finder, АUХ (для ПК); Unix, Xenix, Primus,
RSX-11M, AIX, VAX/VMS (для миниЭВМ); DOS/VE, OS/360, MVS, VM, Multics,
ConvexOS, ОС/ЕС (ЭВМ общего назначения); Cray, VPP, Unix, Borrough, Эльбрус (суперЭВМ).
Для микроЭВМ (кроме специализированных), ПК, миниЭВМ и в значительной степени ЭВМ общего назначения четко прослеживается тенденция к
унификации ОС (платформы MS-DOS, Unix). СуперЭВМ в значительной мере
используют оригинальные ОС. В значительной степени это обусловлено примеВ.Б. Альгин «Курс лекций по компьютерной информатике»
48
нением достаточно широкого спектра архитектур и принципов функционирования ВС, сильно различающихся между собой. Не до конца разработанные
общие концепции организации ОС для ВС нетрадиционных архитектур также
не способствуют унификации.
Средства расширения функций ОС достаточно многочисленны, их набор
и функциональные возможности определяются конкретным типом ОС (оптимизация использования внешней памяти, подготовка и тестирование магнитных
носителей, поддержка расширенных функций с файлами и др.). Средства данной группы могут быть реализованы как на уровне отдельных программутилит, так и в виде специальных пакетов.
Утилиты могут быть реализованы на трех основных уровнях: резидентном, системном и автономном. В первом случае утилита загружается и становится резидентной, обеспечивая в оперативном режиме выполнение заложенных в ней функций (например вывод информации о текущих резидентных программах); во втором случае утилита работает под управлением ОС как прикладная программа, а в третьем — работа утилиты производится вне операционной среды (такой уровень присущ ряду ПС тестирования и диагностики ЭВМ
и отдельных ее узлов, включая ВУ). Утилиты во многих случаях помогают
существенно повысить эффективность использования ЭВМ и удобство работы
с ними; ПС данной группы наиболее многочисленны на всех классах и типах
ЭВМ (антивирусные, расширяющие возможности ВУ, обслуживания файловой
архитектуры, управления работой на ПК и др.). Утилиты — необходимая компонента инструментария пользователя любого уровня и, в первую очередь,
проблемного. Поэтому хороший подбор утилит во многих случаях существенно облегчает использование ПК для многих приложений, расширяя стандартные возможности ОС. Примером набора утилит для массового пользователя
IBM-совместимых ПК может служить пакет Norton Utilities.
Операционные оболочки (ОО) на первых этапах своего развития служили
как для расширения функций ОС, так и для повышения уровня интерфейса с
ЭВМ путем упрощения доступа к средствам ОС. Для ОС, интерфейс с которыми обеспечивают языки управления заданиями ОО, в основном, базируются на
повышении уровня ЯВУ, как это было сделано, например, при создании специализированных ОО. В случае ПК развитие ОО шло несколько в иных направлениях с акцентом в основном на непрофессионального пользователя. Среди
простых ОО для IBM-совместимых ПК можно отметить первую очередь Norton
Commander, совместно с Norton Utilities образующие до появления Windowsоболочки наиболее эффективное средство подобного типа, а также Q-DOS, Dosshell, PC-Tools, SideKick, Pop-Up Windows и др.
Графическая оболочка Windows 3.1 фирмы Microsoft, появившаяся в начале 1990 гг., оказала революционизирующее влияние на развитие интерфейса
с ЭВМ, определив новое поколение ОО для ПК и в значительной мере определив на ближайшее время тенденции развития операционной среды ЭВМ, ориентированных в основном на персональный режим использования. В дальнейшем
произошло слияние оболочек с “базовой частью” ОС. И сейчас все это вместе
называют ОС. Так Windows 9x, 2000, XP — это ОС.
В.Б. Альгин «Курс лекций по компьютерной информатике»
49
Следует также отметить использование графического интерфейса (правда, менее интеллектуального) уже на ранних моделях известного ПК Macintosh
фирмы Apple, получившего дальнейшее развитие в последующих моделях Open
Mac, Mac Plus и Aladdin. Последние модели благодаря развитым графическим
средствам и интерфейсу с пользователем представляют великолепную среду
для решения графических задач и создания настольных издательских систем,
работающих как с текстовой, так и с графической информацией.
Средства тестирования и диагностики в целом составляют средства технического обслуживания ЭВМ и предназначены для проверки работоспособности, наладки и технической эксплуатации; эти средства используются инженерно-техническим персоналом, обслуживающим ВТ. ПС данной группы можно
подразделять на средства диагностики, программно-логического контроля,
тестового и программно-аппаратного контроля. Средства 1-й группы обеспечивают автоматический поиск ошибки и выявление неисправностей с определенной локализацией их в ЭВМ и ее узлах. Программно-логический контроль основан на использовании избыточности исходных и промежуточных данных, позволяющей находить различные проверочные соотношения. Тестовый контроль осуществляется посредством тестов проверки работы ЭВМ или ее узлов; программно-логический контроль и тестовая проверка выполнения предусмотренных зависимостей или достижения состояний образуют так называемый программный контроль.
Аппаратный контроль производится автоматически посредством встроенных в ЭВМ схем; программно-аппаратный контроль включает программный
и аппаратный способы контроля. Персональный характер использования и высокая надежность основных узлов ПК не предполагают для него специальной
службы обслуживания, кроме возникновения неисправностей технического характера. Поэтому после включения ПК аппаратными средствами тестируется
ОП и дополнительная память, и только потом производится загрузка ядра ОС.
Для тестирования и диагностики узлов ПК и внешних устройств предназначен ряд ПС (Checkit, Crosh-Chex и др.). Результаты работы пакетов выводятся в наглядном виде, предоставляя информацию о состоянии узлов ПК и внешних устройств (ВУ).
4.2.5. Инструментальное ПО
Инструментальное ПО (ИПО) предназначено для создания оригинальных ПС в любой проблемной области, включая БПО. В его состав входят компиляторы и интерпретаторы с языков программирования различного уровня,
а также ассемблеры, библиотеки стандартных программ, средства редактирования, отладки, тестирования и загрузки, системы программирования (СП).
Под языком программирования (ЯП) понимают алфавит, систему записи
и набор правил, определяющих синтаксис правильной программы.
Текст алгоритма задачи, описанный средствами ЯП, называют исходным
модулем. Средством, предназначенным для перевода исходного модуля в последовательность команд ЭВМ, является специальная программа. Имеется два
основных типа таких программ — компиляторы и интерпретаторы. КомпиВ.Б. Альгин «Курс лекций по компьютерной информатике»
50
лятор транслирует весь текст исходного модуля в машинный код, называемый
объектным модулем, за один непрерывный процесс. Объектный модуль может
содержать неразрешенные ссылки на другие модули или программы, а также
перемещаемый код. Поэтому перед выполнением программы ее объектный модуль должен быть обработан специальной программой — редактором связей
(разрешающей все внешние ссылки и создающей загрузочный модуль) и загрузчиком (определяющим для загрузочного модуля абсолютные адреса в ОП). Общая схема преобразования исходной программы в выполняемый загрузочный
модуль показана на рис. 4.4.
ИМ
Компилятор с
ЯП
ОМ
Редактор связей
ЗМ
Загруз
чик
Выполняемый
ЗМ
Рис. 4.4. Преобразование исходной программы в выполняемый загрузочный
модуль: ИМ, ОМ, ЗМ —исходный, объектный, загрузочный модуль
В ряде случаев функции редактора связей и загрузчика может выполнять
одна программа — редактирующий загрузчик, такой подход использован в ряде
систем программирования, например в Turbo-Pascal фирмы Borland и в др. Для
некоторых языков программирования высокого уровня (ЯВУ) компиляторы могут включать средства редактирования и загрузки. Разбиение в общем случае
процесса подготовки исходного модуля к выполнению по крайней мере на два
этапа: компиляция => {редактирование => загрузка}, позволяет весьма эффективно организовывать решение задач различных классов и типов, давая возможность на стадии редактирования использовать для основной программы
подпрограммы из богатых библиотек стандартных программ (БСП), реализующих различные функции как общего, так и специального назначения. Более
того, подобная организация позволяет в ряде случаев обходиться практически
без программирования, создавая нужное ПС из набора средств БСП путем редактирования связей.
В отличие от компилятора интерпретатор выполняет исходный модуль
программы в режиме “оператор за оператором”, по ходу работы превращая
каждый оператор ЯВУ в машинные команды. В действительности большинство
интерпретаторов проводят некоторую предварительную работу над всем текстом исходного модуля (упрощение представления ключевых слов, присвоение
адресов идентификаторам переменных и т.д.). Вместе с тем, оба типа транслирующих программ (компиляторы и интерпретаторы) имеют существенные
различия. Присутствие компилятора в оперативной памяти после получения
объектного модуля из исходного необязательно, тогда как присутствие интерпретатора обязательно в период выполнения исходной программы.
Реализация любого ЯВУ может быть в виде как компилирующего, так и
интерпретирующего типа. Однако в силу сложившихся традиций каждый ЯВУ
отдает предпочтение одному из указанных типов реализации. Так, Fortran, AlВ.Б. Альгин «Курс лекций по компьютерной информатике»
51
gol, Cobol, Pascal, PL/I, С являются, как правило, языками компилирующего типа; Forth, LOGO, APL — интерпретирующего типа, Basic и Lisp одинаково используют оба указанных типа.
Основным преимуществом ЯВУ компилирующего типа является скорость
выполнения загрузочного модуля скомпилированной исходной программы, тогда как интерпретатор должен генерировать соответствующую последовательность машинных команд в момент выполнения оператора ЯВУ, что замедляет время ее выполнения. В ряде случаев ЯВУ интерпретирующего типа более предпочтительны. Они хорошо отвечают программам диалогового типа.
Отладка программ производится без выхода из интерпретатора, что упрощает
эту процедуру и сокращает временные издержки на нее, т.к. каждый раз не
требуется перетрансляции скорректированного исходного модуля.
Ассемблеры — машинно-ориентированные языки программирования в
виде инструкций, которые переводятся “одна в одну” в виде команды для исполнения компьютером. В отличие от алгоритмических языков (языков высокого уровня) они относятся к языкам низкого уровня.
Для отладки программ используются различные средства: отладчики,
трассировщики, тестирующие и др. как в составе систем программирования,
так и автономные.
Системы программирования (СП) представляют собой интегрированные
инструментальные средства, обеспечивающие все основные функции по разработке программ: создание и редактирование исходных модулей, компиляцию
или интерпретацию, создание загрузочных модулей и их выполнение, отладка,
тестирование, БСП, сохранение и документирование и т.д. Многие СП оформляются в виде пакетов с сопутствующим им обеспечением и сопровождением.
Типичными примерами СП являются известные пакеты Turbo-Pascal, Turbo-С,
Turbo-Prolog фирмы Borland для IBM-совместимых ПК.
4.2.6. Прикладное ПО
Прикладное ПО (ППО) составляют пакеты прикладных программ (ППП),
предназначенные для решения определенного круга задач из различных проблемных областей, а также менее крупные программы-утилиты, преследующие
более узкие, но достаточно важные цели снижения трудоемкости и повышения
эффективности работы проблемного пользователя. Сюда же относится все ПО,
разработанное многочисленными пользователями.
Под Пользователем понимается лицо, использующее вычислительные
ресурсы ЭВМ, не обязательно обладающее серьезными профессиональными
знаниями и навыками в области компьютерной информатики. Именно на пользователей различного уровня и ориентированы многочисленные ППП, которые
создаются для решения наиболее массовых научно-технических, инженерных,
экономических и других классов задач. Суть многих ППП состоит в максимальном упрощении интерфейса с ЭВМ проблемного пользователя.
ППП общего назначения ориентированы на широкий круг пользователей
в различных проблемных областях, позволяют автоматизировать наиболее часто используемые функции и работы. К такому типу относятся пакеты обработВ.Б. Альгин «Курс лекций по компьютерной информатике»
52
ки текстовой информации (текстовые процессоры), электронных таблиц,
СУБД, деловой графики и др. Среди пакетов этой группы для ПК можно отметить MS Word, WordStar, WordPerfect, Sprint, ChiWriter, Лексикон (текстовые
процессоры); MS Excel, Quattro Pro, SuperCalc, Multiplan, VP-Planner, (электронные таблицы); MS Access, dBase, FoxBase, Paradox, Clipper, Reflex (СУБД)
и др. При этом следует иметь в виду, что функции пакета одного типа могут
перекрывать функции пакета другого типа; например, функциями деловой графики наделены пакеты электронных таблиц и т.д.
Проблемно-ориентированные ППП имеют достаточно узкое применение.
В них используются особые методы представления и обработки информации,
учитывающие специфику поддерживаемых задач пользователя. Для наиболее
важных приложений, например в САПР, создаются типовые пакеты, удовлетворяющие требованиям большого числа специалистов в соответствующих
проблемных областях. К пакетам данной группы относятся: графические
(Paintbrush, Core Graphics System, GEM, CorelDROW, Harvard Graphics, AutoSketch, Freelance Plus); математические (MathCAD, Mathematica, Reduce, Maple
V); прикладной математики (OptiNet, LP-16, DP-16, CP-16, FP-16); статистические (Statistica, StatGraf, StatWare, DataStat, Gauss, MuliStat); экспертные
системы (Expert Choice, GoldWorks, METHODS, DENDRAL, MYCIN,
PROSPECTOR); издательские системы (AMS-TeX, PageMaker, Ventura Publisher, Adobe Illustrator); многочисленные пакеты автоматизированного проектирования и изготовления чертежей (CAD-группа) и др.
Расширяющие функции ОС пакеты определяют достаточно широкий
спектр ПС, из которых отметим наиболее интересные с точки зрения пользователя. Отдельную подгруппу составляют пакеты, обеспечивающие сопряжение
ЭВМ с унифицированными приборными интерфейсами, научными приборами
и установками; пакеты используют унифицированные процедуры, включая
процедуры на ЯВУ. Другую подгруппу составляют пакеты, обеспечивающие
подключение к ЭВМ дополнительных унифицированных ВУ, поддержку работы ЭВМ в локальных сетях, многомашинных комплексах и т.д. Ряд пакетов
служат для обеспечения обмена текстовыми файлами часто используемых
форматов, подготовленных на различного типа ЭВМ; другие для расширения
функций устройств ЭВМ (монитора, клавиатуры, мыши и др.); третьи обеспечивают обработку информации в режиме информационного распараллеливания
на однородных ВС и т.д.
Интегрированные ППП представляют собой дальнейшее развитие данного класса ПС, объединяя основные функции ряда пакетов, как правило, общего
назначения. Простейшим типом таких ППП является совокупность функционально-ориентированных, объединенных единым информационным интерфейсом. В таких пакетах используются не только единый формат файлов, но и методы доступа к файлам отдельных пакетов, т. е. обеспечивается полная информационная совместимость составляющих совокупность пакетов.
Типичным средством данного класса является известный пакет MS Office
для IBM-совместимых ПК, включающий текстовый процессор MS Word, табличный процессор MS Exсel, систему управления базами данных MS Access, паВ.Б. Альгин «Курс лекций по компьютерной информатике»
53
кет презентационной графики MS PowerPoint и ряд обслуживающих программных средств. Пакет ориентирован на задачи учрежденческого характера и широко используется в различных организациях. По данному принципу можно
создавать и отдельные пакеты, объединяющие ряд программ, определяющих
некоторую совокупность массовых функций.
4.3. Термины и определения
4.3.1. По межгосударственному стандарту [3]
Общие термины
Программные средства; программное обеспечение: Все или часть программ, процедур, правил и относящаяся к ним документация системы обработки
информации.
Примечание: Программные средства являются интеллектуальным продуктом независимо от носителя, на котором они записаны.
Программно-аппаратное средство: Упорядоченная совокупность команд
и связанных с ними данных, хранимая таким образом, что она функционально независима от основной памяти, обычно в постоянном запоминающем устройстве.
Возможность взаимодействия: Возможность связи, выполнения программ или обмена данными между различными функциональными устройствами
способом, который требует от пользователя небольших или вообще не требует
знаний особенностей этих устройств.
Разделение времени (ндп. квантование времени): Технологический
прием системы обработки данных, который обеспечивает чередование по времени
двух и более процессов в одном процессоре.
Программные средства
Прикладное программное средство; прикладная программа: Программное
средство или программа, специально предназначенная для решения прикладной
задачи.
Пример — Программа для обработки электронных таблиц.
Системное программное средство: Программное средство, независимо от
применения поддерживающее работу прикладных программных средств.
Пример — Операционная система.
Служебное программное средство; служебная программа: Программное
средство или программа, которая способствует развитию, сопровождению или использованию других программных средств или обеспечивает возможности общего характера, независимые от применения.
Пример — Компилятор, система управления базой данных.
Системная документация: Совокупность документов, которые описывают
требования, возможности, ограничения, устройство, функционирование и обслуживание системы обработки информации.
Пакет программ: Завершенная и документально оформленная совокупность программ, поставляемая отдельным пользователям для общего или функционального применения.
В.Б. Альгин «Курс лекций по компьютерной информатике»
54
Примечание: Некоторые пакеты программ могут изменяться для конкретного применения.
Мобильность (программы): Способность программы выполняться в различных системах обработки данных без преобразования на другие языки и с небольшим изменением или без него.
Проектирование программного средства: Применение системы научных и
технологических знаний, методов и практического опыта для разработки, реализации, тестирования и документирования программного средства с целью оптимизации его производства, сопровождения и качества.
Операционная система; ОС: Программное средство, управляющее выполнением программ и обеспечивающее такие функции, как распределение ресурсов, планирование, управление вводом-выводом и данными.
Примечание: Хотя операционные системы являются преимущественно
программными, однако возможно частичное применение аппаратных средств.
Программирование
Программа; компьютерная программа: Синтаксическая единица, подчиняющаяся правилам специфического языка программирования и состоящая из описаний и операторов или команд, необходимых для решения определенной функции,
задачи или проблемы.
Программировать; составлять программы: Создавать, записывать, модифицировать и тестировать программы.
Программирование: Создание, запись, модификация и тестирование программы.
Подпрограмма; стандартная программа: Программа или часть программы, которая может иметь применение общего характера или многократное.
Алгоритм: Конечная упорядоченная совокупность четко определенных правил для решения задачи.
Блок-схема: Графическое представление процесса или пошагового решения задачи, использующее надлежащим образом описанные геометрические фигуры, соединенные линиями связей, предназначенное для проектирования или документирования процесса или программы.
Отлаживать: Определять, локализовывать и устранять ошибки в программе.
Естественный язык: Язык, правила которого основываются на современном словоупотреблении без точного их описания.
Искусственный язык: Язык, правила которого четко устанавливаются до
его использования.
Язык программирования: Искусственный язык для представления программ.
4.3.2. По другим нормативным документам [4]
Программное средство (software): Все или часть программ, процедур,
правил и любой соответствующей документации системы обработки информации (ИСО/МЭК 2382-1).
В.Б. Альгин «Курс лекций по компьютерной информатике»
55
Пакет программ (software package): Полный и документально оформленный набор программ, поставляемый отдельным пользователям для реализации общих приложений или функций (ИСО/МЭК 2382-20).
Системное программное средство (system software): Независимое от
приложения программное средство, которое обеспечивает выполнение прикладного программного средства (ИСО/МЭК 2382-20).
Сервисная программа (utility routine, utility program): Программа (машинная программа), которая обеспечивает общие, часто используемые услуги
для пользователей компьютера и обслуживающего персонала (ИСО/МЭК 23827).
Функциональный модуль (functional unit): Объект технических или (и)
программных средств, имеющий конкретное назначение (ИСО/МЭК 2382-1).
(Машинная) программа [(computer) program]: Синтаксический блок, соответствующий правилам конкретного языка программирования и формирующий описания и операторы или команды, необходимые для решения (выполнения) некоторой функции, задачи или проблемы (ИСО/МЭК 2382-1).
Интерфейс (interface): Общая граница между двумя функциональными
блоками, определяемая различными характеристиками, относящимися к функциям, физическим соединениям, обменам сигналами, и другими соответствующими характеристиками блоков (ИСО/МЭК 2382-9).
Интерфейс пользователя (user interface): Интерфейс, обеспечивающий
возможность обмена информацией между пользователем (человеком) и компонентами технических или программных средств вычислительной системы
(АНСИ/ИИИЭ Стд 610.12).
Конфигурация (configuration): Способ организации и взаимосвязи технических и программных средств системы обработки информации (ИСО/МЭК
2382-1).
ЛИТЕРАТУРА
к разделу 4
1.
2.
3.
4.
Экономическая информатика и вычислительная техника: Учебник /
Г.А.Титоренко, Н.Г.Черняк, Л.В.Еремин и др.; Под ред. В.П.Косарева,
А.Ю.Королева. — М.: Финансы и статистика, 1996. — 336 с.
Аладьев В.З., Хунт Ю.Я., Шишаков М.Л. Основы информатики: Учеб. пособие. – М.: Информ.-изд. дом “Филинъ”, 1998. — 496 с. (и последующие
издания).
ГОСТ ИСО/МЭК 2382-1-99. Межгосударственный стандарт. Информационная технология. СЛОВАРЬ. Часть 1. Основные термины. — Издание
официальное. Межгосударственный совет по стандартизации, метрологии
и сертификации. — Минск, 1999.
СТБ ИСО/МЭК 12119-2003. Информационные технологии. ПАКЕТЫ
ПРОГРАММ. Требования к качеству и тестирование. — Издание официальное. — Минск, 2003.
В.Б. Альгин «Курс лекций по компьютерной информатике»
Download