С.Бобровский, О Фортране и других языках программирования, страница 4
Описание файла
Документ из архива "С.Бобровский, О Фортране и других языках программирования", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МАИ. Не смотря на прямую связь этого архива с МАИ, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "С.Бобровский, О Фортране и других языках программирования"
Текст 4 страницы из документа "С.Бобровский, О Фортране и других языках программирования"
Чтобы не распылять усилия разработчиков и обеспечить единый подход к созданию и унификации программного обеспечения, Министерство обороны США приняло стандарт на набор команд для 16-разрядного микропроцессора, используемого в бортовых военных системах. Этот стандарт получил название MIL-STD-1750. В дальнейшем набор команд был дополнен несколькими дополнительными инструкциями, и модификация этого стандарта 1750А используется в американской армии по сей день.
В силу жестких требований, предъявляемых к языку, реализация Jovial, созданная в ВВС США, представляет собой не просто компилятор, а целый комплекс стандартизованных средств разработки. В этом на него похожа система Java, в типичную поставку которой помимо компилятора обязательно входит виртуальная Jaua-машина, набор библиотек, средства отладки, средства просмотра, имитирующие работу в сети и многое другое. Язык Jovial распространяется в комплекте разработчика под названием ITS. Этот комплект представляет собой прекрасный пример тщательно продуманного подхода к выбору и совершенствованию средства разработки программного обеспечения, которое планируется использовать в ответственных областях десятки лет. В типовой комплект ITS входят кросс-платформные компилятор и макроассемблер, поддерживающий систему команд 1750А, сборщик, символьный интерактивный отладчик, поддерживающий режим реального времени, программный симулятор процессора с набором команд 17БОА, библиотека стандартных модулей и загрузчик кода в оборудование стандарта 1750 (при наличии соответствующих аппаратных плат). Первая очередь этого комплекса была закончена в 1984 году. Первоначально она функционировала только на мэйнфреймах, а сегодня работает также под управлением SCO UNIX или MS-DOS. Комплект ITS обеспечивает генерацию кода не только для микропроцессора 1750А, но и для VAX, IBM PC, Z80, М680ХО, Д/5С-компьютеров и ряда других систем. Наиболее популярная реализация ITS для компьютеров серии VAX используется сегодня более чем в 50 подразделениях Министерства обороны США. Почти так же популярна реализация для персоналок, работающая под управлением Unix/Linux.
Комплект ITS (www.jovial.hill.af.mil) распространяется правительством США бесплатно. Для получения (или попытки получения) этого комплекта рекомендовано обращаться к военному атташе американского посольства.
Сегодня имеются и коммерческие версии языка Jovial, впрочем, распространяемые за пределами США только с разрешения американских компетентных органов. Стоят эти версии десятки тысяч долларов. Одна из них представляет собой компилятор Jovial для платформ VAX/VMS, SPARC/SunOS, HP/UX, позволяющий получать код для Z8000 и 1750А. В комплект дополнительно включаются ассемблер для каждой платформы, сборщик, симулятор целевых наборов команд и символьный отладчик, использующий интерфейс X-Windows. Настройки оптимизации позволяют получать код, который по сравнению с кодом, написанным на ассемблере вручную, дает выигрыш на 15% в размере программы и скорости ее выполнения.
Стремительно возросшая сложность современной боевой техники потребовала более мощных микропроцессорных устройств управления. Летом 1996 года был выпущен компилятор для Jovial, работающий под управлением операционной системы Solaris компьютеров Sun SPARC. Он позволяет получать код для бортовых управляющих систем, основанных HaM/PS-микропроцессорах серии R2000/3000/4000. Компилятор встроен в графическую оболочку, содержащую редактор и символьный отладчик. Эта оболочка хорошо известна разработчикам программ на Аде для компьютеров SPARC; теперь она стала доступна и программистам на языке Jovial.
Министерство обороны США уделяет языку Jovial большое внимание. За последние 15 лет использования Jovial американская армия инвестировала в его совершенствование более 16 миллионов долларов. Суммы, стимулирующие написание программ на Jovial и перенос других программных систем на этот язык, увеличиваются с каждым годом. Для организации полной совместимости всего программного обеспечения, используемого в бортовых системах, американские военные приняли стандарт MIL-STD-1589 на версию этого языка J-73. Теперь все программное обеспечение, разрабатываемое в подразделениях Министерства Обороны США на языке Jovial, должно соответствовать данному стандарту. ВВС США собираются провести полный реинжиниринг своей компьютерной инфраструктуры, при этом все программное обеспечение, работающее в бортовых микропроцессорных устройствах, планируется перенести на языки Jovial и Ада. В данном проекте особое внимание уделяется связке этих языков. Дело в том, что множество программ, предназначенных для решения боевых задач, довольно бессистемно разрабатывались как на том, так и на другом языке. Теперь же планируется осуществить интеграцию компьютерных программ, написанных на этих языках, с целью обеспечения возможности их совместного использования и легкой модификации программного обеспечения. Для решения этой задачи будет активно использоваться продукт фирмы Xinotech Research — Xinotech Language Translator (XLT), предназначенный для семантического анализа языков программирования и перевода исходных текстов программ с одних языков на другие с возможностью интерактивного контроля процесса преобразования со стороны пользователя. В XLT используются описания языков с помощью абстрактных грамматик на XPAL (Xinotech Plan Abstraction Мeta-language) и применяются технологии сопоставления с образцом. Похожие возможности имеются у созданного в нашей стране РЕФАЛа. XLT на сегодня предоставляет возможность следующих парных преобразований, гарантирующих корректный результат: Паскаль — Ада, CMS-2 — Ада и Jovial — Ада.
Перспективы языка Jovial в свете усилий, прилагаемых Министерством обороны США, можно оценить как весьма хорошие, особенно если учесть его планируемую тесную «стыковку» с языком Ада. Возрастающая «электронизация» современной боевой техники требует не только адекватных ее возможностям средств создания программного обеспечения, но также использования существующих разработок и их интеграции в новые инфраструктуры. Связка Jovial — Ада, достаточно эффективно используемая в этой области уже сегодня, в недалеком будущем вряд ли будет иметь серьезных конкурентов в сфере создания программ для встроенных бортовых систем военного профиля. Правда, набирающий популярность язык Java уже начинает заметно теснить проверенные временем решения, и хотя консервативность государственных структур в информационной сфере общеизвестна, Java имеет одно несомненное преимущество: встроенную поддержку современных сетевых технологий, отсутствующую в Jovial.
ПЛ/1, пли!
Лет 15-20 назад этот язык занимал во всевозможных «почтовых ящиках» СССР примерно такое же (только неформальное) место, как специально созданный для использования в военных учреждениях США язык программирования Ада. Версия компилятора ПЛ/1, разработанная в нашей стране для компьютеров серии ЕС, использовалась для решения самых разных задач. Хотя тогда существовали и более эффективные, и более удобные в некоторых отношениях компиляторы Паскаля, Алгола 68 и других языков программирования, но программисты-ремесленники предпочитали именно ПЛ/1, не без основания считая все остальные языки пижонством.
С появлением первых персоналок популярность ПЛ/1 стала снижаться, хотя и не совсем закономерно. Компиляторы для этого языка прекрасно работали уже на IBM PC XT, куда удавалось перенести немало задач с больших компьютеров (по быстродействию равных сегодняшним персоналкам с процессором Intel 386/33). При этом резко возросла производительность труда. На большой машине нередко крутилось до десятка задач и приходилось вымаливать у диспетчера лишние полчаса на отладку. При такой организации работ на скромной персоналке без жесткого диска за один день удавалось сделать то, что на ЕС ЭВМ делалось за неделю. Затем появились системы Turbo Pascal и Turbo С с прекрасной по тем временам оболочкой и пошаговыми отладчиками, и если на машинах ЕС ЭВМ не сразу поставили крест, то только из-за временного превосходства в возможностях хранения данных.
Вместе с большими ЭВМ оказался забыт и ПЛ/1. А создал бы Филипп Кан вместе с Turbo Pascal еще и Turbo PLI, и, возможно, популярность Borland достигла бы заоблачных высот. Дело в том, что если для написания расчетных программ в несколько тысяч строк на персональном компьютере удобнее всего использовать С, то для большинства экономических и финансовых задач ПЛ/1 и сегодня подходит значительно лучше и С, и Паскаля, и любых других языков. Вообще-то, в оригинале этот язык, созданный компанией IBM, называется PL/I. Но как только ни уродовали его название! Чаще всего встречалось ПЛ/1, но попадались и PL/I и даже ПЛ/1. До сих пор в официальных сообщениях крупнейших западных фирм можно встретить аббревиатуру PL/I.
История PL/I (ПЛ/1 в советской версии) такова. В середине 60-х годов компания IBM решила улучшить Фортран, сделав его структуру более естественной, но это ей почему-то не удалось. Хотя достаточно вспомнить версии Фортран 77 и 90, чтобы убедиться, что этот язык сегодня ничем не уступает многим своим собратьям третьего поколения. В следующей попытке IBM постаралась взять все лучшее из Фортрана, Кобола и Алгола 60. В результате в 1964 году на свет официально появился новый язык программирования, который сначала называли New Programming Language, а потом переименовали в Programming Language One. Для того времени, когда ЭВМ ориентировались исключительно на пакетную обработку информации, в языке было реализовано множество уникальных решений, полезность которых стала понятной только через несколько десятков лет, в эпоху крупных программных систем.
В 80-е годы появилось немало языков (C/C++ — типичный пример), ориентированных на создание высокопроизводительных приложений, но при этом о надежности создаваемого программного обеспечения и мобильности программ (я прекрасно помню, как легко переносились на «персоналки» тексты с ЕС ЭВМ) временно забыли.
В результате, когда на рынке образовался неудовлетворенный спрос на средства разработки высоконадежных программ, появился язык Java. Интересно, что по идеологии этот язык существенно ближе к PL/I, чем к С!
ПЛ/1 значительно мощнее, чем Паскаль, Фортран 90, Кобол, Бейсик, Си и во многом похож на Аду. В частности, в ПЛ/1 присутствует уникальная возможность указания точности вычислений, которой не имеют ни C++, ни Java, претендующие на ведущие позиции среди средств разработки прикладного программного обеспечения.
К преимуществам ПЛ/1, которые в такой полноте сегодня не найти ни в одном из наиболее распространенных языков программирования, относятся:
-
строгая семантика языка, не допускающая двусмысленностей (известен случай, когда из-за пропуска оператора break в программе на С хакеры получили доступ ко всем банковским счетам);
-
аккуратные средства работы с указателями и памятью, напоминающие средства Java;
-
богатый набор описателей данных для управления размещением переменных в памяти;
-
готовые функции преобразования типов;
-
встроенная поддержка комплексных чисел;
-
независимость данных от типа компьютера благодаря возможности указания разрядности переменных;
-
произвольное комбинирование типов данных (можно создать, например, структуру объединений массивов) со строгим синтаксическим
контролем их использования; -
работа с различными представлениями данных (наложенные структуры, битовые представления, части данных);
-
использование массивов (в том числе с динамическими границами) как единой структуры данных;
-
возможность организации циклов с перебором списка значений;
-
очень мощные строковые функции (на уровне сегодняшних языков
четвертого поколения); -
встроенные средства отладки и диагностики этапа выполнения программы (контроль выхода за границы массива, потери точности и т. д.);
-
поддержка концепции пакетов, модулей, параллельных задач и многое другое.
Одним из главных преимуществ ПЛ/1 перед другими языками стали его машинно-независимые конструкции, среди которых имелись встроенные операторы (не функции!) ввода-вывода, позволявшие получать высокомобильные программы. Эти операторы могут быть ориентированы на записи одного типа или на поточный обмен данными. При этом в отличие от С, где строка формата ввода/вывода интерпретируется в процессе выполнения, в ПЛ/1 происходит ее компилирование, что в ряде задач может существенно повысить производительность приложения.
Просто уникальный в ПЛ/1 препроцессор. Он представляет собой подмножество самого языка ПЛ/1 и позволяет организовывать очень сложные процессы генерации исходных текстов. Например, если требуется проинициализировать трехмерный массив определенной последовательностью чисел, то программист может организовать препроцессорный цикл генерации программы с условными операторами. Так и хочется еще раз напомнить, что все это было придумано и реализовано в 1964 году!