Ich bin daran interessiert, Mittelschülern Programmieren beizubringen. Ich möchte eine Programmiersprache mit folgenden Kriterien:
- Einfach - auf das absolute Minimum reduziert, um anspruchsvolle Programmierung ohne zu viel Code zu unterstützen. Daher interessiere ich mich für diese Sprache nicht für Zeiger und bin der Objektorientierung überdrüssig (obwohl die Funktionen gut sind).
- Leistungsstark - Ich möchte Elemente des 21. Jahrhunderts programmieren können, darunter Grafiken, Netzwerke und verteilte Verarbeitung.
- Debuggable - Ich hätte gerne eine elegante integrierte Entwicklungsumgebung mit einem für Menschen lesbaren Debugger (dh keine seltsame Fehlermeldung mit einem Stack-Trace, sondern eine klare Erklärung, anhand derer ein durchschnittlicher Mittelschüler feststellen kann, was mit dem Code nicht stimmt). .
Die Standardprogrammiersprachen (C, C ++, C #, Java) erfüllen das erste Kriterium nicht. Grundlegende Programmiersprachen wie Scratch erfüllen das zweite (und möglicherweise dritte) Kriterium nicht. Skriptsprachen (Perl, Python, PHP) erfüllen das letzte Kriterium nicht.
Ich würde gerne wissen, ob jemand von so einem Biest weiß, bevor ich mich hinsetze, um es selbst zu erfinden.
programming-languages
education
Ari Trachtenberg
quelle
quelle
Antworten:
Ich empfehle Javascipt.
quelle
Sie sollten sich vielleicht Racket ansehen (formal bekannt als Scheme, eine Ableitung von Lisp). Es ist die Sprache, die CS-Studenten im ersten Jahr an meiner Universität beigebracht wird. Da es sich um eine funktionale Programmiersprache handelt, sind die Syntax und die Konzepte im Vergleich zu C / C ++ recht einfach. Es gibt mehrere Bibliotheken, die einige grundlegende Zeichen- oder Netzwerkfunktionen ausführen können, und Dr. Racket als verschiedene Debugging-Funktionen ... einschließlich eines Steppers ( dh es wird jeweils eine Ersetzung angezeigt und durchgeführt, wenn Sie auf die Schaltfläche "Weiter" klicken. Ich denke, dass es sich lohnen könnte, einen Blick darauf zu werfen : http://racket-lang.org/ . Es hat einige andere Funktionen, die Ihnen gefallen könnten, wie z. B. Unterrichtsmodule (Anfänger, Mittelstufe, Fortgeschrittene, Vollschüler) und ziemlich gute Dokumentationen und Beispiele. Das Buch: How To Design Program ( http: //www.htdp.) ist eine großartige Referenz für diese Sprache, die einige schöne Beispiele für einige der oben genannten Bibliotheken enthält.
quelle
Wenn Sie entscheiden, dass Python für Sie funktioniert, würde ich mir die Jython-Umgebung für Studenten (JES) ansehen. Es gibt einige raffinierte Debugging-Tools, darunter einen "Watcher", mit dem Sie Variablen auswählen können, die überwacht werden sollen. Sie können die Schritte steuern oder schnell loslassen. Ich habe diese IDE bei Lernenden im mittleren Schulalter in einem Sommerprogramm erfolgreich eingesetzt, aber ich verwende sie auch in einem Einführungskurs auf Universitätsniveau. Auch die Medienberechnungsbibliotheken machen Spaß. Die Studenten in meinen Kursen haben es genossen, Bilder und Töne zu bearbeiten. Es gibt auch Unterstützung für das Erstellen von Animationen.
Ich habe es nicht für die Vernetzung und verteilte Verarbeitung verwendet. Das Lehrbuch zur Medienberechnung von Guzdial und Ericson enthält Beispiele für Themen wie Datenbanken und funktionale Programmierung, einschließlich Verfahren höherer Ordnung. Sie können in JES normale Python-Aufgaben ausführen, es bietet jedoch zusätzliche Unterstützung für Medienaufgaben.
quelle
Sie sollten wahrscheinlich Visual Basic verwenden. Es ist ganz einfach, Sie können die Kontaktlistenanwendung zusammen mit einigen einfachen GUI-Spielen leicht erstellen. Sie können es auch debuggen. Wenn Ihre Schule bereit ist, den Teig auszuteilen, können Sie ein Dreamspark- Abonnement erhalten. Ich denke, es wird die Aufmerksamkeit der Schüler auf sich ziehen.
quelle
Python ist eine "fast Pseudocode" -Sprache, die leistungsfähig genug ist, um "echte" Programmierung durchzuführen (die meisten Verwaltungstools in z. B. Fedora Linux sind in Python geschrieben). Sie verfügt über einfach zu verwendende Erweiterungen für Grafik- / Grafikschnittstellen und kann große Funktionen verarbeiten numerische Probleme (Leute verwenden NumPy dafür), viel Webprogrammierung wird darin durchgeführt, mehrere Programme verwenden es als Erweiterungssprache. Es gibt eine umfangreiche Bibliothek und viele größere Systeme, die in / für sie geschrieben wurden. Es ist also keine Spielzeugsprache, es ist später nützlich, sie zu lernen.
Schauen Sie sich die Homepage an , es gibt ausgereifte Implementierungen für fast jede Plattform, die Sie interessieren könnten. Es ist kostenlos (nicht nur null Kosten). Es ist eine umfangreiche Dokumentation verfügbar, eine Google-Suche nach "Python-Tutorial" liefert Millionen von Treffern. Ein praktisches Web-Tutorial ist Learn Python . Für einen Einführungskurs in die Programmierung mit Python sollten Sie Downeys Think Python in Betracht ziehen .
quelle
Sie schließen vom MIT entwickelte Kratzer aus , die einige der Kriterien grob zu erfüllen scheinen. Jedenfalls gibt es hier zwei neuere Sprachen, die eine Überlegung wert sind.
Gehen Sie mit Google. Entwickelt für eine schnelle Kompilierung. Hier sind die Designziele
Swift von Apple für die mobile Entwicklung. entwickelt, um eine weniger komplexe Alternative zu Apples Ziel C zu sein.
node.js ist neuer und wurde im Wesentlichen entwickelt, um die Funktionen von Javascript auf die Serverseite zu erweitern und Netzwerkfunktionen einzuschließen.
quelle
Hast du dir Newspeak angesehen? Newspeak ist eine moderne Variante von Smalltalk. Also ja, es ist objektorientiert, aber eher im Sinne von Alan Kay als im Sinne von Simula 67.
Wenn ich jedoch der Mittelschule Programmieren beibringe, würde ich die Debugger-Anforderung aufgeben und etwas mehr wie Haskell unterrichten.
quelle