Понятие, назначение и составные элементы системпрограммирования.
Неотъемлемая часть современныхЭВМ – системы программного обеспечения, являющиеся логическим продолжениемлогических средств ЭВМ, расширяющим возможности аппаратуры и сферу ихиспользования. Система программного обеспечения, являясь посредником междучеловеком и техническими устройствами машины, автоматизирует выполнение тех илииных функций в зависимости от профиля специалистов и режимов их взаимодействияс ЭВМ. Основное назначение программного обеспечения – повышение эффективноститруда пользователя, а также увеличение пропускной способности ЭВМ посредствомсокращения времени и затрат на подготовку и выполнение программ. Программноеобеспечение ЭВМ можно подразделить на общее и специальное программноеобеспечение.
Общеепрограммное обеспечение реализует функции, связанные с работой ЭВМ, и включаетв себя системы программирования, операционные системы, комплекс программтехнического обслуживания.
Специальноепрограммное обеспечение включает в себя пакеты прикладных программ, которыепроблемно ориентированы на решение вполне определенного класса задач.
Системой программирования называется комплекс программ,предназначенный для автоматизации программирования задач на ЭВМ. Системапрограммирования освобождает проблемного пользователя или прикладногопрограммиста от необходимости написания программ решения своих задач нанеудобном для него языке машинных команд и предоставляют им возможностьиспользовать специальные языки более высокого уровня. Для каждого из такихязыков, называемых входными или исходными, система программирования имеетпрограмму, осуществляющую автоматический перевод (трансляцию) текстов программыс входного языка на язык машины. Обычно система программирования содержит описанияприменяемых языков программирования, программы-трансляторы с этих языков, атакже развитую библиотеку стандартных подпрограмм. Важно различать языкпрограммирования и реализацию языка.
Язык – это набор правил, определяющих систему записей, составляющихпрограмму, синтаксис и семантику используемых грамматических конструкций.
Реализация языка – это системная программа, которая переводит(преобразует) записи на языке высокого уровня в последовательность машинныхкоманд.
Имеется два основных вида средствреализации языка: компиляторы и интерпретаторы.
Компилятор транслирует весь текст программы, написанной на языкевысокого уровня, в ходе непрерывного процесса. При этом создается полнаяпрограмма в машинных кодах, которую затем ЭВМ выполняет без участия компилятора.
Интерпретатор последовательно анализирует по одному операторупрограммы, превращая при этом каждую синтаксическую конструкцию, записанную наязыке высокого уровня, в машинные коды и выполняя их одна за другой.Интерпретатор должен постоянно присутствовать в зоне основной памяти вместе синтерпретируемой программой, что требует значительных объемов памяти.
Следуетзаметить, что любой язык программирования может быть как интерпретируемым, таки компилируемым, но в большинстве случаев у каждого языка есть свойпредпочтительный способ реализации. Языки Фортран, Паскаль в основномкомпилируют; язык Ассемблер почти всегда интерпретирует; языки Бейсик и Лиспшироко используют оба способа.
Основнымпреимуществом компиляции является скорость выполнения готовой программы.Интерпретируемая программа неизбежно выполняется медленнее, чем компилируемая,поскольку интерпретатор должен строить соответствующую последовательностькоманд в момент, когда инструкция предписывает выполнение.
В то же времяинтерпретируемый язык часто более удобен для программиста, особенноначинающего. Он позволяет проконтролировать результат каждой операции. Особеннохорошо такой язык подходит для диалогового стиля разработки программ, когдаотдельные части программы можно написать, проверить и выполнить в ходе созданияпрограммы, не отключая интерпретатора.
По наборувходных языков различают системы программирования одно- и многоязыковые.Отличительная черта многоязыковых систем состоит в том, что отдельные частипрограммы можно составлять на разных языках и помощью специальныхобрабатывающих программ объединять их в готовую для исполнения на ЭВМпрограмму.
Дляпостроения языков программирования используется совокупность общепринятыхсимволов и правил, позволяющих описывать алгоритмы решаемых задач и однозначноистолковывать смысл созданного написания. Основной тенденцией в развитии языковпрограммирования является повышение их семантического уровня с целью облегченияпроцесса разработки программ и увеличения производительности труда ихсоставителей.
По структуре,уровню формализации входного языка и целевому назначению различают системыпрограммирования машинно-ориентированные и машинно-независимые.
Машинно-ориентированные системы программирования имеют входнойязык, наборы операторов и изобразительные средства которых существенно зависятот особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).Машинно-ориентированные системы позволяют использовать все возможности иособенности машинно-зависимых языков:
·
· ;
· ;
· ;
· ;
·
·
Машинно-ориентированные системы по степениавтоматического программирования подразделяются на классы:
1. Машинный язык. В таких системахпрограммирования отдельный компьютер имеет свой определенный Машинный Язык(далее МЯ), ему предписывают выполнение указываемых операций над определяемымиими операндами, поэтому МЯ является командным. Однако, некоторые семейства ЭВМ(например, ЕС ЭВМ, IBM/370/ идр.) имеют единый МЯ для ЭВМ разной мощности. В команде любого из нихсообщается информация о местонахождении операндов и типе выполняемой операции.В новых моделях ЭВМ намечается тенденция к повышению внутренних языковмашинно-аппаратным путем реализовывать более сложные команды, приближающиеся посвоим функциональным действиям к операторам алгоритмических языковпрограммирования.
2. Система СимволическогоКодирования. В данных системах используются Языки Символического Кодирования(далее ЯСК), которые так же, как и МЯ, являются командными. Однако кодыопераций и адреса в машинных командах, представляющие собой последовательность двоичных (во внутреннем коде) или восьмеричных (частоиспользуемых при написании программ) цифр, в ЯСК заменены символами(идентификаторами), форма написания которых помогает программисту легчезапоминать смысловое содержание операции. Это обеспечивает существенноеуменьшение числа ошибок при составлении программ. Использование символическихадресов – первый шаг к созданию ЯСК. Команды ЭВМ вместо истинных (физических)адресов содержат символические адреса. По результатам составленной программыопределяется требуемое количество ячеек для хранения исходных промежуточных ирезультирующих значений. Назначение адресов, выполняемое отдельно отсоставления программы в символических адресах, может проводиться менееквалифицированным программистом или специальной программой, что в значительнойстепени облегчает труд программиста.
3. Автокоды. Существуют системыпрограммирования, использующие языки, которые включают в себя все возможностиЯСК, посредством расширенного введения макрокоманд – они называются Автокоды. Вразличных программах встречаются некоторые достаточно часто использующиесякомандные последовательности, которые соответствуют определенным процедурампреобразования информации. Эффективная реализация таких процедур обеспечиваетсяоформлением их в виде специальных макрокоманд и включением последних в языкпрограммирования, доступный программисту. Макрокоманды переводятся в машинныекоманды двумя путями – расстановкой и генерированием. В постановочной системесодержатся «остовы» – серии команд, реализующие требуемую функцию, обозначеннуюмакрокомандой. Макрокоманды обеспечивают передачу фактических параметров,которые в процессе трансляции вставляются в «остов» программы, превращая её вреальную машинную программу. В системе с генерацией имеются специальные программы,анализирующие макрокоманду, которые определяют, какую функцию необходимовыполнить и формируют необходимую последовательность команд, реализующих даннуюфункцию. Обе указанных системы используют трансляторы с ЯСК и набормакрокоманд, которые также являются операторами автокода. Развитые автокодыполучили название Ассемблеры. Сервисные программы и пр., как правило,составлены на языках типа Ассемблер.
4. Макрос. В таких системахязык, являющийся средством для замены последовательности символов описывающихвыполнение требуемых действий ЭВМ на более сжатую форму – называется Макрос(средство замены). В основном, Макрос предназначен для того, чтобы сократитьзапись исходной программы. Компонент программного обеспечения, обеспечивающийфункционирование макросов, называется макропроцессором. На макропроцессорпоступает макросопределяющий и исходный текст. Реакция макропроцессора на вызов– выдача выходного текста. Макрос одинаково может работать, как с программами,так и с данными.
Машинно-независимые системы программирования – это средствоописания алгоритмов решения задач и информации, подлежащей обработке. Ониудобны в использовании для широкого круга пользователей и не требуют от нихзнания особенностей организации функционирования ЭВМ. В таких системахпрограммы, составляемые языках, имеющих название высокоуровневых языковпрограммирования, представляют собой последовательности операторов,структурированные согласно правилам рассматривания языка (задачи, сегменты,блоки и т.д.). Операторы языка описывают действия, которые должнавыполнять система после трансляциипрограммы на МЯ. Таким образом, командные последовательности (процедуры,подпрограммы), часто используемые в машинных программах, представлены в высокоуровневыхязыках отдельными операторами. Программист получил возможность не расписывать вдеталях вычислительный процесс на уровне машинных команд, а сосредоточиться наосновных особенностях алгоритма.
Средимашинно-независимых систем программирования следует выделить:
1. Процедурно-ориентированныесистемы. Входные языки программирования в таких системах служат для записиалгоритмов (процедур) обработки информации, характерных для решения задачопределенного класса. Эти языки, должны обеспечить программиста средствами,позволяющими коротко и четко формулировать задачу и получать результаты втребуемой форме. Процедурных языков очень много, например: Фортран, Алгол –языки, созданные для решения математических задач; Simula, Слэнг — для моделирования; Лисп, Снобол – для работысо списочными структурами.
2. Проблемно-ориентированныесистемыв качестве входного языкаиспользуют язык программирования с проблемной ориентацией. С расширениемобластей применения вычислительной техники возникла необходимость формализоватьпредставление постановки и решение новых классов задач. Необходимо было создатьтакие языки программирования, которые, используя в данной области обозначения итерминологию, позволили бы описывать требуемые алгоритмы решения дляпоставленных задач. Эти языки, ориентированные на решение определенных проблем,должны обеспечить программиста средствами, позволяющими коротко и четкоформулировать задачу и получать результаты в требуемой форме. Программы,составленные на основе этих языков программирования, записаны в терминахрешаемой задачи и реализуются выполнением соответствующих процедур.
3. Диалоговые языки.Появление новых технических возможностей поставило задачу перед системнымипрограммистами – создать программные средства, обеспечивающие оперативноевзаимодействие человека с ЭВМ их назвали диалоговыми языками. Создавалисьспециальные управляющие языки для обеспечения оперативного воздействия напрохождение задач, которые составлялись на любых раннее неразработанных (недиалоговых) языках. Разрабатывались также языки, которые кроме целей управленияобеспечивали бы описание алгоритмов решения задач. Необходимость обеспеченияоперативного взаимодействия с пользователем потребовала сохранения в памяти ЭВМкопии исходной программы даже после получения объектной программы в машинныхкодах. При внесении изменений в программу система программирования с помощьюспециальных таблиц устанавливает взаимосвязь структур исходной и объектнойпрограмм. Это позволяет осуществить требуемые редакционные изменения вобъектной программе.
4. Непроцедурные языки.Непроцедурные языки составляют группу языков, описывающих организацию данных,обрабатываемых по фиксированным алгоритмам (табличные языки и генераторыотчетов), и языков связи с операционными системами. Позволяя четко описыватькак задачу, так и необходимые для её решения действия, таблицы решений даютвозможность в наглядной форме определить, какие условия должны выполнятся,прежде чем переходить к какому-либо действию. Одна таблица решений, описывающаянекоторую ситуацию, содержит все возможные блок-схемы реализаций алгоритмоврешения. Табличные методы легко осваиваются специалистами любых профессий.Программы, составленные на табличном языке, удобно описывают сложные ситуации,возникающие при системном анализе.
В самом общемслучае для создания программы на выбранном языке программирования нужно иметьследующие компоненты.
1. Текстовый редактор. Специализированные текстовые редакторы,ориентированные на конкретный язык программирования, необходимы для полученияфайла с исходным текстом программы,который содержит набор стандартных символов для записи алгоритма.
2. Исходный текст с помощью программы-компилятора переводится вмашинный код. Исходный текст программы состоит, как правило, из несколькихмодулей (файлов с исходными текстами). Каждый модуль компилируется в отдельныйфайл с объектным кодом, которые затемтребуется объединить в одно целое. Кроме того, системы программирования, какправило, включают в себя библиотеки стандартных подпрограмм. Стандартныеподпрограммы имеют единую форму обращения, что создает возможностиавтоматического включения таких подпрограмм в вызывающую программу и настройкиих параметров.
3. Объектный код модулей иподключенные к нему стандартные функции обрабатывает специальная программа – редактор связей. Данная программа объединяетобъектные коды с учетом требований операционной системы и формирует на выходеработоспособное приложение – исполнимыйкод для конкретной платформы. Исполнимый код это законченная программа,которую можно запустить на любом компьютер, где установлена операционнаясистема, для которой эта программа создавалась.
4. В современных системахпрограммирования имеется еще один компонент – отладчик, который позволяет анализировать работу программы во времяее исполнения. С его помощью можно последовательно выполнять отдельныеоператоры исходного текста последовательно, наблюдая при этом, как меняютсязначения различных переменных.
5. В последние несколько лет впрограммировании (особенно для операционной среды Windows) наметился так называемыйвизуальный подход. Этот процесс автоматизирован в средах быстрого проектирования. При этом используются готовыевизуальные компоненты, свойства и поведение которых настраиваются с помощьюспециальных редакторов. Таким образом, происходит переход от языковпрограммирования системного уровня к языкам сценариев.
Эти языки создавались дляразличных целей, что обусловило ряд фундаментальных различий между ним.Системные разрабатывались для построения структур данных и алгоритмов “с нуля”,начиная от таких примитивных элементов, как слово памяти компьютера. В отличиеот этого, языки описания сценариев создавались для связывания готовых программ.Их применение подразумевает наличие достаточного ассортимента мощныхкомпонентов, которые требуется только объединить друг с другом. Языкисистемного уровня используют строгий контроль типов данных, что помогаетразработчикам приложении справляться со сложными задачами. Языки описаниясценариев не используют понятие типа, что упрощает установление связей междукомпонентами, а также ускоряет разработку прикладных систем.
Языки описания сценариев основанына несколько другом наборе компромиссов, чем языки системного уровня. В нихскорость исполнения и строгость контроля типов ставятся в шкале приоритетов наболее низкое место, но зато выше цениться производительность труда программистаи повторное использование. Это соотношение ценностей оказывается все болееобоснованным по мере того, как компьютеры становятся быстродействующими и менеедорогими, чего нельзя сказать о программистах. Языки системного программирования хорошо подходят для созданиякомпонентов, где основная сложность заключена в реализации алгоритмов иструктур данных, тогда как языки описания сценариев лучше приспособлены для построения приложении из готовыхкомпонентов, где сложность состоит в налаживании межкомпонентных связей. Задачипоследнего рода получают все большее распространение, так что роль языковописания сценариев будет возрастать.
Список литературы
1.
2. В.А. Мясников,С.А. Майоров, Г.И. Новиков. ЭВМ для всех. –М.: Знание, 1985.
3. А.Г. Гейн.Основы информатики и вычислительной техники. –М.: Просвещение, 1997.
4. В.Ф. Ляхович.Основы информатики. –Ростов-на-Дону: Феникс, 1996.
5. Вычислительнаятехника и программирование / Под ред. А.В. Петрова –М.: Высш. шк., 1990.
6. Информатика:Базовый курс / С.В. Симонович и др. – СПб.: Питер, 1999.