Welche Features sind in einer Programmiersprache für junge Anfänger wichtig? [geschlossen]

8

Ich habe mit einigen der Mentoren in einem lokalen Roboterwettbewerb für Kinder im 7. und 8. Level gesprochen. Der Roboter benutzte PBASIC und den Parallax Basic Stamp. Eines der Hauptprobleme war, dass es sich um ein kurzfristiges Projekt handelte, das den Bau des Roboters erforderte und ihnen beibrachte, in PBASIC zu programmieren und sie den Roboter programmieren zu lassen. Alles in nur 2 Stunden oder so pro Woche über ein paar Monate. PBASIC ist ein bisschen nett, weil es eingebaute Funktionen hat, um alles zu tun, aber Informationsüberlastung ist möglich, um dies zu erreichen.

Mein Gedanke ist Einfachheit ist der Schlüssel.

Wenn Sie Kinder haben, die sich bemühen zu begreifen:

%Vor%

Es macht nicht viel Sinn, "richtige" objektorientierte Programmierung auf sie zu werfen.

Was sind die Grundlagen, um das Interesse an der Programmierung zu fördern?

Bearbeiten : Ich mag den Begriff der Interpretation auf dem PC als Lernwerkzeug. Da die Zielplattformen höchstwahrscheinlich etwas restriktiv sind, möchte ich auf Sprachen zielen, die für eingebettete Arbeit geeignet sind. (Python und sogar Lua benötigen mehr Ressourcen als das Ziel wahrscheinlich hat. Und ich mag Lua irgendwie.) Ich nehme an, das ist eine der wenigen Tugenden, die BASIC hat, wurde auf Systemen mit weniger als 4K seit über 30 Jahren ausgeführt. C ist möglicherweise keine schlechte Option, wenn einige "freundliche" Werkzeuge wie Ch. Verfügbar sind.

    
NoMoreZealots 25.03.2010, 19:10
quelle

14 Antworten

11

Das Wichtigste ist nicht viel Kesselplatte, um den einfachsten Programmlauf zu machen.

Wenn Sie mit einer Menge

anfangen %Vor%

Und sag ihnen, dass sie "sich keine Sorgen machen sollen, dass sie das nicht verstehen sollen" - du wirst sowohl die hellsten als auch die dümmsten ablegen.

Das Schöne an Python ist, dass "Hallo Welt" gedruckt wird "Hallo Welt"

    
Martin Beckett 25.03.2010 19:15
quelle
7

Spaß, schnelle Ergebnisse. Erfassen Sie die Aufmerksamkeitsspanne des Kindes.

Interpretieren Shells wie die meisten Skriptsprachen bieten (Kommandozeile), dass der Schüler nur 1 oder 2 Liner schreiben ist eine große Sache.

python:

%Vor%

Boom, sofortige Rückmeldung, Kind denkt "der Computer spricht zurück". Kinder lieben das. Erinnerst du dich an Eliza , irgendjemand?

Wenn sie bei der Installation einer IDE festsitzen und ein Projekt erstellen, bläh blah bleh, manchmal führen die Tangenten Sie vom Hauptthema weg.

BASIC ist auch gut.

Suchen Sie einige Dinge online wie "SIMPLE": Ссылка

    
codenheim 25.03.2010 19:16
quelle
5
  

Wenn Sie Kinder haben, die sich bemühen zu begreifen:

     

if X>10 then <DOSOMETHING>

Vielleicht ist es ein Zeichen, dass sie nicht programmieren sollten?

  

Was sind die Grundlagen, um das Interesse an der Programmierung zu fördern?

Erfolg ohne oder mit wenig Aufwand zu sehen. Um etwas zu erstellen, das in wenigen Minuten läuft. Viele Programmiersprachen können es bieten, einschließlich der gruseligen C ++.

Um Komplikationen bei #includes, mehreren Quelldateien, Modularisierung und Kompilierung zu vermeiden, schauen Sie sich woanders um? Versuchen Sie, einige Excel-Makros zu schreiben oder irgendeine andere Software mit einer grundlegenden integrierten Skriptsprache zu verwenden, um bestimmte Aufgaben zu automatisieren?

Eine andere Idee könnte sein, mit Webseiten zu spielen. Es ist nicht gerade Programmieren, aber zumindest leicht, etwas zu erreichen und anderen mit Stolz zu zeigen.

    
user151323 25.03.2010 19:15
quelle
5

