Was ist eine gute Programmiermetapher? [geschlossen]

30

Ich beziehe mich darauf, dem Nicht-Programmierer zu erklären, was Programmierung ist. Ich habe vor der Erstellung dieser Frage nach ähnlichen Fragen gesucht, aber die wenigen, die ich gefunden habe, schienen der Frage auszuweichen, und ich würde gerne einige Metaphern oder Analogien sehen. Ich persönlich finde es einfacher, jemandem etwas Technisches mit Hilfe von Metaphern oder Analogien zu erklären.

Der Grund, warum ich daran interessiert bin, ist, dass viele Menschen täglich auf die Arbeit eines Programmierers stoßen, aber wenn Sie die durchschnittliche Person fragen, was ein Programmierer ist oder tut, wissen sie es nicht wirklich. Dies führt zu bestimmten Missverständnissen (zB "[...] aber ich dachte, Sie können gut mit Computern umgehen!")

Ich würde wirklich gerne die beste finden. Ich möchte jemandem leicht erklären können, worum es bei meiner Berufswahl geht. Natürlich zumindest die allgemeine Idee.

Ich persönlich habe keine solide Sprache, aber ich habe lange darüber nachgedacht und mich normalerweise für die „Sprach“ -Metapher interessiert, bei der wir zufällig eine Sprache kennen, die Computer verstehen, und daher können wir Computern sagen, was zu tun ist tue oder "unterrichte" sie, um unsere Probleme zu lösen.

Beispielsweise:

Stellen Sie sich vor, dass es in einer alternativen Realität humanoide Roboter mit künstlicher Intelligenz gibt und einige Menschen in der Lage sind, über eine gemeinsame Sprache, die eine Variation des Englischen darstellt, mit ihnen zu kommunizieren. Diese Leute, die mit den Robotern kommunizieren können, können ihnen beibringen, bestimmte Probleme zu lösen oder bestimmte Aufgaben zu erledigen, wie zum Beispiel unsere Hausarbeiten.

Nun, obwohl es solche Roboter noch nicht gibt, sind Programmierer unserer Zeit wie diese Leute, aber anstatt mit den Robotern zu kommunizieren, kommunizieren sie mit Computern. Programmierer "lehren" die Computer, wie sie bestimmte Aufgaben ausführen oder bestimmte Probleme mit Hilfe von Software lösen, die sie unter Verwendung dieser "gemeinsamen Sprache" erstellen.

Programmierer und diese "gemeinsame Sprache" geben uns Dinge wie E-Mail, Websites, Videospiele, Textverarbeitungsprogramme, Smartphones ( um es einfach auszudrücken ) und viele andere Dinge, die wir täglich benutzen.

Ich will nicht die Programmierung auf den Thron setzen oder so, es ist einfach die beste Metapher, die ich mir einfallen lassen könnte.

Ich bin mir sicher, dass jemand ein Problem mit diesem finden wird, es ist wahrscheinlich ein bisschen erfunden, aber das ist auch der Grund, warum ich diese Frage stelle.

Jorge Israel Peña
quelle
Ich denke, das Erlernen einer Programmiersprache ist etwas analog zum Erlernen einer Fremdsprache. Der Vorgang der Computerprogrammierung unterscheidet sich jedoch stark vom üblichen Vorgang des Sprechens / Schreibens. Computerprogrammierung erfordert mindestens: Präzision, Innovation, Konzentration, Kreativität, Organisation, Beharrlichkeit und strenge Logik.
Ami
Ich würde denken, um dem bekannten "aber ich dachte, Sie sind gut mit Computern" entgegenzuwirken, müssten Sie ein solches Missverständnis in die Metapher einbauen, zum Beispiel könnte jemand denken, dass Polizisten großartig darin sind, Verbrechen zu begehen, weil sie "gut damit sind Tatort "oder so.
Deltreme
Warum nicht einfach erklären, was ein Programmierer tut? Das ganze Gerede von Straßen und Robotern und Bausteinen ist einfach albern . Wenn ich einen Börsenmakler frage, was er macht, möchte ich keine Spielanekdoten hören. wenn ich einen plastischen Chirurgen frage, was er macht, möchte ich nicht über künstlerisches Flair (oder was auch immer) hören - geben Sie einfach die Fakten an!
Kirk Broadhurst

