С.Бобровский, О Фортране и других языках программирования (1012867), страница 2
Текст из файла (страница 2)
Несмотря на внешнюю противоположность определений языков 5GL (прикладные пакеты или языки программирования), для реализации конкретных продуктов, подпадающих под то или иное определение, используются достижения одних и тех же компьютерных областей. В обоих случаях мы наблюдаем стремление предоставить программисту средства разработки, использующие наиболее естественные для человеческого мышления понятия. При этом неважно, как реализовано это желание: в виде усовершенствованных средств визуального проектирования или в виде новых мощных языков программирования, оперирующих привычными терминами. Наиболее актуальными для систем 5GL станут достижения в следующих областях:
-
логическое программирование (Пролог-подобные языки и машины
вывода); -
объектно-ориентированное программирование;
-
исследовательское программирование (проект сложен и неясен, но средства разработки позволяют быстро создать шаблон программы и включать в него работающие фрагменты, постепенно приближаясь к конечному результату);
-
использование естественных языков для создания программ;
-
технологии управления базами знаний;
-
методы обработки и анализа текстовой информации (энциклопедии, Wefo-страницы, документы) с возможностью смыслового поиска и т.д.
Для поддержки процесса создания сложных приложений планируется использовать различные экспертные системы и базы знаний со встроенными языками искусственного интеллекта, позволяющие автоматизировать многие рутинные процессы и помочь пользователю найти правильный путь решения тех или иных задач.
Пока сложно сказать, насколько успешной окажется стремление к полной и недостижимой универсальности. На практике с помощью систем 5GL этого направления пока удавалось создать небольшие и логически простые приложения, которые при реализации на языках третьего поколения потребовали бы не более десяти тысяч строк исходного кода. При попытках разработки более сложных программ возникает трудность, типичная для языков предыдущих поколений — необходима отладка, которая требует от пользователя высокой квалификации.
Языки 5GL, ориентированные на конкретные области применения, могут уже в ближайшее время завоевать самую широкую популярность. Наиболее перспективны продукты, позволяющие создавать приложения для работы с базами данных. Базы данных — это область информатики, наиболее успешно поддающаяся формализации. Наглядное подтверждение этому — тенденции развития практически всех известных СУБД корпоративного уровня. Вслед за встроенными языками СУБД появляются и другие проблемные языки программирования.
Кроме того, универсальные языки логического программирования наподобие Пролога, основанные на мощных математических аппаратах, совсем не канули в Лету, как может иногда показаться читателю российской компьютерной прессы, где мелькают сплошные «Си» и «Явы». Языки логического программирования продолжают более чем успешно развиваться; другое дело, что для их грамотного применения требуется высокая культура программирования (и проектирования) по сравнению с тем же C++. Они нужны для несколько иных задач, чем создание коробочных бухгалтерий (хотя для этих целей они также подходят значительно лучше С или Паскаля). Неудивительно, что в нашей стране мощными зарубежными средствами разработки, реализующими алгоритмы искусственного интеллекта или имеющими в своей основе уникальные математические теории, нередко наиболее активно интересуется ФАПСИ. Это явствует хотя бы из открытых семинаров ведущих российских фирм-дистрибьюторов соответствующих продуктов. Хочется надеяться, что рано или поздно и коммерческие фирмы поймут выгоду использования хоть и дорогих, но очень мощных по своим возможностям систем для создания приложений сверхвысокого уровня.
Так что смерть языкам программирования (и профессии программиста вместе с ними) в ближайшие лет пятьдесят не грозит. А дальше будет видно.
Третье поколение
Фортран: программисты свой выбор сделали — еще 40 лет назад
Рассмотрение языков программирования конечно лучше всего начать с самого первого языка программирования высокого уровня, как ни удивительно, не потерявшего своей актуальности и по сей день.
Язык программирования FORTRAN (FORmula TRANslation) был самым первым языком высокого уровня, получившим широкое распространение. Он возник в конце 50-х годов, когда шли горячие дискуссии о самой необходимости создания подобных языков. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали сильное сомнение в возможности появления высокопроизводительного языка высокого уровня.
Поэтому основным критерием при разработке стандартов Фортрана и создании компиляторов этого языка являлась эффективность исполняемого кода. Большинство операторов Фортрана транслировалось непосредственно в одну-две машинные команды; простые синтаксические конструкции и активное использование меток и оператора goto позволяли получить очень быстрый код. В результате программы на Фортране подчас работали быстрее ассемблерных. Сама внутренняя структура оттранслированной программы была также очень простой: весь код, все подпрограммы и все данные вместе с общим блоком размещались исключительно в статической памяти, из-за чего, правда, невозможно было использовать рекурсию.
Так как Фортран был первым языком высокого уровня, отвечающим нуждам большинства пользователей компьютеров того времени, да еще и простым в изучении, распространение его произошло очень быстро. Программисты сразу сделали правильный выбор. В то время компьютеры использовались практически только для научных расчетов, и необходимости в разработке больших проектов комплексной автоматизации (в сегодняшнем понимании) тогда еще не возникало. Конечно, многие задачи, например, расчеты военного назначения, связанные с баллистикой или ядерной физикой, требовали довольно хитрого кодирования, но умельцы, воспитанные на ассемблере, без проблем справлялись с подобными трудностями.
Из-за широкого распространения языка и появления множества программ на Фортране (преимущественно вычислительного характера) насущным стал вопрос его стандартизации. Сначала это был стандарт
Fortran IF 1964 года, затем, по мере появления новых языков с новыми идеями, в 19 78 году был принят новый стандарт Fort ra n 77(/77)с большим числом синтаксических расширений, носящих более современный и более гибкий характер. Сегодня наиболее распространенным является стандарт Fortran 90 (f90) и его очередной пересмотренный вариант Fortran 95.
Огромное количество библиотек для Фортрана, начиная от статистических комплексов и кончая пакетами управления спутниками NASA COSMIC, потребовало строгой совместимости новых стандартов языка с предыдущими версиями для обеспечения корректной трансляции старых текстов программ новыми компиляторами. Поэтому тщательной проработке стандарта именно в отношении Фортрана всегда уделялось особое внимание.
В новые версии языка вносились и ненужные дополнения, которые выглядят как следование моде и желание сохранить популярность Фортрана (это, например, расширения, связанные с динамическим выделением памяти), и полезные вещи (модульная организация программы, работа с частями массивов и другие). Все же сегодня этот язык нельзя назвать перспективным для изучения, так как его синтаксис сильно устарел. Однако разработчикам крупных систем, которым часто приходится решать вычислительные задачи, совсем не обязательно каждый раз брать в руки учебник по математике и «начинать творить» с нуля. В 90% подобных случаев то, что вы ищете, уже давным-давно было реализовано и отлажено на Фортране.
Я сам был свидетелем разработки двух схожих между собой наукоемких проектов. Вычислительные алгоритмы, написанные с десяток лет назад для машин типа VAX с диалоговым вводом данных в текстовом режиме, переписывались с помощью Microsoft Fortran (операторы ввода/вывода заменялись на обращения к внешним функциям). Из этих модулей формировались библиотеки DLL, а сама графическая оболочка разрабатывалась на C++. И все прекрасно работало. Причем в первом подобном проекте я участвовал в 1993 году, а во втором — ровно через десять лет (правда, в последнем случае вместо Microsoft Fortran использовался Intel Fortran). Популярность Фортрана за это время в научном мире ничуть не понизилась.
Поэтому «безбедная жизнь» Фортрану обеспечена надолго. Есть и еще одна ниша — параллельные вычисления, где строгая семантика языка позволяет получать высокопроизводительные программы. Обычно используется стандарт f90, немного расширенный набором операторов для указания пригодных к распараллеливанию частей программы. Параллельный Фортран имеет свой стандарт HPF (High Performance Fortran).
Ярые поклонники Фортрана, девизом которых стала легендарная фраза: «Зачем мне изучать другие языки, когда я могу все написать на Фортране?» — тем не менее, ощущали его очевидную непригодность для крупномасштабных проектов, связанную с привязанностью к синтаксису 50-х годов. Они попытались ввести в него модные идеи объектно-ориентированного программирования. К счастью, объектный Фортран в качестве стандарта так и не появился, иначе он представлял бы собой что-то типа Мерседеса с движком от Запорожца.
Среди бесплатно распространяемых версий Фортрана наиболее известен f2c, реализованный для всех Unix/Linux-систем и преобразующий текст Фортран-программы в Си-код (ftp://netlib.att.com). Для MS-DOS имеется версия bcf77, распространяемая бесплатно для студентов (ftp.uni-stuttgart.de). Отметим Watcom Fortran (www.watcom.org), генерирующий высокоэффективный код, а также прекрасную серию Intel-ком-пиляторов. А вообще различные по качеству компиляторы Фортрана имеются на абсолютно всех компьютерных платформах.
Программисты часто спрашивают: «А чем этот Фортран лучше, например, Си?» Конечно, у каждого языка есть свои плюсы, и у Фортрана это, в первую очередь, фактическое отсутствие машинно-ориентированных конструкций и определенные гарантии в отношении правильности исполнения вычислительных операций. Например, если при использовании Си-компилятора для 16-разрядных платформ целочисленное сложение 32000+1000 может дать отрицательное число, то в Фортране такие «проколы» отсутствуют, причем тщательно отслеживается накопление погрешности при вычислениях с большим числом знаков после запятой. Кроме того, программ, реализующих самые разные математические алгоритмы, на Фортране написано столько, что переписывать их на другие языки просто глупо. А вообще на подобные «наезды» — «Си лучше!» — в конференции Интернета comp.lang.fortran обычно отвечают: «А чего ты тогда сюда пишешь?»
Однако, на мой взгляд, основная заслуга Фортрана в другом. Когда стали актуальными вопросы реализации очень крупных проектов, недостатки Фортрана, в первую очередь связанные с тяжелой отладкой, оказались слишком неприятными. Поэтому Фортран послужил сильнейшим стимулом для развития теории отладки и тестирования программ. Появились сотни синтаксических верификаторов Фортран-текстов, вылавливающих скрытые логические ошибки. В дальнейшем на этом направлении выросли такие теоретические области программирования, как эквивалентные оптимизирующие преобразования программ, высокоуровневая компиляция, автоматическое тестирование и другие.
Так что про Фортран забывать никак нельзя. Использовать его в каче-1стве инструментария в задачах системной интеграции, наверное, не имеет смысла, но то, что было наработано лучшими программистами за 20-30 лет, вполне может ускорить процесс разработки программ. По крайней мере, программных «кирпичиков» для Фортрана существует несравненно больше, чем для других языков программирования.
Язык Ада
Среди языков программирования Ада без сомнения занимает особое место. Ада сыграла в истории программирования важнейшую роль - с помощью данного инструмента стало возможным в разумные сроки реализовывать очень масштабные (по меркам 60-70-х годов прошлого века) проекты. Опыт подобных проектов в свою очередь оказал стимулирующее воздействие на исследования в области программной инженерии, которые определили направления развития информационной индустрии на пару десятков лет вперед.
Применение языка Ада при создании систем реального времени потребовало проведения достаточно сложных исследований, связанных с обеспечением поддержки в одной программе нескольких одновременно выполняющихся процессов. Через некоторое время эти исследования были положены в основу быстро набравших популярность технологий параллельных вычислений.
История этого языка начинается отнюдь не с 1975 года, когда Министерство обороны США приняло решение о начале разработки единого языка программирования для американских вооруженных сил, а в дальнейшем и для всего НАТО. История его начинается с названия, ибо Ада — имя Августы Ады Лавлейс, которую считают первой программисткой. Она была дочерью английского поэта Байрона и его отдаленной родственницы Анабеллы Милбэнк, с которой супруг расстался навсегда через месяц после рождения дочери, появившейся на свет 10 декабря 1815 года.
После того как Чарльз Бэббидж сконструировал свою механическую вычислительную машину, Ада написала для нее первую программу для вычисления коэффициентов Бернулли. В дальнейшем она разработала настоящую теорию программирования, ввела понятие цикла и еще нескольких ключевых терминов, которые почти дословно изучают сегодня студенты кибернетических факультетов! Сегодня Ада известна всем только как первая программистка, однако почему же у молодой девушки проявились такие уникальные способности? На этот вопрос откровенно ответила она сама: «Клянусь Дьяволом, что не пройдет и 10 лет, как я высосу некоторое количество жизненной крови из загадок вселенной, причем так, как этого не смогли бы сделать обычные смертные умы и губы. Никто не знает, какие ужасающие энергия и сила лежат еще неиспользованными в моем маленьком гибком существе...» Однако спонсоров на проект вычислительной машины не нашлось — ядерных ракет тогда еще не было, и Ада, проиграв на скачках все свое состояние и попав в грязную историю, скончалась в возрасте 37 лет, как и ее знаменитый отец. Стоило ли американцам так превозносить Аду, вопрос весьма спорный.