Ein Team von Forschern , beginnend bei Rice, dann ausgebreitet nach Brown, Chicago, Nordosten, Nordwesten und Utah, studiere diese Frage seit etwa 15 Jahren. Ich kann hier nicht alle ihre Entdeckungen zusammenfassen, aber hier sind einige ihrer wichtigsten Erkenntnisse:

  • Unregelmäßige Syntax kann eine Eintrittsbarriere sein.

  • Die Sprache sollte in konzentrische Teilmengen unterteilt werden, und Sie sollten eine Teilmenge auswählen, die dem Kenntnisstand des Schülers entspricht. Zum Beispiel wird ihre kleinste Teilmenge die Sprache "Beginning Student" genannt.

  • Die Fehlermeldungen des Compilers sollten dem Wissensstand der Studenten entsprechen. Wenn Sie Teilmengen verwenden, können unterschiedliche Teilmengen unterschiedliche Meldungen für denselben Fehler enthalten.

  • Anfängern fällt es schwer, die Phasendifferenzierung zu lernen: separate Phasen für Typprüfung und Laufzeit mit verschiedenen Arten von Fehlern. Aus diesem Grund sind Anfänger besser mit einer Sprache vertraut, in der Typen zur Laufzeit überprüft werden, d. H. Eine dynamisch typisierte Sprache.

  • Anfänger finden es schwierig, über veränderbare Variablen und veränderbare Objekte nachzudenken. Wenn Sie dagegen reine funktionale Programmierung lehren, können Sie die Erfahrung der Schüler mit der Algebra der Oberstufe und der Mittelschule nutzen.

  • Anfänger sind eher an einer interaktiven Programmierumgebung interessiert als am alten edit-compile-link-go-Modell.

  • Anfänger werden von Splash und Interaktivität angesprochen. Es ist gut, wenn die Standardbibliothek Ihrer Sprache integrierte Unterstützung für das Erstellen und Anzeigen von Bildern bietet. Es ist besser, wenn diese Bilder in der interaktiven Programmierumgebung unterstützt werden, anstatt einen separaten Player oder Viewer zu benötigen. Und es ist noch besser, wenn Ihre Standardbibliothek bewegte Bilder oder eine andere Art von Animation unterstützt.

    Interessanterweise haben sie sehr gute Ergebnisse mit nur 2D-Bildern. Obwohl wir alle von Beispielen der 3D-Computergrafik umgeben sind, scheinen die Schüler sehr beschäftigt zu sein, wenn sie nur mit zweidimensionalen Bildern arbeiten.

Diese Ergebnisse wurden in erster Linie mit College-Studenten erzielt, und sie wurden an über 20 Universitäten wiederholt. Das Forschungsteam hat jedoch auch mit Schülern der Sekundar- und Mittelschule gearbeitet. Die ersten Papiere zu dieser Arbeit kommen gerade heraus, daher bin ich mir der neuen Erkenntnisse weniger bewusst und kann sie nicht zusammenfassen.

    
Norman Ramsey 25.03.2010 22:11
quelle
2

Dies wurde schon vorher auf SO gesagt, aber ... versuchen Sie Scratch . Es ist ein unglaubliches Lernwerkzeug für Kinder. Es vermittelt handlungs- und sprachunabhängig die Grundlagen von Programmierkonzepten. Nach ein bisschen Herumspielen können sie sich darauf konzentrieren, die Umsetzung der Konzepte, die sie bereits verstehen, in einer bestimmten Sprache zu lernen.

    
froadie 25.03.2010 19:14
quelle
2

Das gemeinsame Thema in Sprachen, die für Anfänger leicht sind - besonders für Kinder - ist, dass es nur sehr wenig Eintrittsbarrieren und unmittelbare Rückmeldungen gibt. Wenn "hello world" nicht sehr nach print "Hello, world!" aussieht, wird es für die Leute schwerer werden, sich anzumelden. Die folgenden Merkmale in dieser Richtung kommen mir in den Sinn:

  • Interpretiert oder inkrementell JIT kompiliert (was für den Benutzer wie ein Interpreter aussieht)
  • Kein Textbaustein
  • Kein Versuch, einen bestimmten Programmierstil zu erzwingen (z. B. Java, das erfordert, dass alles in einer Klassendefinition ist, oder Haskell, das rein funktionales Design durchsetzt) ​​
  • Dynamische Eingabe
  • Implizite Nötigung (vielleicht)
  • Eine REPL
Zak 25.03.2010 19:22
quelle
1

Brechen Sie das Problem (lesen Sie Programm) in eine kleine Reihe von Abschnitten (Module), die eine Sache tun und es sehr gut machen.

    
Jeff 25.03.2010 19:13
quelle
1

Du musst sie dazu bringen, dass sie aufhören wie ein Benutzer zu denken und wie ein Programmierer zu denken. Sie müssen es einen Schritt nach dem anderen machen. Fragen Sie sie, woran sie denken müssen, um das Problem selbst zu erkennen und schreiben Sie sie dann als Schritte auf. Wenn du kannst, dann kannst du jeden Schritt noch mehr in derselben Materie brechen. Wenn Sie fertig sind, werden Sie das Programm auf Englisch haben, was es einfacher macht, für real zu programmieren.

Ich habe das mit einem Freund gemacht, der es einfach nicht verstanden hat und jetzt kann er es. Er schaute sich etwas an, was ich tat und war verwirrt, und ich würde sagen, dass er komplexere Sachen gemacht hat als das.

    
Jonathan Czitkovics 25.03.2010 19:18
quelle
1