Antworten:

43

Es ist, als müsste man Schritt für Schritt detaillierte Anweisungen schreiben, wie man irgendwohin fährt. Normalerweise müssen Sie jedoch Notfallpläne für Dinge wie "Was ist, wenn es einen Stau gibt?" Oder "Was ist, wenn ein LKW in der Abbiegespur ausfällt?"

Und manchmal muss man noch tiefer tauchen und die Regeln der Straße erklären, wie man auf welcher Seite fährt oder was man an einer roten Ampel macht. Und manchmal muss man sogar genau erklären, wie das Lenkrad oder das Gaspedal funktionieren.

Und in der Regel sagt der Kunde, sobald alles genau beschrieben ist: "Das ist perfekt, außer es muss für jemanden funktionieren, der ein Luftkissenfahrzeug fährt."

Ahelly
quelle
Haha, ich mag diesen wirklich.
Jorge Israel Peña
14
Mein Hovercraft ist voller Aale!
3
Oder Sie können es einfach PROLOGGEN: das sind Sie im Auto, das ist Ihr Ziel, das ist ein Unfall, jetzt sagen Sie mir, können Sie das Ziel erreichen, ohne einen Unfall zu haben?
biziclop
Nein, es ändert sich normalerweise in "Perfekt, aber wir wollten wirklich ein Haus ...". Liebe deine Analogie aber :)
jmq
3
Großartige Analogie. Außerdem wird das Auto von jemandem gefahren, der genau das tut, was Sie ihm sagen, aber keinen gesunden Menschenverstand hat oder nicht in der Lage ist, selbst Entscheidungen zu treffen.
Bob Murphy
20

Ich schreibe sehr, sehr detaillierte Anweisungen für eine sehr, sehr dumme Maschine.

Shog9
quelle
17

Ich benutze die Metapher "Wir schreiben Strickrezepte ", die großmutterfreundlich ist.

Begründung:

  • Das Stricken ist ein ziemlich einfacher mechanischer Vorgang, bei dem Sie im Grunde genommen die detaillierten Anweisungen genau befolgen müssen, um etwas daraus zu machen.
  • Die meisten Strickanweisungen gelten für mehrere Größen. Dies gibt Ihnen if-Anweisungen und Mathematik und Schleifen.
  • Sie finden den Fehler im Rezept, wenn die Armee der wütenden Großmütter mit ihren fehlerhaften Strickjacken kommt!
user1249
quelle
Sehr gute Metapher meiner Meinung nach.
Paul Nathan
klingt wie das Stricken ist Turing abgeschlossen :)
bughi
14

Keine sehr gute Analogie, aber wenn die Leute mir sagen, dass ich ihre Maschine reparieren soll, sage ich: "Ich bin der Typ, der die Autos entwirft. Ich bin nicht der Mechaniker!"

JD Frias
quelle
4
"Ich bin der Musiker, nicht der Roadie!"
EricSchaefer
@Eric: poetischer :)
Matthieu M.
1
@Eric - mehr "Ich bin der Komponist, nicht der Roadie".
Steve314
Ich dachte ursprünglich etwas in Richtung Elektronik: "Ich kann einen Synthesizer anlöten, aber ich kann keine Musik abspielen", aber das ist wahrscheinlich allgemeiner nützlich: "Ich kann eine Küche bauen, heißt nicht, dass ich kochen kann . "
Naught101
12

Als Kind las ich eine wirklich gute Beschreibung des Programmierens: Es ist, als würde man einem Roboter erklären, wie man eine alltägliche Aufgabe erledigt, wie zur Schule zu gehen. Also kann man sagen "Geh zur Schule!", Aber es weiß nicht wie. Also sagst du ihm, er solle "nach draußen gehen, links abbiegen, weitergehen, bis du zur Schule kommst, links abbiegen, hineingehen und dich setzen". Aber es gibt eine Straße im Weg! Sie müssen ihn also anweisen, irgendwo in der Mitte "an der Straße anzuhalten, zu überprüfen, ob kein Verkehr herrscht, die Straße zu überqueren und weiterzulaufen". Und was ist mit Türen? Sie fügen also hinzu: "Überprüfen Sie, ob die Schultür geöffnet ist. Wenn nicht, öffnen Sie sie." da drin. Schließlich haben Sie ein Programm, das Ihrem Roboter sagt, wie er selbst zur Schule kommt.

