Really interesting to compare such early thinking to where we are today.<p>> <i>4. Values and objects in programming languages</i><p>> <i>Most languages confuse them.</i><p>Indeed. All programmers have an intuition of (primitive, immutable) values and (mutable) objects, but e.g. Dan Abramov claims the intuition is often lacking w.r.t. how a specific language actually works in practice. His book Just JavaScript explicitly describes the full mental model for one language, and I found this approach valuable when I taught a JS bootcamp.
<a href="https://justjavascript.com/" rel="nofollow">https://justjavascript.com/</a><p>For example, JS strings are superficially similar to an array of characters, but their semantics such as equality are completely different because strings happen to be primitives while arrays are not.<p>> <i>Names should be fixed.</i><p>Here, they are advocating the use of const/final (single-assignment) variables, which has become a best practice but wasn't widely available back then. This is orthogonal to the value vs object distinction though (with const-immutable being what pure FP requires.)<p>However, further in conclusions:<p>> <i>We have
shown that objects correspond to real world entities, and hence
exist in time, are changeable, have state, are instantiated, and
can be created, destroyed, and shared.</i><p>I think this is the naive OO hype of the time (1982) talking: whether something should be modelled as a mutable object in a program is orthogonal to real world entities.