Расскажу пока подробности про muMATH для Apple. Хотя нас тут убеждают, что это пакет только для ученых и без диплома кандидата наук к нему и подходить нельзя, на деле все проще.
Во-первых, матрицы, решение систем уравнений, числовые ряды, дифуры - это все программа института. В гугле можно найти кучу ссылок на статьи, в которых описан опыт применения этого пакета в ВУЗах. Например, раз, два, три.
То есть, Рапира - инструмент для обучения школьников, а muMATH - студентов.
Во-вторых, не надо думать, будто этот пакет заточен только под ввод формул и ничего больше делать в нем нельзя.
Что есть в пакете muMATH?
1) Операционка ADIOS, которая представляет собой некий гибрид CP/M и штатной DOS 3.3 для Apple. Например, в ней есть команда TYPE, которой можно просматривать находящиеся на диске файлы. Также в ней есть понятие текущего диска. Команда "1:", выбирает первый диск, "2:" - второй. Запуск исполняемых файлов (*.COM) производится командой RUN.
2) Два варианта интерпретатора MUSIMP.COM и MUSIMPX.COM. Первый расчитан на Apple с 48Кб памяти, второй - на Apple с 64Кб (48Кб + Language Card).
3) Набор текстовых файлов с программами на muSIMP, которые, собственно, и реализуют все математические функции.
Еще раз, коротко: голый muSIMP не может ничего делать с уравнениями или матрицами. Он даже в степень не возводит. Все математические возможности появляются после того, как нужная программа на muSIMP загружается в память функцией RDS(ИМЯ,РАСШИРЕНИЕ,ДИСК); и транслируется.
Например, чтобы посчитать 2 в степени 1800 мне понадобилось загрузить файл ARITH.MUS. Поддержка длинной арифметики в muSIMP встроена, для нее ничего грузить не надо, но это именно 4 действия. Без загрузки ARITH.MUS интерпретатор не знает, что такое ^ и считает выражение 2^1800 просто строкой.
Уже этого достаточно, чтобы опровергнуть заявления, будто у muSIMP нет поддержки работы с текстовыми строками. Ведь этот код как-то объяснил интерпретатору, что символ ^ - теперь оператор возведения в степень. Впрочем, есть и другое опровержение.
Вот, кстати, сама реализация возведения в степень. Видно, что тут полноценный алгоритм с циклами, условными операторами и вызовами других функций.
Скрытый текст
Код:FUNCTION EXPT (EX1, EX2, % Local: % EX3), EX3: 1, WHEN INTEGER (EX1), LOOP BLOCK WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1, EX3: TIMES(EX1,EX3) EXIT ENDBLOCK, WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT, EX1: TIMES(EX1,EX1) ENDLOOP EXIT, LOOP BLOCK WHEN REST(EX2:DIVIDE(EX2,2)) EQ 1, EX3: EX1*EX3 EXIT ENDBLOCK, WHEN ZERO (EX2:FIRST(EX2)), EX3 EXIT, EX1: SQUARE(EX1) ENDLOOP ENDFUN$[свернуть]
Поддержка работы с файлами тут тоже есть. Есть функция RDS (ReaD Select), перенаправляющая файл в текущий поток ввода, и функция WRS (WRite Select), перенаправляющая текущий вывод в файл. Когда мы в интерактивном режиме пишем RDS(ИМЯ,РАСШИРЕНИЕ,ДИСК); фактически на вход интерпретатора перенаправляется указанный файл. Этим пользуются интерактивные уроки, отображая текст задания из файла, а потом переключая ввод на клавиатуру, чтобы пользователь мог решить показанные примеры.
Но есть пример и поинтереснее. Дело в том, что muMATH содержит среду разработки (IDE). На первом диске есть программа TRACE.MUS, которая позволяет отлаживать функции с помощью отладочного вывода.
А на третьем диске находится... текстовый редактор EDIT! Написанный целиком на muSIMP. Как вам такое? Текстовый редактор на языке якобы без поддержки работы с текстовыми строками.
Что интересно, в нем есть даже автоматические отступы.
На том же диске есть программа SAVEPROG, которая позволяет сохранить на диск выбранные функции в виде файла.
Вот пример ввода функции с помощью редактора и результат ее выполнения.
Кстати, этот редактор меня заставил призадуматься над Рапирой. В Рапире вызов редактора не самый очевидный. Нужно написать
после чего будет вызван редактор, в котором появится заготовка процедуры с указанным именем. Дальше мы правим текст процедуры, выходим из редактора и происходит проверка синтаксиса. Если есть ошибки, о них сразу будет выдано сообщение.Код:ПРОЦ ИМЯ_ПРОЦЕДУРЫ
В muMATH можно написать
и тоже будет вызван редактор. И в нем будет заготовка функции. Дальше мы правим текст функции, выходим из редактора и происходит проверка синтаксиса. Если есть ошибки, о них сразу будет выдано сообщение.Код:EDIT(NEWFUNCTION);
![]()
![]()
По-моему, сделано все один в один. И вот возникает вопрос, а может, разработчики Рапиры подглядели этот интерфейсный ход в muMATH? Ведь известно, что проводились закупки как самих Apple, так и софта для них. Так что они вполне могли держать этот пример перед глазами.




Ответить с цитированием