Programming Language Design
# Programming Language Design
There are many pieces which form a programming language.
- Type system: static or dynamic
- Automatic memory management
- Data types
- Expressions: code which produces a value
- Statements: code which produces an effect. It does not evaluate to some value but changes the world in some way – modify state, reading/producing input/output.
- Variables
- Control Flow
- Functions
- Closures: inner functions which “hold on” to references to any surrounding variables that it uses even after the outer function has returned
- Classes
- Deciding between OOP or not. Deciding to use classes or prototyping.
- Standard library