Языки программирования vs. Excel
http://en.wikipedia.org/wiki/Lazy_evaluation — ты этого хочешь?
имхо, нет
Хочется, чтобы аргументы сообщали о своем изменении и формулы пересчитывались только при получении такого сообщения.Подписывайся на ивенты и пересчитывай.
В MetaPost'е можно написать:
a = b + c;получится:
b = a - 3;
a = 10;
show a, b, c;
>> 10
>> 7
>> 3
они не пересчитываются?
Подписывайся на ивенты и пересчитывай.если у тебя есть красивая реализаация, поделись плиз . Если самому это делать, то такое чувство, что велосипед изобретаешь
+1
получится:важен не только результат, в примере на C# результат такой же. Тут еще нагрузка на процессор важна.
Excel пересчитывает только те ячейки, которые зависят от той
А может он все пересчитывает?
А может он все пересчитывает?зачем это ему. Можно даже проверить, написать свою формулу, например, с мессаджбоксом.
проверил, не все пересчитывает.
если у тебя есть красивая реализаация, поделись плиз . Если самому это делать, то такое чувство, что велосипед изобретаешьSICP: 3.3.4 A Simulator for Digital Circuits
и где там реализация?
cell-cultures/cells: unknown location
HTTP Response Status
404 Not Found
Python Traceback
Traceback (most recent call last):
File "/usr/lib/python2.3/site-packages/viewcvs/viewcvs.py", line 3235, in main
request.run_viewcvs
File "/usr/lib/python2.3/site-packages/viewcvs/viewcvs.py", line 317, in run_viewcvs
% self.where, '404 Not Found')
ViewCVSException: 404 Not Found: cell-cultures/cells: unknown location
Python?
Есть JavaFX где можно создавать свойства, зависящие от других свойств, при этом пересчет идет автоматически (реализовано это через сообщения об изменении, конечно).
А так — ты вообще хочешь кеширования, если что. И dirty flag, распространяющийся при изменении какого-нибудь входа. Вот в этом направлении и ищи, какой-нибудь кеширующий фреймворк, который позволит брать достаточно большие (чтобы в плюсе оказаться) под-формулы (или вообще алгоритмы, неважно) и оборачивать их в кеширующую обёртку, даже с автоматическим отслеживанием dependencies может быть.
Если речь идёт именно об арифметических действиях, то нужно очень концептуальную формулу придумать, чтобы что-нибудь такое хитроумное вывело тебя в плюс по времени =)ничего придумывать не надо, к сожалению, это реальность. На C# выполняется около 10^6 операций деления в секунду. У нас есть бизнес-сущность, которая объединяет коллекцию других сущностей. Количество элементов в коллекции бывает порядка 90. В каждой сущности порядка 30 формул, вот уже получаем 60*90=6300 формул. Если еще учесть зависимости, то еще получаем множитель 3 (а то и 10). Т.е. на одну большую сущность получаем 16200 операций. Если на сервер одновременно зайдут 100 пользователей уже будут проблемы.
Dataflow architecture. Попробуй погуглить на эту тему.
Мне кажется то, что ты ищешь называется Спасибо
Оставить комментарий
6yrop
На каком языке программирования можно выполнять арифметические действия как в Excel-е? Хочется просто писать формулы и не думать о том, когда они вычисляются. Пример:На C# это можно написать так
Но это дополнительная нагрузка на процессор — формула пересчитывается при каждом обращении.
Хочется, чтобы аргументы сообщали о своем изменении и формулы пересчитывались только при получении такого сообщения. (Возможно пакетное изменение аргументов, в примере изменение A, B может быть объединено в один пакет и пересчет должен быть выполнен один раз.)
Если кто знает реализацию такого на C#/Java поделитесь или дайте ссылку
Функциональные языки такое могу?