Programmieren
Als ein Teilbereich der Softwareentwicklung umfasst das Programmieren vor allem die Umsetzung eines Softwareentwurfes in Quellcode. Generell versteht man unter Programmieren die Umsetzung von Algorithmen in lauffähige Computer-Programme.
Ein Algorithmus ist eine Handlungsvorschrift zur Lösung eines Problems.
Programmierparadigmen
Unter einem Programmierparadigma versteht man die grundlegende Herangehensweise, Probleme mit Hilfe einer Programmiersprache zu lösen. Aber auch wenn Programmiersprachen oft anhand ihrer grundlegenden Merkmale genau einem Programmierparadigma zugeordnet werden, unterstützen viele Programmiersprachen mehrere Programmierparadigmen. Generell werden die verschiedenen Programmierparadigmen oft in zwei große Kategorien eingeteilt: bei imperativen Programmierparadigmen steht die Frage Wie soll das Ergebnis erreicht werden? im Vordergrund, bei deklarativen Programmierparadigmen die Frage Was soll das Ergebnis sein?. Imperative Programmierparadigmen legen also Schritt für Schritt fest, wie das Ergebnis erreicht werden soll, deklarative Programmierparadigmen beschreiben das Ergebnis selbst.
| Programmierparadigmen | Kategorie | Fokus | Beispielsprachen |
|---|---|---|---|
| Prozedurale Programmierung | Imperative Programmierung | Routinen werden in Prozeduren gekapselt. Es gibt eine klare Trennung zwischen Daten und Routinen. Routinen stellen dabei wiederverwendbaren Code dar, der aus verzweigten und sich wiederholenden Folgen von Anweisungen besteht, die den Programmablauf steuern | Pascal, C |
| Objektorientierte Programmierung | Imperative Programmierung | Objekte verbinden sowohl Daten als auch Routinen. Zentrale Aspekte sind Datenkapselung, Abstraktion, Vererbung und Polymorphie | C++, Java |
| Funktionale Programmierung | Deklarative Programmierung | Berechnungen werden als die Auswertung mathematischer Funktionen betrachtet. Seiteneffekte (veränderliche Daten und Zustände) werden vermieden | Haskell, Lisp |
| Logische Programmierung | Deklarative Programmierung | Fakten und Regeln werden zur logischen Deduktion verwendet. Es wird festgelegt, was bekannt ist, um daraus abzuleiten, was daraus folgt | Prolog |
Programmausführung
Programme auf einem Computer können auf unterschiedliche Arten ausgeführt werden: Compilersprachen übersetzen den Quellcode in eine Datei, die vom jeweiligen Betriebssystem ausgeführt werden kann, Interpretersprachen übersetzen den Quellcode direkt in den Arbeitsspeicher und führen das Programm sofort aus und Just-In-Time Compilersprachen (JIT) übersetzen den Quellcode mit Hilfe eines Compilers zunächst in den sogenannten Bytecode und übersetzen diesen bei der Ausführung in den Arbeitsspeicher. Compilersprachen wie z.B. C++ sind dabei deutlich performanter und ermöglichen eine sicherere Entwicklung, Interpretersprachen wie z.B. PHP sind dagegen plattformunabhängig und Just-In-Time Compliersprachen vereinen die Vorteile von beiden.
In Java wird der Interpreter als Java Virtual Machine bezeichnet.
- Compilersprachen
- Interpretersprachen
- Just-In-Time Compilersprachen
Programmiersprachen
Maschinen sind im Vergleich zu menschlichen Gehirnen sehr primitive Gebilde. Die Diskrepanz zwischen der menschlichen Denkweise und der Arbeitsweise von Maschinen bezeichnet mal als Semantische Lücke. Programmiersprachen ermöglichen es, Problemstellungen der realen Welt abstrahiert und maschinengerecht abzubilden und damit die Semantische Lücke zu verringern. Je höher die Abstraktion einer Programmiersprache dabei ist, desto mehr kann die Semantische Lücke verringert werden: Maschinenorientierte Programmiersprachen (wie z.B. Assembler) abstrahieren kaum und sind daher für den Menschen schwerer verständlich, problemorientierte Programmiersprachen (wie z.B. Java) abstrahieren stark und sind daher für den Menschen leichter verständlich.
Die Programmiersprachen Java, Python und JavaScript gehören zu den am weitesten verbreiteten bzw. beliebtesten Programmiersprachen.
| TIOBE | RedMonk | PYPL |
|---|---|---|
| Python | JavaScript | Python |
| C | Python | Java |
| C++ | Java | JavaScript |
| Java | PHP | C/C++ |
| C# | C++ | C# |
Tiobe Programming Community Index Januar 2024, RedMonk Programming Language Rankings Januar 2023, PopularitY of Programming Language Januar 2024