Welcome
Concepts of Programming Languages - TH Rosenheim - WS 2024/2025
Sebastian Macke
Rosenheim Technical University
About me:
- Lead Software Engineer at QAware (Munich, Mainz, Rosenheim)
-- qaware.de
-- Dienstleister für Cloud Native Anwendungen
- Software Developer as a hobby (Reverse Engineering, Simulations, Emulations, AI):
-- github.com/s-macke
-- simulationcorner.net
-- Newsletter: www.linkedin.com/newsletters/qaware-ai-insights-7222227604580225024/
- Email: Sebastian.Macke@th-rosenheim.de
2
There are so many Languages ...
Miro Board: https://miro.com/app/board/.....
3
What are concepts of programming languages?
- Syntax (Basic vocabulary, grammar)
- Semantics (The meaning of the program)
- Names (variabes, types, functions, classes, objects, but also scope, visibility, lifetime)
- Data Types (simple, structured)
- Flow control (for, if, ....)
- Functional programming (function as first class citizen)
- Object Oriented Programming
- Debugging
- Exception handling
- Concurrency handling
- Memory management
4
Goal of the Course
- Looking beyond the horizon
- Gain knowledge about the concepts of existing programming languages
- Increased ability to learn new languages
- Learn how Go differs from other languages conceptually
- Learn how to write professional code with Golang
- Gain skills to pick the right language for a given problem
5
Course Requirements
- The course is designed as a master course.
- Solid programming skills in at least one language are required.
- It is assumed that students have some skills in other programming languages.
- For most of the code examples, we will use Go (Golang) as language.
6
Lectures so far planned
Lecture 1 - About Overview Introduction
Lecture 2 - Introduction to Golang. Types Control Structures
Lecture 3 - Object Oriented Programming with Go
Lecture 5 - *Large Language Models*, Prompting, Copilot
Lecture 5 - Functional Programming
Lecture 6 - Pure Functional Programming With Haskell
Lecture 7 - Concurrent Programming
Lecture 8 - Distributed Programming
Lecture 9 - Cross Compiling with WebAssembly
Lecture 10 - Logic Programming
Lecture 11 - .....
Lecture .. - .... Summary ....
7
Structure of this course
- Recap
- Lecture
- Student Discussions
- Introduction to Exercises
- Exercises
8
Material
Learning Campus:
learning-campus.th-rosenheim.de/course/view.php?id=2993
Github: Sources, Slides (Go Present Tool)
https://github.com/s-macke/concepts-of-programming-languages
9
Semester Work
- See Learning Campus for details
Examples:
- Compare Go Object Oriented Programming with:
Ada,
Smalltalk,
Pascal,
Ruby,
C++,
Swift,
Eiffel,
Objective C,
Modula,
Lua,
TypeScript,
Fortran,
Kotlin
- Compare Go Functional Programming with:
Elixir,
Haskell,
Clojure,
F#,
Javascript
- Compare Go Concurrency with:
C via OpenMP,
C++,
Fortran,
Erlang,
Python,
Scala,
D,
Occam,
CUDA
- Compare Go Systems Programming with:
C / C++,
Rust,
Ada,
D,
Swift
- Compare Go Distributed Programming with:
NodeJs / JavaScript,
Java / Quarkus,
Python,
Kotlin
- Compare Go with:
Typescript,
Ruby,
Python,
Kotlin,
Elm,
Elixir,
Crystal,
C#
10
Books
Donovan, Kernigham: The Go Programming Language
Sebesta: Concepts of Programming Languages
Watt: Programming Language Design Concepts
11
Thank you
Sebastian Macke
Rosenheim Technical University
Use the left and right arrow keys or click the left and right
edges of the page to navigate between slides.
(Press 'H' or navigate to hide this message.)