Anzeige
Anzeige
News
Artikel merken

Studie: Programmieren hat mit Sprachbegabung nicht allzu viel zu tun

Neurowissenschaftler des MIT haben herausgefunden, dass das Interpretieren von Code ein allgemeines Hirnnetzwerk aktiviert, aber keine sprachverarbeitenden Zentren.

2 Min. Lesezeit
Anzeige
Anzeige

Die Studienprobanden interpretierten in Python geschriebene Code-Snippets. (Foto: Casimiro PT/Shutterstock)

Bei der Antwort auf die Frage, welche Fähigkeiten beim Programmieren wichtig seien, gibt es zwei Schulen. Eine vertritt die These, zum Programmierenlernen müsse man gut in Mathe sein, die andere, dass Sprachbegabung das wichtigere Asset sei.

Sprachzentren offenbar kaum beansprucht

Anzeige
Anzeige

In gewisser Weise ist Programmieren mit dem Erlernen einer neuen Sprache vergleichbar. Es erfordert die Kenntnis neuer Symbole und Begriffe, die richtig organisiert werden müssen, um dem Computer Anweisungen zu geben, die er versteht. Der Programmcode muss für andere Programmierer lesbar und nachvollziehbar sein, also gewissen Konventionen genügen. Trotz dieser Ähnlichkeiten werden beim Verstehen von Quellcode offenbar nicht die sprachverarbeitenden Areale aktiviert. Stattdessen aktiviert es ein verteiltes Netzwerk, das sogenannte Multiple-Demand-Network, das auch bei komplexen kognitiven Aufgaben wie dem Lösen von Matheaufgaben oder Kreuzworträtseln zum Einsatz kommt.

Zum Verstehen von Programmcode werden jedoch offenbar andere Teile innerhalb des Multiple-Demand-Netzwerkes beansprucht als beim Lösen von Mathe- oder Logikaufgaben. Die kognitiven Anforderungen beim Programmieren sind also offenbar auch nicht die gleichen wie jene zum Lösen mathematischer Problemstellungen.

Anzeige
Anzeige

„Das Verstehen von Code scheint eine eigene Sache zu sein. Es ist nicht das Gleiche wie Sprache, und es ist nicht das Gleiche wie Mathematik und Logik“, kommentiert Anna Ivanova, MIT-Absolventin und Hauptautorin der Studie.

Anzeige
Anzeige

„So ziemlich alles, was kognitiv anspruchsvoll ist, passiert hier“

Um der Frage auf den Grund zu gehen, fragten die Forscher junge Programmierer nach dem Output verschiedener Code-Snippets in Python und der grafischen Programmiersprache ScratchJr. Beide Programmiersprachen gelten als besonders gut lesbar. Die Probanden lagen währenddessen in einem MRT. Überraschenderweise zeigten die sprachverarbeitenden Regionen der Gehirne der Probanden dabei wenig bis gar keine Aktivität. Stattdessen sprach vor allem das Multiple-Demand-Netzwerk darauf an. Das über den Frontallappen und die Parietallappen des Gehirns verteilte Netzwerk kommt typischerweise dann zum Einsatz, wenn mehrere Informationen gleichzeitig im Gedächtnis behalten werden müssen. Dass der Mensch in der Lage ist, eine Vielzahl unterschiedlicher Aufgaben zu bewältigen, ist zum Teil darauf zurückzuführen. „So ziemlich alles, was kognitiv anspruchsvoll ist, passiert hier“, so Ivanova gegenüber MIT News.

Frühere Studien hatten ergeben, dass mathematische Problemstellungen und Logik vor allem Multiple-Demand-Regionen in der linken Gehirnhälfte beanspruchten, während Aufgaben, die räumliche Navigation erfordern, die rechte Hemisphäre stärker aktivieren. Das MIT-Team fand heraus, dass das Lesen von Code sowohl die linke als auch die rechte Seite des Multiple-Demand-Netzwerks zu aktivieren scheint. Zudem erkannten sie, dass ScratchJr die rechte Seite etwas mehr als die linke aktivierte. Dieser Befund widerspricht der Hypothese, dass Mathe und Programmieren auf die gleichen Mechanismen im Gehirn zurückgreifen.

