Ich beende gerade meinen MSc in Informatik. Ich interessiere mich für Programmiersprachen, insbesondere für Typensysteme. Ich habe mich für Forschung auf diesem Gebiet interessiert und werde nächstes Semester eine Doktorarbeit zu diesem Thema beginnen.
Hier ist nun die eigentliche Frage: Wie kann ich Menschen ohne Vorkenntnisse in der Informatik oder verwandten Bereichen erklären, was ich tun möchte?
Der Titel kommt von der Tatsache, dass ich meinen Eltern, Freunden und so weiter nicht einmal erklären kann, was ich tue. Ja, ich kann sagen, "der springende Punkt ist, Softwareentwicklern zu helfen, bessere Software zu schreiben" , aber ich denke nicht, dass dies wirklich nützlich ist: Sie sind sich der "Programmierung" nicht bewusst, sie haben keine Ahnung, was dies bedeutet. Es fühlt sich so an, als wäre ich ein Automechaniker für jemanden aus dem Mittelalter: Er weiß einfach nicht, wovon ich spreche, geschweige denn, wie er es verbessern kann.
Hat jemand gute Analogien zur realen Welt? Aufschlussreiche Beispiele, die "a-ha" -Momente verursachen? Sollte ich über 60-Jährigen ohne Informatik- oder akademische Erfahrung tatsächlich einen kurzen und einfachen Codeausschnitt zeigen? Wenn ja, welche Sprache soll ich verwenden? Hat hier jemand ähnliche Probleme?
Antworten:
Wenn Sie ein paar Minuten Zeit haben, wissen die meisten Leute, wie man zwei dreistellige Zahlen auf Papier addiert und multipliziert. Bitten Sie sie , das zu tun, (oder zugeben , dass sie könnten, wenn sie mussten) und sie bitten, zu bestätigen , dass sie diese Aufgabe tun methodisch: Wenn diese Zahl größer als 9 ist, dann fügen Sie einen Übertrag, und so weiter. Diese Beschreibung, die sie gerade gaben, was zu tun ist, ist ein Beispiel eines Algorithmus .
Auf diese Weise bringe ich den Menschen das Wort Algorithmus bei, und meiner Erfahrung nach war dies das beste Beispiel. Dann können Sie erklären, dass man sich vorstellen kann, dass es komplexere Aufgaben gibt, die Computer ausführen müssen, und dass daher eine eindeutige Sprache erforderlich ist, um einem Computer diese Algorithmen zur Verfügung zu stellen. Die Zahl der Programmiersprachen hat also zugenommen, weil die Menschen ihre Gedanken unterschiedlich ausdrücken und Sie nach Wegen suchen, diese Sprachen so zu gestalten, dass es schwieriger ist, Fehler zu machen.
Dies ist eine sehr erkennbare Situation. Die meisten Menschen haben keine Vorstellung davon, dass die von ihnen verwendeten Computer Programme ausführen oder dass diese Programme von Menschen geschriebener Quellcode sind oder dass ein Computer Quellcode "lesen" kann, oder dass die Berechnung, die sie mit Arithmetik in Verbindung bringen, die einzige Sache ist, die Computer sind tun (und Datenbewegung und Vernetzung, vielleicht).
Meine Forschung beschäftigt sich mit Quantencomputern. Wenn Leute mich fragen, was ich tue, versuche ich das nicht zu erklären. Stattdessen versuche ich zu erklären, dass es Quantenphysik gibt (sie haben normalerweise von Schrödingers Katze gehört und Dinge, die sich an zwei Orten gleichzeitig befinden) und dass aufgrund dieser seltsamen Physik eine schnellere Berechnung möglich sein könnte.
Mein Ziel ist es, der Person das Gefühl zu geben, ein wenig besser informiert zu sein als sie. Ich freue mich auf eine Welt, von der sie nicht wusste, dass sie existiert, mit der Sie sie aber jetzt vertraut gemacht haben. Ich finde, dass das viel wertvoller ist, als meine speziellen Forschungsfragen zu erklären.
quelle
Ich würde so etwas versuchen:
Ich verwende eine Erklärung in einem ähnlichen Stil für mein Fachgebiet (domänenspezifische Sprachen) und kann berichten, dass sie mir oft geholfen hat, das Problem zu überwinden: "Oh, du bist ein Informatiker, ich könnte das niemals tun, lass mich gehen und aufhören zu reden Ihnen "ausstellen. Der Schlüssel scheint zu sein, die ersten paar Sätze herauszuholen, bis man ein Beispiel findet, auf das sich die andere Person beziehen kann, wie in diesem Fall Word-Dokumente. Bonuspunkte für Sonderfälle zum Beispiel an die andere Person, wie Excel für Buchhalter oder Powerpoint für Chefs oder Computerspiele für Gamer oder Webbrowser oder was auch immer.
Beachten Sie, dass Sie nicht auf dieser oberflächlichen Ebene bleiben müssen. Wenn Sie (und die andere Person!) Dies möchten, können Sie sich von dort aus mit den Details befassen, was Sie genau tun. Zum Beispiel: "In meinem aktuellen Projekt versuche ich mathematisch zu beweisen, dass das, was ich im letzten Jahr erfunden habe, tatsächlich funktioniert. Das bedeutet, dass ich sehr genau definieren muss, was ein Programm wirklich bedeutet und was meine Erfindung für ein Programm bedeutet, und dann Ich kann zeigen, dass die Vorhersage tatsächlich richtig ist ".
quelle
Die meisten Leute verstehen Rezepte. Wenn Sie die Anweisungen befolgen, erhalten Sie eine anständige Mahlzeit. Manchmal ist es jedoch schwierig, den Anweisungen zu folgen. Wenn Sie zum Beispiel Perogien herstellen, finden Sie Anweisungen wie diese, die Großmutters polnischen Perogien Wort für Wort entnommen sind :
Huch. Lassen Sie uns Omas freundlichen Rat an uns überprüfen. Lass sie einzeln fallen ... also haben sie alle unterschiedliche Zeiten, in denen sie im Topf sind. Verstanden. Sie sind fertig, wenn sie nach oben schweben . Wie viele sind sie? Fange ich jeden, wenn er auftaucht? Warte ich, bis 80% nach oben schweben und bekomme sie dann alle? Das ist verrückt ungenau. Nicht zu lange kochen, sonst werden sie feucht! Wie messe ich, wenn sie im Begriff sind, durchnässt zu werden, damit sie nicht zu lang werden? Wenn fünf gleichzeitig oben auftauchen, habe ich dann Zeit, sie alle zu holen?
Und vertrau mir, ich habe in meinen Tagen viele Perogien ruiniert. Dies ist ein ernstes Problem, auf das jeder Perogie-Koch zuvor gestoßen ist. Aber trotz dieser Probleme, die sich auch bei der grundlegendsten Analyse ergeben, können die Menschen immer noch Perogien mit genau derselben Methode erstellen. Aber gibt es etwas, das wir tun können, um mehr Perogienstapel zum Erfolg zu führen und weniger Perogienstapel zum Scheitern zu bringen?
Wäre es nicht großartig, wenn sich jemand darauf spezialisiert hätte, Rezepte zuverlässiger zu machen? Jemand, der sagte: "Wir können die Perogien leiten, damit sie auftauchen und aus dem Wasser kommen!" oder "wir können der Perogie einen speziellen Farbstoff hinzufügen, der natürlich sicher zu essen ist und ihnen verschiedene Farbtöne verleiht, und wir wissen, dass die dunkelsten zuerst herauskommen, da sie am stärksten vom Durchnässen bedroht sind". Wir wollen einen Experten, der dieses Rezept aufgreift und mögliche Probleme damit behebt. Das Leben von Perogie-Köchen auf der ganzen Welt wird einfacher, und es werden weniger feuchte Nudel-Kartoffel-Klumpen an einen Hund verfüttert.
Auch Programmierer folgen ständig Rezepten. Aber manchmal passen die verwendeten Geräte, Anweisungen und Interpretationen nicht zusammen, um das üppige Essen zuzubereiten, das sie wollten. Zum Glück gibt es Menschen, die sich mit ihrer Karriere dafür einsetzen, das Leben eines Programmierers produktiver zu gestalten. In Ihrem Fall haben Sie sich auf eines der Tools spezialisiert, die ein Programmierer verwendet, die Sprache, um zu versuchen, sie zu verbessern.
quelle
Hier ist, wie ich es meiner Mutter erklären möchte:
Programmiersprachen werden von Menschen verwendet, um einem Computer Anweisungen zu geben. Alles, was ein Computer tut, geschieht durch einen Computercode, der von einem Programmierer in einer Programmiersprache geschrieben wurde.
Wenn wir zum Beispiel möchten, dass der TV-Kanal sich ändert, wenn wir eine Taste drücken, müssten wir dazu einen Code in einer Programmiersprache schreiben. Das Gleiche gilt für alles, was mit einem Laptop, einem Smartphone und allem anderen passiert, dessen Betrieb einen Computer umfasst.
Es könnte den Anschein haben, dass es eine einzige Programmiersprache gibt, mit der Programmierer alle Programme schreiben können. Das ist aber einfach nicht der Fall. Für alle Arten von Anwendungen gibt es unterschiedliche Programmiersprachen.
Einige werden zum Erstellen von Websites verwendet, andere zum Erstellen von Laptop-Anwendungen (z. B. Microsoft Word).
Einer der Gründe, warum es viele verschiedene Programmiersprachen gibt, ist, dass einige für bestimmte Aufgaben besser geeignet sind als andere. Ein weiterer Grund ist, dass einige Sprachen für die Verwendung mit verschiedenen Computern entwickelt wurden. Sie können also nicht immer den für ein Smartphone geschriebenen Code auf einem Laptop ausführen. Und während einige Programmierer in vielen Sprachen programmieren können und viele fähig sind oder schnell neue Sprachen lernen, wird jeder Programmierer einige Sprachen besser kennen als andere, und manche überhaupt nicht.
Daher sind Programmiersprachen eine der Schlüsseltechnologien, mit denen Computer funktionieren. Gut gestaltete Programmiersprachen können die Produktivität von Programmierern enorm steigern. Sie können auch die Sicherheit verbessern und Programmierfehler, Fehler und Defekte reduzieren.
Im Grunde studiere ich Folgendes: Wie wirken sich verschiedene Teile von Programmiersprachen auf die Produktivität von Programmierern aus? Welche Teile einer bestimmten Sprache verbessern das Schreiben von Code für eine Website? Warum sind einige Sprachen beliebter als andere?
Obwohl es den Anschein hat, dass diese Fragen esoterisch und weit entfernt vom Alltagsleben eines Durchschnittsmenschen sind, ist das Gegenteil der Fall. Das Erlernen von Programmiersprachen ist für jedes Produkt oder jede Dienstleistung, die einen Computer verwendet, von entscheidender Bedeutung. Und das bedeutet heute so ziemlich alles;)
quelle
Ihre beste Wette könnte darin bestehen, Analogien mit menschlichen Sprachen zu bilden.
Programmiersprachen werden verwendet, um Anweisungen für Computer bereitzustellen. Menschliche Sprachen werden verwendet, um anderen Menschen Ideen mitzuteilen und unsere eigenen Gedanken zu formen. Die Sapir-Whorf-Hypothese besagt, dass die Sprache, die Sie verwenden, Ihr Denken beeinflusst. (Inwieweit die Sapir-Whorf-Hypothese zutrifft, wird diskutiert, aber wir können akzeptieren, dass sie bei der Erörterung von Programmiersprachen zutrifft. Andernfalls können Sie Ihren Doktortitel genauso gut aufgeben. 😜)
Es gibt eine Vielzahl von menschlichen Sprachen, einige mit Merkmalen, die wir für exotisch halten. Zum Beispiel:
Gibt es eine objektiv beste Sprache? Die Antwort hängt möglicherweise davon ab, was Sie tun möchten.
Am Ende wird alles auf einem Computer in Maschinensprache übersetzt. Die Auswahl der richtigen Sprache für den Auftrag kann jedoch die Produktivität, Zuverlässigkeit, Leistung und Flexibilität Ihrer Software erheblich beeinträchtigen. Wir wählen Zwangsjackensprachen wie Ada oder Java für "ernsthafte" Projekte und Ruby oder Perl für maximale Peitschenhärte . Zum Abfragen einer Datenbank ist SQL die übliche Sprache. Es wäre idiotisch, einen eigenen C-Code zu schreiben.
Basierend auf diesen Analogien können Sie sicher einige Stunden lang Ideen wie funktionale Programmierung, Typensicherheit, Typinferenz usw. erläutern.
quelle
Computersprachen beziehen sich in etwa auf menschliche Sprachen. Sie verwenden Standard- / gemeinsame / geteilte Wörter. Bedenken Sie, dass es Tausende von menschlichen Sprachen gibt, von denen einige nicht mehr existieren, andere aktiv sind und deren Wortschatz und Gebrauch sich im Laufe der Zeit ständig weiterentwickelt. Manche Leute erschaffen neue nützliche Wörter, um Konzepte auszudrücken, die vorher nicht ausgesprochen werden konnten. Ein weiterer überlappender Aspekt der Computersprache und der menschlichen Sprache ist die Grammatik . Einige Sprachen, zB Englisch, haben eine sehr komplexe Grammatik. Betrachten Sie die verschiedenen Zeiten und die komplexen Regeln , die sie regeln. andere Sprachen haben nicht die gleichen Zeiten . Eine weitere Korrelation besteht mit WortartenKategorien wie Substantiv, Verb, Adverb, Adjektiv usw. funktionieren ähnlich wie Typen in Computersprachen. Stellen Sie sich vor, Sie erstellen neue Sprachen mit unterschiedlichen Teilen der Sprachkategorien, die bisher nicht berücksichtigt wurden, oder mit neuen Kombinationen von Teilen der Sprache, die aus unterschiedlichen Sprachen stammen, usw .; Beachten Sie also, dass die Linguistik eine Verbindung zur Informatik hat, z. B. insbes. in der Chomskian Sprachtheorie.
Software und Hardware beziehen sich häufig auf Motoren und Maschinen und werden sogar nach diesen benannt. Es gibt eine alte Software-Analogie, die besagt, dass der Versuch, ein komplexes 24/7-Produktionssystem zu modifizieren, dem Ändern der Triebwerke eines Flugzeugs während des Flugs gleicht . Beachten Sie auch, dass Düsentriebwerke sehr komplex sind und massive genaue Spezifikationen austauschbarer Teile erfordernund hier gibt es eine Analogie zu Computersprachen, die Hardware steuern. Stellen Sie sich die ganze Komplexität von Dokumenten vor, die genau beschreiben, wie Düsentriebwerke gebaut werden: alle Teile, wie sie aufgebaut sind, wie sie zusammenpassen, wie sie zusammengebaut sind usw.; Sie werden von Ingenieuren unter Verwendung eines präzisen Formats / einer präzisen Struktur / konventioneller Regeln erstellt / kompiliert. Software ist etwas analog dazu.
Bei Maschinen kann jeder ohne wissenschaftliche oder mathematische Ausbildung oder sogar ein Kind das Grundkonzept und viele Aspekte einer Turing-Maschine verstehen ! eine wundersame Schöpfung. man vermutet, dass Turing von Schreibmaschinen und / oder Fernschreibmaschinen inspiriert wurde. man könnte die Zustandstabelle beschreiben und ihnen eine Beispielzustandstabelle zeigen, die die Multiplikation berechnet, und jemand könnte sich eine YouTube-Animation einer Turing-Maschine ansehen, die eine Grundberechnung wie eine Multiplikation berechnet. Sagen Sie ihnen, dass die Statustabelle eine Sprache berechnen oder buchstäblich entscheiden kann und dass die Eingaben buchstäblich Wörter genannt werden . Tatsächlich akzeptieren Turing-Maschinen Wörter in Sprachenusw. Sagen Sie ihnen dann, dass es zwei Statustabellen gibt, die beide die Multiplikation berechnen, von denen jedoch eine viel schneller oder effizienter ist als die andere, und dass Ihre Recherche die Suche nach besseren Statustabellenkonzepten umfasst. Um herauszufinden, wie Statustabellen effektiv erstellt werden können, müssen Programmiersprachen verwendet werden , die den Inhalt großer Statustabellen zusammenfassen. Ein Compiler konvertiert in einer Programmiersprache geschriebenen Code in eine große Statustabelle.
Sortieralgorithmen sind eine hervorragende Metapher für den Einstieg in die Informatik. Man kann sich für jede Sortierung die verschiedenen Anweisungslisten, auch Algorithmus genannt, ansehen . Man kann lernen, was eine Blasensorte im Vergleich zu einer Einsetzsorte ist, man kann ein Kartenspiel verwenden. Konzentrieren Sie sich jetzt auf die verschiedenen Befehlssätze und denken Sie, dass sie in einer sehr präzisen Sprache geschrieben sein müssen, so präzise wie mathematische Aussagen, die eine strenge Syntax usw. haben und grundlegende Gemeinsamkeiten / Strukturen aufweisen: Bedingte Logik, Schleifen, Variablen usw , und erklären Sie, dass sich die Kunst dieser genauen Spezifikation um Computersprachen dreht, und dass einige verschiedene Sprachen dieselben Algorithmen liefern können, dass es jedoch einige subtile stilistische Variationen in diesen Sprachen gibt, die eingehend untersucht werden, usw
quelle
Sie sagen einfach: "Ich helfe den Leuten, die Computern das Arbeiten beibringen."
Die Idee ist, dass Programmierer Computern beibringen, Dinge mit Programmen zu tun, und dass Sie ihnen helfen. Ich denke, es wird funktionieren, vorausgesetzt, sie kennen sich bereits mit Computern aus.
quelle
Wenn Sie keine Vergleiche anstellen möchten, obwohl ich der Meinung bin, dass der von Lieuwe vorgestellte "Algorithmus" sehr gut ist, um die Idee zu vermitteln, können Sie sagen, dass Sie Missverständnisse zwischen Menschen und Computern reduzieren möchten. Schließlich haben Sie es mit Sprachen zu tun, und das ist für Menschen vermutlich etwas sehr Grundlegendes. Warum also nicht so tun, als wäre der Computer nur ein anderer Geist, mit dem Sie sprechen möchten?
Der Mensch hat Computer geschaffen, damit wir wissen, wie der Geist des Computers funktioniert. Aber der Computer "weiß" normalerweise nicht, wie unser Verstand funktioniert. (Oder was unsere eigentliche Absicht war, als wir einen komplizierten und fein ausgearbeiteten Fehler geschrieben haben, der viele Zyklen lang glücklich in den Trümmern unseres Codes lebt;)) Daher liegt es an uns, die Sprache, die wir für die Kommunikation mit ihnen verwenden, zu verfeinern und Möglichkeiten für Missverständnisse reduzieren. Und genau das machst du. Analogien wie Rechtschreibprüfung oder Grammatik sind in diesem Zusammenhang natürlich sehr willkommen.
quelle
Hier sind zwei Analogien, die Sie vielleicht nützlich finden:
Meine Arbeit ist ein bisschen wie die Erforschung neuer Ansätze für die Notenschrift. ( Beispiel ) Obwohl die vorherrschenden Notationssysteme recht ausgeklügelt sind, ist es hilfreich, Alternativen zu untersuchen, die Zeit / Aufwand / Fehler für den Komponisten oder den Interpreten verringern oder es ermöglichen, dass sich schwerfällige oder nicht mögliche Dinge im vorherrschenden System ausdrücken fördern auch nur verschiedene denkweisen und führen so zu neuartigen kompositionen. (Dies macht es leicht verständlich, dass eine der Herausforderungen darin besteht, die Leute davon zu überzeugen, das neue Zeug anzunehmen.)
Ich helfe dabei, bessere Werkzeuge für Menschen in meiner Branche zu entwickeln. So wie die Menschen in der Fertigungsindustrie von Innovationen wie Akku-Bohrern, Laserschneidern und 3D-Druckern (die es vor 60 Jahren noch nicht gab) unterstützt werden, so werden die Menschen in der Software-Entwicklungsbranche von leistungsstärkeren, präziseren, robusteren oder leistungsstärkeren Technologien unterstützt benutzerfreundlichere Programmiersprachen und deren Merkmale.
quelle
Wahrscheinlich hast du einen Grund, Sprachen zu lernen - benutze diesen Grund. Z.B:
Wenn das etwas ist, das ihre Aufmerksamkeit erregt, können Sie gerne etwas tiefer gehen, aber die inferentielle Distanz nicht vergessen - die meisten Menschen haben große Probleme damit, etwas zu erklären, das zu weit von den vorhandenen Erfahrungen und Kenntnissen des Schülers entfernt ist.
Sprachen sind weit unten auf der Computerleiter. Die Leute, die Sie versuchen zu erklären, wissen wahrscheinlich nicht, was ein Algorithmus ist, geschweige denn , dass es verschiedene Arten der Darstellung dieses Algorithmus gibt, die mehr oder weniger nützlich sind. Sie können alles erklären, wenn Sie vorsichtig genug sind, aber seien Sie bereit, viele Ebenen zu durchlaufen, wenn Sie etwas so "Tiefes" wie "Programmiersprache RnD" erklären möchten. Es hilft, wenn die Leute, die Sie erklären, bereits gut mit Mathematik umgehen, aber das ist ungefähr so selten wie Computerkenntnisse :)
Gehen Sie Analogien leicht. Sie klingen, als ob sie helfen, aber meiner Erfahrung nach tragen sie normalerweise zur Verwirrung bei, auch wenn Sie glauben, dass sie eine große Hilfe sind. Programmiersprachen sind wie eine Art Anwalt sprechen ... aber das ist nicht sehr nützlich für Menschen , die nicht bereits sowohl die Programmierung und lawyering verstehen, wirklich. Wenn Sie wirklich zusätzliche Hilfe benötigen, funktionieren Beispiele gut genug - aber Sie müssen sie der Person anpassen, der Sie dies erklären (und was genau Sie recherchieren).
quelle
Ich finde, die besten Analogien sind auf die Person zugeschnitten, mit der Sie sprechen. Sind sie Maler? Besprechen Sie, was Sie tun, ist das Äquivalent zur Erforschung der Theorie, wie man bessere Pinsel herstellt. Nur dieses Feld ist nur 60 Jahre alt anstatt 600! Reiter? Vergleichen Sie es mit der Entwicklung von aufgabenspezifischen Hufeisen im Laufe der Jahre.
Wenn sie es wirklich besser verstehen wollen, erkläre ich es am liebsten, indem ich über das Ausfüllen von Steuerformularen und die Anweisungen in jeder Zeile spreche. Ich stelle fest, dass die meisten über 20-Jährigen Erfahrung mit IRS Form 1040 haben und diese Felder, die Sie ausfüllen, recht gut mit der Zuweisung von Variablen übereinstimmen. Dann weise ich darauf hin, dass Software das Äquivalent von ungefähr 2 Milliarden pro Minute macht (eine erfundene Zahl, aber es bringt den Punkt rüber). Wenn Sie Computersprachen lernen, ist es für die Leute leicht zu verstehen, warum bessere Anweisungen tatsächlich von Bedeutung sind =)
Wenn sie immer noch interessiert zu sein scheinen, ist dies der Punkt, an dem ich versuche, die Flusskontrolle zu erklären. Normalerweise werden sie, wenn ich mit der Erörterung der Flusskontrolle für Form 1040 fertig bin, ganz aufgeregt und fragen, ob ich noch irgendwelche meiner Ideen an die Regierung verkauft habe!
Ich spreche oft von eingebetteten Systemen, daher füge ich manchmal die Form 1040-Analogie mit einem Roboter zusammen, der ein Brot (oder 500) kocht. Normalerweise funktioniert es gut, aber aus irgendeinem Grund ist es für manche Menschen eine schwierige Aufgabe, von IRS-Steuerformularen zu einem Produkt zu wechseln, das einen guten Geschmack im Mund hinterlässt.
quelle
Deine Eltern haben eine Art Computer. Wahrscheinlich nicht einer, aber viele. Sie verfügen möglicherweise über einen Desktop-Computer, einen Laptop, ein Telefon oder ein iPad. Wenn nicht, dann haben sie eine Waschmaschine oder eine Videoaufzeichnung oder einen DVD-Player oder etwas mit einem Computer im Inneren.
Wenn nicht, sagst du: "Entschuldigung, aber du hast es geschafft, ein Leben ohne Computer zu führen. Also kann ich dir nicht erklären, was ich tue. Aber die Welt verändert sich. Du musst mir nur das vertrauen Ich weiß was ich tue. "
Wenn sie irgendeinen Computer haben, sagen Sie: "Dies ist ein Computer, und er funktioniert nicht nur durch Zauberei. Er funktioniert, weil ein kluger Mann oder eine kluge Frau ein Programm geschrieben hat, das Ihrem Computer die Arbeitsweise erklärt Diese klugen Männer und Frauen sind wirklich hart und ich helfe ihnen dabei, die Arbeit zu erleichtern. "
quelle
Vor einiger Zeit habe ich beschlossen, dass eine gute Analogie für das Programmieren, die für Leute mit wenig oder keiner Computererfahrung leicht zu verstehen ist, das Schreiben von Strickrezepten ist .
Ein gutes Strickrezept enthält mehrere Größen in derselben Anweisungsliste, die Ihnen Schleifen und if-Anweisungen geben. Es ist für diejenigen, die nicht stricken, nicht lesbar, und wenn es Fehler enthält, kommt es zu falsch ausgerichteten Mustern oder einem zusätzlichen Ärmel. Dann liegt es an Ihnen als Rezepturschreiber, anhand der falschen Pullover herauszufinden, wo das Rezept falsch war, und es zu beheben.
Sie können dann das Beispiel von "Ich sehe, wie sich Rezepte für Stricken, Häkeln, Nägelbinden und ähnliches unterscheiden" und X lernen (wo Sie eine Analogie für das finden müssen, was Sie tatsächlich tun ).
quelle
Es ist Magie!
Wenn Leute ohne technischen Hintergrund fragen, was es bedeutet, Software / Programme / Software-Engineering zu schreiben, sage ich ihnen einfach, was es wirklich ist: Magie. Zauberkünstler zaubern Zauber in einer esoterischen Sprache, um bestimmte Aufgaben auszuführen. Sie schwenken ihre Zauberstäbe und etwas Magisches passiert. Ich beschwöre bestimmte Zaubersprüche in einer esoterischen Sprache, ich wackle mit der Maus und etwas Magisches passiert (soweit es sie betrifft).
Wenn sie nicht überzeugt sind, habe ich sie gebeten, ihr Smartphone einzuschalten und mir zu sagen, wie etwas wirklich funktioniert. Sie sagen normalerweise: "Ich weiß nicht, es tut es einfach. Ich drücke Knöpfe und es passiert etwas." Dann sage ich ihnen: "Ja, genau, aber ich weiß, was wirklich los ist, und es ist im Grunde dasselbe wie Harry Potter, der seinen Zauberstab schwenkt und sagt: 'Hokuspokus'." In jeder Hinsicht, dem Laien, ich Ich denke, das ist eine absolut legitime Erklärung.
Fast jeder weiß, wer Harry Potter ist, was er tut und was ihn besonders macht (zumindest, dass er ein Magier ist und mächtige Dinge mit Magie tun kann). Sie können einfach erklären, dass Magier manchmal ihre Zauber in einer neuen Sprache schreiben müssen, um ihre Magie noch mächtiger zu machen, was nicht wirklich so weit von der Wahrheit entfernt ist. Sie können ihnen nur sagen, dass Sie den Prozess des Erstellens leistungsfähigerer Zauberbücher studieren, um einer Generation noch leistungsfähigerer Zauberer zu helfen, die noch mehr Magie auf ihren bevorzugten Endgeräten erzeugen können. Jeder weiß das zu schätzen.
Epic Fail
Wenn dies fehlschlägt, greife ich auf das Rezeptbeispiel zurück, da die Uneinheitlichkeit der Lösungen den Menschen zumindest lehrt, dass es mehr als eine Möglichkeit gibt, eine Katze zu häuten (oder einen Kuchen zu backen), und dies ist ein Teil dessen, was das Programmieren so macht knifflig. Es hilft auch, die Person in die Lage zu versetzen, die CPU zu sein, und manchmal Anweisungen zu befolgen, die sie möglicherweise nicht verstehen (die meisten Leute kennen wahrscheinlich nicht den Unterschied zwischen Backpulver und Backpulver und wissen nicht, warum ein Rezept das eine oder das andere hat).
Sackgassen
Ich mag es nicht, Mathe als Beispiel zu verwenden, denn um Mathe zu machen, muss man verstehen, wofür die Schritte sind. Man kann nicht viel rechnen, indem man Anweisungen blind befolgt (na ja, das kann man, aber so lernen Menschen es normalerweise nicht). Ich mag das Sortieren nicht als Beispiel, weil es für den Laien zu technisch ist, um es zu würdigen. Wenn ich mit jemandem spreche, der das Sortierbeispiel zu schätzen weiß, hat er wahrscheinlich bereits eine Vorstellung davon, worum es beim Programmieren geht, und hat es wahrscheinlich selbst ausprobiert.
quelle