Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 20
Текст из файла (страница 20)
В ранних версиях языка Ь)БР всех этих возможносте(( не было, также в них не использовался статический обзор данных. Как небольшой язык с простыми синтаксисом и семантикой язык Бсйеше вполне пригоден для таких учебных приложений, как курсы функционального про)раммирования и общие вводные курсы программирования. Подробнее язык Бсбеше описывается в главе (4. 2А.5.2.
Язык СОММОИ ИЗР Язык СОММОХ Ь)БР (5(ее)е, 1984) был создан в попытке объелинить в одном языке свойства нескольких диалектов языка Ь(БР, разработанных в начале 1980-х голов, в том числе и языка Бс))ете. Будучи такой комбинацией, язык СОММОХ Ь(БР представляет собой большую и сложную структуру. Тем не менее, его основой является чистый язык Ь)БР, так что его синтаксис, основные функции и принципиальная природа происходят от этого языка. Признав гибкость, обеспечиваемую динамическим обзором данных, и простоту, предоставляемую статическим обзором, разработчики языка СОММОХ Ь(БР использовали оба способа. По умолчанию используется статический обзор переменных, но если объявить переменную как вреада1, ее область видимости становится динамической.
73 2.4. Функциональное программирование: язык 1)БР Язык СОММ014 Е(БР солержит большое число типов и структур данных, среди которых записи. массивы, комплексные числа и строки символов. Также в нем есть форма пакетов, используемая лля сборки в единое целое набора функций и данных, которая обеспечивает, таким образом, управление доступом. К языку СОММОЙ !.1БР мы еше вернемся в главе 14. 2.4.6.
Родственные языки Язык М). (Ме!абапйцайе) изначально был создан в 1980-х годах Робином Миллером (йоЫп Мйпег) в Эдинбургском университете как метаязык для системы верификации программ, названной 1 о8!с Гог Соври!аие Рипсбоп (ЕСР) (Мйпег а! а1., 1990). Главным образом, язык МŠ— зто язык функционального пропзаммирования, но он поддерживает также императивное программирование.
В языке МЕ функции являются более общими, чем в императивных языках: они передаются между подпрограммами как параметры, они также могут быть полиморфными, что означает возможность получения параметров разных типов прн разных вызовах. В отличие от языков 1!БР и Бсйете, тип каждой переменной и каждого выражения языка МЕ может определяться в процессе компиляции.
Типы связываются с объектами, а не с именами. Типы выражений логически выводятся из контекста выражений, как это показано в главе 6. В отличие от языков ЫБР и Бсйеще, язык МЕ не использует функциональный синтаксис со скобками, возникший вместе с лямбла-выражениями. Синтаксис языка МЕ скорее похож на синтаксис таких императивных языков, как Рааса! и С. Язык М|гапда был разработан Дзвидом Тернером (Оач!г! Тигпег) в Университете Кента в Кентербери, Великобритания ((3пгкепб!у о( Кеп! !и Сап!егЬигу), в начале 1980-х (Тогпег, ! 986). Этот язык частично основан на языках М(., БАБЕ и К((С. Язык Назке1! (Нцдак апд Разе!, 1992) в значительной мере основан на языке М!гапда.
Полобно язылу М!гана, он является чисто функциональным языком. не содержащим ни переменных, ни операторов присваивания. Еше одной отличительной чертой языка Найе!1 является использование "ленивою" вычисления. Никакое выражение не вычисляется до тех пор, пока не потребуется его значение, что приводит к нескольким неожиланным возможностям языка. Языки МЕ и НазкеП кратко описываются в главе 14. 2.5. Перв8 8й шаг к совершенствованию: язык АЕВОЕ 60 Язык А(.ООЕ 60 оказал значительное влияние на после!~чошие языки программирования и. как следствие, занимает центральное место в любом историческом обзоре языков. 2.5.1. Историнескоя ретроспектива Язык А(.00160 — результат попытки создания универсального языка. На конец 1954 гола в обращении уже более года находилась алгебраическая система Ленинга и Цирлера, и был опубликован первый отчет по языку ЕОйТйАХ.
Реально язык РОКТ)(АЫ был создан в 1957 году, к тому же году были разработаны еще несколько языков высокого уровня. Самыми известными из них были язык 1Т, разработанный в Карнеги-Тех (Сагпезу Тесй) Аланом Перлисом (А!ап Рег!В), и два языка для компьютеров (ЛЧ!ЧАС: МАТН-МАТ!С и (ЛЧ1СООЕ. Рост количества языков программирования затруднял связи 74 Глава 2. Обзор основных языков программирования межлу пользователял~и. Более того. все новые языки возникали на основе отдельных архитектур, некоторые создавались для компьютеров (ЛК1ЧАС. а некоторые — для машин корпорации 1ВМ серии 700. В ответ на такой количественный рост языков несколько основных компьютерных групп в Соединенных Штатах, в том числе БНАКЕ (научная группа корпорации 1ВМ) и ()БЕ (()Н!ЧАС Бс(епййс Ехспапйе — промышленная группа обмена научными разработками). 1О мая 1957 года подачи прошение в Ассоциацию по вычислительной технике (АСМ вЂ” Аззос(аг(оп Гог Сотрцг(пй Маса(негу) с просьбой сформировать комитет для изучения ситуации и создания универсального языка программирования.
Хотя кандидатом на такое звание мог быть язык ГОКТКАН. но исторически так не произошло. поскольку в то время он находился в исключительном владении корпорации 1ВМ. Ранее, в 1955 голу. Обшество прикладной математики и л1еханики (ОАММ) также сформировало комитет по разработке единого универсального машинно-независимого алгоритмического языка лля использования на всех типах компьютеров. Желание иметь такой язык частично было вызвано европейской боязнью господства корпорации 1ВМ. Тем не менее, появившиеся к концу 1957 года в Соединенных Штатах языки высокого уровня убедили полкомиссию обшества ОАММ в том. что их работа лолжна быть расширена для включения американских разработок.
и письмо с соответствуюшнл~ прелложением было направлено в ассоциацию АСМ. После того как в апреле 1958 года Фриц Бауэр (Епгл Вацег) нз общества ОАММ представил ассоциации АСМ формальный план. указанные две группы официально согласились принять участие в проекте по разработке нового языка. 2.$.2. Начальная стадия разработки Обшество ОАММ и ассоциация АСМ решили. что совместная конструкторская работа должна вестись на собрании. на которое каждая группа пошлет четырех прелставителей. Эта встреча, состоявшаяся в период с 27 мая по 1 июня 1958 года в Цюрихе. началась с формулирования следуюших целей нового языка. ° Синтаксис языка должен быть максимально близок к общепринятым математическим обозначениям, и программы, написанные на нем. должны быть читабельными сами по себе с минимальными дополнительными пояснениями.
° Язык должен использоваться лля описания вычислительных процессов в публикациях. ° Программы на новом языке должны механически транслироваться на машинные языки. Первая цель означает возможность использования языка для научного программирования, которое в то время было основной сферой приложения вычислительной техники. Вторая цель была чем-то совершенно новым в компьютерном бизнесе. Необходимость последней цели лля любого языка программирования очевидна.
В зависимости от точки зрения встреча в Цюрихе породила либо важные результаты, либо бесконечные споры. В действительности, справедливо и то, и другое. Сама по себе встреча привела к многочисленным компромиссам как между отдельными лицами, так и между двумя сторонами Атлантики. В некоторых случаях компромиссы были не так уж и существенны в сравнении с глобальной целью, если они не касались различных сфер влияния. Одним из примеров может служить вопрос использования запятой (европейский метал) или точки (американский метод) в десятичной записи числа.
2.5. Первый шаг к совершенствованию: язык АЛЛОЕ 60 2.5.3. Обзор языка АЕООЕ 58 Язык, разработанный на встрече в Цюрихе. был назван 1А1 (1пгегпагюпа) А!8ог)гпш)с Еапйпа8е — интернациональный ачгоритмический язык). В процессе конструкторских работ было предложено название АЕСОЕ (АЕСОгй)нп)с Еапйцаое — алгоритмический язык). но это название было отклонено. поскольку оно не отражало интернационального состава комитета.
Впрочем. в течение слелчюшсго года название все-таки было изменено на АЕСО), а сам язык получил впоследствии нмя АЕСОЕ 58. По многим параметрам язык АЕСОЕ 58 был наследником языка ГОКТКАХ, что вполне естественно. В нем обобщались многие свойства языка ЕОКТКАг), а также вволились некоторые новые конструкции н концепции. Олин обобщения делались с целью создания языка. не привязанного к отдельной машине. другие — для увеличения гибкосзи н мощности языка.
В результате получилась редкая комбинация простоты и изысканности. В языке АЕСОЕ 58 была формализована концепция типов данных. хотя явного объявления требовали только переменные, не являющиеся числами с плавающей точкой. В нем была реализована идея составных операторов. которые затем были включены в большинство языков.
Среди прочих были обобщены следующие свойства языка ГОКТКА)Ч: разрешено использование идентификаторов произвольной длины (в отличие от имеющегося в языке ГОКТКАН ограничения на шесть символов): разрешено использование массивов любой размерности (в отличие от имеющегося в языке ГОКТКА)9 ограничения на три измерения): нижний прелел массива мог определяться программистом (в то время как в языке ГОКТКАН он всегла имел значение 1); разрешены вложенныс операторы ветвления (чего не было в языке ГОКТКАН). В языке АЕСОЕ 58 была использована несколько необычная форма оператора присваивания. В языке Р1апйайсй1 Цузе использовал следующую форму оператора присваивания: выоажение я> величина Хотя во время обсуждаемых событий описание языка Р1апйа!М! и не было еще опубликовано, некоторые европейские члены комитета по созданию языка А! СОЕ 58 были знакомы с этим языком.
Комитет позаимствовач из языка Р)апйа)К81 форму оператора присваивания, но из соображений ограниченного использования символов знак "болыпе" был заменен двоеточием. Затем, в основном из-за настойчивых требований американцев, полный оператор принял вид выражение := величине Европейцы предпочитали обратную фарлафу. 2.5.4.