Тут нет никаких программистских фокусов. Автору, как программисту, интересно внутреннее устройство аналогичных программ. На картинке приведён пример как численный движок работает с набором функций как целым. Это не трюк и не фокус, а вполне нормальное поведение программы - ожидаемое. Без этого "фокуса" прожить в принципе можно, но написанный Томом Гутманом интерпретатор строковых выражений уже не заработает, т.к. основан именно на нём.
В последних картинках тоже нет каких особых приёмов для тех, кто умеет пользоваться Maple. Не всегда там ясно какого типа получился результат преобразования, а без этого нельзя осознанно применять функции к этому результату, иначе теряется контроль над вычислительным процессом.
Если хотите whattype() - это элемент отладки программ, написанных в Maple.
Я всё склоняю автора к мысли, чтобы оставить один символьный движок, в котором численные расчёты были бы как составная часть. Внешне же можно сделать интерфейс аля Mathcad. Если бы Mathsoft имела в штате спецов по символьным вычислениям, то, я думаю, что они бы давно так и сделали, а не тянули бы за собой переходники-интерфейсы с символьными движками.
Символьные вычисления - это множество, которое включает в себя численные вычисления с точки зрения программирования. Это можно сравнить с языками С и С++. С - это "численные вычисления", а С++ - это "символьные вычисления". На С не сделать простым образом конструкции, упрощающие рутину, которые само собой разумеющиеся на С++. Я говорю про классы. Умелое их использование упрощает программирование. Они для этого и созданы. Это язык следующего поколения по сравнению с С.
Сегодняшние студенты, школьники без проблем осваивают новые технологии, казавшиеся чем-то сложным предыдущему поколению. Для них С++ - это как когда-то ассемблер для гуру лет 30 назад.
Так вот, в символьных вычислениях нет ничего особенного. Это просто следующее поколение вычислителей (компьютерной алгебры) по сравнению с "инженерными калькуляторами". В них само собой разумеющееся делать конструкции, которые раньше в численных движках сделать было не возможно - только запрограммировать подключаемый модуль. Прогресс не стоит на месте. Его надо использовать.
П.С. Вообще передача указателя функции как параметра была простой операцией на C и C++, в C# же так просто вроде бы это не сделать, т.к. манипуляции с указателями считаются опасными операциями. Я уже давно не программировал и не помню можно ли там во время выполнения подобным или другим образом работать с указателями на функцию.
Трудно ориентироваться в возможностях и правилах языка, когда нет его описания.
Отредактировано пользователем 8 июня 2009 г. 13:25:33(UTC)
| Причина: Не указана