Anzeige
Anzeige

Keine Handlungsempfehlung für Lehrende ableitbar

Ein anderes Forschungsteam war in einer weiteren Studie zu einem ähnlichen Ergebnis gekommen. Eine abschließende Antwort auf die Frage, ob Programmierkurse eher wie eine Sprache oder eher wie Mathe unterrichtet werden sollten, soll sich jedoch nicht daraus ableiten lassen. Laut den Forschern ist es denkbar, dass beim Erlernen einer Programmiersprache sowohl Sprachzentren als auch das Multiple-Demand-Netzwerk eine Rolle spielen. Auch wenn die für die Sprachverarbeitung verantwortlichen Hirnregionen später – wenn die Programmiersprache erlernt ist – beim Programmieren nicht mehr aktiviert werden.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
15 Kommentare
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

kantenhuber

Mathematik hat mit Programmieren nur in sofern etwas zu tun, dass es eine Beschreibungssprache ist, aber andere Zielrichtungen haben.

Ansonsten ist Programmcode einfach nur ein für „normale“ Menschen unverständlicher Kauderwelsch, der je nach Neigung der die Sprache erzeugenden Menschen so oder so ausfällt. Das hat mehr mit Gewohnheiten und vorliegenden Codes aus den Bibliotheken des Codeuniversums zu tun, als mit wirklich effektivem Arbeiten an der Sache. Am Ende muss es vor allem der ausführende Rechner verstehen.

Eigentlich ist die derartige Form der Programmierung ein nachhaltiger Anachronismus: Menschen schreiben kryptische Anweisungen, die ein Computer verstehen kann. Mit all den Missverständlichkeiten, Fehlern und Unverträglichkeiten, die nun mal menschlich sind.

Wenn das Codeuniversum eines Tages weitgehend davon befreit ist, dass Menschen Code für Maschinen schreiben, dann wird es sowohl Menschen als auch Maschinen besser gehen, weil dafür vorgesehene Menschen Arbeitsoberflächen und Arbeitsstrukturen schaffen, die auch menschlich zuträglich sind. Programmcode schreiben und menschliche Arbeitsweise an sich richtig einschätzen gehen meist nicht in die selbe Richtung…

Antworten
Heribert Meriberg

Ich kann erkennen, dass Sie kein Programmierer sind.

Antworten
Dennis

“ Programmcode schreiben und menschliche Arbeitsweise an sich richtig einschätzen gehen meist nicht in die selbe Richtung…“

omfg. Was ist denn bitte der Job eines Programmierers, ausser die Realität in Code abuzbilden? Wenn neue Verfahren über die IT eingeführt werden, kommen diese zu 99% aus dem Management. Der Programmierer setzt diese nur um.

Antworten
Titus von Unhold

Programmierer sind bereits alle die einen Wecker stellen. Den Code auf dem Wecker schreiben Entwickler.

Antworten
Vigar

Coden und Sprachen? Nein hat nichts miteinander zu tun. Coden heißt sich an vorgeschriebene Abläufe zu halten, dabei den Kern des Problems mit den verfügbaren Werkzeugen zu beschreiben und dabei möglichst wenige Zeile Code zu erzeugen.

Die Lesbarkeit und Nachvollziebarkeit, wie es bei Sprache der Fall ist, steht dabei im Hintergrund. Mehr geht es darum ein Problem in seine ganzen einzelnen Bestandteile zu zerlegen und sich vom Sandkorn „hochzuarbeiten“ zur Pyramide.

Also ist Codieren nichts anderes, als ob man eine ewig lange ToDo-Liste erstellt, welche am Ende im besten Falle, alles berücksichtigt, was auf dem Weg zur Lösung benötigt wird.

Antworten
Dennis