Dies passt sehr gut zu Logo, wo Sie die Schildkröte auf genau diese Weise anweisen, komplexe Formen zu erstellen.

Gaurav
quelle
10

Das Programmieren ist wie eine Schachtel Pralinen . Manchmal finden Sie sofort das, wonach Sie suchen, aber die meiste Zeit ist viel Ausprobieren erforderlich. Manchmal bekommt man Kokos.

Ampeln . Autos fahren oder halten an. Eine Ampel ist leicht vorstellbar, aber was passiert, wenn Sie eine weitere hinzufügen? Wie wäre es mit einem Drittel? Was ist mit einer ganzen Stadt? Ein Transitsystem besteht aus Tausenden von Ampeln, von denen jede für sich genommen einfach ist. Insgesamt wird es jedoch zu einem komplexen System. Wenn eine dieser Ampeln ausfällt oder nur wenige Sekunden ausfällt, stürzt sie das gesamte System ins Chaos. Wenn alles synchron ist, genießt du einfach die Fahrt.

Ein Motivationsredner findet Schlüssel, um das Rätsel der Motivation, Träume und Ideen der Menschen zu lösen. Jede Situation, jede Person ist anders. Was in der Vergangenheit funktioniert hat, ist jetzt möglicherweise nicht mehr angemessen. Manchmal kann ein Schlüssel wiederverwendet werden, muss aber an die Person angepasst werden. In anderen Fällen muss der Schlüssel neu gestaltet werden. Am lohnendsten ist es, wenn die Person freigeschaltet wurde und Sie sehen, wie sie die Welt erobert. Am verheerendsten ist es, wenn Sie sich nahe fühlen, aber nicht in der Lage sind, das Potenzial auszuschöpfen.

Eine Detektivgeschichte , in der der Detektiv seinen Fall langsam aufbaut, indem er nach Hinweisen sucht und Beweise sammelt. Methodisch, intelligent und genau wird der Tag gewinnen. Schlampig, unwissend und faul wird der Fall zum Scheitern verurteilt. Letztendlich wird die Arbeit vor einer Jury von Kollegen stehen oder fallen.

Ein Spielautomat . Sie setzen alle Ihre Münzen ein und ziehen den Hebel. Manchmal gewinnt man groß, manchmal sitzt man stundenlang da und es passiert nichts. Manchmal kommt ganz nebenbei jemand anders vorbei, zieht einmal den Hebel und gewinnt den Jackpot.

Musik . Eine Note ist einfach genug, aber ein Takt ist komplexer. Ein komplettes Lied hat viele Takte mit vielen Noten. Wenn eine Note aus ist, kann dies die gesamte Performance ruinieren. Wenn jede Note perfekt geliefert wird, tritt die Performance in den Hintergrund und nur die Musik existiert.

VirtuosiMedia
quelle
Nougat. Du bekommst Nougat.
Tim Williscroft
6

Die beste Metapher für alles ist sich. Alles andere wird an Genauigkeit verlieren. Aus diesem Grund hängt die Auswahl der besten Metapher davon ab, was genau Sie über die Programmierung erfassen möchten. Da hier viele Antworten zu Codierungsmetaphern gegeben werden, antworte ich mit der klassischen Metapher für den gesamten Entwicklungsprozess:

Hochbau

Der häufigste Aspekt dieser Metapher ist, dass ein physischer Architekt einem Softwarearchitekten in gewisser Weise entspricht. Hier einige weitere Parallelen:

  • Änderungen sind billiger und billiger, je früher Sie sie vornehmen. Das heißt, Sie können jetzt eine Linie auf Papier verschieben oder später 10 Tonnen Zement.
  • Ein Gebäude ohne einen richtigen Plan wird zusammenbrechen
  • Die Bauherren versuchen zu implementieren, was der Kunde will. Wenn der Kunde nicht genau beschreibt, wie das Gebäude aussehen soll (oder eine andere Kommunikationsstörung vorliegt), ist die Änderung kostspielig.
  • Es gibt bestimmte Gesetze der Physik, die nicht gebogen werden können. So wie eine 300 Fuß breite 2. Etage nicht auf einer 100 Fuß breiten 1. Etage aufgebaut werden kann, kann Feature X nicht ohne ein robustes Subsystem Y aufgebaut werden.

