Das Programmieren
Programmieren heißt, mit einem Text genau zu sagen, was man will. Man zeigt beim Programmieren nicht mit dem Finger auf das, was man will, sondern beschreibt es mit einer Folge von Schriftzeichen.
Beispielsweise könnte jemand eine Datei von einer fernen Quelle abrufen und danach kopieren wollen. Beide Schritte könnten eine Stunde dauern. Würde dies durch direkte Bedienung eines Computers erledigt werden, müßte nach einer Stunde ein Bediener anwesend sein, um den Kopiervorgang zu starten. Wird hingegen ein Programm dafür geschrieben, so kann dies automatisch den Kopiervorgang starten, nachdem das Abrufen abgeschlossen wurde, so daß kein Bediener mehr anwesend sein muß.
Im allgemeinen enthalten Programme nicht einfach nur Anweisungen, der hintereinander abgearbeitet werden, sondern mehr oder weniger abstrakte Regeln dafür, was das Programm tun soll und wie es dies tun soll. Beispielweise könnte das Abrufen einer Datei durch ein Programm scheitern, und das Programm könnte eine Regel dafür enthalten, wie es sich in diesem Fall verhalten soll.
Diese Artikelsammlung behandelt ausgewählte Grundlagen und Themen des Programmierens, welche nicht direkt mit einer bestimmten Programmiersprache verbunden sind. Die Artikelsammlung ist weniger zum Lesen von vorne nach hinten gedacht, sondern mehr dazu, bei Interesse einzelne Artikel herauszugreifen.
Kann jeder programmieren lernen?
Wir nehmen einmal an, daß mit „jeder“ jemand gemeint ist, der schon lesen und schreiben kann und über ausreichend viel Zeit zum Lernen verfügt.
Die meisten Menschen können das Lesen und Schreiben trivialer (also sehr einfacher) Programme erlernen. Um eine Programmiersprache darüber hinausgehend richtig gut beherrschen zu können, ist es aber oft nötig, viel Zeit zum Lernen zu investieren und eine gewisse Begabung mitzubringen. Und nur wenige Programmierer erreichen das Niveau, welches erforderlich ist, um auf vordere Plätze auf Programmierwettbewerben, wie dem ICFP Contest, zu gelangen.
Das Erreichen höherer Niveaus in der Kunst des Programmierens, etwa um als Programmierer arbeiten oder eigene Ideen umsetzen zu können, ist also leider nicht jedem möglich.
Manche Sprecher machen es sich leicht, indem sie proklamieren: „Jeder Mensch kann programmieren lernen!“ – das klingt gut und und schmeichelt dem Hörer (der Sprecher will sich beliebt machen), aber es ist falsch und kann sogar Menschen dazu verleiten, Zeit mit der Beschäftigung mit einer Sache zu vergeuden, für die sie gar nicht geeignet sind. Im Grunde ist es sogar menschenfeindlich, da solche Sprecher alle, die nicht programmieren lernen können, – im Umkehrschluß – nicht als Menschen ansehen.
Besonderheiten einiger Programmiersprachen
In diesem Abschnitt finden sich Texte, die sich auch an Leser richten, die noch keine Programmiersprache erlernt haben.
- >723888 Besonderheiten einiger Programmiersprachen
- >723691 Einzelne Programmiersprachen (Vergleichsmatrix)
Allgemeines zum Programmieren
- >721677 Was ist eine Programmiersprache?
Stilregeln
- >721530 Numerierung sollte bei 0 beginnen, nicht bei 1
Gültigkeitsbereiche sollten möglichst klein sein, weil dadurch die Wahrscheinlichkeit von Namenskollisionen abnimmt (Wie wahrscheinlich ist es, daß es zwei „Paul“ in einer Schulklasse gibt? Wie wahrscheinlich ist es, daß es zwei „Paul“ in der Bundesrepublik gibt?)
Algorithmen
Zufallszahlen
Wie können Zufallszahlen durch eine Berechnung mit festgelegten Werten erzeugt werden? Es ist möglich, daß eine berechenbare Folge von Werten ein so kompliziertes Bildungsmuster hat, daß die nächste Zahl als nicht vorhersehbar, und damit als „zufällig“, erscheint, obwohl sie tatsächlich vorherberechnet ist. Beispielsweise könnte die Folge „4 1 6 2 7 4 0 5 2 6 “ als zufällig erscheinen, tatsächlich handelt es sich um das abgerundete Drittel der Uhrzeit (Stunde), die man abliest, wenn man nach jeder Ablesung vierzehn Stunden wartet.
- Die iterierte logistische Abbildung
x = 0.7
for i in range(100):
x = 4*x*(1-x)
print( x )
Paradigmen
Objektorientierte Programmierung
Zu Programmiersprachen
Hier werden einzelne Aspekte von Programmiersprachen behandelt.
Literale
- >721344 Übungen zu Literalen
Aufrufe von Unterprogrammen
Ein Unterprogramm ist ein Program, das sich aus einem Program heraus starten läßt. Das Programm, welches den Start veranlaßt nennen wir in diesem Zusammenhang das Hauptprogramm. Ein Unterprogramm wird oft synchron gestartet, indem die Ausführung des Hauptprogramms beim Start des Unterprogramms suspeniert wird. Falls der Ablauf des Unterprogramms endet, wird das Hauptprogramm dann wieder fortgesetzt. Oft besteht auch noch die Möglichkeit, beim Start des Unterprogramms Informationen an das Unterprogramm zu übergeben oder beim Beenden des Unterprogramms Informationen aus dem Unterprogramm zu erhalten.
Festlegungen von Unterprogrammen
Durch eine Deklaration eines Unterprogramms wird ein neues Unterprogramm erstellt und mit einem Namen versehen.
- >724535 Vorteile von Festlegungen von Unterprogrammen
Schleifen
>720345 Iterationen, Schleifen, *Schleife
>721248 jf — Verantwortung und Schleifen
- >720899 Aufgaben zu Schleifen
Modulo
- >720902 Weitere Übungsaufgaben
Software-Fehler
Mariner In einer Planung fand sich »ʀ̅̇« für den Mittelwert der Ableitung einer Größe »ʀ«. Beim handschriftlichen Übertragen in die Spezifikation wurde der Strich vergessen und nur »ʀ̇« geschrieben.
Lernmöglichkeiten
- >724345 Bootcamps
Quellen
- >720304 Programmieren-Quellen [sweref]
- >724188 Windows -Vorkenntnisse in Programmierkursen
The Elements of Programming Style, by Brian W. Kernighan and P. J. Plauger, is the fundamental reference about programming style.
Sonstiges
- >721677 Begriff "Programmiersprache"
- >721868 imperative Programmiersprachen
- 20:39 time for formatting Chandler Carruth - 'Alright' Care and Feeding of C++ (snowflake) Going Native 2013 devblogs.microsoft.com/cppblog/going-native-2013-day-2/
- »I've found that some of the best [Software ]developers
of all are English majors. They'll often graduate with
no programming experience at all, and certainly without
a clue about the difference between DRAM and EPROM.
But they can write. That's the art of conveying
information concisely and clearly. Software development
and writing are both the art of knowing what you're going
to do, and then lucidly expressing your ideas.« - www.ganssle.com/tem/tem142.htm via praisecurseandrecurse.blogspot.com/2007/03/english-majors-as-programmers.html
major ˈmeɪdʒɚ (sd)
- „Die Pädagogen sollen den Schülern nicht Wissen vermitteln, sondern sie dabei anleiten, sich selbständig Wissen anzueignen.“
Andreas Schleicher , Leiter der Bildungsabteilung der OECD