Ein Freund von mir hat mich neulich gefragt, ob ich mir beim Programmieren nur Zahlenlisten anschaue oder wie es funktioniert. Ich habe versucht zu erklären, dass es im Allgemeinen eher mathematischen Formeln ähnelt, in die das eine oder andere englische Wort geworfen wird, und dass es im Allgemeinen größtenteils lesbar ist. Aber das ist eine sehr vage Erklärung, und sie erklärt einem Nicht-Programmierer nicht viel.
Aber ich musste darüber nachdenken, was ein gutes Beispiel wäre. Nicht weil ich ihr Programmieren oder so beibringen möchte, sondern nur um ihr eine Vorstellung davon zu geben, wie Programmcode "aussieht".
Und das brachte mich dazu, mich zu fragen, was eigentlich als gutes Beispiel funktionieren würde. Und das ist überraschend schwierig.
Mein erster Gedanke war offensichtlich ein einfaches "Hello World" -Programm. Aber es zeigt wirklich nichts Nützliches. Es zeigt nicht wirklich, wie wir Funktionen oder Variablen verwenden oder Flussstrukturen steuern ifoder whileein Programm erstellen, das tatsächlich etwas tut . Es gibt keine Logik. Das Programm reagiert auf nichts.
Vielleicht wäre so etwas wie die Berechnung von Primzahlen ein besseres Beispiel. Aber andererseits könnte das zu theoretisch und unpraktisch sein ... (Was nützt das? Was hat es mit dem Schreiben "echter" Programme zu tun?) Und wieder gibt es keine signifikante Kontrollflusslogik. Es ist nur eine gerade Abfolge von Mathematik.
Und welche Sprache sollte auch verwendet werden?
Im Idealfall denke ich nicht, dass es eine sehr "saubere" Sprache sein muss. Vielmehr sollte es wahrscheinlich die Struktur klar machen. Wenn dies der Fall ist, kann ein gewisses Maß an Rauschen und Unordnung in Ordnung sein. Vielleicht wäre so etwas wie C ++ aus diesem Grund tatsächlich ein besseres Beispiel als Python. Die expliziten geschweiften Klammern und Typspezifizierer sind offensichtliche "Haken", um zu erklären, wie das Programm aufgebaut ist, oder um hervorzuheben, dass es nicht nur einfache Aussagen sind, die fast als Englisch ausgelesen werden können.
Aber mit C ++ geraten wir auch in eine geradezu seltsame Syntax. Warum wird std::cout << xx ausgedruckt? Warum nicht eine "normale" Funktionsaufrufsyntax? Und printfist nicht viel besser, mit seiner Zeichenfolge im arkanen Format und mangelnder Erweiterbarkeit (möchte ich das Programm durch die Verwendung char*von Zeichenfolgen komplizieren ? Oder verwende std::stringund begnüge ich mich damit, das scheinbar Unnötige aufzurufen s.c_str(), um eine Zeichenfolge zu erhalten, mit der gedruckt werden kann printf?
Vielleicht wäre eine höhere Sprache doch besser. Aber welcher? Und warum?
Ich weiß, dass es hier viele ähnliche Fragen gibt, welche Sprache / welches Beispielprogramm zum Unterrichten von Programmierung verwendet werden soll. Aber ich denke, die Anforderungen hier sind unterschiedlich. Wenn wir Programmieren unterrichten, wollen wir vor allem Einfachheit. Wir wollen alles vermeiden, was noch nicht gelehrt wurde. Wir möchten sicherstellen, dass der Schüler alles auf dem Bildschirm verstehen kann .
Ich bin nicht an Einfachheit an sich interessiert. Sondern indem man einem "Außenseiter" eine Vorstellung davon gibt, "wie ein Programm aussieht". Und Programme sind nicht einfach. Aber sie zeigen im Allgemeinen eine bestimmte Struktur und Methode für den Wahnsinn. Welche Sprache / welches Programm würde das am besten hervorheben?
Bearbeiten
Vielen Dank für alle bisherigen Vorschläge. Einige von Ihnen hatten einen etwas anderen Blickwinkel als beabsichtigt.
Vielleicht ist ein Beispiel angebracht. Ich kann kein Flugzeug fliegen, aber ich habe ein grundlegendes Verständnis dafür, wie das Cockpit aussieht und was ein Pilot beim Fliegen "tut".
Und ich bin kein ausgebildeter Zimmermann, aber ich kenne eine Säge oder einen Hammer, wenn ich einen sehe.
Wenn Sie jedoch beispielsweise etwas mit der Programmierung in Filmen zu tun haben, sind dies normalerweise nur mit Müll gefüllte Bildschirme (wie im grünen Text in der Matrix). Es sieht nicht so aus, als ob ein normaler Mensch dies tatsächlich tun kann . Darin ist nichts erkennbar. Jemand, der kein Programmierer ist, denkt einfach, es sei schwarze Magie.
Ich möchte ihr nicht das Fliegen beibringen oder Software programmieren. Aber ich möchte ihr einen grundlegenden Bezugsrahmen geben. Nur eine Idee von "ah, damit arbeiten Sie also. Es sind also nicht nur zufällige Symbole und Zahlen auf dem Bildschirm". Selbst eine einfache ifAussage zu zeigen, wäre eine Offenbarung im Vergleich zu den zufälligen Symbolen und Zahlen im Matrix-Stil.
Einige von Ihnen haben vorgeschlagen, einen Algorithmus zu erklären oder Pseudocode zu verwenden, aber das möchte ich vermeiden. Ich möchte etwas, das einfach zeigt, wie der eigentliche Code aussieht, genauso wie Sie kein Tischler sein müssen, um eine Säge zu betrachten und eine grundlegende Vorstellung davon zu bekommen, was sie ist und wie sie funktioniert.
Als ich ein Kind war, haben wir einmal Urlaub in Italien gemacht. Auf dem Weg nach unten ließ mich der Pilot ins Cockpit des Flugzeugs. Natürlich habe ich nicht gelernt, wie man das Flugzeug fliegt. Aber ich habe einen Blick in die Welt des Piloten geworfen. Ich habe eine Vorstellung davon, wie sie das Flugzeug zum Laufen bringen, was der Pilot tatsächlich tut.
Das ist wirklich alles was ich tun möchte. Meine Freundin hat kein Interesse daran, Programmieren zu lernen, und ich möchte sie nicht zwingen, den Quellcode zu verstehen. Aber sie war neugierig, mit welchen Werkzeugen oder Entitäten ich arbeite. Sind es Symbole im Matrix-Stil, die über den Bildschirm scrollen? Reine Mathematik? Englisch in Prosaform?
Alles, was mich vermitteln möchte, ist das sehr hohe Verständnis von "Wie sieht es aus, wenn ich arbeite".