Natürlich hat es wie jede Metapher seine Grenzen. Einige Mängel daran:

  • Gebäude werden nur einmal genutzt; du baust es irgendwo und dort bleibt es. Sie können es nicht millionenfach für eine Million verschiedener Benutzer mit millionenfach unterschiedlichen Anforderungen zu Null inkrementellen Kosten kopieren.
  • Gebäude sind wesentlich unveränderlicher als Software.
  • Es gibt keine eindeutige Analogie zu den Baustoffkosten. Eine Codezeile kostet nichts - nur die Zeit, die für die Erstellung benötigt wird, kostet Geld.
  • Die inkrementelle Architektur, die (je nachdem, wen Sie fragen) mit Software möglich ist, ist nicht mit der Konstruktion möglich, bei der Sie sie einmal entwerfen und dann erstellen.

Wie bei jeder Analogie kommt es also darauf an, was Sie zu erklären versuchen. Seien Sie vorsichtig, wenn Sie sich zu sehr auf eine Metapher verlassen, oder Ihr Kunde wird sich fragen, wie hoch die Grundsteuern für sein neues Gehaltssystem sein werden.

Fischtoaster
quelle
Nur, dass das Dach nicht explodiert, wenn Sie die Küchentür falsch ausgerichtet haben. Häuser sind robust, aber Software ist im Vergleich dazu so starr wie Kartenhäuser. Dies kann nicht vermieden werden, da die impliziten und expliziten Regeln (Modell) sehr bald sehr komplex werden.
KarlP
Sie können die Blaupause kopieren! Sie können das Gebäude jederzeit erweitern, indem Sie Ihrem neuen Whirlpool zusätzliche 25 m ^ 2 hinzufügen!
Zolomon
Der Fehler in der Analogie ist nicht wirklich die 1x Verwendung und reale / virtuelle Natur von Materialien / Ort (jeder Build ist einzigartig). Der eigentliche Fehler in der Gebäude-Analogie ist, dass das dynamische Verhalten der Gebäude-Materie eine Barriere darstellt. Bereitstellung eines Raums, in dem Aktivität vor Raum und Aktivität außerhalb geschützt ist. Das dynamische Verhalten für die "Materie" der Software ist die Verarbeitung von Daten.
Huperniketes
Gute Illustration zu Beginn dieses Blogposts: orestis.gr/blog/2010/11/06/why-i-bill-hourly Ich wollte meine eigene "Metapher" -Frage schreiben, aber dann fand ich diese und fand die Antwort am liebsten die, die ich geben würde.
Todd Williamson
6

Ich mag Chris McMahons Analogie zur Softwareentwicklung, die der Schaffung von Musik, insbesondere Jazzmusik, gleicht.

Das sind Ella Fitzgerald und Count Basie, die das Lied One O'Clock Jump machen. Das Lied ist ein Zwölftakt-Blues, der dem Jazz einer Datenbank-App mit einer Benutzeroberfläche entspricht. Damit meine ich: So wie jeder Programmierer eine Datenbank-App mit einer Benutzeroberfläche erstellt hat, hat jeder amerikanische Musiker Zwölftakt-Blues gespielt. Es ist ein Rahmen, an dem viele, viele Lieder hängen, von Count Basie über Jimi Hendrix bis zu den Ramones.

Dieses spezielle Video ist ein großartiges Beispiel für agiles Üben. Hören Sie, wie sich die Stimme und das Klavier gegenseitig beeinflussen. Das ist ähnlich wie beim Programmieren von Paaren, und es ist ähnlich wie beim TDD: Stimme macht etwas; Klavier antwortet; Klavier macht etwas; Stimme antwortet. Und beachte den Augenkontakt. Diese Leute sind sich sehr genau darüber im Klaren, was von Augenblick zu Augenblick vor sich geht. Sie haben keine Noten (BDUF). Sie sind in eine Tätigkeit involviert, die intensive Konzentration und Geschicklichkeit erfordert, genau wie eine gute Softwareentwicklung. Sie sind sich auch klar darüber im Klaren, dass es ein Publikum gibt, genauso wie eine gute Softwareentwicklung die Bedürfnisse der Rechnungszahler berücksichtigen sollte.

