Heim  >  Artikel  >  Java  >  Wie führt man einen unerfahrenen Programmierer in das Programmieren ein?

Wie führt man einen unerfahrenen Programmierer in das Programmieren ein?

伊谢尔伦
伊谢尔伦Original
2016-11-26 10:50:441051Durchsuche

Java lernen, sagen alle, es sei einfach.

Als Student, der gerade sein Informatikstudium an der University of Wisconsin-Madison abgeschlossen hat, habe ich durch einige Programmierkurse viele Freunde kennengelernt, die Java verwenden. Viele Schulen wechseln mittlerweile von anderen Programmiersprachen (hauptsächlich C++) zum Unterrichten von Java. Eine im Juli 2014 durchgeführte Studie zeigte, dass zum Zeitpunkt der Umfrage 22 der 39 besten amerikanischen CS-Programme bereits Java als Einführung verwendeten Kurs.

Was unterscheidet Java also von vielen Lehrsprachen? Bei Betrachtung aller Aspekte haben wir einige Hinweise gefunden:

Die Syntax ist relativ einfach (im Vergleich zur C-Sprache und C++) und es gibt weniger Schwierigkeiten (im Vergleich zur C-Sprache und C++). Je einfacher die Syntax, desto weniger Regeln müssen Anfänger beherrschen, was für Anfänger definitiv ein Segen ist.

Im Vergleich zu einigen herkömmlichen Lehroptionen wie C und C++ ist Java weniger fehleranfällig, da viele Vorgänge automatisch überprüft werden. Wenn das Array, auf das Sie zugreifen möchten, seine Grenzen überschreitet oder eine Ausnahme mit einem Nullobjekt generiert wird, teilt Ihnen das Programm mit einem schönen Stack-Trace mit, was schief gelaufen ist und wo es schief gelaufen ist (wodurch es direkt auf die Ursache des Problems eingegrenzt wird). Datei). Im Gegensatz dazu explodiert das Programm in der C-Sprache und in C++, wenn auf einen Nullzeiger zugegriffen wird, ohne Vorwarnung wie eine Bombe, sodass Sie keine nützlichen Eingabeaufforderungsinformationen mehr haben (es sei denn, Sie führen einen Debugger aus, also müssen wir lernen, einen Debugger zu verwenden). , nur für den Fall). Und wenn die Arrays in C-Sprache und C++ die Grenze überschreiten, wird es noch tragischer, da in vielen Fällen die Werte von Array-Elementen im Speicher sogar aus unerklärlichen Gründen überschrieben werden können. Dann sind Sie fassungslos und völlig hilflos, mit diesem abstürzenden Programm umzugehen. Das ist definitiv ein Rhythmus, der einen Programmierer jede Minute in den Wahnsinn treibt!

Mit einem Garbage Collector müssen Sie den Speicher nicht selbst verwalten. Nachdem ein Objekt mit dem neuen Schlüsselwort erstellt wurde, bleibt es für immer im Speicher (sofern irgendwo darauf verwiesen wird). Und nachdem Sie dieses Objekt verwendet haben, bereinigt der Garbage Collector dieses Objekt für Sie.

Java ist in der Industrie weit verbreitet, sodass das, was wir in der Schule lernen, theoretisch direkt in reale Berufe umgesetzt werden kann. Der TIOBE-Programmierindex stuft sie als die am zweithäufigsten verwendete Programmiersprache ein. Unabhängig davon, ob Sie der genauen Analyse von TIOBE zustimmen oder nicht, müssen Sie der aktuellen Situation zustimmen, dass Java weit verbreitet ist.

Java ist objektorientiert. Sie erstellen Objekte, die Daten enthalten, und schreiben dann Methoden, um Verhaltensweisen zu beschreiben, die auf diese Daten einwirken.

Das oben Gesagte klingt so schön! Aber es ist nicht vollständig.

Umleitungsstrategie

Das erste Programm, das fast jeder Programmierer in einer beliebigen Sprache schreibt, ist „Hello World“. Alles, was es tut, ist, eine Meldung anzuzeigen (traditionell ist „Hallo Welt“ ausgewählt) und dann zu beenden, ganz einfach. Das Folgende ist ein in Java geschriebenes Hello World-Programm:

public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}

Einige Leute, die völlig neu im Programmieren sind, werden Zweifel haben, und wenn Sie dann Lehrer sind, hey, wird es Ärger geben. Der Versuch, Ihren Schülern alles auf einmal zu erklären, kann der Tropfen sein, der das Fass zum Überlaufen bringt. Daher ist es besser, einen umständlicheren Ansatz zu wählen.
„Entschuldigung, was bedeutet öffentlich?“ – Darüber müssen wir jetzt nicht nachdenken, wir werden es später genauer untersuchen.
„Was ist Unterricht?“ – Darüber müssen wir jetzt nicht nachdenken, wir werden es später ausführlich besprechen.
„Was bedeutet statisch?“ – Darüber müssen wir jetzt nicht nachdenken, wir werden es später genauer untersuchen.
…Warte, das kannst du sagen.

Aber es ist erwähnenswert, dass wir unabhängig von den gelehrten Inhalten diese in leicht verdauliche und verständliche Komponenten zerlegen sollten. Wichtige Kenntnisse wie Kapselung (öffentliches Schlüsselwort), objektorientierte Programmierung (Klasse und statisch), Arrays (String[]) und Befehlszeilenparameter (Args) sollten den Studierenden zeitnah erklärt werden. Natürlich ist es für Erstsemester, die sich noch in der Aufklärungsphase des Programmierens befinden, zu weit hergeholt zu glauben, dass sie mit einem Bissen ein großer, dicker Mann werden können. Ich kenne viele Freunde, die in anderen Bereichen definitiv führend sind, aber wenn sie auf diese Programmierkonzeptprobleme stoßen, sind sie sofort überfordert. Es ist, als ob dies plötzlich in der Algebra eingeführt würde:

Wie führt man einen unerfahrenen Programmierer in das Programmieren ein?

Sobald wir wissen, was diese Symbole bedeuten, scheint es nicht mehr so ​​schwer zu verstehen. Aber für die Studienanfänger, die gerade erst in dieses Fachgebiet einsteigen, ist dies nichts weniger als eine wortlose Bibel. Obwohl die Umwegstrategie die Schüler ermutigt und verhindert, dass sie sofort entmutigt werden, demonstriert sie aus einer anderen Perspektive nur oberflächlich einige „magische“ Ergebnisse, ohne ihre Prinzipien zu analysieren und zu erklären. Aber ich würde sagen, wenn Sie als echter Lehrer wachsen wollen, sollte dieser Ansatz völlig im Widerspruch zu Ihrer Philosophie stehen. Zum Beispiel „Hallo Welt“,

Java ist streng objektorientiert und erfordert, dass jede Funktion (oder „Methode“ im Java-Sprachgebrauch) in einer Klasse platziert wird. Wenn Sie den hervorragenden Artikel Execution in the Kingdom of Nouns noch nicht gelesen haben, empfehle ich Ihnen dringend, dies zu tun. Der Hauptinhalt lässt sich wie folgt zusammenfassen: „Die Befürwortung objektorientierter Programmierung ist wie das Anfertigen von Kleidung für Gäste.“ Es ist definitiv eine schlechte Idee, Erstsemestern, die noch verwirrt sind, wenn es um Konzepte wie if-Anweisungen und for-Schleifen geht, objektorientierte Designprinzipien zu erklären. Wir sollten uns darauf konzentrieren, die Arbeit in kleine Teile zu zerlegen, die als Funktionen geschrieben werden können, und dann kommen wir zurück zu dem, was OOP ist.

