35
Мы совершенно не ожидали получить в результате систему, абсолютно незави
симую от конкретной машины, на которой программа в конечном счете должна
выполняться. Оказалось, что это на самом деле очень ценное свойство, но понача
лу мы об этом действительно не думали.
Мы никак не организовывали нашу деятельность. Каждую часть программы
писали одиндва человека, которые, за очень небольшим исключением, были ис
тинными мастерами своего дела, и все вырастало в большой неразберихе… [Когда
FORTRAN уже начал распространяться] мы столкнулись с тем фактом, что не все
из 25 000 его инструкций правильно работают и что возникают проблемы, кото
рые можно выявить только после длительного использования».
К середине 60х гг. (к этому времени и относится приведенное выше высказы
вание), после появления языков FORTRAN, COBOL, LISP и ALGOL, Бэкус уже
понимал, что программирование изменилось. Машины становились дешевле, за
траты на программирование, наоборот, росли, появилась реальная необходимость
переносить программы с одной машины на другую, а поддержка конечного продук
та требовала значительных компьютерных ресурсов. В связи с этим поменялись тре
бования, которым должен был удовлетворять создаваемый язык программирования.
Вместо обеспечения эффективной работы скомпилированной программы на доро
гом компьютере перед языками высокого уровня возникла другая задача — упрос
тить создание корректных программ для решения задач в конкретных областях.
Технология создания компиляторов была сформирована в 60е и 70е гг. (см.
главу 3), и развитие языковых технологий сконцентрировалось на решении спе
цифичных задач в конкретных областях. В научном программировании в основ
ном использовался FORTRAN, деловые приложения писались на языке COBOL,
в военной сфере применялся JOVIAL, программы искусственного интеллекта пи
сались на LISP, встроенные военные приложения использовали Ada.
Как и естественные языки, языки программирования развиваются и в конце
концов выходят из употребления, умирают. Так, язык ALGOL использовался в
60е, затем его сменил Pascal, который, в свою очередь, вытесняется языками C++
и Java. В области деловых приложений уменьшается роль языка COBOL, его так
же заменяет C++. В 60е гг. активно применялись языки APL, PL/1 и SNOBOL4, а в
70е — Pascal, в настоящее же время они практически исчезли.
Те старые языки, которые применяются и в настоящее время, постоянно пере
сматриваются, чтобы соответствовать изменениям в других областях компьютер
ных технологий. Более новые языки, такие как C++, Java и ML, созданы на основе
опыта, накопленного в процессе использования этих и сотен других более старых
языков. На принципы конструирования новых языков влияют следующие факторы:
1. Возможности компьютеров. Компьютеры эволюционировали от огромных,
медленных и дорогих ламповых машин 50х гг. до современных суперком
пьютеров и микрокомпьютеров. В то же время между аппаратной частью
компьютера и языком программирования появилось промежуточное звено,
представляющее собой программное обеспечение операционных систем. Эти
факторы оказали влияние как на структуру языков, так и на стоимость ис
пользования тех или иных языковых возможностей.
2. Области применения. В 50е гг. компьютеры использовались лишь в воен
ной отрасли, науке, деловом мире и промышленности, где высокая стоимость
1.3. Роль языков программирования