Hier ist der Link zu dem Blogbeitrag, in dem er darüber spricht : http://chrismcmahonsblog.blogspot.com/2007/05/example-of-analogy-monks-vs-music.html

Paddyslacker
quelle
1
Ich wollte gerade eine Musikmetapher veröffentlichen (ich habe einen Master-Abschluss in Komposition), aber in Chris 'Geschichte geht es besser, als ich kann
Alan,
5

Manchmal beziehe ich mich auf das Programmieren, um sinnlose Zombies zu kontrollieren . Fasse meinen Blog-Beitrag dazu zusammen:

  • Wie Zombies sind Computer, mit denen wir arbeiten, sehr dumm. Es ist schwer, sie zu etwas anzuweisen, es sei denn, die Anweisungen sind detailliert
  • Der Zombie ist aggressiv und wenn wir winzige Details in den Anweisungen vermissen, lassen Sie die Kreatur unberührt, es kann alles um sich herum zerdrücken. Dasselbe gilt für Computer: Wenn die Anweisungen nicht detailliert sind, kann Ihr Programm abstürzen und Ihre Daten zerstören.
  • Sie müssen Magie kennen, wenn Sie einen Zombie kontrollieren möchten. Das gleiche gilt für die Programmierung.
  • Je mehr Menschen mit Verstand sich an einem Ort versammeln, desto mehr Computer werden sie wahrscheinlich haben. Es scheint, dass Gehirne Computer anziehen - genauso wie sie Zombies anziehen.
P Shved
quelle
Ich
mache
5

Programmieren ist wie mit Lego bauen :

  • Sie kleben viele kleine Teile zusammen, um größere Dinge zu machen
  • Die kleinen Bits gibt es in einer begrenzten Anzahl von Formen und Größen
  • Die kleinen Dinge können nur auf bestimmte Weise zusammenpassen
  • Mit diesem Zeug zu spielen kann eine Menge Spaß machen
Kramii
quelle
5

Einen Computer zu programmieren ist wie ein Kind großzuziehen ...

  • Alle sind sich nicht einig über den richtigen Weg
  • Es hält dich nachts wach
  • Es macht nie das, was Sie ihm sagen
  • Unabhängig davon, wie viele Bücher Sie zu diesem Thema lesen, haben Sie das Gefühl, keine Ahnung zu haben, was Sie tun
  • Nach einer Weile neigen Sie dazu, faul zu werden
  • Sie erwarten, dass es in Zukunft große Renditen bringt, müssen es jedoch bis zum Ende seiner Lebensdauer warten
  • Es ist nie so sauber, clever oder sicher, wie Sie es sich gewünscht haben
  • Wenn Sie später darauf zurückblicken, fragen Sie sich, was zum Teufel Sie gedacht haben
  • Trotz all des Stresses, den es dir bereitet hat, liebst du es trotzdem.

Der Hauptunterschied ist, dass wir uns aufregen, wenn jemand unseren Quellcode stiehlt, aber wir sind oft froh, dass jemand unsere Kinder aus unseren Händen nimmt.

2rs2ts
quelle
4

Das Programmieren ist wie das Bauen einer Fabrik oder einer Fertigungsstraße.

Automatisierte Produktionslinie

Stellen Sie sich Software als Maschine oder Fließband vor, das im Computer vorhanden ist. Einige Rohstoffe und Komponenten werden der Maschine zugeführt, und es werden eine Reihe von Verfahren befolgt, um sie zu einem Endprodukt zu verarbeiten. Die Verfahren sind eingerichtet, um eine bestimmte Operation an einem Rohmaterial oder einer bestimmten Komponente mit einem bestimmten Parametersatz (z. B. Zeit, Temperatur, Entfernung usw.) in einer bestimmten Reihenfolge durchzuführen. Wenn die Details der auszuführenden Operation nicht korrekt waren oder die Sensoren der Maschine nicht korrekt kalibriert waren oder wenn ein Rohstoff oder eine Komponente nicht den erwarteten Qualitätsstandards entsprach, konnte dies das Ergebnis der Operation verändern und das Produkt würde nicht ausfallen wie erwartet.

