The Language of the System
- You sort of define your world synonymously with the world that’s implied by your programming language. And it’s impossible to avoid this, right, because the semantics of a language, they eventually, you know, pervade your brain.
- In Clojure/functional languages there is the functional/good world, and there is the ick, but we can’t stay in the good world only because actual programs need to do interactions with the world.
- Systems are bigger than programs. We build systems or parts of systems, not programs.
- Programming languages stop before the system. The system is this composition of things whose language doesn’t know anything about systems. It’s an ensemble of programs.
- Now we think of systems as compositions of programs that offer services to other programs, via its API.
- The way services talk to each other is by conveying data, not through some hyper-linguistic thing where there are all these extended verbs. We’re just going to talk with data.
- JSON, not extensible.
- Self-describing, XML. If I have a decoder that understands the rules of the format, I can read anything that you say.
- The people’s use of JSON is extremely context dependent, and a lot of times that context is not captured anywhere except on a napkin.
- When we transmit stuff, they are all data formats. They are all values.
- Bad systems: Systems where you can’t distinguish references from values.
Java naming: Based on the package system. Clojure naming: Mostly verbs.