Skip to content

Theoretische Grundlagen

Was ist eine Programmiersprache?

Eine Programmiersprache ist ein formales System, mit dem sich Algorithmen und Datenstrukturen so beschreiben lassen, dass sie von einem Computer ausgeführt werden können. Sie definiert Syntax (Regeln für die Schreibweise) und Semantik (Bedeutung der Anweisungen).

Sprachparadigmen

  • Imperativ: Programme bestehen aus Anweisungen, die den Zustand des Systems verändern (z.B. C, Pascal).
  • Prozedural: Erweiterung des imperativen Paradigmas mit Prozeduren/Funktionen (z.B. C, BASIC).
  • Objektorientiert: Organisation um Objekte, die Daten und Methoden kapseln (z.B. Java, Python, Ruby, C++).
  • Funktional: Fokus auf Funktionen, Unveränderlichkeit und Ausdruckstransformationen (z.B. Haskell, Lisp, Erlang, Scala).
  • Logisch/Deklarativ: Beschreibung von Beziehungen und Regeln, nicht von Abläufen (z.B. Prolog, SQL).

Typisierung

  • Statisch vs. dynamisch: Wird der Typ zur Compilezeit (z.B. C, Haskell) oder Laufzeit (z.B. Python, Ruby) geprüft?
  • Stark vs. schwach: Wie strikt werden Typen voneinander getrennt? (z.B. Haskell stark, JavaScript schwach)

Ausführungsmodelle

  • Kompiliert: Quellcode wird vor der Ausführung in Maschinencode übersetzt (z.B. C, Rust, Go, Odin).
  • Interpretiert: Quellcode wird zur Laufzeit Zeile für Zeile ausgeführt (z.B. Python, Ruby, Lua).
  • Bytecode/VM: Zwischencode wird von einer virtuellen Maschine ausgeführt (z.B. Java, .NET, WebAssembly).

Anwendungsgebiete

  • Systemnah: C, Rust, Odin
  • Webentwicklung: JavaScript, PHP, Ruby, Elixir
  • Mobile Entwicklung: Kotlin, Swift
  • Datenanalyse/Wissenschaft: Python, R, Julia
  • Spieleentwicklung: C++, C#, Lua

Vergleich ausgewählter Sprachen

SpracheParadigmaTypisierungAusführungBesonderheit
Odinimperativ, prozeduralstatisch, starkkompiliertModerne Alternative zu C
Luaprozeduraldynamisch, schwachinterpretiertSehr leichtgewichtig
Rubyobjektorientiertdynamisch, starkinterpretiertSehr ausdrucksstark
WebAssemblydeklarativ, stackbasiert-Bytecode/VMPlattformübergreifend, schnell

Grundbegriffe

  • Paradigma: Grundlegendes Denkmuster der Programmierung
  • Typisierung: Art und Weise, wie Datentypen behandelt werden
  • Kompilierung: Übersetzung des Quellcodes in Maschinencode
  • Interpretation: Ausführung des Quellcodes zur Laufzeit
  • VM (Virtuelle Maschine): Abstraktionsschicht zur Ausführung von Bytecode