Îçҹ̽»¨

Seminar: Features of Programming Languages

General Information

This seminar will be in english / Dieses Seminar findet auf Englisch statt.

Introduction

The history of programming languages is rife with the cross pollination and adoption of features from esoteric languages into so called "main stream" languages. Examples of such features include generics, multiple inheritance, objects and curried functions. This seminar offers a platform for students to become familiar with this history, and closely analyze and evaluate common features in programming languages. Student's will accomplish this through the reading, examination, and discussion of selected papers and texts. Students are to select a topic, familiarize themselves with the topic, prepare a written report and hold a scientific lecture on their topic, as well as participate in the discussion of other lectures.

Topics

  • Multiple inheritance
  • Information hiding
  • Lazy Evaluation
  • Objects
  • Operator overloading (also called ad-hoc polymorphism)
  • Generics (also called parametric polymorphism)
  • Reflection and Meta-programming
  • Type Inference
  • Modules
  • Substructural Type Systems and Memory Safety (linear types, affine types)
  • Session Types (Ï€ calculus) and Concurrent Programming
  • Lambdas and Closures in OOP languages

Selected Papers by Topic

Multiple Inheritance

Information Hiding

Lazy Evaluation

Objects

Operator Overloading

Generics

Reflection and Meta-Programming

  • The term Homoiconicity comes from:

Type Inference

  • Type inference in Languages with subtyping (like most OOP) is problematic, see:

Modules

  • (Book), Peirce: Advanced Topics in Programming Languages (See Chapter 8)

Substructural Type Systems and Memory Safety (linear types, affine types)

  • Garbage Collection
    • Invented in LISP:
    • See also:
    • and:
  • Linear and Affine Types

Session Types (Ï€ calculus) and Concurrent programming

Lambdas and closures in OOP languages

  • Fundamentals:
    • Anonymous functions:
    • Closures:
  • Lambdas have been around since 1958 (LISP), Java got lambdas in 2014, Other papers of interest:
Weitere Informationen