Katalog
concept#Architektur#Softwareentwicklung#Plattform#Sicherheit

Programmiersprache

Ein abstraktes System zur Formulierung von Anweisungen für Computer, das Syntax, Semantik und Abstraktionen bereitstellt.

Eine Programmiersprache ist ein formales System zur Beschreibung von Algorithmen und Datenstrukturen, das Entwicklern ermöglicht, Anweisungen für Computer präzise zu formulieren.
Etabliert
Mittel

Klassifikation

  • Mittel
  • Technisch
  • Technisch
  • Fortgeschritten

Technischer Kontext

CI/CD-Pipeline (Jenkins, GitHub Actions)Paket- und AbhängigkeitsmanagerMonitoring- und Observability-Tools

Prinzipien & Ziele

Verständlichkeit vor cleverer AbkürzungWahl nach Anwendungsdomäne und BetriebsanforderungenBerücksichtigung von Tooling, Ökosystem und Wartbarkeit
Umsetzung
Domäne, Team

Use Cases & Szenarien

Kompromisse

  • Falsche Wahl erhöht Wartungsaufwand und Kosten
  • Unzureichendes Tooling führt zu langsamerer Entwicklung
  • Performance-Engpässe durch ungeeignete Laufzeitmodelle
  • Entscheidung anhand konkreter Messungen und Prototypen treffen
  • Tooling und Tests vor der breiten Einführung validieren
  • Kenntnis der Ökosystem-Governance und Lizenzen prüfen

I/O & Ressourcen

  • Funktionale und nicht-funktionale Anforderungen
  • Teamfähigkeiten und Lernkapazität
  • Betriebsumgebung und Zielplattform
  • Ausgewählte Sprache und Begründung
  • Toolchain- und Bibliotheksliste
  • Proof-of-Concept oder Migrationplan

Beschreibung

Eine Programmiersprache ist ein formales System zur Beschreibung von Algorithmen und Datenstrukturen, das Entwicklern ermöglicht, Anweisungen für Computer präzise zu formulieren. Sie definiert Syntax, Semantik und Abstraktionen und prägt Performance, Wartbarkeit sowie Tooling-Anforderungen in Softwareprojekten. Die Wahl einer Sprache beeinflusst Architekturentscheidungen, Entwicklungskosten und Teamfähigkeiten.

  • Ermöglicht ausdrückliche Modellierung von Problemen
  • Beeinflusst Laufzeitverhalten und Ressourcennutzung
  • Bestimmt verfügbares Ökosystem und Toolunterstützung

  • Keine universelle Sprache für alle Anforderungen
  • Legacy-Abhängigkeiten können Migration erschweren
  • Sprachwahl kann Talentverfügbarkeit beeinflussen

  • Time-to-Market

    Zeitspanne bis zur Produktivsetzung einer Funktion, beeinflusst durch Sprache und Tooling.

  • Laufzeit-Latenz

    Messung der Antwortzeiten kritischer Pfade unter realer Last.

  • Defektdichte

    Anzahl Fehler pro Codezeile oder Modul, beeinflusst von Typensystem und Testbarkeit.

Web-API in Go

Go wurde gewählt wegen einfacher Konkurrenzmodelle und schneller Kompilationszeiten, geeignet für skalierbare Microservices.

Datenanalyse mit Python

Python bietet umfangreiche Bibliotheken für Statistik und ML sowie schnelle Prototypenentwicklung.

Echtzeitsteuerung in C

C erlaubt feinkörnige Steuerung von Ressourcen und ist in eingebetteten Systemen weit verbreitet.

1

Anforderungen sammeln und bewerten

2

Kandidaten identifizieren und Prototypen bauen

3

Toolchain, Tests und CI einrichten

4

Schulung und Wissenstransfer organisieren

5

Schrittweise Migration oder Rollout durchführen

⚠️ Technische Schulden & Engpässe

  • Veraltete Abhängigkeiten durch lange Laufzeit einer Sprache
  • Wachsende Spaghetticode-Basen bei unklarem Typkonzept
  • Teilweise Migrationen, die Schnittstellenkomplexität erhöhen
Interoperabilität mit bestehenden SystemenLaufzeit-PerformanceBuild- und Tooling-Komplexität
  • Einsatz einer dynamischen Sprache für hart deterministische Echtzeitanforderungen
  • Verzicht auf Tests wegen vertrauter Sprache
  • Auswahl einer Sprache ohne Berücksichtigung vorhandener Bibliotheken
  • Unterschätzung des benötigten Schulungsaufwands
  • Übersehen von Lizenz- oder Compliance-Einschränkungen
  • Fehlende Langzeitpflege des Toolchains
Grundlagen der Sprache (Syntax, Paradigmen)Toolingkenntnisse (Debugger, Build-Tools)Fähigkeit zur Performance-Analyse
LeistungsanforderungenWartbarkeit und LesbarkeitVerfügbare Bibliotheken und Ökosystem
  • Plattform- und Hardware-Beschränkungen
  • Regulatorische Anforderungen (z. B. Safety/CERT)
  • Vorhandene Legacy-Abhängigkeiten