|
Boost : |
Subject: Re: [boost] first steps to submitting - boost :: observers
From: Robert McInnis (r_mcinnis_at_[hidden])
Date: 2016-09-18 22:05:10
On Sunday, September 18, 2016 7:23 PM Giovanni Piero Deretta said:
> Welcome to the meat grinder :)
Thanks, I think. ;)
> I do like the idea. It seems vaguely related to Functional Reactive
Programming
> (of which I have no experience). It would be nice to have a discussion of
similarities
> and differences. Possibly this is discussed in the docs, but they are not
immediately
> accessible via mobile. I would like thread safety to be optional.
Triggering the observers into action when an object fires off an event is
definitely reactive programming. Designing a data model and rule set around
such constructs immediately produces dependency driven calculations.
Dependency driven calcs would be the minimalist set of calculations required
when updating a data model.
The original system I created with these tools was a tax system (US tax
code). Hundreds of forms each with numerous interdependent calculations.
Prior to these tools, making any change would require a full re-calc of the
entire data model. This actually took a significant amount of time back
then (66MHz box would take 5+ minutes). Once we implemented the calcs using
dependency driven calcs, re-calcs were no longer needed. The data would
refresh within a blink, as a fraction of the data needed to be updated due
to the change.
Beyond simple data model updates, I would make UI elements react to changes
in the various dependent fields. This allowed for the UI to be updated
immediately whenever the data changed and just that element, not all
elements would necessarily have to be updated.
Here is a screencap of one of the forms being worked on.
http://i.imgur.com/XCunjx3.jpg
BTW, I have added oVector and oMap to the observables folder (the 'o' in
oVector means observable) along with two simple test programs. This would
allow for the developer to be notified whenever new data arrived in one of
those containers (and maybe update the list on the screen).
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk