Persönlicher Kontext: Ich habe in den letzten 6 Monaten an der Universität offiziell C ++ gelernt. Zuvor habe ich mich ein Jahr lang mit JavaScript beschäftigt. Jetzt denke ich darüber nach, Python während eines Monats außerhalb der Schule zu lernen.
Beeinträchtige ich die Effizienz meines Lernens, indem ich meinen Fokus früh im Lernprozess aufteile? Soll ich den freien Monat in C ++ verbringen? Oder ist es nie zu früh, eine neue Sprache zu lernen?
programming-languages
learning
efficiency
Erwartung
quelle
quelle
Antworten:
Meine Erfahrung mit Python beschränkt sich auf einen Spielcode, der nur geringfügig komplexer ist als die Hallo-Welt. Daher ist dies keine sehr ausführliche Antwort für Python, aber ich kann Ihnen Folgendes sagen:
Die Unterschiede zwischen den Sprachen liegen in Details wie der Syntax und bestimmten Sprachspezifikationen (wie die unterschiedliche Art und Weise, wie Fehler behandelt werden, E / A-Funktionen und wie Compiler Ihre Eingaben in etwas ausführbares konvertieren), aber C ++ und Python bieten beide dasselbe Paradigmen, so dass das Lösen von Problemen mit beiden Sprachen auf die gleiche Weise erfolgen kann. Sowohl C ++ als auch Python sind imperativ und objektorientiert. Wenn Sie mit C ++ vertraut sind, werden Sie Python wahrscheinlich ziemlich schnell erlernen, sobald Sie die neue Syntax mithilfe von Problemlösungstechniken beherrschen, die Sie mit C ++ erlernt haben. Wenn Sie möchten, können Sie Python auch für die funktionale Programmierung verwenden, aber ich habe diesen Teil nie berührt, daher kann ich Ihnen nicht viel darüber erzählen.
Ist es zu früh Ich kann aus Ihrer Geschichte nicht wirklich mit Ja oder Nein erzählen. Sind Sie bereits sicher genug, um vollständige Anwendungen (GUI) mit C ++ zu schreiben? (dh Bibliotheken, komplexere Sprachfunktionen wie Generika und / oder Vorlagen usw. verwenden) Ich denke, dass das Erlernen eines neuen Sprachparadigmas viel schwieriger ist als das Erlernen einer neuen Sprache in derselben Paradigmenfamilie. Wenn Sie Neuland betreten, müssen Sie viel mehr Zeit aufwenden, um eine gute Vorstellung davon zu bekommen, wie Sie Probleme mit diesem Paradigma lösen können. Zwischen den OO-Sprachen gibt es Unterschiede, wie mit Vererbung umgegangen wird und wie Daten im Speicher übergeben werden, wenn Sie einen Parameter / ein Argument an eine Funktion übergeben, die die Leistung beeinflusst. Aber um loszulegen, sind diese normalerweise zunächst von geringer Bedeutung.
Ich vermute, wenn Sie mit C ++ sicher genug sind, um mehr als nur Hallo Welt auf ausgefallene Weise zu tun, sind Sie für den Start in Ordnung. Wenn Sie viele Sprachen oberflächlich lernen, können Sie Codebeispiele unabhängig von der verwendeten Sprache besser verstehen. Um jedoch Ihren eigenen Code zu erstellen, müssen Sie etwas besser verstehen, wie die Sprachen funktionieren und wie sie sich voneinander unterscheiden.
PS Wenn ich lernen möchte, wie man eine neue Sprache oberflächlich verwendet, versuche ich normalerweise die folgenden Dinge, um ein Gefühl für die Sprachsyntax und die oberflächliche Funktionsweise zu bekommen:
quelle
Na klar ist es das auch.
Keine Zweifel, es ist manchmal zu früh, um eine neue Programmiersprache zu lernen.
Der einfachste Fall ist, wenn eine El-Stinko-Sprache herauskommt und bevor jemand auf ihre Ungeeignetheit hinweist, schädigen Sie Ihr Gehirn, indem Sie sie lernen. Ein paar, die mir in den Sinn kommen, sind BASIC, FORTH und APL.
Für einen komplizierteren Fall hat einer der großen Informatiker dieses Problem beschrieben, das sehr kurz gesagt wurde, dass die Praxis dauerhaft ist, und es gibt viele Disziplinen, die vor dem Erlernen von Computersprachen gelernt werden sollten, damit die Sprache das grundlegendere Verständnis nicht verzerrt . In seinen Worten:
Der Gegner des Eintauchens in die Programmierung heißt Edsger Dijkstra und hatte eine sehr bemerkenswerte Karriere. Er wurde mit dem ACM Turing Award mit folgendem Zitat ausgezeichnet:
Das Papier, in dem er das vorzeitige Erlernen von Programmiersprachen in die Luft jagt, ist:
"Über die Grausamkeit, Informatik wirklich zu lehren" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF
Bitte flamme mich auch nicht, ich bin nur der Bote.
quelle
Ist es jemals zu früh, eine neue Sprache zu lernen?
Ich würde Ja sagen. Wenn Sie sich immer noch mit dem Konzept beschäftigen, dass der Computer tatsächlich das tut, was Sie ihm sagen, wird Sie das Erlernen einer zweiten Sprache wahrscheinlich nur verwirren.
Wenn Sie jedoch den Punkt überschritten haben, an dem Sie feststellen, dass der Computer genau das tut , was Sie ihm sagen, egal wie dumm er ist, haben Sie wahrscheinlich ein vernünftiges Verständnis für Ihre erste Sprache, das eine zweite (und dritte) betrachtet !) Sprache bricht Ihren Fokus nicht.
quelle
Kannst du nicht beides? Ich würde ein Projekt in C ++ machen und Teile von Python lernen (nur weil es so großartig ist), dass Sie Probleme bei ProjectEuler.net mit Python lösen könnten
Im Allgemeinen halte ich es für eine schlechte Idee, eine Sprache zu lernen, sie zu verlassen und eine neue zu lernen. Man sollte in der Anfangsphase flexibel mit verschiedenen Paradigmen arbeiten können. Aber genau das denke ich.
quelle
Für einen praktizierenden Programmierer würde ich vorbehaltlos sagen, dass das Erlernen einer neuen Sprache fast nie eine schlechte Idee ist. Für einen Universitätsstudenten würde ich ein wenig Vorsicht walten lassen, je nachdem, welche Klassen anstehen. Der Grund dafür ist, dass Sie in einer Schulprüfung häufig Sprachdetails rezitieren müssen, ohne den Vorteil einer Kompilierungs- / Ausführungsumgebung zu haben, die Ihre Fehler leicht aufzeigt.
Besonders wenn Sie nur ein paar Monate Erfahrung haben, ist es sehr einfach, die Details in Ihrem Kopf zu verwechseln. Wenn Sie sich um Ihre Noten kümmern und eine Klasse mit solchen Prüfungen belegen, wäre ich vorsichtig. In der realen Welt ist das kein Problem.
edit : Ich habe ursprünglich Syntax gesagt, aber nicht-syntaktische Details sind für Professoren genauso wichtig, und es gibt noch viel mehr davon.
quelle
append()
vs.push_back()
für eine Liste ärgerlich wählerisch sein , was selbst erfahrene Programmierer nachschlagen müssen, wenn sie eine bestimmte Funktion in einer bestimmten Sprache seit einiger Zeit nicht mehr verwendet haben. Es hilft zweifellos, die Syntax vor Ort abrufen zu können, aber für die überwiegende Mehrheit der Jobs ist dies nie erforderlich .