11. Панегирик APL и др

Был же в НИИ "Интел" какой-то чин на должности научного руководителя — там, диссертации сотрудников подписывать и щеки надувать? А что, если он не ограничился бы только этим?

* * *

Здравствуйте, товарищи! В первую очередь, я хотел поблагодарить Петра Юрьевича Воронова за возможность выступить на совместной конференции сотрудников НИИ "Интел", НИИ 742, НИИ 581 и вычислительного центра АН УССР, посвященной языкам программирования. Мой доклад посвящен весьма нетрадициональному языку APL, недавно разработанным Кеннетом Иверсоном. Считаю, что вариант данного языка будет востребован в нашей стране в инженерный и физических расчетах.

Я проанализировал популярные предложения по языкам программирования, развитие некоторых из них было уже предложено предыдущими докладчиками. Я условно разделю их на четыре группы.

Первая — это варианты ФОРТРАНа. Язык создавался для математических вычислений, имеются программы для различных областей вычислений. Однако, классический ФОРТРАН — очень старый язык, фактически это один из первых языков программирования. Очень сложно будет адаптировать ФОРТРАН к современным требованиям и не потерять совместимость со старыми программами. Разные варианты ФОРТРАНа малосовместимы даже между собой!

Вторая группа — язык БАЗОВЫЙ, реализован в рекордные сроки в НИИ "Интел". Несмотря на то, что это наша разработка, подвергну ее критике. Язык создан профессиональными схемотехниками. Да, это ирония, товарищи. Единственные преимущества БАЗОВОГО — это то, что он уже существует и что он достаточно прост. Все остальное — недостатки. Для задач арифмометра-переростка он вполне пригоден. Вычислительная мощность нашего аппаратного комплекса КЗУП-01 "Денди" вполне достаточна для выполнения задач на БАЗОВОМ. Однако я не могу считать БАЗОВЫЙ полноценным языком программирования. Это ограничения самого языка, а не метода его выполнения!

БАЗОВЫЙ обнажил одну проблему, от которой страдают первые две группы. Как вы и сами знаете, товарищи, написание транслятора языка программирования в машинные коды — сложная, нетривиальная задача. Именно поэтому мы смогли реализовать БАЗОВЫЙ так быстро. Язык не компилируется. (Ропот.) Да, товарищи, БАЗОВЫЙ является интерпретируемым языком. И это не сильно ограничивает скорость выполнения программ! (Ропот продолжается.) Товарищи, предлагаю обсудить БАЗОВЫЙ после доклада, я пока я продолжу.

Третья группа — это варианты АЛГОЛа. Я, к сожалению, так и не увидел ни одной полной реализации спецификации этого языка. (Смешки в зале.) Подмножество АЛГОЛа — это весьма полезный формализм, такое подмножество может быть базой для нового языка. Однако, стоит ли цепляться за АЛГОЛ?

Четвертая группа — даже не языки, а аппаратно-програмные комплексы для инженерных задач, как то МИР. МИР позволяет описывать проблему на более высоком уровне, чем ФОРТРАН и АЛГОЛ. Я предлагаю совместить идеологический подход МИРа с нашим аппаратным комплексом КЗУП-01 и зарубежным опытом разработки инженерных языков программирования.

Разработка APL Кеннета Иверсона представляет собой фактически запись математического формализма на вычислительной машине. Исполнимую запись! Однако, главным преимуществом APL является не это. APL активно использует массивы данных как аргументы и результаты операторов. Можно записать векторы, матрицы, тензоры как массивы и определить такие операторы как поэлементное сложение, произведение матриц, скалярное произведение, норма. Это понятно и привычно инженерам, математикам, физикам. APL избегает записи циклов. Зачем организовывать цикл для сложения элементов массива, когда можно определить оператор "сумма массива"?

Более того, имеет смысл определить оператор "куммляция массива в одно значение", инстанциированный оператором суммы элементов. Если мы захотим реализовать оператор для произведения элементов массива, это будет тривиально. Также, операторы вида "применение оператора к каждому элементу массива" или "слияние двух массивов в один" позволяют сильно поднять уровень абстракции языка. Да, товарищи, уровень абстракции! Это именно тот инструмент, который позволит нам отойти от машинных кодов и примитивных инструкций ФОРТРАНа!

Имеет APL и недостатки: используется запись очень близкая к математической, что делает ее ввод и вывод в вычислительное устройство сложным. Однако, это всего лишь проблемы синтаксиса! Считаю, что заменить экзотические символы, как-то "дельта" или "перпендикуляр" на короткие названия операторов не будет сложно.

Для выполнения на КЗУП-01 считаю правильным учесть опыт БАЗОВОГО и сначала написать интерпретатор. Товарищи, страна не может ждать два года, пока наши сотрудники не реализуют компилятор! Мы должны дать инженерам и физикам инструмент расчетов уже завтра! Если руководство НИИ 581 сочтет нужным, его сотрудники могут учесть опыт разработки транслятора нашего варианта APL и разработать соответствующий компилятор для "больших" машин. Однако, это уже дело будущего.

Резюмируя: я предлагаю создать интерпретируемый язык для инженерных расчетов на основе существующих разработок. Это язык будет востребован в науке и на производстве. Высокий уровень абстракции поможет выражать задачи коротко и понятно даже для неспециалистов в вычислительной математике. В случае принятия нашим руководством решения о поддержке этого направления, коллектив НИИ "Интел" берет на себя повышенные обязательства написать реализацию APL и дать ее рабочим, инженерам и научным сотрудникам нашей страны уже через четыре месяца! Спасибо за внимание, товарищи!


Фанфик от oal

17.02.2013

Загрузка...