Is there a general term for the software paradigm/principle where there is a clear separation between Data, State and Logic (Data - 'information' only, immutable with value semantics, State - 'storage' of Data only with clearly defined access/mutation mechanisms, Logic - pure stateless functionality that can mutate the States) ?
This is as opposed to OOP where Data State and Logic are coupled in a 'class'
I see this separation referred to in many places (especially in clojure) but I couldn't find a single name/term for it .. sometime 'functional' is used but there are ie many functional languages (ie Javascript) without such separation ?
(I am not sure if any other Tags are relevant here)