Man sollte hier imho aufpassen, da die Gefahr besteht, Sprachgefühl mit Sprachwissenschaften zu verwechseln.

Mir ist es absolut unverständlich, warum nichtmehr in BASIC gelehrt wird. Das Sprachgefühl ist nämlich ein sehr guter Einstieg darin, die Struktur von Code zu erkennen. (Ein Jump hier, eine Zuweisung da, und schon läuft das Ganze.)
Mit BASIC kann man Programmieren auch einem Grundschüler beibringen.

Anfänglich spielerisch, mit learning by doing, später kann man ja auf eine ernsthafte Sprache umsteigen.

Antworten
Sonja

Ich kann jetzt nur versuchen zu beschreiben, was in meinem Hirn vorgeht, wenn ich eine Programmiersprache lerne oder code. Zur Zeit lerne ich Python, kann aber schon Fortran, Pascal und Java. (Man sieht, ich bin schon etwas älter.) Andere Menschen ticken vielleicht anders.

Beim Erlernen fühlt es sich nicht wie eine Sprache an, ich habe eher Wegpunkte und verzweigte Pfade vor dem inneren Auge. Die Codewörter bzw. -Zeichen (if, while, = usw.) sind nicht als Vokabeln (wenn, solange, gleich usw.), sondern als objektartige Elemente zuzüglich entsprechender Vorstellungen von Pfaden oder Handlungen in meinem Hirn abgespeichert. Das könnten genauso gut Ornamente oder bunte Sternchen sein.

Auch das Lesen fühlt sich nicht wie das Übersetzen eines fremdsprachlichen Textes an, eher wie ein wortloses Wahrnehmen von Sinn und Struktur. Wie wandern nach Gefühl, oder wie das Lesen chinesischer Schriftzeichen, wo ohne geistige oder stimmliche Lautbildung der Sinn bei mir direkt im Hirn aufploppt.

Beim Coden habe ich eher eine Art Landkarte vor dem inneren Auge als einen zu buchstabierenden Text.
Das hat auch nichts mit stringent herleitender Mathematik/Logik zu tun (wenn – dann), sondern mehr mit intuitivem Ausprobieren von Wegen.

Wenn ich englisch träume, träume ich gesprochene Worte. Wenn ich Java träume, sieht es aus wie ein Netzwerkdiagramm.

Antworten
Peter Fidler

Sonja, der letzte Satz in Deinem Kommentar ist sehr interessant. Darauf aufbauend könnte man weitreichende Erkenntnisse in der Forschung erlangen.
Bin ohnehin der Ansicht, dass in die Hirnforschung zu wenig investiert wird.

Antworten
Ray

Ich kann von meinen Erfahrungen berichten.

Bin vor einigen Jahren von Programmiererung auf Journalist/Buchautor umgestiegen.

In der ersten Zeit hatte ich nach längeren Programmiersessions Probleme, vernünftige Sätze aufs Papier zu bringen. Inzwischen kann ich zwar zwischen Coden und Schreiben problemlos wechseln, habe aber das Gefühl, dass die Qualität meiner Texte nicht mehr die anfängliche Qualität erreichen.

Antworten
Simon Beyer

Für diese Erkenntnis wäre keine Studie von Nöten gewesen.
Aber heute braucht man ja für alles eine Studie. Da wurde zum Beispiel zu Beginn der Pandemie mit Verweis auf die dünne Studienlage bestritten, dass in Innenräumen von Restaurants viele Corona-Infektionen stattfinden.
Der gesunde Menschenverstand hat auch seine Daseinsberechtigung.

Antworten
Driss,Juri

Corona-19-,20,-(21,-22,-23,-24,-25,-26,-27,-28) dann kommt Jesus zum III mal
7 Jahren

Antworten
Lucas

Ich studiere derzeit Gedichte (nicht nur die Todesfuge) Paul Celans — hermetische Lyrik. Die hat mit Programmierlösungen wenig zu tun ;)
Fand aber eine Unterredung mit einem Informatiker spannend, der unsere philosophischen Probleme sofort in seine Progammiersprache umzusetzen wusste …