Eines der beständigeren Argumente, die ich mit anderen Programmierern hatte, ist, ob die erste Sprache explizite Typsprachen erfordert oder nicht. Viele sind der Meinung, dass das Erlernen einer Sprache, in der Sie explizit Typinformationen deklarieren müssen, Ihnen hilft, typvoll zu programmieren. Umgekehrt kann man sagen, dass dynamische Sprachen eine weniger anspruchsvolle Lernkurve darstellen. Es geht in beide Richtungen, nehme ich an.

    
yonkeltron 25.03.2010 19:56
quelle
0

Mein Rat: Beginnen Sie mit einem einfachen Modell, wie ein Computer funktioniert. Ich bin besonders daran Stapelmaschinen als gute Werkzeuge zum Unterrichten von Berechnungen.

    
cdiggins 25.03.2010 19:18
quelle
0

Denken Sie daran, dass Anfänger zwei Disziplinen gleichzeitig lernen: wie Computer arbeiten und die abstrakte Logik (die Grundlagen der Informatik), plus wie man Programme schreibt, die ihrer beabsichtigten Logik entsprechen (lernen eine spezifische Sprache Syntax und Idiome) . Sie müssen beide Anliegen in einer verwobenen Weise angehen, damit die Schüler schnell wirksam werden. Dies ist auch der Grund, warum erfahrene Programmierer oft schnell neue Sprachen aufnehmen können.

Es ist erwähnenswert, dass Python aus einem Projekt für eine Sprache mit dem Namen ABC hervorgegangen ist Anfänger. Zum Beispiel ist der erforderliche Doppelpunkt nicht strikt benötigt , wurde aber zur Verbesserung der Lesbarkeit gefunden:

%Vor%     
Roger Pate 25.03.2010 19:21
quelle
0

Ich habe drei Wörter: Karel der Roboter. Es ist eine wirklich sehr einfache "Sprache", die entwickelt wurde, um Menschen die Grundlagen der Programmierung beizubringen:

Suche es im Internet. Sie können sich das ansehen, obwohl ich es nie ausprobiert habe: Ссылка

    
David Brunelle 25.03.2010 19:26
quelle
0

Obwohl dies nicht mit der Programmierung eines Roboters zu tun hat, denke ich, dass Web-Programmierung ein großartiger Ort ist, um mit Kindern im Alter zu beginnen. So habe ich in genau diesem Alter angefangen. Es übersetzt leicht zu etwas, das Kinder verstehen, wenn sie das Netz überhaupt benutzen. Beginnen Sie mit HTML, werfen Sie Javascript ein, und bald möchten Sie Funktionen ausführen, die serverseitiges Scripting oder ähnliches erfordern, und von dort gehen die Dinge weiter.

Bei den Kindern, die sich schon für Robotik interessieren, würde ich mich für eine andere Sprache wie die bereits beschriebenen entscheiden. Wenn Sie in einem Bereich wie Robotik arbeiten wollen, müssen Sie nicht davon überzeugt sein, etwas Schweres zu versuchen. Sie müssen herausgefordert werden.

    
justkt 25.03.2010 19:29
quelle
0

Vor ein paar Jahren habe ich eine Präsentation bei Ignite gesehen! Seattle von einem der Leute, die an dem Projekt arbeiten, jetzt bekannt als Kodu , das sich als Programmiersprache für Kinder vorgestellt hat. Er verbrachte Zeit damit, darüber zu sprechen, welche allgemeinen Sprachmerkmale in einer Programmierumgebung, die Grundlagen vermitteln soll, einfach rausgeworfen werden könnten.

Viele geschätzte imperative Konstrukte, wie C-ähnliche for-Schleifen, wurden einfach zugunsten eines einfachen Objekt-Messaging-Ansatzes weggelassen. Objektorientierte Programmierung ist nicht schwer zu verstehen, wenn man an "Objekte" und "Nachrichten" denkt; Der schwierige Teil ist, wenn Sie sich mit Dingen beschäftigen, die Programmierer, aber nicht Kinder, interessieren, wie Erbschaften und Verträge und weitreichende Abstraktionen. Ich habe dieses Ding (Substantiv), handle jetzt darauf (Verb), auf diese Weise (Adverb wie schnell), wenn Ding (sieht / stößt in etwas) (mit etwas Attribut) (das ist dein wenn). Ereignisse sind wirklich Bedingungen und haben alle die Macht von Bedingungen, aber es ist die Laufzeit, um festzustellen, wann diese Ereignisse eintreten.

Diese Art von ereignis- und messaging-basiertem Ansatz würde sich wahrscheinlich noch besser auf Roboter übertragen lassen als prozedurale Programmierung ohnehin, also könnte es ein guter Weg sein, das Problem zu betrachten. Versuchen Sie nicht darüber nachzudenken, was Sie "wissen" müssten, um in C oder Pascal oder etwas zu programmieren; Denk darüber nach, was du in der Lage sein möchtest, etwas zu tun.

    
JasonTrue 25.03.2010 19:49
quelle

Tags und Links