Programming Imperative and Procedural Object-Oriented Functional Declarative and Logic Concurrency Models Type Systems Metaprogramming