Antworten
Sven Ullmann

Also ich als Programmierer halte programmieren für die Strukturierung von Anweisungen an einen Rechner. Strukturierung weil es den Code nachvollziehbar macht, wie bei der OOP und Anweisungen weil das ganze strukturelle zu guter letzt dem Computer ja auch etwas zum verarbeiten geben muss.
Das kann komplex sein, muss es aber nicht. Eine interessante Aufgabe von Programmierern ist z.B. auch, diese Komplexität zu reduzieren und dies vorrangig mit sprachlichen Mitteln.

Antworten
Dev

Also ich als Dev seit 25+ Jahren würde es eher so beschreiben:
Es hat meist wenig mit Mathematik zu tun und wenn, dann eher bei speziellen Problemen wendet man diese zur Analyse und Wegfindung an.
Noch weniger hat das mit Sprachbegabung zu tun, denn quasi jede „Syntax“ folgt einen ähnlichen Schema.
Daher ist der Umstieg auf andere Sprachen auch meist oft schnell lernbar, wobei hierbei eher das neue Framework die Herausforderung ist.

Wenn ich das mit irgendwas vergleichen wollte, dann eher mit komplexer Orientierungs-/Navigationsfähigkeit.
Hier mal spielerisch Beispielhaft:
Halte an der nächsten Kreuzung wenn die Ampel rot ist. Warte auf grün, biege rechts ab, suche dir ein Parkplatz und hupe 1 mal. War die Ampel zum Zeitpunkt grün, dann fahre gerade aus weiter zum Kreisel.
Umfahre den Kreisel solange bis du ein blaues Auto siehst, dann fahre die nächste Abfahrt raus, suche ein Parkplatz und hupe 2 mal. Solltest du beim Umfahren des Kreisels ein rotes Auto sehen, dann fahre die übernächste Abfahrt raus, suche nach maximal 50 Metern einen Parkplatz und hupe 3 mal. Sollte das nicht möglich sein weil kein Parkplatz vorhanden, dann wende und fahre zurück in den Kreisel. :-)

Antworten
Sonja

Ja, genau. Dieses Navigieren auf dem Programmablauf kenne auch. Ich „sehe“ einerseits den ganzen „Stadtplan“ im Groben, mit den API-Autobahnzubringern, andererseits verfolge ich im Detail mögliche Wege und Sackgassen, Steckenbleiben in Endlosschleifen, unerreichbare Stellen, fehlerhafte Referenzen… Ich schätze, die dabei heißlaufenden Hirnareale sind die für räumliche Orientierung und Bildvorstellung. Sprachen fühlen sich vollkommen anders an, irgendwie viel linearer. Bei mathematischen Beweisen, wo man durch Zusammenhänge und Fallunterscheidungen navigieren muss, brauche ich ebenfalls diese Orientierungsarbeit. Aber da denke ich, dass nicht die Mathematik zu besserem Programmieren führt, sondern umgekehrt. Durch Programmieren lernt man, Wege und Strukturen zu finden, und präzise zu formulieren.

Die Syntax von Programmiersprachen ist nicht vergleichbar mit der Grammatik einer Sprache für Kommunikationszwecke unter Menschen. Eher mit komplexen Symbolen, die das Ziel, einer Maschine eine Funktion zu entlocken, in normierte Form bringen. Eigentlich könnte man sogar auf Pseudosprache (if, while usw.) ganz verzichten, und stattdessen alles mittels Grafikelementen zusammenklicken, und im Hintergrund übersetzt der Compiler das Bild in Bitcode.
Nach dem Umstieg von Java auf Python vergaß ich zu Anfang regelmäßig den Doppelpunkt bei Blockanweisungen. Mein Mann meinte spaßeshalber: „Damit der Zauberspruch funktioniert, musst du dich _genau_ ans Ritual halten, sonst tut der Golem nicht, was du willst.“ Hihi, so isses.

Antworten

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige