Ein altes Sprichwort, an das sich viele Programmierer halten, lautet: "Es erfordert einen bestimmten Verstand, das Programmieren zu lernen, und nicht jeder kann es."
Jetzt bin ich sicher, dass wir alle unsere eigenen anekdotischen Beweise haben, aber wurde dies wissenschaftlich untersucht?
case-studies
System aus
quelle
quelle
Antworten:
Eine andere Studie, Untersuchung der Lebensfähigkeit von mentalen Modellen, die von unerfahrenen Programmierern gehalten werden :
Siehe auch spätere Forschungen von denselben Autoren der Studie Sheep vs Goats (die, um genau zu sein, nie veröffentlicht wurde). Ihre letzte und jüngste Studie zu diesem Thema aus dem Jahr 2009 ist eine Meta-Analyse der Auswirkungen von Konsistenz auf den Erfolg beim frühen Erlernen der Programmierung (pdf).
quelle
Ja, es gibt eine ziemlich berühmte Online-Zeitung, die mehr oder weniger bestimmen soll, wer ein Programmierer sein soll.
Eine kognitive Studie zum frühen Lernen des Programmierens - Prof. Richard Bornat, Dr. Ray Adams
Hier ist ein Blog-Beitrag von Jeff Atwood , der die Ergebnisse interpretiert und einige Dinge in einen Kontext stellt.
quelle
Jeder kann Programmierer sein. Überlegen Sie, wie einfach es ist, Tabellen zu erfassen. Überlegen Sie, wie leicht Alan Kay Kindern das Programmieren anhand von Experimenten und Erkundungen in einer programmierbaren Umgebung näher bringt.
Die Teilnehmer können in Kursen auf College-Ebene erfolgreich studieren und zu dem Schluss kommen, dass "einige Teilnehmer nicht in der Lage sind, Programmieren zu lernen". Eine solche Schlussfolgerung überschreitet jedoch die Grenzen der beobachteten Beweise erheblich. Wie viel Fehler könnte stattdessen darauf zurückgeführt werden, wie die Programmierung vermittelt wird (zu abstrakt?) Oder welcher Programmierstil vermittelt wird (zu zwingend?) Oder auf die Programmierumgebung (Zusammenstellung, keine unmittelbare Rückmeldung?).
Es versteht sich von selbst, dass Menschen Abstraktionen am schnellsten erfassen, nachdem sie bereits mit mehreren konkreten Instanzen gearbeitet haben - dh dass wir etwas erst lernen können, wenn wir es fast schon wissen. Mit der Zusammenfassung zu beginnen, ist daher eine völlig dumme Art, Programmierung zu lehren. Viele Menschen, die über vorgefasste "mentale Modelle" stolpern, würden gedeihen, wenn sie in einer konkreteren Umgebung mit Echtzeit-Feedback unterrichtet würden (z. B. in der Kahn-Akademie für CS ) und dann ermutigt würden, die Leiter der Abstraktion zu erklimmen, wenn sie dazu bereit sind. Learnable Programming ist ein neuer Aufsatz von Bret Victor, der auf unnötige Umweltprobleme aufmerksam macht, mit denen Programmierer beim Lernen konfrontiert sind.
In einigen Fällen sind es die Schüler, die ihren Unterricht nicht bestehen. Intellektuelle Faulheit und vorsätzliche Ignoranz wird in jeder großen Gruppe von Menschen existieren. Kluge Köpfe sind keine Ausnahme, wie jeder bezeugen kann, der mit einer brillanten Kurbel argumentiert hat. Vor allem in den Bereichen Programmierung und Mathematik scheitern die Schüler jedoch häufig am Unterricht.
quelle
x = 1; y = x;
und die Frage ist: " Was sind die Werte vonx
undy
? "Is it true that not everyone can learn how to program?
Zeile aus der Frage entfernt, unsere erfahreneren Mitglieder haben sie ignoriert und festgestellt, dass sie nicht unseren Richtlinien entspricht, und ihre Antworten auf die forschenden / wissenschaftlichen Aspekte der Frage konzentriert. Könnten Sie bitte das Gleiche tun?Vielleicht ist das eine Anekdote, aber als ich ein paar hundert Studenten der Freien Künste in Intro-Programmierung unterrichtete, fand ich keinen solchen "Doppelhöcker". Es schien mir, dass sie alle ziemlich fähig waren, obwohl einige härter arbeiteten als andere, und sehr wenige versuchten, sich ihren Weg zu bahnen.
Vieles hat damit zu tun, wie es gelehrt wird.
Vieles hat auch mit Begierde zu tun - manche finden das Programmieren gar nicht interessant. Aber trotzdem können sie es lernen, wenn sie sich ehrlich anstrengen.
quelle
Als ich anfing, war es üblich, einen "Eignungstest" zu absolvieren, bevor man einen Programmierjob bekam. Es gab nicht so viele Informatikabsolventen, daher war es üblich, Mitarbeiter aus anderen Disziplinen einzustellen.
Die Tests ähnelten denen, die Sie bei IQ- Tests sehen (wie lautet die nächste Nummer in der Sequenz usw.).
Der anekdotische Beweis war, dass nicht jeder, der den Test bestand, ein guter Programmierer wurde, aber keiner, der den Test nicht bestand, sondern aus anderen Gründen eingestellt wurde, jemals ein guter Programmierer wurde.
Leider haben HR-Drohnen diese Tests nicht verstanden (und sind fehlgeschlagen, als sie sie absolviert haben!). Daher hängt die Rekrutierung heutzutage von den Dingen ab, die HR-Drohnen verstehen - gute College-, Kommunikations- und Anzugfähigkeiten.
Dies ist so ziemlich der Grund, warum große IT-Abteilungen viele Leute haben, die sich hervorragend mit PowerPoint-Shows auskennen, und nur sehr wenige gute Programmierer.
quelle
Für diejenigen, die die Doppelhöcker- oder Ziegen-gegen-Schaf-Studie von Dehnadi und Bornat zitieren, lohnt es sich, mentale Modelle und Programmierfähigkeiten von Caspersen et al. (2007) zu prüfen, in denen sie versuchen, diese zu replizieren:
quelle
Man kann Studien über Abstraktionskapazitäten oder andere nützliche Kenntnisse anstellen, aber die Definition der Programmierung ist unklar, und ich halte das Zitat für irrelevant, da es unterschiedliche Sichtweisen auf die Programmierung gibt:
Die erste Art: Programmiersprachen sind (oder sollten) eine Art menschliche Sprache, die eine Aufgabe beschreibt, die der Computer ausführen soll, sodass jeder, der spricht, programmieren kann. Es heißt Scripting, BASIC, das Schriftsatzsystem TeX , etc ... Die Sprache oder das System spielen keine Rolle, es ist die Art und Weise, wie ihre Schöpfer und Leute es sahen: "Liebes Programm / Computer, bitte drucke meinen Namen aus" , anstatt Msgstr "Gib mir einen Speicherplatz von der Größe von elf Zeichen, dann gib mir die Adresse dieses Speicherplatzes, dann lass mich ihn speichern und gib dann elf Zeichen in diesen Speicher ein, den du aus meinem Tastaturpuffer entnehmen kannst (aber vergiss nicht, ihn zu löschen , usw."
In diesem Fall ist klar, dass die Studie eher "Nicht jede Sprache kann schnell assimiliert werden?" Lautet.
Andererseits sind Programmiersprachen nur eine Möglichkeit zu beschreiben, wie ein Computer funktioniert oder wie er funktionieren sollte, wie er verbunden sein sollte, wenn Sie an Computer aus den 1950er Jahren denken. Daher kann der Programmierer nichts tun, auch wenn er die Programmiersprache perfekt „spricht“, wenn seine Intelligenz diese Abstraktionsebene nicht erreichen kann, auf der Bytes im Speicher gespeichert werden, Zeichenfolgen als Zeiger usw. und dann Gehe zurück zur Erde, um sie mit dem Problem zu verbinden. Daher kann nicht jeder Mensch programmieren (in Assemblersprache ...).
Abgesehen davon benötigen Sie alle Qualitäten, die zum Arbeiten und Produzieren von etwas erforderlich sind: Sie müssen genau wissen, was Sie wollen, es anderen leicht machen, Ihre Ziele zu verstehen / zu vervollständigen / zu überprüfen, sich auf Ihre Ziele zu konzentrieren usw. ... Aber genau wie ein Architekt, ein Schriftsteller, ein Musiker, eine Prostituierte ... aehh Prothese, etc.
Aber die meisten Menschen haben gute Abstraktionsfähigkeiten, insbesondere Kinder. Einige deutsche Schulen unterrichten Haskell für Jugendliche (Programmiersprachen wie Pascal oder Delphi werden in jeder deutschen Schule unterrichtet).
Daher würde ich sagen, dass die Frage sehr schwer zu beantworten ist und dass jede Antwort (oder Studie) wahrscheinlich irrelevant ist.
In dem Artikel Teach Yourself Programming in Ten Years von Peter Norvig finden Sie eine sehr kurze Analyse, wie Menschen Programmieren lernen . Er scheint zu glauben, dass es keinen geborenen Programmierer gibt.
quelle
Vor vielen Jahren habe ich mehrere Kurse mit militärischer Führungstheorie absolviert. Ein Teil der Theorie war, dass es ein Führungskontinuum gibt, von denen, die natürliche Führer sind, bis zu denen, die einen Hund nicht an der Leine führen können. Die Idee war, dass die Menschen auf diesem Führungskontinuum in einer Glockenkurve verteilt waren, wobei sich die meisten Menschen irgendwo zwischen den beiden Extremen befanden. Abgesehen von den wenigen am äußersten Ende, die "keinen Hund führen konnten", konnte fast jedem die Kunst des Führens beigebracht werden. Der Aufwand, jemanden zum Anführer zu machen, hing davon ab, wo er auf dem Kontinuum saß.
Ich vermute, die Programmierung hat ein ähnliches Kontinuum und eine ähnliche Verteilung. Es wird solche geben, die es mühelos schaffen, und solche, die es niemals schaffen könnten, wenn ihr Leben davon abhängt. Aber sie sind die wenigen am Ende der Glockenkurve. Die meisten Menschen sitzen zwischen diesen Extremen im Kontinuum. Sie können programmieren lernen, aber der Aufwand für das Unterrichten hängt davon ab, wo auf dem Kontinuum sie sitzen.
quelle
Ich bin mir nicht sicher, ob es nur Programmierung ist. Ich sah das gleiche Phänomen, als die Leute einfach lernten, mit Computern umzugehen. Zurück am College war ich Laborassistent in einem Labor, in dem Computerkenntnisse für Senioren vermittelt wurden.
Innerhalb von zwei Wochen konnte ich diejenigen identifizieren, die es bekamen, und diejenigen, die es nicht bekamen, mit im Grunde 100% iger Genauigkeit. Sie haben entweder akzeptiert, dass der Computer so funktioniert, oder Sie haben Ihren Kopf für die gesamte Klasse dagegen geschlagen. Es gab keinen Mittelweg. (Die Tatsache, dass es sich um eine Seniorenklasse handelte, bedeutete, dass wir viele Headbeater hatten, was das Muster viel offensichtlicher machte.)
quelle