Eine solche Maschine ist in ihrem Betrieb sehr steif und in ihren Eingaben akzeptabel. Maschinen stellen weder die Intelligenz der Konstrukteure noch ihre aktuelle Betriebsumgebung in Frage. Es wird weiterhin Verfahren folgen, solange es gerichtet ist. Selbst wenn sich eine Änderung der Rohstoffe oder Komponenten drastisch auf die späteren Arbeitsabläufe auswirken könnte, würde die Maschine dennoch ihre Arbeitsabläufe ausführen. Der Prozess müsste überprüft werden, um festzustellen, welche Änderungen an den Verfahren erforderlich sind, um das gewünschte Ergebnis zu kompensieren und zu erzielen. Eine Änderung des Designs oder der Konfiguration des Produkts kann auch eine erhebliche Änderung der durchgeführten Vorgänge oder ihrer Reihenfolge erforderlich machen. Obwohl die für die Produktion Verantwortlichen schnell die Wichtigkeit der größtmöglichen Isolierung von Vorgängen erkannten, um unerwünschte Auswirkungen zwischen ihnen zu verringern, Es werden viele Annahmen darüber getroffen, in welchem ​​Zustand sich die Komponenten befinden, während sie verarbeitet werden. Annahmen, die möglicherweise erst erkannt werden, wenn sich das Endprodukt in einer anderen Betriebsumgebung in den Händen des Benutzers befindet.

Huperniketes
quelle
3

Einem schnellen Idioten helfen, eine Matheklasse zu bestehen, die einen schriftlichen Aufsatz erfordert.

JeffO
quelle
2

Computerprogrammierung ist wie ein Schachspiel, bei dem die Größe des Spielbretts, die Anzahl der Steine ​​und die Regeln, die diese Steine ​​regeln, im Laufe des Spiels an Größe und Komplexität zunehmen.

Ami
quelle
1

Anfänger in CS- / Programmierklassen sind praktisch wie Benutzer ohne Programmierkenntnisse. Das Roboterbeispiel ist gut.

In den 80er Jahren hat es viel geholfen, Logo, Karel (oder ähnliche Programmierumgebungen) zu verwenden, bei denen der Benutzer das Programmieren lernt und den Computer wie einen Roboter anstatt eines Fernsehgeräts mit Schreibmaschine betrachtet. Diese Tools wurden üblicherweise in der Junior High School und der High School verwendet.

Diese praktische Programmierung half den Schülern, Problemlösungsfähigkeiten zu erlernen, auch wenn sie nicht mit dem Computer verwandt waren !!!

Oder selbst wenn die Schüler keine Programmierer geworden wären.

Einige Kollegen und Universitäten setzten diese Tools auch in Kursen des ersten Jahres ein.

Ich frage mich, warum viele Gymnasien das Unterrichten von Logo und Karel aufgeben ...

umlcat
quelle
1

Ich mag Fred Brooks Analogie von Mythical Man-Month, dass das Programmieren wie das Durchführen von Magie ist.

(Das) Programmkonstrukt ist im Gegensatz zu den Worten des Dichters in dem Sinne real, dass es sich bewegt und funktioniert und sichtbare Ergebnisse erzeugt, die vom Konstrukt selbst getrennt sind. Es druckt Ergebnisse, zeichnet Bilder, erzeugt Töne und bewegt die Arme. Die Magie von Mythos und Legende hat sich in unserer Zeit erfüllt. Man tippt die richtige Beschwörung auf einer Tastatur und ein Bildschirm wird lebendig und zeigt Dinge, die niemals waren oder sein konnten. ...

(Einer) muss korrekt funktionieren. Auch in dieser Hinsicht ähnelt der Computer der Magie von Mythos und Legende. Wenn ein Charakter, eine Pause der Beschwörung nicht genau in der richtigen Form ist, funktioniert die Magie nicht. Der Mensch ist es nicht gewohnt, perfekt zu sein, und nur wenige Bereiche menschlicher Aktivität verlangen dies. Die Anpassung an das Erfordernis der Perfektion ist meiner Meinung nach der schwierigste Teil des Programmierens.

AlexC
quelle
1

