Системы автоматизации программирования

К системам автоматизации программирования (САП) относят языки программирования, языковые трансляторы, редакторы, сред­ства отладки и другие вспомогательные программы. Языки програм­мирования служат средством передачи информации, средством запи­си текстов исходных программ. Поэтому в состав программ ОПО они не входят. Учитывая важность языковых средств, рассмотрим их состав более подробно.

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

Вместе с тем число интенсивно применяемых языков программи­рования относительно невелико. Для каждого класса ЭВМ всегда су­ществует несколько таких языков, ориентированных на определен­ные виды обработки информации, на уровень подготовки пользова­телей в области программирования. При выборе языка программирования пользователь должен учитывать, что описание алгоритма ре­шаемой задачи можно выполнить на любом алгоритмическом языке в силу его универсальности. Однако изобразительные средства языков очень сильно отличаются, и задача выбора заключается в том, чтобы выбранный язык наилучшим образом соответствовал требуемым про­цедурам обработки данных в задании пользователя. Различают три уровня пользователей, применяющих языковые средства: пользователи-прикладники, системные программисты и инженерно-техничес­кий персонал, обеспечивающий техническое обслуживание средств ЭВТ. Каждая категория пользователей использует определенный на­бор языков.

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

 

 

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

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

Из процедурно-ориентированных языков широко известны языки Фортран, Алгол, Кобол, Basic, Pascal, Ада, Си и др. Спектр языков этой группы очень широк, и среди них существует определенная иерархия. Считается, что язык Basic предназначается для начинающих програм­мистов, язык Pascal — язык для студентов, это язык «правильного», клас­сического программирования, язык Си — язык квалифицированных про­граммистов и т.д. Существуют определенные соглашения в использова­нии языков программирования. Так, при создании программ для собствен­ных работ пользователь может использовать любой язык, даже Basic. При разработке ПО для одного заказчика корректно использовать язык Pascal, при разработке программных средств для многих потребителей целесообразно использование языков Си и Ассемблер.

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

Современный язык высокого уровня — Pascal получил широкое распространение в силу ряда достоинств: простоты, ясности, сравни­тельно узкого набора возможных синтаксических конструкций наря­ду с семантическим их богатством. Общепризнано, что он является наилучшим средством для обмена программами между различными типами ПЭВМ. На основе разработки языка Pascal предложен ряд новых языков, например язык Модула-2, в котором особое внимание уделяется построению программы как набора независимых модулей. На базе языка Pascal создан достаточно мощный язык Ада, который задумывался как универсальный и наиболее перспективный язык программирования. К нему было приковано внимание разработчиков всех новых типов ЭВМ. Однако широкого распространения этот язык до сих пор не получил.

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

Все описанные выше языки программирования используют так называемые пошаговые описания алгоритмов. Именно в этом и зак­лючается источник большой трудоемкости подготовки задач к реше­нию. Несомненно, что для машин будущих поколений будут предло­жены более эффективные средства программирования. Так, например, все больше внимания уделяется разработкепроблемно-ориентированных языков программирования (Симула, GPSS и др.). В этих языках имеется возможность описывать специфические алгоритмы обработ­ки информации более крупными конструкциями. Это делает програм­мы пользователей более наглядными, так как каждая используемая конструкция соответствует вполне определенному объекту, исследу­емому пользователем.

Другой интересной тенденцией является появлениенепроцедурных описательных языков. Конструкции этих языков констатируют, ка­кой результат желателен пользователю, не указывая, каким образом это сделать. Примером такого языка служит язык ПРОЛОГ (Про­граммирование ЛОГики), который широко применяется специалистами в области искусственного интеллекта. Конструкции языка соот­ветствуют не математическим формулам, а определяют отношения между объектами и величинами. Язык состоит только из описаний и не имеет как таковых команд-инструкций.

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

В состав САП включаются также языковыетрансляторы для всех языков, которые используют пользователи при разработке своих про­грамм. В зависимости от специфики вычислительного центра и кон­тингента пользователей их состав формируется эмпирически. Обыч­но же он включает трансляторы процедурно-ориентированных язы­ков высокого уровня (Pascal, Basic, Си) и машинно-ориентированных языков (Ассемблер).

Различают трансляторы двух типов: интерпретаторы и компиля­торы. Трансляторы-интерпретаторы предназначаются для последова­тельного пооператорного преобразования каждого предложения ис­ходного модуля программы в блок машинных команд с одновремен­ным их выполнением. Машинная программа в полном объеме при этом не создается, решение задач пользователей происходит замедленны­ми темпами. Этот вид трансляции рекомендуется использовать при отладке новых программных продуктов.

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

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

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

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

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

 

Популярные системы программирования

Для популярных языков программирования в IBM PC-совместимых компьютерах имеется множество систем программирования, позволяющих создавать программы, работающие в среде DOS, Windows, Windows 95, Windows NT и др.

· языки С и C++ — здесь наибольшей популярностью пользуются системы программирования фирм Microsoft (Visual C++) и Borland (Borland C++, Turbo C++). Немало поклонников имеют системы программирования фирмы Symantec и Watcom;

· язык Паскаль — здесь наибольшей популярностью пользуются системы программирования фирмы Borland (Borland Pascal, Turbo Pascal);

· язык Бейсик — для этого языка весьма популярна очень мощная система программирования Visual Basic фирмы Microsoft (она даже позволяет создавать приложения типа клиент-сервер), но применяются также и другие системы программирования.

Во многих областях широко используются системы программирования на других языках — Фортране (Microsoft Fortran, Watcom Fortran и т.д.), Коболе (Visual Object Co-bol фирмы Micro Focus и др.) и других.

В последнее время стали появляться системы программирования на языке Java (Symantec Cafe, Microsoft J++ и др.). Они позволяют создавать так называемые Java-приложения (апплеты) для Web-страниц в InterNet. Эти приложения могут вызываться при просмотре Web-страниц и выполняться на любом компьютере, независимо от операционной системы или типа микропроцессора этого компьютера. Чаще всего это делается для «оживления» Web-страниц, то есть внедрения в них элементов анимации, но могут быть и другие применения.

 

Пакеты программ

Согласно рис. 10.1 в ПО ЭВМ имеются две группы пакетов про­грамм: пакеты прикладных программ (ППП) и пакеты, дополняющие возможности ОС (ППос). С развитием программного обеспечения ЭВМ наметилась тенденция к слиянию их в единые интегрированные пакеты. Например, операционная среда Windows может подключать и пакеты MS Office, объединяющие программы для работы экономис­та-делопроизводителя. Однако не всегда централизованные средства обработки удовлетворяют всем требованиям пользователей, поэто­му многие ЭВМ, наряду с интегрированными пакетами, продолжают использовать и более эффективные специализированные ППП.

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

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

• системы обработки текстов (текстовые редакторы);

• системы обработки «электронных таблиц»;

• системы управления базами данных;

• системы «деловой графики»;

• коммуникационные системы;