Today I Learned

TIL, 2017-03-11

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.

This project is maintained by daryllxd