Skip to content

Introduction

Motivation

  • Using a formal language to describe and solve problems is central to software engineering
  • Programming language theory involves mathematics, software engineering and linguistics
  • Main emphasis: Comparative programming language analysis
  • Like in other engineering disciplines, a mathematical analysis can contribute to a reliable and robust design

Definitions

  • Formal language: Set of strings (symbols) constrained by specific rules
    • The set of formal languages is a subset of context-free languages
    • All programming languages are formal, we need to be able to interpret them computationally
  • Informal language: Any natural language

Goals

  • Understanding of programming paradigms outside OO/imperative
  • Create programs in functional and logical styles
  • Formal foundations of programming languages
  • Bridge the gap between "computer science" and theoretical disciplines and practical software engineering
  • Shift from execution-based thinking to rule-based thinking

Programming Paradigms

  • OOP is not a paradigm in this sense here, more a way of organizing your code (built on the imperative paradigm)