Wie kann ich meinen Eltern erklären, dass ich Programmiersprachen lerne?


64

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?


Kommentare sind nicht für längere Diskussionen gedacht. Diese Unterhaltung wurde in den Chat verschoben .
DW

3
Diese Frage hat eine Ablehnung und eine oder mehrere Close-Flags, wenn ich das Panel richtig verstehe. Bitte hinterlasse einen Kommentar, damit ich ihn verbessern kann. Obwohl ich schon eine Weile hier lauere, nehme ich zum ersten Mal aktiv an der Website teil und bin mit einigen Richtlinien möglicherweise nicht vertraut.
Effeffe


1
Ich kann einfach nicht verstehen, warum diese Frage aktueller ist als eine Frage, die sich auf ein bestimmtes Problem bezieht, was nützlicher ist. Diese Frage ist lächerlich und wurde lächerlich hochgestuft. Unglaublich!
Nr.

2
@nbro Ich verstehe nicht, was an der Frage lächerlich ist, und ich bin mir nicht sicher, wie Sie entschieden haben, dass eine bestimmte Frage "nützlicher" ist als eine andere.
Effeffe

Antworten:


59

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.


27
Das Sortieren eines Kartenspiels ist auch eine einfache Möglichkeit, den Begriff der Algorithmen einzuführen.
Morwenn

2
@Morwenn Das stimmt! Es gibt viele Algorithmen, die wir im täglichen Leben ausführen! Der Umgang mit Karten ist algorithmisch, der Verkehr hat viele algorithmische Aspekte, obwohl er ereignisbasiert und nicht zwingend ist. Das Kochen ist algorithmisch, wenn Sie es mit dem Autopiloten tun. Der Grund, warum ich das Hinzufügen mag, ist, dass jeder in der Grundschule den gleichen Algorithmus gelernt hat, während die Strategien der Menschen zum Sortieren einer Liste von Zahlen variieren und sie nicht methodisch sind: Sie versuchen, Muster von nahen, benachbarten Zahlen zu finden, und nicht jeder kennt die Bestellen Sie ein Kartenspiel soll sowieso haben (ist es Herzen vor Pik?)
Lieuwe Vinkhuijzen

Persönlich neige ich, wenn ich nach Quantencomputern gefragt werde, dazu, die Physik vollständig zu meiden, aber versuche, eine allgemeine Vorstellung zu vermitteln (dass ein Quantencomputer nicht besser oder schneller funktioniert, sondern einfach Berechnungen auf eine Weise ausführen kann , die für normale Computer nicht in Frage kommt ). Wenn sie sich fragen, wie dies der Fall ist, sind sie in der Regel mit einer vereinfachten Ansicht zufrieden, im Grunde der SIMD-Verarbeitung (mit linearen Ressourcen, die ausreichen, um auf die exponentielle Größe der parallelen Eingabedaten zuzugreifen), was die meisten Algorithmen sind.
The Vee

Sie können mehr als nur Karten; Kürzlich habe ich festgestellt, dass ich mit einer Quicksort-Variante einen Stapel von Papieren sortieren musste, ohne darüber nachzudenken, da es zu viele für eine einfache Sortierung gab.
JAB

@JAB Das ist unglaublich! Aber Sie kennen Quicksort wahrscheinlich schon im Hinterkopf. Der Vorteil der Erklärung von Addition gegenüber Sortierung besteht darin, dass jeder den gleichen Additionsalgorithmus hat, aber kein Laie einen methodischen Sortierungsalgorithmus hat. Andererseits könnte das ein Vorteil sein! Sie können verschiedene Algorithmen erklären. Dies ist der Weg, den ich gehe, wenn ich mit jemandem außerhalb von cs spreche, der mathematisch denkend ist, und der das Konzept verschiedener Algorithmen für dieselbe Aufgabe mit unterschiedlichen Zeitgrenzen vermittelt und warum Untergrenzen schwierig sind.
Lieuwe Vinkhuijzen

18

Ich würde so etwas versuchen:

Programmierer können Computern mitteilen, was zu tun ist. Dazu benötigen sie eine Programmiersprache. Das ist eine Sprache, die sowohl von Computern als auch von Menschen verstanden wird. Wenn Sie beispielsweise ein Word-Dokument bearbeiten und eine Taste drücken, zeigt der Computer den Buchstaben an, den Sie gedrückt haben. Das liegt daran, dass ein Programmierer ein Programm geschrieben hat, das sagt: Wenn der Benutzer "A" drückt, fügen Sie ein "A" in das Dokument ein. Wenn der Benutzer "B" drückt, fügen Sie ein "B" in das Dokument ein und so weiter. Der Computer folgt einfach den Regeln in dem Programm, das der Programmierer geschrieben hat.

