По катом, ибо узко-специальное.
Помните, был такой язык программирования Алгол-60? Я с ним впервые встретился в школе. В то время самым программируемым средством был микрокалькулятор Б3-21. Он стоил 210 советских рублей, потому мало кто мог позволить себе купить его. Да и в свободной продаже таких не было. В ИНИТИ, где работал мой отец, такой калькулятор из-за его стоимости приобретался через отдел капитального строительства. А вот книжки кое-какие были. Одну из них - Ю.Белый, "Считающая микроэлектроника" (1983) - я зачитал до дыр. Очень долго она хранилась у меня дома, но в конце концов после многочисленных переездов, видимо, была выброшена. После рассмотрения простейших и инженерных калькуляторов автор обратился к Б3-21. Рассказал про систему команд, привел первую программу. "Входной язык микрокалькулятора Б3-21, - писал автор, - конечно не похож на универсальные языки, такие как Алгол или Фортран, но все же позволяет описывать алгоритмы решения довольно сложных задач". Вот тут-то впервые появилось слово "Алгол". Страшно стало мне интересно, что это за язык такой.
Первое знакомство состоялось в школе. Курс алгебры, 8-й класс (1985 г.). Об информатике в школе заговорили годом позже. А тогда в учебник включили параграф об алгоритмах. Для примера рассмотрели решение квадратного уравнения на Алголе. Наша учительница, впрочем, не пожелала рассказывать о чуждых ей вещах и велела читать самостоятельно. В жутком шуме, стоявшем тогда в классе, я прочитал этот параграф. А потом перечитал его дома. Так в мою жизнь вошло программирование как интереснейшая человеческая деятельность.
Через год в школе появился курс "Основы информатики и вычислительной техники" с ужасным учебником "коллектива авторов" под руководством академика Ершова. В качестве учителя наняли молодого преподавателя из Механического института. Благодаря ему я в тот же год увидел самую настоящую ЭВМ СМ-3. Правда, Алгол к тому времени вышел из употребления. Базовым языком высокого уровня для СМ ЭВМ был Фортран, хотя для обучения студентов использовался Паскаль.
Но Алгол не выпускал меня из своих объятий еще по одной причине. В библиотеке была книга "Алгоритмический язык АЛГОЛ-60. Модифицированное сообщение". Она столь разительно отличалась от сюсукающихся книжечек по другим языкам, что я не сразу понял, как её читать. Это было описание фактического стандарта языка, описание совершенно формальным, казенным языком, да еще и с использованием так называемых НБФ - нормальных форм Бэкуса. Сии грамматические конструкции совершенно сбивали с толку. Например:
<терм> ::= <множитель> | <терм> <знак операции типа умножения> <множитель>
Что такое "рекурсивное определение" я тогда не знал. Ценой значительных усилий я, школьник, книжку эту освоил, в формальных грамматиках разобрался. Замечу, что подобный труд оказался чрезвычайно полезен и в других отношениях. Например, научил меня включать формальную логику в собственном мозгу, благодаря чему аксиоматический подход к изложению математических дисциплин со школьной поры нравится мне гораздо больше, чем описательно-практический, как в школьных учебниках, или в знаменитом "Курсе высшей математики" В.И. Смирнова (особенно в ранних изданиях).
Но вернемся к Алголу. В университете о нем если и говорили, то исключительно как о славном, но прошлом программирования. Совершенно справедливо. Ориентированный исключительно на вычисления, язык не мог применяться для решения многих важных задач, именуемых сейчас ёмким выражением "обработка данных". В то же время другие языки, тот же Фортран, это позволяли. Лично я написал на первом курсе собственный примитивный текстовый процессор на Фортране, а в МАИ А.Г. Сокольский сотоварищи писали на нем процессоры для аналитических преобразований рядов Пуассона. Попытки решать нерасчетные задачи на Алголе тоже предпринимались, ведь несколько качественных трансляторов этого языка входили в штатное матобеспечение БЭСМ-6. Мне известна система аналитических преобразований в молекулярной спектроскопии (программа КАПГООР). Но языковых средств не хватало, приходилось часть алгоритма реализовывать в коде машины.
В то же время, Алгол имел несколько замечателных особенностей, отсутствие которых в популярных языках 80-90-х гг. меня раздражало. Например, передача в подрограммы массивов произвольных размеров, или динамическое создание таких массивов (внутри блока). Язык Паскаль в большинстве реализаций не допускает ничего подобного (хотя в стандарте ISO есть средство). Фортран допускает передачу в подрограмму массива с неизвестными заранее размерами, но не позволяет создавать в подпрограмме временные массивы с зависящими от параметров размерами. (Напомню, что речь идет о временах, когда Фортран-90 существовал только на бумаге, а не в виде широко распросраненных компиляторов). Современные объектно-ориентированные языки снимают указанную проблему, но мое приобщение к програмистской деятельности пришлось как раз на период , когда этих языков еще не было, а Алгола уже не было. Был, конечно, язык-монстр ПЛ/1, но он был неразлучен с ЕС ЭВМ. Я же свои программы на Паскале крутил и под ОС ЕС, и на Правец-16 под MS-DOS.
Среди других достоинств Алгола нужно отметить возможность рекурсии (запрещенной в Фортране) и забытый ныне вызов параметров по имени. А еще Алгол-60 стал папой Алгола-W - первого языка, разработанного Н. Виртом. Сохранив в основном структуру языка-родителя, Алгол-W добавил в него строки, ссылки и динамические структуры данных. Алгол-W стал одним из трех языков, на которых иллюстрировали свои идеи Б. Мейер и К. Бодуэн - авторы лучшего на мой взгляд учебника по программированию.
А вчера я случайно обнаружил, что пациент не совсем мертв. Ковырясь в Gnu Compiler Collection я с удивлением обнаружил проект MARST. Это конвертер Алгола-60 в Си. Другим энтузиастом создан аналогичный конвертер для Алгола-W. Оба проекта развиваются, последнее обновление датировано нынешним годом. Разумеется, я скачал оба конвертера и установил у себя на компьютере под Cygwin'ом. Теперь я могу вытащить из пыльного шкафа длинные распечатки с M-220 и БЭСМ-6 и вспомнить несколько приятных лет своей жизни!
Помните, был такой язык программирования Алгол-60? Я с ним впервые встретился в школе. В то время самым программируемым средством был микрокалькулятор Б3-21. Он стоил 210 советских рублей, потому мало кто мог позволить себе купить его. Да и в свободной продаже таких не было. В ИНИТИ, где работал мой отец, такой калькулятор из-за его стоимости приобретался через отдел капитального строительства. А вот книжки кое-какие были. Одну из них - Ю.Белый, "Считающая микроэлектроника" (1983) - я зачитал до дыр. Очень долго она хранилась у меня дома, но в конце концов после многочисленных переездов, видимо, была выброшена. После рассмотрения простейших и инженерных калькуляторов автор обратился к Б3-21. Рассказал про систему команд, привел первую программу. "Входной язык микрокалькулятора Б3-21, - писал автор, - конечно не похож на универсальные языки, такие как Алгол или Фортран, но все же позволяет описывать алгоритмы решения довольно сложных задач". Вот тут-то впервые появилось слово "Алгол". Страшно стало мне интересно, что это за язык такой.
Первое знакомство состоялось в школе. Курс алгебры, 8-й класс (1985 г.). Об информатике в школе заговорили годом позже. А тогда в учебник включили параграф об алгоритмах. Для примера рассмотрели решение квадратного уравнения на Алголе. Наша учительница, впрочем, не пожелала рассказывать о чуждых ей вещах и велела читать самостоятельно. В жутком шуме, стоявшем тогда в классе, я прочитал этот параграф. А потом перечитал его дома. Так в мою жизнь вошло программирование как интереснейшая человеческая деятельность.
Через год в школе появился курс "Основы информатики и вычислительной техники" с ужасным учебником "коллектива авторов" под руководством академика Ершова. В качестве учителя наняли молодого преподавателя из Механического института. Благодаря ему я в тот же год увидел самую настоящую ЭВМ СМ-3. Правда, Алгол к тому времени вышел из употребления. Базовым языком высокого уровня для СМ ЭВМ был Фортран, хотя для обучения студентов использовался Паскаль.
Но Алгол не выпускал меня из своих объятий еще по одной причине. В библиотеке была книга "Алгоритмический язык АЛГОЛ-60. Модифицированное сообщение". Она столь разительно отличалась от сюсукающихся книжечек по другим языкам, что я не сразу понял, как её читать. Это было описание фактического стандарта языка, описание совершенно формальным, казенным языком, да еще и с использованием так называемых НБФ - нормальных форм Бэкуса. Сии грамматические конструкции совершенно сбивали с толку. Например:
<терм> ::= <множитель> | <терм> <знак операции типа умножения> <множитель>
Что такое "рекурсивное определение" я тогда не знал. Ценой значительных усилий я, школьник, книжку эту освоил, в формальных грамматиках разобрался. Замечу, что подобный труд оказался чрезвычайно полезен и в других отношениях. Например, научил меня включать формальную логику в собственном мозгу, благодаря чему аксиоматический подход к изложению математических дисциплин со школьной поры нравится мне гораздо больше, чем описательно-практический, как в школьных учебниках, или в знаменитом "Курсе высшей математики" В.И. Смирнова (особенно в ранних изданиях).
Но вернемся к Алголу. В университете о нем если и говорили, то исключительно как о славном, но прошлом программирования. Совершенно справедливо. Ориентированный исключительно на вычисления, язык не мог применяться для решения многих важных задач, именуемых сейчас ёмким выражением "обработка данных". В то же время другие языки, тот же Фортран, это позволяли. Лично я написал на первом курсе собственный примитивный текстовый процессор на Фортране, а в МАИ А.Г. Сокольский сотоварищи писали на нем процессоры для аналитических преобразований рядов Пуассона. Попытки решать нерасчетные задачи на Алголе тоже предпринимались, ведь несколько качественных трансляторов этого языка входили в штатное матобеспечение БЭСМ-6. Мне известна система аналитических преобразований в молекулярной спектроскопии (программа КАПГООР). Но языковых средств не хватало, приходилось часть алгоритма реализовывать в коде машины.
В то же время, Алгол имел несколько замечателных особенностей, отсутствие которых в популярных языках 80-90-х гг. меня раздражало. Например, передача в подрограммы массивов произвольных размеров, или динамическое создание таких массивов (внутри блока). Язык Паскаль в большинстве реализаций не допускает ничего подобного (хотя в стандарте ISO есть средство). Фортран допускает передачу в подрограмму массива с неизвестными заранее размерами, но не позволяет создавать в подпрограмме временные массивы с зависящими от параметров размерами. (Напомню, что речь идет о временах, когда Фортран-90 существовал только на бумаге, а не в виде широко распросраненных компиляторов). Современные объектно-ориентированные языки снимают указанную проблему, но мое приобщение к програмистской деятельности пришлось как раз на период , когда этих языков еще не было, а Алгола уже не было. Был, конечно, язык-монстр ПЛ/1, но он был неразлучен с ЕС ЭВМ. Я же свои программы на Паскале крутил и под ОС ЕС, и на Правец-16 под MS-DOS.
Среди других достоинств Алгола нужно отметить возможность рекурсии (запрещенной в Фортране) и забытый ныне вызов параметров по имени. А еще Алгол-60 стал папой Алгола-W - первого языка, разработанного Н. Виртом. Сохранив в основном структуру языка-родителя, Алгол-W добавил в него строки, ссылки и динамические структуры данных. Алгол-W стал одним из трех языков, на которых иллюстрировали свои идеи Б. Мейер и К. Бодуэн - авторы лучшего на мой взгляд учебника по программированию.
А вчера я случайно обнаружил, что пациент не совсем мертв. Ковырясь в Gnu Compiler Collection я с удивлением обнаружил проект MARST. Это конвертер Алгола-60 в Си. Другим энтузиастом создан аналогичный конвертер для Алгола-W. Оба проекта развиваются, последнее обновление датировано нынешним годом. Разумеется, я скачал оба конвертера и установил у себя на компьютере под Cygwin'ом. Теперь я могу вытащить из пыльного шкафа длинные распечатки с M-220 и БЭСМ-6 и вспомнить несколько приятных лет своей жизни!