"[...] aber ich dachte du kannst gut mit Computern umgehen!"

Dies ist normalerweise ein Versuch, einen Geek dazu zu bringen, einen Computer zu reparieren. Meine Standardantwort:
Ich bin Programmierer. Das ist wie bei einem Automobilingenieur - er wird wahrscheinlich nicht wissen, wie man die Bremsen Ihres 72er Trabant repariert, und würde es mit Sicherheit nicht tun, wenn er es wüsste. Ein Mechaniker würde das tun!

Zigeunerkönig
quelle
0

Ich mag das Konzept eines Kochrezepts.

Paul Nathan
quelle
0

Programmieren ist wie gewaltiges Ausüben von Macht. Sie können den Computer dazu bringen, alles zu tun, was Sie wollen. Sie sind nur begrenzt durch Ihre Vorstellungskraft und die Zeit, die Sie investieren möchten.

Programmierer sind wie die Macher eines Hauses. Wir können Ihnen alles über die Häuser erzählen, die wir gebaut haben. Wenn Sie uns jedoch bitten, ein zufälliges Haus zu fragen, an dem wir gerade vorbeifahren, werden wir wahrscheinlich nicht viel darüber wissen. Wenn Sie jedoch etwas an diesem Haus hinzufügen oder ändern müssen, können wir dies durchführen, sofern der Eigentümer dies zulässt.

bitsoflogic
quelle
0

In einem der alten Artikel von Chris Crawford über das Programmieren verglich er ein komplexes Programm mit einer Bürokratie, in der mehrere Agenturen miteinander kommunizieren, indem sie Memos hin und her geben. Ich habe festgestellt, dass dies eine sehr nützliche Metapher für die Erklärung der Softwareentwicklung ist.

schockierend
quelle
0

Ich vergleiche das Programmieren im Allgemeinen mit einem Puzzle.

Um ein neues Projekt zu erstellen, haben Sie Tonnen von Teilen, von denen einige nicht zu diesem Bild gehören, und Sie haben keine Vorschau darauf, wie das Puzzle aussieht, wenn es fertig ist. Da Sie jedoch die Größe und die allgemeinen Farben kennen, sind Schätzungen möglich, jedoch nicht unbedingt genau.

Um ein bereits bestehendes Projekt zu modifizieren, kam eine Katze vorbei und schlug einen Teil des fertigen Puzzles ab. Es wird einige Zeit dauern, aber das Framework ist bereits vorhanden, daher sollte es nicht zu schlecht sein (je nachdem, wie viel geändert werden muss).

Es hilft auch bei der Beschreibung des Fortschritts. Bei einem meiner letzten Projekte habe ich mich gefragt, wie ich es beschreiben soll, damit eine nicht-technische Person versteht, warum ich nicht weiß, wie lange es noch dauert Randstücke sind fertig, ebenso etwas mehr als die Hälfte der inneren Stücke. Die verbleibenden sind alle voneinander getrennt, was ich jetzt tun muss, ist die Lücken zu füllen.

Izkata
quelle
-1

Es ist traurig, aber Programmieren ist eine Arbeit, die nur verstanden werden kann, wenn man lernt, wie man es macht.

Die Programmierung hat verschiedene Wahrnehmungsebenen und unterscheidet sich von verschiedenen Seiten.

Auf niedrigem Niveau heißt es "sehr, sehr ausführliche Anleitung für eine sehr, sehr blöde Maschine schreiben"

Auf der nächsten Ebene geht es um Komplexität. Aufbau einer neuen Metapher zur Vereinfachung der Arbeit. Wie höhere Mathematik.

Von anderer Seite ist die Verwendung von Hilfstechnologien wie Versionskontrolle, selbst dokumentiertem Code, Projekterstellung und Testen.

Von der anderen Seite baut es eine "Benutzeroberfläche" auf (nicht wörtlich, ich meine API auch UI), sagt mögliche Fehler voraus (von Benutzer, Daten oder sogar von sich selbst) und korrigiert das Reagieren auf Fehler.

Und schlussendlich.

Metapher für die Programmierung ist Literatur. Zuerst muss man das Alphabet lernen. Aber einen Roman dazu zu schreiben fängt ja gar nicht an.

mmv-ru
quelle