Data abstraction

  • Computing is all about organising logic to manipulate data and the vast majority of IT work is creating logic (software) to run on general purpose CPUs
  • Logic just transforms or filters data and sometimes maintains state
  • There are many ways to associate this logic with data
    • Imperative programming matches CPU hardware the closest, and you manually group functions (logic) and data
    • OOP abstracts a bit more and supports associating logic with data (types) in the language
    • Functional programming has no external state and supports data flow synchronisation in the language
    • UNIX presents a simple interface to get data to/from the CPU
  • I'm going to concentrate on the last 2 from here on