~~~~~~~~~~~~~
- Procedural
- Functional
- Object oriented
- Compiled v Intrepreted v JIT
- Low level vs. High level
- Markup languages
- Declarative languages
eg - SQL
- Scripting Languages
eg - Javascript
- Prototype languages
We study the atomic units and the rules of composition of these units that make everything.
We will learn to appreciate the essence of any language - and look at it’s actual features. how are the objects of ruby different from say, java, python etc? we will be able to appreciate that if we grasp the essence of the languages
“desugar” -> remove the syntactic sugar and get the essence. eg, AND, OR, XOR etc can all be implemented by NAND –> that is desugaring
another eg: exponentiation –> repeated multiplication multiplication –> repeated addition addition –> repeated +1 division –> repeated subtraction subtraction –> repeated -1
so, all operators —> { desugaring } –> +1, -1 (in loops)
another eg, Programming language –> { desugar } –> turing machine (or Lambda calcaus) so, we can desugar to multiple things
in this course –> we will take the language, desugar it to it’s essence, implement the essence (write an intrepreter that understands it)
decide on a core feature set first, once you are satisfied with it, you can add syntax you can make it indentation based, braces based etc
~~~~~~~~~~~~