Jetzt schreiben die Programmierer manchmal versehentlich eine dumme Regel. Der Computer wird trotzdem versuchen, der dummen Regel zu folgen, aber wenn Sie eine schlechte Regel befolgen, wird etwas Schlimmes passieren. Wenn Sie beispielsweise ein Word-Dokument bearbeiten, friert plötzlich alles ein und der Computer reagiert nicht mehr. Das kann daran liegen, dass einige Programmierer bei Microsoft ein nicht perfektes Programm geschrieben haben.

In meiner Arbeit erfinde ich Methoden, um Programme auf solche und andere Fehler zu überprüfen, indem ich andere Programme und etwas Mathematik verwende. Die Grundidee besteht darin, herauszufinden, wie man vorhersagt, was passieren wird, wenn ein Programm ausgeführt wird, ohne es tatsächlich auszuführen.

Natürlich arbeite ich, da es sich um Forschung handelt, nur an einem kleinen Aspekt davon, nicht an allem auf einmal, aber das ist das Gesamtbild dessen, was wir erreichen wollen.

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 ".


12

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 :

Perogies kochen: Einen großen Topf mit leicht gesalzenem Wasser zum Kochen bringen. Lassen Sie die Perogien einzeln fallen. Sie sind fertig, wenn sie nach oben schweben. Nicht zu lange kochen, sonst werden sie feucht! Mit einem geschlitzten Löffel entfernen.

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.


7

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;)


7

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:

  • In einigen Sprachen müssen Sie bei jeder Aussage Beweise vorlegen : ob die Aussage auf Ihrer eigenen Erfahrung, Ihrer eigenen Schlussfolgerung, Ihrem Hörensagen, Ihrer Spekulation usw. beruht.
  • Einige Sprachen bilden durch Agglutination riesige Wörter. Jedes Wort kann stark modifiziert werden, um viele Informationen über seine grammatikalische Rolle zu kodieren. Andere Sprachen verändern die Wörter kaum und verlassen sich auf die Wortreihenfolge oder Partikel, um diese Informationen auszudrücken.
  • Sprachen unterscheiden sich in der Wortschatzgröße . Einige Sprachen haben Wörter, die nur mit einer Umschreibung übersetzt werden können (zB 엄친아 ). Einige Sprachen haben brillante Ausdrücke, die so gut sind, dass andere Sprachen sie ausleihen (z. B. Schadenfreude).
  • Einige Sprachen haben kein Konzept von links / rechts. Sie müssen alles in Bezug auf Nord / Süd / Ost / West ausdrücken.
  • Einige Sprachen haben keine Nummern. Sprachen variieren auch in der Anzahl der gebräuchlichen Farbnamen .
  • Sprachen unterscheiden sich in ihrer Phonotaktik. Zum Beispiel kann die Silbe Rate variiert, mit japanischer Pflege viele einfache Silben zu verwenden, während Chinesen sind langsamer, aber verschlüsseln Informationen in Tönen.
  • Sprachen variieren in der Informationsdichte . Wenn Sie sich eine Chinesisch-Englisch-Französisch-Übersetzung ansehen, werden Sie feststellen, dass die chinesische Version auf Papier sehr kompakt ist und das Französische den meisten Platz einnimmt.
  • Einige Sprachen wie Englisch sind promiskuitiv: Jeder kann sich ein Wort aus einer anderen Sprache ausleihen und es in Englisch umwandeln. Andere Sprachen wie Französisch haben einen Standardisierungskörper, der sich dem Wandel widersetzt. Isländisch zum Beispiel ist von Natur aus äußerst konservativ.

Gibt es eine objektiv beste Sprache? Die Antwort hängt möglicherweise davon ab, was Sie tun möchten.

  • Wenn Sie versuchen, heimlich über das Radio zu kommunizieren, ist Navajo eine gute Wahl. (Erwähnen Sie Ihre bevorzugte "Nur-Schreiben" -Sprache.)
  • Wenn Sie versuchen, eine Warnung an zukünftige Generationen zu schreiben, und die Inschrift in ein paar tausend Jahren verständlich sein muss, sollten Sie möglicherweise Chinesisch verwenden (aufgrund der Anzahl der Sprecher und der Stabilität des Schriftsystems) oder vielleicht Englisch (das sich im letzten Jahrtausend dramatisch verändert hat, aber weithin bekannt ist). (C und JavaScript werden wahrscheinlich "für immer" leben.)
  • Chinesen, die viele Homophone haben, eignen sich hervorragend zum Punning . (Perl-Poesie)
  • Vielleicht ist Neutralität wichtig, in welchem ​​Fall Sie Esperanto wählen könnten. (Java ist so konzipiert, dass es portabel ist; C ist weniger.)
  • Vielleicht müssen Sie einen Gedanken mit absoluter Präzision ausdrücken, und keine natürliche Sprache wird ausreichen. Sie müssen nach Ithkuil zurückgreifen !
  • Es kann sehr schwierig sein, zwischen einigen Sprachpaaren (z. B. Arabisch-Englisch ) zu übersetzen, da große kulturelle Unterschiede und kulturelle Konnotationen mit bestimmten Wörtern bestehen. In ähnlicher Weise sind einige Ideen in bestimmten Computersprachen nicht leicht auszudrücken, da das Konzept einfach nicht existiert (z. B. Schwanzrekursivität).

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.


