Фанфики на цикл «Еще не поздно» | страница 18




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


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


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


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


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


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