Eigenschaften und Unterscheidung von Programmiersprachen – IT-Berufe-Podcast #182

IT-Berufe-Podcast - Ein Podcast von Stefan Macke - Montags

Um Eigenschaften und Unterscheidungsmerkmale von Programmiersprachen geht es in der einhundertzweiundachzigsten Episode des IT-Berufe-Podcasts. Inhalt Was ist eine Programmiersprache? * Programmiersprache: „Eine Programmiersprache ist eine formale Sprache zur Formulierung von Datenstrukturen und Algorithmen, d.h. von Rechenvorschriften, die von einem Computer ausgeführt werden können.“ [Herv. d. Verf.] * Bausteine von Algorithmen: Sequenz, Verzweigung (z.B. if, switch, aber auch Pattern Matching), Wiederholung (GOTO, Schleifen, Rekursion) * Turing-complete: „[…] die Eigenschaft einer Programmiersprache oder eines anderen logischen Systems, sämtliche Funktionen berechnen zu können, die eine universelle Turingmaschine berechnen kann.“ Demnach sind keine Programmiersprachen: HTML/XML (Auszeichnungssprache), CSS (Stylesheet-Sprache), SQL (Datenbankabfragesprache). Sprache vs. Plattform vs. Ökosystem Programmiersprachen bringen meistens „eingebaute“ („native“) Funktionen mit, die direkt in der Syntax der Sprache formuliert werden können: * Ein-/Ausgabe-Befehle, um Daten verarbeiten zu können * Deklaration von Variablen zum Speichern von Informationen * mathematische Funktionen wie Addition, Multiplikation usw. * Steueranweisungen für Verzweigung und Wiederholung * Möglichkeiten zur Programmunterteilung (z.B. Funktionen, Subprogramme) * Einbinden von (externen) Bibliotheken zur Wiederverwendung Viele Programmiersprachen bringen außerdem noch eine umfangreiche Bibliothek an vorgefertigten Implementierungen (z.B. in Form von Klassen in objektorientierten Sprachen) mit. Diese Bibliothek ist bei der Einarbeitung in eine neue Sprache meist schwieriger/langwieriger zu lernen als die Syntax. Oftmals teilen sich mehrere Programmiersprachen die Bibliotheken einer gemeinsamen Plattform, z.B. der JVM bei Java und Kotlin bzw. .NET bei C# und Visual Basic. Darüber hinaus existiert meist auch noch ein ganzes Ökosystem rund um die Sprache/Plattform: * Build-Tools, z.B. Maven, Gradle * Dependency-Management, z.B. NPM, RubyGems * Test-Frameworks, z.B. JUnit * weitere Frameworks und Libraries, z.B. Spring,