1
Eine Schwierigkeit dabei ist, dass manche Menschen nie wirklich über ihre eigene natürliche Sprache nachgedacht haben. Daher können die Sprachbeispiele für manche Menschen fast so schwer zu verstehen sein wie der Begriff einer Programmiersprache. Wenn Sie wissen, dass die Person (mindestens) zweisprachig ist, sind die Aussichten wahrscheinlich besser ....
TextGeek

@TextGeek Auch in Englisch gibt es Dialekte. Die Leute streiten sich über Sprachregeln wie Doppelnegative und das Beenden von Sätzen mit einer Präposition. Die Sprache entwickelt sich ständig, manchmal auf kontroverse Weise. Die Popularität der SMS hat zu neuen Abkürzungen geführt. Im amerikanischen Englisch können Sie jedes Nomen in einen Skandal verwandeln, indem Sie das Suffix "-gate" hinzufügen. Ich glaube nicht, dass man zweisprachig sein muss, um Sprachinnovation und -vielfalt zu schätzen.
200_erfolg

3
  • 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


1
Warum diesen hier runterstimmen? Ich denke, es gibt viele Einsichten. Man ist sich vielleicht nicht in allen Punkten einig, aber hier gibt es viele Möglichkeiten. +1
effeffe

3

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.


"Ich denke, es wird funktionieren, vorausgesetzt, sie kennen sich bereits ein wenig mit Computern aus." Das ist der springende Punkt: Wenn Sie meine Antwort sorgfältig lesen, werden Sie feststellen, dass das Hauptproblem darin besteht, zu erklären, was ich denen tue, die keine Ahnung davon haben, wie Computer tatsächlich funktionieren .
Effeffe

@effeffe: aber sie sind sich bewusst, dass computer existieren? Und sie haben wahrscheinlich eine Vorstellung davon, dass es Dinge gibt, die als "Programme", "Anwendungen" oder "Apps" bezeichnet werden, auch wenn sie selbst noch nie wissentlich einen Computer benutzt haben. Der Einfachheit halber wird beim Programmieren (unter anderem) eine App erstellt, indem Anweisungen notiert werden, denen der Computer folgen kann. Natürlich würde es eine Menge Zeit und Anweisungen erfordern, bis sie alle Details der Programmierung verstanden haben oder wissen, wie sie verbessert werden können, aber wenn sie wissen, dass Computer und Programme mit der Zeit besser werden, wissen sie zumindest "ein bisschen" über Computer Bescheid.
Steve Jessop

3

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.


3

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.


2

Wahrscheinlich hast du einen Grund, Sprachen zu lernen - benutze diesen Grund. Z.B:

Ich versuche, Computer und ihre Anwendungen billiger, benutzerfreundlicher und sicherer zu machen.

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).

Sie wissen, wie Sie nicht durch Null teilen können? Ich versuche sicherzustellen, dass Computer nicht einmal versuchen , sich durch Null zu teilen, damit sie nicht abstürzen, wenn jemand einen Fehler macht.


▲ für einen schrittweisen und sanften Ansatz.
PJTraill

1

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.


1

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. "


-1

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 ).


Der Fragesteller lernt nicht Programmieren. Sie studieren das Design von Programmiersprachen.
David Richerby

@DavidRicherby Aus diesem Grund habe ich vorgeschlagen, das Beispiel von OP zu verwenden und zu untersuchen, wie Rezepte für verschiedene Arten von Handarbeiten aussehen. Anscheinend sind diese auch sehr unterschiedlich.
Thorbjørn Ravn Andersen

-1

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.


1
Ich verstehe nicht, was das mit der Frage zu tun hat. Insbesondere stellt sich die Frage, wie man Laien die Typentheorie erklärt, und die Typentheorie ist Mathematik.
David Richerby

Vielleicht traurig, vielleicht nicht, aber das Programmieren im Allgemeinen ist für 99% der Weltbevölkerung ein geschlossenes Buch. Ich habe über die Jahre ziemlich viel Zeit damit verbracht, Nicht-Programmierer dazu zu bringen, das Programmieren zu verstehen, ohne Erfolg. Das Erklären der Feinheiten und Feinheiten verschiedener Typsysteme ist vergleichbar mit dem Erklären der subatomaren Teilchenphysik für dieselben Leute - ihre Augen werden glasig und sie werden wahrscheinlich höflich sein, aber sie werden es nicht verstehen. Und das ist in Ordnung - sie MÜSSEN es nicht verstehen, und höchstwahrscheinlich kümmern sie sich nicht darum, dass sie es nicht verstehen. Es ist genug, dass WIR es tun. :-)
Bob Jarvis
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.