Programmiersprache
Ein abstraktes System zur Formulierung von Anweisungen für Computer, das Syntax, Semantik und Abstraktionen bereitstellt.
Klassifikation
- KomplexitätMittel
- AuswirkungTechnisch
- EntscheidungstypTechnisch
- OrganisationsreifeFortgeschritten
Technischer Kontext
Prinzipien & Ziele
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.
✔Vorteile
- Ermöglicht ausdrückliche Modellierung von Problemen
- Beeinflusst Laufzeitverhalten und Ressourcennutzung
- Bestimmt verfügbares Ökosystem und Toolunterstützung
✖Limitationen
- Keine universelle Sprache für alle Anforderungen
- Legacy-Abhängigkeiten können Migration erschweren
- Sprachwahl kann Talentverfügbarkeit beeinflussen
Trade-offs
Metriken
- 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.
Beispiele & Implementierungen
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.
Implementierungsschritte
Anforderungen sammeln und bewerten
Kandidaten identifizieren und Prototypen bauen
Toolchain, Tests und CI einrichten
Schulung und Wissenstransfer organisieren
Schrittweise Migration oder Rollout durchführen
⚠️ Technische Schulden & Engpässe
Tech Debt
- Veraltete Abhängigkeiten durch lange Laufzeit einer Sprache
- Wachsende Spaghetticode-Basen bei unklarem Typkonzept
- Teilweise Migrationen, die Schnittstellenkomplexität erhöhen
Bekannte Engpässe
Beispiele für Missbrauch
- Einsatz einer dynamischen Sprache für hart deterministische Echtzeitanforderungen
- Verzicht auf Tests wegen vertrauter Sprache
- Auswahl einer Sprache ohne Berücksichtigung vorhandener Bibliotheken
Typische Fallen
- Unterschätzung des benötigten Schulungsaufwands
- Übersehen von Lizenz- oder Compliance-Einschränkungen
- Fehlende Langzeitpflege des Toolchains
Erforderliche Fähigkeiten
Drivers (Architectural Drivers)
Constraints
- • Plattform- und Hardware-Beschränkungen
- • Regulatorische Anforderungen (z. B. Safety/CERT)
- • Vorhandene Legacy-Abhängigkeiten