Программисты свой выбор сделали - ещё 40 лет назад

Программисты свой выбор сделали - ещё 40 лет назад

Язык программирования FORTRAN (FORmula TRANslation) был самым первым языком высокого уровня, получившим широкое распространение. Он возник в конце 50-х годов, когда шли горячие дискуссии о самой необходимости создания подобных языков. Программисты, разрабатывавшие программы исключительно на ассемблере, выражали сильное сомнение в возможности появления высокопроизводительного языка высокого уровня.

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

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

Из-за широкого распространения этого языка и появления множества Фортран-программ (преимущественно вычислительного характера) насущным стал вопрос его стандартизации. Сначала это был стандарт Fortran IV 1964 года, затем, по мере появления новых языков с новыми идеями, в 1978 году был принят новый стандарт Fortran 77 (f77) с большим числом более современных и гибких синтаксических расширений. Сегодня наиболее распространенным является Fortran 90 (f90), хотя сейчас уже близятся к концу работы над очередным пересмотренным стандартом Fortran 95, и, наконец, группа энтузиастов трудится над суперверсией языка F2k, которая будет опубликована в официальных изданиях в 2000 году.

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

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

Однако разработчикам крупных систем, которым довольно часто приходится решать различные вычислительные задачи, совсем не обязательно каждый раз брать в руки учебник по математике и "начинать творить" с нуля. В 90% случаев то, что вы ищете, уже давным-давно было реализовано и отлажено на Фортране. Я сам был свидетелем разработки одного проекта, когда вычислительные алгоритмы, написанные с десяток лет назад для машин типа VAX с диалоговым вводом данных в текстовом режиме, переписывались с помощью Microsoft Fortran (операторы ввода-вывода заменялись на обращения к внешним функциям), из них делались DLL, а сама графическая оболочка разрабатывалась на C++. И все прекрасно работало.

Поэтому "безбедная" жизнь Фортрану обеспечена надолго. Есть и еще одна ниша — параллельные вычисления, где строгая семантика языка позволяет получать высокопроизводительные программы. Обычно используется стандарт f90, немного расширенный набором операторов для указания пригодных к распараллеливанию частей программы. Параллельный Фортран имеет свой стандарт HPF (High Performance Fortran).

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

Среди бесплатно распространяемых версий Фортрана наиболее известна f2c, реализованная для всех UNIX-систем и преобразующая текст Фортран-программы в Си-код. Для DOS имеется версия bcf77, распространяемая бесплатно для студентов.

Из коммерческих версий в первую очередь надо отметить Microsoft Fortran, позволяющий создавать DLL, и Watcom Fortran, генерирующий высокоэффективный код. Для задач, требующих высокой точности вычислений, предназначен компилятор фирмы MicroWay. А вообще различные по качеству компиляторы Фортрана имеются на всех компьютерных платформах.

Программисты часто спрашивают: "А чем этот Фортран лучше, например, Си?" Конечно, у каждого языка есть свои плюсы, у Фортрана это в первую очередь фактическое отсутствие машинно-ориентированных конструкций и определенные гарантии в отношении правильности исполнения вычислительных операций. Например, если при использовании Си-компилятора для 16-разрядных платформ переменная типа int при прибавлении 1000 к

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

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

Так что про Фортран забывать никак нельзя. Использовать его в качестве инструментария в задачах системной интеграции, наверное, не имеет смысла, но то, что было наработано лучшими программистами за 20 - 30 лет, вполне может ускорить процесс разработки. По крайней мере, программных "кирпичиков" для Фортрана существует несравненно больше, чем для других языков программирования.

ItWeek №(055)31`1996 от 06.08.1996
Помещена в музей с разрешения редакции 30 августа 2018