Eines der Dinge, die ich beim Unterrichten von angehenden Frontend-Entwicklern tue, ist, die Studenten zu bitten, zu beschreiben, wie es ist, HTML zu lesen. Ich gebe ihnen sehr einfachen Markup für einen langen Artikel und bitte sie, ihn zweimal zu lesen: zuerst im Code, dann im Frontend.
Die häufigste Antwort, die ich höre? Es ist wie das Erlernen einer neuen Sprache.
Natürlich ist es das, sage ich ihnen. Es steckt im Namen: Hypertext Markup Language. Also rate ich ihnen, die Materialien im Kurs so zu behandeln, als würden sie Französisch, Spanisch oder eine andere Sprache lernen.
Dann wache ich heute Morgen auf und sehe diese MIT-Studie, dass das Lesen von Computercode nicht dasselbe ist wie das Lesen von Sprache, obwohl sie Ähnlichkeiten aufweisen.
Trotz dieser Ähnlichkeiten haben Neurowissenschaftler des MIT festgestellt, dass das Lesen von Computercode nicht die Bereiche des Gehirns aktiviert, die an der Sprachverarbeitung beteiligt sind. Stattdessen aktiviert es ein verteiltes Netzwerk, das als Multiple Demand Network bezeichnet wird, das auch für komplexe kognitive Aufgaben wie das Lösen von Mathematikaufgaben oder Kreuzworträtseln herangezogen wird.
Klar, könnten Sie sagen. Aber warten Sie, das Lesen von Code scheint tatsächlich zusätzliche Teile des Multiple Demand Networks zu aktivieren, was die Aufgabe eher zu einer Annäherung an mathematisches Denken macht als zur exakten Übereinstimmung.
Das MIT-Team fand heraus, dass das Lesen von Computercode sowohl die linke als auch die rechte Seite des Multiple Demand Networks zu aktivieren scheint [...]. Diese Erkenntnis widerspricht der Hypothese, dass Mathematik und Programmierung auf denselben Gehirnmechanismen beruhen.
Zurück zu meiner HTML-Leseaufgabe. Ist es besser, Code als Sprache zu lehren, um Symbole zu erkennen, die dem Browser mitteilen, was zu tun ist, oder als mathematische Fähigkeit, die auf der Lösung von Problemen basiert?
Die Antwort ist 🤷♂️.
Das Interessanteste an der Studie für mich ist nicht, wie man Code lehrt, sondern eher, wie ich damit umgehe. Chris sagt immer ein Frontend-Entwickler ist sich dessen bewusst, und die Tatsache, dass das Lesen von Code einen Bereich des Gehirns anspricht, der für Multitasking und die Verwaltung vieler Informationen zuständig ist, unterstützt dies nur. Es erklärt auch, warum ich persönlich genervt bin, wenn ich von meinem Code weggerissen oder abgelenkt werde – es ist, als müsste mein Gehirn alle Teller, die es balancierte, fallen lassen, um etwas anderem Aufmerksamkeit zu schenken, und dann alle Teile wieder zusammensetzen, bevor ich wieder an das anknüpfen kann, was ich tat.
Ich denke, der Grund dafür ist, dass Sprache in eine Richtung fließt und man beim Programmieren in Funktionen hinein und hinausgehen muss. Der andere Fluss macht es eher zu einem Rätsel, wenn man herausfindet, was etwas tut, anstatt nur zu interpretieren, was einem nacheinander erzählt wird.
Ich liebe die Meinungen hier und kann sie sicher nachvollziehen. Ich kann Sprache und Mathematik genauso leicht lesen wie True-Crime-Romane.
Ich denke, es ist immer noch am besten, Code primär als Sprache zu betrachten. Obwohl es sicherlich ein starkes Element mathematischen Denkens gibt, muss ein Programmierer dieses mathematische Denken sowie die gesamte Geschäftslogik sowohl dem Computer als auch (meistens) anderen Entwicklern vermitteln.
Mathematisches Denken ist entscheidend, aber es ist im Allgemeinen etwas, das für ein gegebenes Problem einmal gemacht werden muss, während die meisten Codes mehrmals gelesen werden müssen.
Ich denke, das Lehren von Programmierung und das Lehren von Algorithmen sind zwei verschiedene Dinge. Für Letzteres würde ich mich definitiv mehr auf mathematisches Denken konzentrieren.
Nun, gewissermaßen. Ich glaube, Sprache enthält Funktionen, aber wir erkennen sie nicht als solche. Nehmen Sie „Laser“ oder „ABS“ oder „Cloud-Speicher“; was sind das anderes als Platzhalter für große Bedeutungsstapel, die wir auf die gleiche Weise verwenden, wie ein Programm eine Funktion verwendet? Wir nehmen Komplexität und bündeln sie als neues Wort mit entsprechenden Eigenschaften, Verhaltensweisen und Syntax.
Meine subversive Ansicht ist, dass, wenn eine Computerstrategie auf Englisch ausgedrückt werden kann, sie es auch sollte, und Computer können sich verdammt noch mal anpassen. Wenn nicht, ist sie zu komplex und benötigt eine neue Ergänzung zur Sprache.
Mathematik oder Sprache sind für mich intuitiv anders als Softwareentwicklung. Ich habe eine Rechenschwäche und das Lösen von UI-Problemen bereitet mir nicht dieselben Hürden wie ein mathematisches Problem.
Es ist mehr wie Legos, Sudoku und ein Kreuzworträtsel gleichzeitig.
Ich denke, das hängt vom Problem ab, das Sie lösen. Funktionale Mathematik ist sehr hilfreich, um funktionale Programmierung besser zu verstehen. Diskrete Mathematik ist ebenfalls hilfreich. Ebenso Algorithmen zum Traversieren unbekannter Payloads für generische Verarbeitungslogik. Ich bin auf komplexe Probleme sowohl im Frontend als auch im Backend gestoßen.
Das gefällt mir. Das erklärt, warum ich diese Disziplin so liebe. Es ist sowohl Kunst als auch Wissenschaft.
Ich glaube, der Artikel sprach von Mathematik, nicht von Wissenschaft!
Erklärt, warum Asperger-Leute für diese Art von Arbeit gemacht sind.
Ich würde sagen, bei Sprache hängt es von der Nachricht ab, die Ihr Gehirn verarbeitet. Es ist nicht dasselbe, sich in einem französischen Friseursalon einen Haarschnitt bestellen zu können, wie einen Text von Claude Lévi-Strauss zu entschlüsseln.
Dieser letzte Teil… „es ist, als müsste mein Gehirn alle Teller fallen lassen, die es balancierte“. Das beschreibt meine Erfahrung genau. Es dauert ein wenig, bis ich „aufgewärmt“ bin, und wenn ich länger als eine Toilettenpause weggehe, ist es, als müsste ich etwas in meinem Kopf wieder zusammensetzen, bevor ich wieder Fortschritte machen kann. Nichts außer der Börse bringt mich so sehr dazu, mich auf den Montagmorgen zu freuen oder ihn zu lieben!
Ich verstehe das vollkommen. Ich kann tatsächlich schneller und effizienter denken, wenn ich programmiere, als wenn ich zum Beispiel meine Mathehausaufgaben mache…
Diese Dinge sind faszinierend! Ich würde sagen, das Lesen von Computercode ist nicht nur das Lesen von Sprache. Sicher, das Lesen von Code basiert auf linguistischen Attributen von Token, Syntax und Grammatik… sogar Idiomen, von denen einige keine Beziehung zur gesprochenen Sprache haben. Das Lesen mathematischer Ausdrücke beruht ebenfalls auf Syntax und Symbolen.
Wenn wir jedoch Sprache lesen, denken wir über Systeme im Abstrakten nach oder visualisieren Geschichtenwelten, was tatsächlich etwas ist, das das Gehirn recht bereitwillig tut. Diejenigen von uns, die keine Aphantasie haben, können sich Umgebungen oder Szenarien vorstellen, die wir gerade nicht erleben oder erfahren. Wir zaubern neue Bilder oder Erkenntnisse aus der Zusammenstellung von Fragmenten unserer gelebten Erfahrung.
Der Unterschied bei Computercode ist, dass wir ihn beim Lesen effektiv in unserem Kopf ausführen müssen, während wir ihn lesen. Wir müssen mental dieselbe Logik, dieselben Regeln und denselben Prozess anwenden, um ihn zu interpretieren, wie es der Computer tut. Ich vermute, das Äquivalent wäre, wie wenn man einen Roman liest und tatsächlich die Erfahrung der Charaktere leben müsste, anstatt nur die Geschichte zu visualisieren, die uns erzählt wird.
Meiner Meinung nach – als jemand, der an ADHS leidet – oh schau, ein Eichhörnchen – tritt der Lernprozess hinter „Fähigkeit & Kapazität“ zurück.
Wenn man die Statistiken der Leute betrachtet, die programmieren können, ist mir klar, dass keiner von uns innerhalb von „Normen“ operiert.
Die Mehrheit der Menschen mit hoher Kapazität und hoher Merkfähigkeit hat irgendeine Art von „sozialer“ Störung aufgrund hoher Gehirnfunktionen.
Ich empfehle dringend das Buch Master & Emmisary, das sich mit hemisphärischer Phänomenologie beschäftigt.
Es ist faszinierend AF!
Ich habe diesen Artikel gelesen! Ich hoffe, Sie werden weiterhin solche Artikel mit allen teilen! Danke!
Ich gebe Ihnen noch eine Perspektive. Ich arbeite als Entwickler, aber mein akademisches Studium war in Historischer Musik. Als Musiker bin ich es gewohnt, etwa 5 Jahrhunderte verschiedener Stile und Schreibweisen von Musik zu lesen und zu spielen… Für mich sind das Entschlüsseln einer Partitur und das Entschlüsseln eines Code-Stücks sehr ähnliche Prozesse! Weil sie, wie die Studie zeigt, globale Prozesse im Gehirn sind.
Aber ich spreche auch 5 (menschliche) Sprachen, und ich vergleiche Musik/Code immer mit Sprachen, weil wir immer Konventionen von Symbolen und Klängen verwenden, um eine Bedeutung zu vermitteln. So kann ich C-Code oder Swift/Python lesen, aber weil ich ihn nicht zum Schreiben und Ausdrücken verwende, ist es ohne Lernen und Hingabe fast unmöglich. Genauso ist es mit Niederländisch oder Deutsch, ich kann einen Text sehen und den Kern erfassen, aber das sind Sprachen, die ich nicht sprechen kann.
Wissenschaftlich gesehen verwenden Sprache und Code unterschiedliche Prozesse im Gehirn, aber ich denke, wir können argumentieren, dass die Wege, beide kompetent zu erlernen, denselben Pfad/dieselbe Schritte beinhalten. Ich habe nur Musik und keinen Code unterrichtet und mache immer die Brücke zur Sprache, weil sie den Menschen näher ist, also werde ich wahrscheinlich dasselbe für Code tun, indem ich eine Sache mit einer anderen vergleiche, bedeutet nicht, dass sie gleich sind.
Ich mag Liz' Kommentar, Code ist sowohl Mathematik als auch Kunst. Es ist ein logischer und kreativer Prozess. Wie Musik.
Das erklärt, warum ich so wütend werde, wenn ich mitten im Programmieren bin und abends abschalten muss, hahaha…
Ich bin neugierig, was das für große Kommentarabschnitte im Code bedeutet.
Ich denke, es ist in Ordnung, HTML als Sprache zu unterrichten, weil es Markups verwendet und nicht viel Logik hat. Auf der anderen Seite sollte beim Unterrichten von JavaScript dies als mathematische Fähigkeit gelehrt werden.
100% einverstanden
Also bin ich nicht der Einzige. Es ist ärgerlich, wenn ich programmiere und meine Frau ins Zimmer kommt, um mir zu erzählen, was ihre Schwester über die Cousine gesagt hat, die sie nicht mögen.
Ich betrachte HTML nicht wirklich als Code, aber ich verstehe den Punkt. Bei HTML visualisiere ich, was es sagt. Bei Code wie C# oder Java schaue ich auf den Datenfluss und lese ihn fast so, als würde ich verschiedene gleichzeitige Tests in meinem Kopf durchlaufen, um zu sehen, was er tut und was das erwartete Ergebnis wäre. Es ist fast so, als würde Ihr Gehirn den Code kompilieren, um zu verstehen, was er tut.
Ein Praktikant fragte mich, warum wir keine divs mehr verwenden, und eines der Dinge, die ich ihm sagte, war, dass ich, wenn ich seinen Code mit semantischem HTML lese, ein klares Bild der Website in meinem Kopf zeichnen kann, während die Verwendung von divs dazu führen würde, dass ich mir 5 unfertige Versionen vorstelle und wahrscheinlich zurückgehe und frühere Zeilen lese, um mich zu erinnern, an welchen Stellen ein Element platziert würde.
Und dass dies derselbe Grund ist, warum er darüber nachdenken sollte, wie er Funktionen und Variablen in JavaScript deklariert.
Meine Frau hat das bei mir erkannt!
„Ich persönlich werde genervt, wenn ich von meinem Code weggerissen oder abgelenkt werde – es ist, als müsste mein Gehirn alle Teller fallen lassen, die es balancierte, um etwas anderem Aufmerksamkeit zu schenken, und dann alle Teile wieder zusammensetzen, bevor ich wieder an das anknüpfen kann, was ich tat.“
Ich denke, der erste Teil des Programmierlernens ähnelt dem Erlernen einer Sprache. Das Erlernen der Semantik, welche Zeichen was in welchem Kontext bedeuten. Das ist, wie man etwas tut. Es gibt immer noch die Frage, wann man etwas tun soll und wie man mehrere Dinge kombiniert, um verschiedene Ergebnisse zu erzielen. Das ist eher der mathematische/rätselhafte Teil.
Nachdem ich ihr Abstract gelesen habe, wundert es mich nicht, dass sie die Sprachanteile des Gehirns nicht aufleuchten sahen. Sie haben die Fragen so formuliert, dass es wenig Grund dafür gab.
Sie haben die Teilnehmer nicht gebeten, einen Gedanken in Code zu formulieren, sondern sie haben sie gebeten, vorhandenen Code zu nehmen und zu sagen, was die Ausgabe ist.
Sie haben sie nicht gebeten, den Code zu produzieren, sondern ihn auszuführen.
Sie haben den Code nicht verwendet, um den Zweck der Sprache zu erfüllen, nämlich den Gehirnzustand zu übertragen und ihn in eine Nachricht zu übersetzen, die andere interpretieren können. Sie waren nur auf der Dekodierungsseite.
Es wäre so, als würde man erwarten, dass ein Betrachter eines Gemäldes dieselben Gehirnteile verwendet wie ein Maler, der das Gemälde malt.
Meiner Erfahrung nach ist es am sinnvollsten, Programmieren als ein Handwerk zu betrachten, vergleichbar mit Metallverarbeitung oder Schreinerarbeiten.
Anstelle von Maschinenteilen oder Möbeln produzieren wir Software, die eine sehr konkrete Sache ist.
Ich höre manchmal das Argument, dass ein Programmierer seine Gedanken in einer Programmiersprache „ausdrücken“ muss und daher Programmiersprachen Sprachen sind.
Wenn man jedoch eine Fremdsprache spricht, z. B. Mandarin-Chinesisch, tritt man nicht in ein radikal anderes Denkmuster ein. Es gibt keine Variablen zu deklarieren, wenn man Mandarin spricht. Man ruft auch keine Funktionen auf, die man zuvor implementiert hat. Sicher, es gibt viele Dinge, die man in Mandarin anders ausdrücken würde als im Englischen, aber am Ende, wenn man sich unterhält, sind die semantischen Konzepte im Großen und Ganzen ähnlich genug.
Beim Sprachenlernen sind Fähigkeiten wie das Hören von Sprechern und das Verstehen in Echtzeit viel wichtiger. Während man wochen- und monatelang an einem Stück Code arbeiten kann, muss Sprache unmittelbar sein.
Ich hatte das Glück, in der Schule sowohl Metallverarbeitung als auch Englischunterricht zu haben. Ich versichere Ihnen, dass die beiden sehr unterschiedlich unterrichtet werden.
Ich bin Verhaltensneurologe. Mein n=1 sagt, das sei nicht so klar. Ich sah einen ehemaligen Computeringenieur mit semantischem Wissensverlust (linker Temporallappen), und er hat die Fähigkeit verloren, bestimmte Syntax und Befehle in Computersprachen zu verstehen, die er früher kannte (zusätzlich zu Dingen auf Englisch).
Logische Prozesse ergeben für ihn Sinn, er kann eine allgemeine Vorstellung davon geben, wie Codes ausgeführt werden sollen, Mathematik und andere Aspekte der Exekutivfunktion sind intakt, sodass dies für ihn sehr wohl ein Sprachproblem ist. Computersprachen sind in den letzten 50 Jahren relativ neu, und da die erste Generation von Programmierern älter wird und einige neurodegenerative Erkrankungen entwickeln, werden wir meiner Meinung nach mehr von ihnen in der Klinik sehen und besser verstehen, wie das Gehirn künstliche Sprachen verarbeitet.
Nutzen Sie beide Fähigkeiten für ein besseres Verständnis, und durch Wiederholung wird es einfacher.
Ich bin kein Coder, aber ich schätze, dass Sie artikulieren, was viele INTPs regelmäßig erleben – das Phänomen des unterbrochenen Tellerbalancierens. Danke.
Der Autor vereinfacht die Ergebnisse. Dies ist eine kleine und noch nicht unabhängig verifizierte Studie auf dem schwierigen Gebiet der Neurologie. Ich empfehle, die Studie zu lesen, bevor man seine Weltansichten ändert.
https://elifesciences.org/articles/58906#s4
Insbesondere
„Natürlich bedeutet das Fehlen einer konsistenten Sprachsystembeteiligung bei der Code-Interpretation nicht, dass die Mechanismen, die der Sprach- und Codeverarbeitung zugrunde liegen, völlig unterschiedlich sind. Es ist möglich, dass sowohl Sprach- als auch MD-Regionen ähnlich organisierte neuronale Schaltkreise haben, die es ihnen ermöglichen, kombinatorische Eingaben zu verarbeiten oder eine Zuordnung zwischen einem Symbol und dem von ihm bezeichneten Konzept vorzunehmen.“
Wissenschaftsjournalisten legen viel zu viel Wert auf die Bedeutung von „Aktivitätsregionen“, da dies eines der wenigen Fenster ist, durch die wir ins Gehirn blicken können.