Programming Language Paradigms, Type Systems, and Implementation: Concepts and Trade-offs
Abstract
Programming languages are the formal notations in which computation isexpressed, and this paper reviews the principal concepts by which they areorganised and the trade-offs among them. It describes the major paradigms, the imperative style, in which a program is a sequence of commands that change state, including its procedural and object-oriented forms, and the declarative style, in which a program describes what is to be computed, including its functional and logic forms, noting that many modern languages combine several paradigms. It describes type systems, the distinction between static typing, checked before execution, and dynamic typing, checked during execution, and between stronger and weaker enforcement, together with type inference and type safety. It describes the implementation of languages, by compilation to machine code, by interpretation of the source, and by compilation to bytecode executed on a virtual machine, possibly with just-in-time compilation, and the phases of translation. It describes the management of memory, whether manual, automatic through garbage collection, or through ownership, and the models of concurrency. The study finds that the design of a programming language is a matter of trade-offs, among performance, safety, and productivity, and among control, abstraction, and flexibility, so that no single language is best for all purposes and languages are chosen and designed to suit their domains. It concludes that an understanding of these concepts and trade-offs underlies the effective choice and use of programming languages. Certain figures are illustrative. KEYWORDS: Programming Languages, Paradigms, Object-Oriented,Functional Programming, Type Systems, Compilation, Interpretation, Memory Management, Concurrency
Full Text:
PDF 23-33Refbacks
- There are currently no refbacks.