Языки программирования. Прошлое и будущее. С.Бобровский (1012869), страница 4
Текст из файла (страница 4)
Перспективы языка 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 году!
Удивительна степень мобильности программ ПЛ/1! Вот несколько примеров. Несколько лет назад компании Rockwell потребовалось перенести на HP-UX компьютерную систему технического обслуживания бомбардировщиков В1, написанную на PL/I и работавшую на старых мэйнфреймах IBM 4381 (их производительность эквивалентна производительности компьютеров с процессором Intel 486/50 МГц). Лет 20 назад эти машины считались одними из самых «крутых» ЭВМ; ввоз их в СССР был запрещен. Чтобы заново переписать эту систему, состоявшую из 90 модулей по 3000 строк, требовались миллионы долларов. Два года пыталась Rockwell перевести тексты программ с PL/I на С, потратила кучу денег и уйму времени, но ничего у нее так и не получилось. Наконец было решено сохранить исходный язык программирования. Для переноса был выбран вариант Open PL/I компании Liant, работающий под управлением Unix и Windows 95/NT. В результате перенос успешно завершился за 4 месяца, система стала работать в клиент-серверной архитектуре с СУБД Oracle (данные были перекачаны в Oracle за 3 дня), а суммарные расходы на перенос составили всего 140 тысяч долларов.
Американская лаборатория Jet Propulsion Laboratory разработала программное обеспечение для обмена информацией с космической станцией «Вояджер», которая в 1977 году вышла на орбиту Нептуна (полет станции «Галилео» к Юпитеру был автоматизирован также с использованием PL/I). Исходные тексты занимали 55 тысяч строк. С увеличением объемов данных, регулярно поступающих от станции, стало невозможным работать со старыми приложениями на древних мэйнфреймах UNISYS и DEC. Было решено перенести все программное
обеспечение на сеть рабочих станций, функционирующих под управлением Unix/Linux. Проблема осложнялась тем, что старый PL-код был недокументирован и много раз переделывался. Сначала планировалось полностью переписать весь проект на Си, но из-за запутанности исходных текстов и отсутствия формальных описаний проекта данная работа оценивалась в миллионы долларов. В конце концов, был выбран продукт Open PL, и с его помощью в течение 1996 года все старые тексты были успешно перенесены в новую среду.
Сегодня ПЛ/1 реализован практически на всех мыслимых платформах: MS-DOS, Windows, OS/2, Unix/Linux, AS/400, IBM RS/6000 AIX, DEC, VM, MVS, VSE и многих других. Язык постоянно совершенствуется. В него были введены новые дополнения: усилена и расширена типизация данных (в частности, добавлен тип «целое без знака»), стало возможным определять пользовательские типы, появился оператор break и т. д. Были добавлены новые функции работы с датами/временем, средства эффективной обработки строк и ряд других возможностей.
Не забыла свое детище и компания IBM. В ее версиях языка VisualAge PL/I и Enterprise PL/I (www-4.ibm.com/software/ad/pli) реализуются принципы объектно-ориентированного программирования, осуществлена интеграция с программными компонентами, написанными на Коболе, С и C++, а в последнее время предлагается стыковка с Java. Так что российской армии программистов язык ПЛ/1 (или PL/I, кому как нравится) может еще неплохо послужить.
PL/B: язык для бизнесменов
На каком языке программирования лучше всего писать бухгалтерские, экономические программы, корпоративные информационные системы, ориентированные на обработку деловой и хозяйственной информации? Язык С не содержит элементарных средств защиты от ошибок, поэтому разработка проекта на С неимоверно затягивается, а итоговый продукт подчас работает весьма ненадежно. Использование реализаций Бейсика и Паскаля, например Visual Basic и Delphi, для создания крупных систем, вызывают трудности при их изучении. Для такой работы, помимо знания нескольких операторов, необходимо прочитать толстенные руководства или окончить хорошие (и дорогие) курсы, чтобы использовать возможности мощной оболочки по максимуму. При этом надо разбираться в технологиях Microsoft и Borland, знать Windows API, понимать принципы работы клиент-серверных систем и многое другое. Если использовать интерпретируемые языки четвертого поколения, то результирующий код получается неэффективным, и генерация простого отчета может растянуться на часы. Во всех этих случаях приходится использовать действительно грамотных специалистов, которых не так-то легко найти.
Лучше всего для создания экономических приложений подходит Кобол. Но устаревший стандарт этого языка ориентирован только на пакетную обработку данных. Сотни коммерческих версий Кобола, использующих различные библиотеки для организации графического интерфейса пользователя и работы с базами данных, друг с другом не совместимы.
Как же быть? Этим вопросом задаются многие. В конце 80-х годов, с появлением первых персональных компьютеров, возникла необходимость разработки нового языка, ориентированного на область бизнес-приложений. Был сформирован комитет, в который вошли специалисты десятков коммерческих фирм из списка Fortune 500, учебных и государственных организаций со всего мира. К создаваемому языку предъявлялись такие требования: он должен быть очень простым в изучении, обеспечивать одновременную работу с данными нескольких пользователей и иметь развитые средства поддержки интерактивного режима. В результате пятилетних трудов (на которые спонсоры выделили более 100 тысяч долларов) родился язык PL/B, основанный на более старом языке DATABUS корпорации Datapoint. A/VSI-стандарт на этот язык был принят в декабре 1994 года после долгих обсуждений и очень жесткого отбора наиболее подходящих элементов языка из множества предложенных. Язык PL /В — это типичный язык третьего поколения. Он не является универсальным и ориентирован только на создание деловых приложений. В стандарт языка входят средства обеспечения работы нескольких пользователей с большими объемами данных, команды поиска и выборки информации, генерации всевозможных бизнес-отчетов. При этом язык PL /В очень легок в изучении - в нем нет никаких сложных конструкций.
Операторы языка позволяют организовать клавиатурный интерфейс, ориентированный на активную работу с пользователем. Экранные формы, меню создаются одной-двумя командами. В язык PL /В встроена не привязанная к конкретной компьютерной архитектуре система описания структур файлов и данных произвольной сложности. Она похожа на декларации Кобола. В языке PL/В имеются средства организации SQL-запросов к РСУБД, основанные на стандарте ХЗН2, что позволяет получать мобильные программы, не зависящие от платформы и используемых баз данных.
Благодаря наличию в этом языке мощных и в то же время простых команд, разработчики получают возможность быстро создавать высоконадежные приложения и модули обработки хозяйственных операций, складского учета, планирования и анализа финансовой деятельности, генерации отчетов и так далее. Для повышения надежности работы программы выполняются в специальной виртуальной среде, не допускающей краха системы или порчи памяти. Так как синтаксис языка PL/B четок и не допускает двусмысленностей, для языка написаны очень быстрые трансляторы.
Сегодня во всем мире более 100 компаний предлагают PL/Б-компиляторы и интерпретаторы, CASE-системы, генераторы кода и конверторы из языка PL /В в Кобол, С и Бейсик для множества платформ. На этом языке создают приложения и коммерческие компании (от самых маленьких фирмочек до крупнейших корпораций), и отдельные программисты. Язык PL /В используется в учебных центрах, государственных и военных организациях.