A programming language may enforce a particular style of programming called a programming paradigm:
- Imperative Languages: programs are decomposed into computation steps reflecting the computer architecture (FORTRAN, C, Python, Java)
- Functional Languages: based on mathematical notion of function; the focus is on what should be computed but not how it should be computed (Lisp, Haskell, CaML, Scheme)
- Logic Languages: programs that define a problem rather than defining an algorithmic implementation (Prolog)
- Object-oriented Languages: this may be added to any other paradigm, e.g. OO imperative, OO functional. (Java, OCaML, Scala, Python, Ruby, F#)