stat_analysis


Статистический анализ данных


Previous Entry Share
Компьютерная алгебра провалилась. До здравствует компьютерная алгебра!
Сакура
ady_1981 wrote in stat_analysis
Давно хотел написать сию мысль. Я давно являлся (и в данный момент в каком-то смысле являюсь) поклонником технологии компьютерной алгебры (в реализации Mathematica) и считал ее следующим этапом развития языков программирования. Ждал, что вот-вот посыплются приложения этой технологии, которые не оставят сомнений в первенстве компьютерной алгебры.

Недавно я осознал, что этого не случится никогда. По многим причинам. И вот самый простой пример почему.
Возьмем простенькую сумму аля: Sum[(1 - p)^(i - 1)*(1 - q1)^(n - i), {i, 1, n}], полином по p и q1.
Что нам выдаст Mathematica на это? Правильно: -(((1 - p)^n - (1 - q1)^n)/(p - q1)).
Теперь по быстрому поставим p->q1 и получается... получается... Да хрень получается, полная!!! :)
(Можно конечно случай p->q1 честно вычислить через Limit. Но это чуть другая история)
И это простейший пример!...

Суть проблемы я вижу в том, что текущая нотация математических объектов не удачна для символьных преобразований.
Да, это супер круто иметь в символьном виде выражение некой математической идеи. Однако, записав ее в текущей нотации пока получается (или получится рано или поздно) в массе случаев хрень.

Что это означает? Две вещи, как раз то, что написано в заголовке поста:
1) Технология компьютерной алгебры не является следующим этапом развития языков программирования.
2) Тем не менее, любой тупик в месте, где ожидали оживленную дорогу говорит о том, что где-то рядом проходит еще большая дорога. Или другими словами, из факта 1) я лично делаю вывод, что какая-то вариация языка аля компьютерной алгебры должна дать новый прорыв в вычислениях. Например, нужно заменить лишь нотаций мат. объектов и будет нам всем прорыв. Или аля что-то еще, типа ячеистых автоматов Вольфрама...

PS:
1) Почему я считал технологию компьютерной алгебры следующим этапом языков программирования? Логика была такова: старые добрые языки программирования имели дело всегда с конечными сущностями: т.е. программа до сих пор была всегда такова - далай это столько-то раз. Это напоминает арифметику в древней математике. А что пришло в свое время на смену арифметике? Правильно, пришел мат. анализ со своими бесконечными и предельными сущностями. Значит этот этап должен настать и в языках программирования, решил я. Будем ждать :). Задача прежняя - обуздать в языках бесконечность :). Mathematica действительно умеет ее обуздывать, однако - и итоге получается топкое болото, вместо кода и нет открытия новых вещей: т.е. в итоге все равно приходится сначала убедится в том, что получается, а потом уже к тому, что получается привести Mathematica "за ручку". Это не есть новизна ни разу.

?

Log in