FAQ What are the roles of Cxx, Python, and pyre
From DANSE
ARCS uses C++ for vector operations. I expect that infrastructure such as instrument representation will be reimplemented in C++ once the design is stable.
Python classes add more scientifically relevant interfaces, such as adding Histograms (adds the data and propagates the errors); these classes are mostly unpacking vectors from Histograms and passing them to the lower level function calls. The same is true for pretty much everything else: it gets done in Python, sometimes by delegating the work to C++ methods or functions that can get the job done faster.
The component behavior comes from Pyre. This is orthogonal to the scientific content, and we strive to keep it that way--the science classes don't do "component-ness", and the component classes don't do science. Components are classes that inherit from pyre.Component; they provide interfaces to the science classes, and simply delegate all the work to them. The component classes provide services such as validation of user input.
Using Pyre solely at the application level would force science classes to take on the additional burden of what the component classes do. This would diminish greatly the reusability of the science classes and harm the whole project. --Tim 09:47, 17 Jun 2005 (PDT)
