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#)