Главная > Энциклопедия кибернетики. Т.1
НАПИШУ ВСЁ ЧТО ЗАДАЛИ
СЕКРЕТНЫЙ БОТ В ТЕЛЕГЕ
<< Предыдущий параграф Следующий параграф >>
Пред.
След.
Макеты страниц

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

Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике

ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO

АВТОМАТИЗАЦИЯ ПРОГРАММИРОВАНИЯ

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

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

включением операций над объектами сложной структуры (векторами и матрицами), а также системы стандартных подпрограмм, созданной для машины «М-20». Метод подпрограмм приводит к облегчению и упрощению задачи составления программ, однако он основывается на языках, принципиально мало отличающихся от языков машинных. Последние не могли служить средством преодоления трудностей программирования, возрастающих в связи с увеличением числа и разнообразия машин, ростом их возможностей и ростом сложности решаемых задач. Возникла проблема описания алгоритмов в терминах достаточно крупных операций — проблема составления схем программ. А. А. Ляпунов (1911— 73) разработал операторный метод программирования; была построена алгебра программ, операции которой представляют собой абстрактное выражение наиболее существенных и чаще всего встречающихся на практике композиций программ. Дальнейшее уточнение понятия оператора и четкое выделение основных типов операторов в сочетании с библиотечным методом позволили использовать операторный метод программирования как основное средство А. п. на базе создания спец. трансляторов. Для операторных схем алгоритмов разработаны системы эквивалентных преобразований, позволяющие получать эффективные в том или ином смысле программы. На основе метода операторного программирования были созданы трансляторы для машин «Стрела» и «БЭСМ», послужившие началом развития А. п. в СССР на основе использования трансляторов.

Составление программ при помощи машины явилось первым серьезным использованием машин в «неарифметических» целях. Работы по А. п. дали возможность по-новому осознать возможности машин, послужили толчком не только к постановке и решению вопросов и др. неарифметических их использованиях, но и оказали влияние на характер вычисл. программ, которые все чаще и чаще оказываются в значительной мере неарифметическими. Успех первых трансляторов послужил стимулом к созданию аналогичных программ на др. вычисл. машинах. Однако языки первых трансляторов несли на себе в той или иной степени черты языков конкретных ЦВМ и поэтому являлись в известной степени языками машинно-ориентированными и лишь незначительно облегчали труд программиста.

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

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

Работы по созданию адресного языка оказали влияние на выбор параметров при конструировании ряда отечественных вычисл. машин, в частности, Киевь, «Днепр», «Промшь» и «Днепр-2»; адресный язык получил распространение как входной язык систем автомат, программирования для машин и др.

За рубежом работы по А. п. развивались с 50-х годов 20 ст. в том же направлении, т. е. по пути автоматизации использования библиотек стандартных подпрограмм, построения языков программирования, таких, как ЮНИКОД, ФЕРРАНТИ и многих др. Вместе с тем обилие таких систем приводило к обособлению коллективов, работающих на различных системах, и затрудняло процесс обмена разработанными алгоритмами. В связи с этим возникла идея создания универсальных языков процедурно-ориентированных. Одним из таких языков являемся ФОРТРАН. Универсальность языка зачастую приводит к получению программ, обладающих худшими параметрами в смысле расхода памяти или времени вычислений по ним (в сравнении с программами, получаемыми с помощью искусных приемов, учитывающих те или иные особенности машины). Однако рост быстродействия ЦВМ и количества их делают эту потерю малоощутимой по сравнению с теми выгодами, которые дает употребление универсальных языков. В 1958 был создан проект международного языка программирования, ориентированного на класс задач вычисл. математики, известного под названием АЛГОЛ-58, доработанный вариант которого был принят в 1960 и назван Этот язык в середине 60-х годов 20 ст. стал основой для многих разрабатываемых языков и трансляторов.

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

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

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

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

Появление языков для описания грамматик языков программирования (т. н. метаязыков) создало предпосылки для построения алгоритмов синтаксического контроля и анализа, способных по заданному описанию грамматики одного из данного класса языков и алгоритму в этом языке выдавать синтаксическое «дерево» последнего. Существенно при этом, что процесс синтаксического контроля или анализа для многих языков оказывается независимым от конкретных особенностей ЦВМ. Благодаря этому блок анализа транслятора становится универсальным, обслуживающим трансляцию для ряда языков данного класса. Трансляторы, в которых анализ обрабатываемой программы осуществляется на основе формального описания синтаксиса исходного языка (в некотором метаязыке), наз. синтаксически управляемыми.

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

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

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

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

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

Осн. тенденцией в развитии А. п. является стремление к созданию средств, обеспечивающих реализацию задач (их программирование, отладку, решение и накопление, а также хранение программ и данных) при минимальных затратах труда программиста. Решение этой задачи обусловит дальнейшее применение ЦВМ в спец. областях. В плане этих работ особую остроту приобретает проблема унификации и стандартизации средств матем. и тех. обеспечения ЦВМ.

Расширение сфер применения ЦВМ, в свою очередь, связано с разработкой соответствующих специализированных языков и библиотек. Попытки всеобъемлющих языков (СИМУЛА-67, ПЛ-1 и АЛГОЛ-68) подтверждают закономерность развития языков, ориентированных на проблемы. При этом на первый план выдвигается проблема автоматизации процесса разработки средств матем. обеспечения, обеспечивающих эффективную реализацию этих языков, и в связи с этим создания метатрансляторов — систем программирования, в которых входной и выходной языки являются параметрами, задаваемыми посредством их описания в некоторых метаязыках.

Лит.: Ершов А. П. [и др.]. Алгоритмические языки и программирование. В кн.: История отечественной математики, т. 4, кн. 2. К., 1970. Е. Л. Ющенко.

1
Оглавление
email@scask.ru