Введение
WATFIV, или WATerloo FORTRAN IV, разработанный в Университете Ватерлоо (Канада), является реализацией языка программирования Фортран. Он является преемником WATFOR. WATFIV использовался с конца 1960-х по середину 1980-х годов. WATFIV, в свою очередь, был заменен более поздними версиями WATFOR. Благодаря возможности выполнения трех стандартных этапов ("компиляция, связывание, запуск") за один проход, система стала популярной для обучения студентов основам программирования.
История
В начале 1960-х годов вновь созданные факультеты компьютерных наук начали предлагать университетские программы по обучению языкам программирования. Язык Фортран был разработан в IBM, но страдал от медленного и подверженного ошибкам трехэтапного процесса пакетной обработки. На первом этапе компилятор преобразовывал исходный код в объектный код. На втором этапе компоновщик создавал полную программу, используя растущие библиотеки общих функций. Наконец, программа многократно выполнялась с данными для решения типичных научных и бизнес-задач клиентов. Каждый этап часто требовал нового набора перфокарт или магнитной ленты. У студентов, напротив, были совершенно иные потребности. Их программы обычно были короткими, но часто содержали логические и синтаксические ошибки, что приводило к трудоемкому повторению этапов и непонятным "дампам памяти" (часто требовался целый день, чтобы отправить задание оператору и получить результат – успешный или с ошибкой). Как только их программы начинали работать правильно, они сдавались и больше не запускались. В 1961 году Университет Висконсина разработал технологию FORGO для IBM 1620, которая объединяла некоторые из этих этапов. Аналогичные эксперименты были проведены в Университете Пердью на IBM 7090 в системе под названием PUFFT.
WATFOR 7040
Летом 1965 года четверо студентов Университета Ватерлоо – Гас Герман, Джеймс Г. Митчелл, Ричард Ширли и Роберт Зарнке – под руководством Питера Шантца разработали компилятор Fortran для компьютера IBM 7040 под названием WATFOR. Его задачами были высокая скорость компиляции и эффективная диагностика ошибок как на этапе компиляции, так и во время выполнения программы. Этот простой одноэтапный процесс позволял начинающим программистам осваивать программирование с меньшими затратами времени и вычислительных ресурсов. Для облегчения отладки компилятор использовал инновационный подход к обнаружению неопределенных переменных – чрезвычайно распространенной ошибки у начинающих программистов. Он использовал диагностическую функцию компьютера 7040, позволяющую намеренно устанавливать области памяти в состояние неверной четности. Когда программа пыталась обратиться к переменным, которым не было присвоено значение, машина генерировала прерывание (обслуживаемое подпрограммами времени выполнения Watfor), и пользователю сообщалось об ошибке, связанной с неопределенной переменной. Это имело приятный побочный эффект – проверку на неопределенные переменные практически без нагрузки на процессор. WATFOR быстро завоевал популярность, и более 75 учреждений установили его на свои системы IBM 7040. Распространением компилятора занималась Сандра Брюс (в девичестве Хоуп).
Richard Shirley and Robert Zarnke, led by Peter Shantz, developed a Fortran compiler for the IBM 7040 computer called WATFOR. Its objectives were fast compilation speed and effective error diagnostics at both compile and execution time. This simple, one step process allowed non experienced programmers to learn programming with lower cost in time and computing resources. To aid in debugging, the compiler uses an innovative approach to checking for undefined variables (an extremely common mistake by novice programmers). It uses a diagnostic feature of the 7040 that can deliberately set areas of memory to bad parity. When a program tries to reference variables that hadn't been set, the machine takes an interrupt (handled by the Watfor runtime routines) and the error is reported to the user as an undefined variable. This has the pleasant side effect of checking for undefined variables with essentially no CPU overhead. WATFOR quickly gained popularity and over 75 institutions installed it on their IBM 7040 systems. The distribution of the compiler was handled by Sandra Bruce (née Hope).
WATFOR 360
В 1966 году университет планировал заменить компьютер 7040 на IBM System/360, который был значительно быстрее, но не поддерживал прежнее программное обеспечение. Была сформирована команда из штатных сотрудников и студентов для разработки версии для IBM 360. Члены команды – Бетти Шмидт, Пол Дирксен, Пол Х. Кресс, Лотар К. "Нед" Кессельхут, Билл Киндри и Дерек Мик, к которым позже присоединились Майк Дойл, Род Милн, Рон Хурдал и Линн Уильямс, завершили разработку 360 WATFOR в начале 1967 года. Многие другие организации (университеты, колледжи, предприятия и государственные учреждения) начали использовать компилятор WATFOR для решения задач, аналогичных тем, что возникали в Университете Ватерлоо. Распространением программного обеспечения и поддержкой пользователей занималась Сандра Уорд.
WATFIV
В результате предложений от группы пользователей SHARE и других, в 1968 году была создана новая версия под названием WATFIV. WATFIV представил новые возможности, такие как переменные типа CHARACTER и ввод-вывод с прямым доступом. В 1972 году Ассоциация вычислительной техники (ACM) вручила Полу Крессу и Полу Дирксену премию Грейс Мюррей Хоппер за вклад в проекты WATFOR и WATFIV. Компилятор WATFIV был включен в список DATAPRO Honour Roll за 1975 и 1976 годы. Обслуживанием и улучшением занимались Берни Мерфи, Мартин Вайзман и Ивонн Джонсон. WATFIV произносился как "WHAT FIVE" ("ЧТО ПЯТЬ"), но, как отмечалось в то время, его также можно было (почти) произносить как "WHAT FOR" ("ЧТО ДЛЯ"), как в WAT F IV (Waterloo Fortran IV). Университеты и корпорации использовали эти компиляторы, и в традиции WATFOR было разработано множество других программных продуктов. Например, версия языка программирования COBOL называется WATBOL. Дэниел Маккракен сказал: «Не будет преувеличением утверждать, что WATFOR произвел революцию в использовании компьютеров в образовании». В определенный момент во всем мире было выдано более 3000 лицензий на мини- и мэйнфреймы и более 100 000 лицензий на микрокомпьютеры для этого семейства программных продуктов.
WATFOR-11, -S и -11S
В 1974 году для компьютера PDP 11 компании Digital Equipment Corporation был создан компилятор с характеристиками, аналогичными реализации IBM, и назван WATFOR 11. К членам команды Джеку Шулеру, Джиму Уэлчу и Терри Уилкинсону позже присоединился Ян Макфи, который добавил новые операторы управления в компилятор WATFIV для структурированного программирования (SP). Эти новые операторы включали блочную конструкцию IF (впоследствии включенную в языковой стандарт ANSI X3.9 1978 года), WHILE, UNTIL и другие. WATFIV S был анонсирован в 1974 году, а через несколько месяцев был анонсирован WATFOR 11S (буква "S" обозначает новые возможности SP). Изначальные возможности SP были позже расширены дополнительными операторами Брюсом Хеем в WATFIV S в 1980 году и Джеком Шулером в WATFOR 11S в 1981 году.
WATFOR-77
В 1970-х годах подкомитет ANSI X3J3 (группа языковых стандартов FORTRAN) разработал новый языковой стандарт, который был официально утвержден в апреле 1978 года. Этот стандарт, обозначенный как FORTRAN 77, ввел в язык множество новых операторов. Фактически, предыдущий языковой стандарт FORTRAN 66 представляет собой небольшой документ и описывает, по сути, подмножество большинства реализаций FORTRAN. Например, реализации WATFIV и WATFOR 11 основаны на определении IBM FORTRAN IV. По мере того как программисты использовали возможности FORTRAN 77, потребовался новый компилятор, объединяющий преимущества компилятора WATFIV с новым языковым стандартом. В январе 1983 года в компании Watcom Systems Inc. был начат проект по разработке компилятора FORTRAN 77. Под руководством Джека Шулера сотрудники Watcom и студенты-программисты Университета Ватерлоо, обучающиеся по кооперативной программе, приняли участие в создании компилятора WATFOR 77. Основную работу выполнили Гено Коски, Фред Криггер, Джон Дамс, Джим Грэм, Джек Шулер, Энтони Счиан и Пол Ван Оршот. Им помогали Род Кремаско, Джон МакКормик, Дэвид МакКи и Брайан Стечер. Вклад внесли многие члены команд из предыдущих проектов компиляторов, включая Брюса Хея, Яна Макфи, Сандру Уорд, Джима Уэлча и Терри Уилкинсона. В отличие от предыдущих компиляторов, значительная часть WATFOR 77 была написана на переносимом системном языке, чтобы упростить реализацию компилятора на других компьютерных системах. Более ранние компиляторы WATFOR были написаны полностью на машинно-зависимом языке ассемблера. Два компонента компилятора не являются переносимыми. Генератор кода преобразует операторы FORTRAN в машинные инструкции и сохраняет их в памяти. Первая версия WATFOR 77 генерирует инструкции для компьютерной архитектуры IBM 370. Большая часть поддержки времени выполнения (проверка неопределенных переменных, вычисление индексов, встроенные функции) была написана на языке ассемблера для обеспечения высокой производительности. В сентябре 1984 года первая версия была установлена в Университете Ватерлоо для Департамента вычислительных услуг. Это была реализация для компьютеров IBM 370, работающих под управлением операционной системы VM/SP CMS. За несколько месяцев до этого, в мае 1984 года, был начат проект по реализации компилятора WATFOR 77 на персональном компьютере IBM. В этот проект вошли Гено Коски, Фред Криггер, Тим Галвин, Атос Касапи, Джек Шулер, Терри Скоморовски и Брайан Стечер. В апреле 1985 года эта вторая версия WATFOR 77 была установлена в Университете Ватерлоо для использования студентами инженерного факультета. Компилятор может работать на IBM Personal Computer с 256K памяти под управлением IBM PC DOS 2.0 и не требует специального оборудования для работы с плавающей точкой. Осенью 1985 года японская версия WATFOR 77 была поставлена компании IBM Japan для персонального компьютера IBM JX. Эта версия генерирует сообщения об ошибках на японском языке и поддерживает наборы символов кандзи, хирагана и катакана для имен переменных и строковых литералов. Для поддержки JX руководство по языку и руководство пользователя были переведены на японский язык. Другая версия WATFOR 77 с теми же функциями также была разработана для японской линейки персональных компьютеров IBM PS/55 весной 1988 года. Летом 1986 года версия WATFOR 77 для IBM PC была адаптирована для работы на Unisys ICON, работающем под управлением операционной системы QNX. Поскольку QNX существенно отличается от IBM PC DOS, некоторые части системы времени выполнения были переписаны. Эта реализация WATFOR 77 стала доступна в сентябре 1986 года. Летом 1985 года был начат проект по адаптации WATFOR 77 к серии компьютеров Digital Equipment Corporation VAX, работающих под управлением операционной системы VMS. В состав проектной группы входили Гено Коски, Марк Уэллетт, Джек Шулер и Терри Скоморовски. Эта реализация стала доступна в марте 1987 года. Кроме того, весной 1988 года был начат новый проект по разработке оптимизирующего компилятора FORTRAN 77. Этот компилятор использует генератор кода из компилятора Watcom C, который генерирует превосходный машинный код по сравнению с другими компиляторами C. Оптимизирующий компилятор FORTRAN 77 был впервые выпущен в середине 1990 года. В октябре 1990 года отмечался 25-летний юбилей WATFOR. Многие участники разработки компиляторов WATFOR были приглашены в Университет Ватерлоо на встречу выпускников. Весной 1992 года версия WATFOR 77 была адаптирована для семейства персональных компьютеров NEC PC 9801. Эта версия была похожа на версию IBM PS/55, но была модифицирована с учетом архитектурных различий. В январе 1992 года началась разработка 32-битной версии WATFOR 77 для персональных компьютеров Intel 80386 и Intel 80486. Первая версия была выпущена осенью 1992 года. Вплоть до 1995 года в Университете Миссисипи продолжали проводиться занятия по программированию на WATFIV под руководством профессора Чарльза Х. (Чакки) Франке.