Java legt fest, dass alle Objekte in Form eines Heaps zugewiesen werden, sodass alle Objektvariablen Zeiger sind. Was Sie nun erklären müssen, ist der Unterschied zwischen Werten und Referenzen, beispielsweise warum sich Ints, Booleans und Floats bei Zuweisung und Vergleich anders verhalten als Strings. Abgeleitete Fragen wie diese bilden zusammen ein konsistentes mentales Modell, das erklärt, wie Dinge funktionieren – ein Muss für Programmierer – aber der Prozess ist äußerst mühsam.

Java mag eine wirklich tolle Programmiersprache für die Entwicklung von Programmen sein (egal wie groß oder klein), aber für Anfänger ist es definitiv nicht geeignet.

Welche Sprache sollten wir also unterrichten?

In diesem Fall fragen sich manche vielleicht: Sollte es nicht ausreichen, wenn ich zuerst ein paar einfache Konzepte lerne und dann darauf basierend Java eingehend lerne? ! Aber es tut mir leid, Java hat gesagt, dass ich das nicht kann!

Was sollen wir also tun? Die folgenden zwei sinnvollen Möglichkeiten, mit dem Programmieren zu beginnen, können Ihnen ein Gefühl der Erleuchtung vermitteln:

Beginnen Sie auf einem niedrigen Niveau und erhöhen Sie dann den Schwierigkeitsgrad Schritt für Schritt. Bringen Sie Ihnen den Umgang mit einem Computer bei, damit Sie einige einfache Programme direkt in der Sprache C schreiben können. Auf dieser Grundlage wird dann ein übergeordnetes Informatik-Struktursystem aufgebaut.

Beginnen Sie auf einem hohen Niveau und senken Sie dann den Schwierigkeitsgrad Schritt für Schritt ab. Beginnen Sie mit der Vermittlung von Informatiktheorie und einer Programmiersprache, die sehr einfach zu implementieren ist, ohne sich um die Details der zugrunde liegenden Maschine kümmern zu müssen, ist hier eine gute Wahl, da sie kein Frontloading von Java Influence erfordert. Erklären Sie dann Schritt für Schritt, wie Computer diese Theorien umsetzen.

Jetzt erfreut sich die zweite Methode immer größerer Beliebtheit, was aus der am Anfang dieses Artikels erwähnten Forschung hervorgeht – der Tatsache, dass Python Java überholt hat und zur am weitesten verbreiteten Einführungsprogrammiersprache geworden ist.

Egal für welche Methode Sie sich entscheiden, der Schlüssel liegt darin, das Interesse der Schüler aufrechtzuerhalten. Wenn Sie sich für einen Ansatz auf niedriger Ebene entscheiden, verwenden Sie ein Arduino- oder Robotik-Kit, damit die Schüler den Code, den sie schreiben, in der physischen Welt sehen können. Mit anderen Worten, als ich anfing, Code in C-Sprache für ein Robotikteam zu schreiben, war ich zutiefst fasziniert von dieser Fantasiewelt: Zu sehen, wie sich das 120 Pfund schwere Stahlrohr und der rotierende Motor aufgrund des von mir geschriebenen Codes bewegen, ist dieses Gefühl wirklich magisch und unglaublich. Wenn Sie sich für einen Ansatz auf hoher Ebene entscheiden, möchten Sie möglicherweise die Ressourcen in der Bibliothek verwenden, um ein Videospiel oder ein anderes Grafikprogramm zu erstellen.

Wie führt man einen unerfahrenen Programmierer in das Programmieren ein?

Programmieren ist unglaublich. Nichts kann Sie einschränken außer Ihrer Vorstellungskraft und Ihrer Ausdrucksfähigkeit. Finden Sie den Einstiegspunkt für die Interessen der Schüler, bringen Sie ihnen Schritt für Schritt mit Spaß bei, von leicht bis schwer, bringen Sie ihnen den Umgang mit Werkzeugen bei, bringen Sie ihnen das Angeln bei, anstatt ihnen das Angeln beizubringen, und lassen Sie sie frei und verrückt in der Welt wachsen Welt der Programmierung.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn