This is a note in comparative
programming languages. This will teach you the major programming language
paradigms: imperative, logic and functional. Topics covered includes: history of
expression and programming languages, syntax, semantics, names, expressions,
statements, types, blocks, exception, Haskell, functional programming and
Prolog.
This note covers programming languages and programming
paradigms, OCaml operational Semantics: an overview, Names, Bindings and
environment, A static analysis primer, Stack machines, Functions everywhere,
Static scope and dynamic scope.
This note explains the
following topics: Transition Systems, Defining a Language, A Functional
Language, Control and Data Flow, Imperative Functional Programming, Cost
Semantics and Parallelism, Data Structures and Abstraction, Lazy Evaluation,
Dynamic Typing, Subtyping and Inheritance, Storage Management.
Objective of
this note is to teach the fundamental principles of programming, making use of
the typical aspects of the object-oriented, functional, and imperative
programming paradigms. Such basic principles are presented by referring to the
Java programming language.