Wikipedia · einfach zusammengefasst · Stand
Programmierung
Beim Programmieren sind wesentliche Aspekte zur Softwarequalität zu berücksichtigen und durch die Gestaltung des Quellcodes umzusetzen. Siehe dazu als Beispiele …
Inhalt6 Abschnitte
Grundbegriff und Ablauf
Programmierung bezeichnet die Tätigkeit, Computerprogramme zu erstellen, und gehört zur Softwareentwicklung. Computerprogramme werden in einer Programmiersprache formuliert, also codiert. Programmierende übertragen dabei Anforderungen, zum Beispiel aus einem Pflichtenheft, in eine bestimmte Programmiersprache. Teilweise unterstützen Codegeneratoren diese Arbeit, indem sie aus Modellen, die im Entwurf entstanden sind, automatisch Teile des Programmcodes erzeugen.
Zum Programmieren im engeren Sinn gehört vor allem die Erstellung von Quellcode. In einem erweiterten Sinn umfasst Programmieren auch Tätigkeiten wie Entwicklertests und Programmdokumentation. Andere Aufgaben der Softwareentwicklung, etwa Projektmanagement, Anforderungsanalyse oder Datenmodellierung, lassen sich davon abgrenzen.
Je nach Softwaretyp und Einsatzumgebung, zum Beispiel Systemsoftware, Spielesoftware, Standardsoftware oder Grafiksoftware, werden unterschiedliche Verfahren, Programmiersprachen, Testverfahren und Werkzeuge eingesetzt. Programmierung kann je nach Vorgehensmodell in getrennten Phasen, parallel oder iterativ ablaufen. In der Praxis geschieht sie häufig in Teamarbeit, mit modernen Entwicklungsmethoden wie Agiler Softwareentwicklung und mit speziellen Programmierwerkzeugen.
Qualität von Programmen
Beim Programmieren müssen wichtige Aspekte der Softwarequalität im Quellcode umgesetzt werden. Dazu gehören unter anderem Programmierstil, Benutzerfreundlichkeit, Wiederverwendbarkeit beziehungsweise Modularität und Wartbarkeit. Ein großer Teil der Softwarequalität entsteht also direkt während der Programmierarbeit.
Die wichtigsten im Artikel genannten Qualitätskriterien sind Korrektheit, Robustheit, Wartbarkeit und Effizienz. Sie beschreiben, ob ein Programm die geforderten Aufgaben richtig erfüllt, mit Fehlern und ungewohnten Umgebungen umgehen kann, später gut geändert werden kann und sparsam mit Ressourcen umgeht.
Korrektheit und Fehlerarten
Ein Programm ist korrekt, wenn es die im Entwurf gemachten Vorgaben richtig umsetzt. Dazu muss es in der Regel fehlerfrei sein. Beim Programmieren treten vor allem zwei Arten von Fehlern auf: Syntaxfehler und semantische Fehler.
Syntaxfehler sind fehlerhaft formulierter Quellcode. Dabei werden Formulierungen oder Konstrukte verwendet, die in der jeweiligen Programmiersprache so nicht vorkommen, etwa durch Tippfehler oder Unkenntnis. Syntaxfehler können beim Übersetzen durch Compiler, Interpreter oder Parser erkannt werden und verhindern in der Regel die Programmausführung.
Semantische Fehler liegen vor, wenn sich das Programm nicht wie gewünscht verhält, obwohl es formal ausführbar sein kann. Ursache kann ein fehlerhafter Algorithmus oder eine falsche Umsetzung sein. Solche Fehler werden normalerweise nicht automatisch erkannt, sondern durch sorgfältiges Testen gefunden, zum Beispiel durch Unittests.
Der Übergang zwischen Syntaxfehlern und semantischen Fehlern ist fließend. Ein Tippfehler wie „>“ statt „<“ in einem Vergleich kann zu einem gültigen, ausführbaren Programm führen, dessen Ergebnis aber falsch ist. An anderer Stelle könnte derselbe Fehler ein Syntaxfehler sein.
Robustheit, Wartbarkeit und Effizienz
Robustheit bedeutet, dass ein Programm auch bei unvorhergesehenen Fehlern oder ungewöhnlichen Anwendungs- oder Hardwareumgebungen sinnvoll reagiert. Ein solcher Programmtext wird auch als portabel bezeichnet. Geübte Programmierer können mögliche Fehler und Laufzeitumgebungen besser einschätzen und den Quelltext entsprechend strukturieren. Zeitdruck stellt dabei auch erfahrene Programmierer vor hohe Anforderungen.
Wartbarkeit bedeutet, dass Software dauerhaft angepasst werden kann. Bugfixes, Anpassungen und neue Features sollen ohne großen Aufwand eingepflegt werden können. Dafür sollte Quelltext nicht zu kurz oder kryptisch sein, damit andere Entwickler ihn verstehen können. Hilfreich sind Namenskonventionen, selbsterklärende oder „sprechende“ Bezeichner für Variablen und andere Elemente, aussagefähige Kommentare sowie eine sinnvolle Aufteilung in verständliche Funktionen und Klassen.
Effizienz bezieht sich auf den sparsamen Umgang mit begrenzten Ressourcen wie Laufzeit, Speicherverbrauch und Bandbreite. Gute Programmierung kann unnötigen Ressourcenverbrauch reduzieren. Ein Beispiel ist der Umgang mit großen Datenmengen: Statt an mehreren Stellen jeweils den gesamten Datensatz zu kopieren, kann nur die Adresse übertragen werden, an der die Daten gespeichert sind.
Effiziente Nutzung vorhandener Funktionen
Nach Niklaus Wirth zeichnet sich gute Programmierung auch dadurch aus, dass die Funktionen der verwendeten Programmierumgebung möglichst effizient genutzt werden. Programmierende sollen für neue Aufgabenstellungen nicht immer wieder „das Rad neu erfinden“, wenn passende Funktionen bereits vorhanden sind, zum Beispiel in Programmbibliotheken.
Dafür ist ein guter Überblick über den grundsätzlichen Funktionsumfang und die Systematik der Programmierumgebung nötig. Diese kann sehr umfangreich sein und zehntausende Funktionen enthalten. Für eine konkrete Aufgabe kann dann in der Dokumentation schnell eine vorhandene Funktion gefunden, eingesetzt und bei Bedarf erweitert werden.
Geschichte und Arbeitsmittel
Charles Babbage beschrieb 1834 mit der Analytical Engine eine programmierbare Maschine, die jedoch nie gebaut wurde. Seine „Notations of calculations for the Analytical Engine“ umfassen 27 Programme und enthalten bereits indirekte Adressierung sowie bedingte Ausführungen, also IF-THEN-ELSE-Befehle. Diese Dokumente dürften als erste Programme und Programmiersprache bezeichnet werden.
Ada Lovelace übersetzte 1843 eine französische Beschreibung der Analytical Engine von Luigi Federico Menabrea ins Englische und ergänzte eigene Notizen. Diese enthielten einen tabellarischen Plan zur Berechnung der Bernoulli-Zahlen. 1941 realisierte Konrad Zuse mit dem Z3 die erste programmgesteuerte Rechenmaschine. Ab 1942 entwickelte er mit Plankalkül die erste höhere Programmiersprache. Grace Hopper schuf 1949 den ersten Compiler, der Quellcode in Maschinencode übersetzt.
Theoretisch genügen zum Programmieren ein einfacher Texteditor und ein Compiler oder Interpreter für die jeweilige Programmiersprache. Praktisch werden meist zusätzliche Werkzeuge eingesetzt: Editoren mit Syntax-Highlighting, Autovervollständigung und Refactoring, Integrierte Entwicklungsumgebungen (IDE), Debugger zur Fehlersuche, Programme für statische und dynamische Tests sowie Profiler zur Performanzanalyse. Arbeiten mehrere Entwickler gemeinsam an einer Software, werden meist Versionierungssysteme verwendet, die den Code und frühere Versionen auf einem zentralen Server speichern.
Lernvideos zu Programmierung
3:47
Objektorientierung in Java - Objektorientierte Programmierung in Java Teil 1
Informatik - simpleclub · 206.250 Aufrufe
4:52
Konstruktor - Objektorientierte Programmierung in Java 3
Informatik - simpleclub · 203.545 Aufrufe
16:44
Was ist Objektorientierte Programmierung?
Programmieren Starten · 163.874 Aufrufe
24:55
Einführung in die Funktionale Programmierung (einfach und praxisnah!)
Niklas Steenfatt · 136.709 Aufrufe