Cybernetics Versus Informatics: Understanding the Type Wars |

tags : [[cybernetics]] [[type theory]] [[category theory]]



  • The two competing visions that emerged in the early days of programming came from mathematics ([[Lisp]]) and engineering (Fortran)
  • systems that consume data, manipulate it in terms of semantic meaning, and produce meaningful results
  • systems that satisfy requirements meaningfully and adaptively in novel and uncertain environments
  • Lisp was born out of an environment that sought to understand computing as solving symbolic expressions (like you do in math)
  • Usage of Lisp declined as interest in classical AI (symbolic AI) declined, as Lisp was thought of being the language of AI
    • Symbolic AI stressed a neo-[[Cartesian]] model of computing, by which sensory input was processed through โ€œbrain modulesโ€
  • As Lisp faded into the background, another mathematical concept began coming to the foreground: static type checking and โ€œprograms-as-proofsโ€
  • [[Clojure]] was a huge innovation in the Lisp world, bringing immutability and laziness, among other things
    • Clojure seeks to maximize expressivity over formal verification, although formal verification is a goal as of 2016
  • Languages like [[Haskell]] and [[Standard ML]] use their type systems to allow for formal verification
  • If a dog wanted to reach something across a barrier, in the real world it would use its accumulated experience, exploitation of the environment, and experimentation to find a solution.
    • The informatics approach to solving this problem would be to model the world
    • the cybernetic approach would be to create adaptive systems that are capable of adapting to such a thing
Receiving pushes... (requires JavaScript)
Loading context... (requires JavaScript)