Bruno Jouhier (2017-08-19T23:04:38.000Z)
bjouhier at gmail.com (2017-08-19T23:05:34.332Z)
FWIW I wrote a dissertation on this very topic a few years ago: https://bjouhier.wordpress.com/2010/05/15/objects-values/ tldr; - Expressions have a sense and a denotation. - The sense of an expression accounts for its “cognitive significance” - The denotation of an expression is the thing that the expression denotes. - Two expressions may have different senses but the same denotation. - A variable expression is an expression that takes different denotations over time. - A constant expression is an expression that always has the same denotation. - **An object is a mutable denotation.** - **A value is an immutable denotation.** - Objects have an identity which is immutable. - Objects have a mutable state. - Numbers and physical quantities are values. - Dates and timestamps are values. - Booleans are values. - Characters and strings are values. - Sets are values. - A representation is an object that represents an object or a value. - An expression is a value that denotes an object or a value. - The value of an object is its identity. - Values are symbolic and don’t exist in the real world. - Objects are usually real, but not always. This was not written in the context of a specific programming language, like JavaScript. So there is are mismatches: dates (and usually sets too) are objects in JS.