История компьютерных вычислений и возникновение компьютерной алгебры
Иноди действительно вычислял с удивительной скоростью. Так, в 1924 году в Обществе Гражданских Инженеров был организован матч между счетчиком и вычислительной машиной (арифмометром) того времени. Иноди победил машину в сложении, вычитании, возведении в степень, извлечении корня и в большинстве умножений. Только в умножении пятизначных чисел машина опередила человека. Кроме того, подобно большинству молниеносных вычислителей, Иноди называл день недели, на который приходится та или иная дата, почти мгновенно, что машина не могла делать.
Психолог Альфред Бине отметил, что память Иноди была сильно специализирована. Хотя Иноди запоминал сотни чисел, он не мог повторить более пяти или шести букв, предъявленных в определенном порядке, например в порядке а, т, g, f, s, m, t, u. Он не мог запомнить две строчки стихов или прозы. С другой стороны, он мог поддерживать разговор и отвечать на вопросы остроумно и по существу, решая в то же время предложенные ему задачи.
Все знаменитые великие вычисления XIX века содержат большое количество манипуляций с формулами. Наиболее известным является, несомненно, расчет Леверье орбиты Нептуна, который был основан на возмущениях орбиты Урана и привел к открытию Нептуна. Наиболее впечатляющие вычисления с карандашом и бумагой выполнены также в области астрономии: Делоне потребовалось 10 лет для вычисления орбиты Луны и еще 10 лет для ее проверки (проверка выявила несколько ошибок в знаках и несколько "потерянных" двоек). Результат не является численным, поскольку он состоит, в основном, из формулы, которая сама по себе занимает 128 страниц 4-й главы его книги. Если бы Делоне мог установить систему Mathematica на Pentium 166, то все вычисления, без учета времени на набор формул, заняли бы около 10 минут!
Однако с появлением компьютеров выполнять численные расчеты стало значительно проще, и благодаря огромным вычислениям иногда удавалось избежать трудоемких алгебраических выкладок. Поэтому для широких кругов инженеров и даже для большинства научных сотрудников именно численные расчеты стали синонимом научных вычислений.
Тем не менее, как уже упоминалось, численные расчеты не позволяют полностью исключить необходимость в алгебраических вычислениях. Ведь написание даже простейших программ требует вывода формул, на которых основан алгоритм. Кроме того, имея удобные формулы, вычисления можно выполнить существенно быстрее, чем без них. И это может играть решающую роль: едва ли кого-нибудь (кроме самих метеорологов) может интересовать 48-часовый прогноз погоды через две недели. Кроме того, во многих численных методах (например, сеточных) при уменьшении шага объем вычислений возрастает экспоненциально (показателем является обычно размерность сетки).
Поэтому с усложнением решаемых задач роль алгебраических вычислений не только не уменьшилась, но и, наоборот, значительно возросла. Однако часто их приходится выполнять вручную, хотя первые эксперименты по их автоматизации были поставлены еще на машинах первого поколения (в 1953 году). Очень скоро выяснилось, что программное обеспечение алгебраических вычислений должно представлять собой полную систему, включающую метод представления нечисловых данных весьма специальной структуры (формул, уравнений и т.д.), язык, позволяющий манипулировать ими, и библиотеку функций для выполнения необходимых базовых алгебраических операций.
Значительно раньше, еще в XIX столетии, Ж. Адамаром была осознана важность так называемых некорректно поставленных задач, для которых оказалось, что арифметика, реализованная традиционным способом, не обладает точностью, достаточной для реализации численных алгоритмов их решения. Поэтому уже в начале 60-х годов прошлого столетия велись интенсивные научные исследования алгоритмов выполнения арифметических операций над числами произвольной длины и произвольного диапазона (так называемая арифметика произвольной разрядности). Уже в середине 60-х годов появились малые ЭВМ, на которых арифметические операции были реализованы не традиционным аппаратным способом, а микропрограммно.
В 1965 году в Киеве была создана одна из наиболее уникальных таких ЭВМ – МИР-1. Занимая совсем немного места (стол и тумбочка с пишущей машинкой) и обладая весьма скромной, даже по тем временам, памятью – всего 4 Кбайт, она обладала уникальными возможностями в проведении различных инженерных и научных расчетов. Так как эта машина практически полностью была спроектирована математиками, в ней отсутствовали дорогие технические решения. Зато она обладала входным языком высокого уровня (ассемблер отсутствовал, программа на входном языке высокого уровня интерпретировалась) и возможностью выполнения арифметических операций с произвольной (заданной в начале программы) разрядностью. Конечно, о миллионах цифр не приходилось даже и мечтать, так как программа и все данные должны были уместиться в памяти объемом 4 Кбайт. Чтобы скрыть недостаток финансирования (точнее, его следствие – малый объем памяти), по умолчанию разрядность равнялась 6 (десятичным разрядам). Однако многие задачи решались при разрядности 9, 10, 12, а то и. 18-20 разрядов. Отдельные задачи решались при разрядности 100. Простота входного языка и арифметика произвольной разрядности обеспечили необычно маленькой (по тем временам) и дешевой машине больший успех, чем был у флагмана советской вычислительной техники – БЭСМ-6.
Вместе с тем попытки решить новые и все более сложные задачи обнаружили ее основной недостаток – отсутствие возможности выполнять аналитические выкладки. И уже через три года после появления МИР-1, в 1968 году была создана МИР-2, входной язык которой, хотя и являлся расширением входного языка машины МИР-1, имел недвусмысленное название – Аналитик. Это был первый, реализованный в СССР полноценный язык программирования с возможностью выполнять "алгебраические" вычисления. И долгое время, вплоть до появления его очередной версии, он был лучшим.