Ist es jemals zu früh, eine neue Sprache zu lernen? [geschlossen]

11

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?

Erwartung
quelle
6
Wenn Sie das Programmieren im Allgemeinen verstehen, sollte das Erlernen neuer Sprachen Ihnen helfen, ein besserer Programmierer zu werden. Wenn Sie neu in der Programmierung sind und Dinge wie Flusskontrolle, Datentypen, Funktionen / Methoden usw. nicht verstanden haben, würde ich warten, um andere Sprachen zu lernen.
Der Muffin-Mann
Ich fühle mich in C ++ mit allem, was Sie erwähnt haben, ziemlich wohl.
Vorfreude
1
Ich werde Ihre Frage relativieren. In den ersten 6 Monaten meines Studiums hatte ich bereits 5 verschiedene Programmiersprachen kennengelernt. Assembly (ich vergesse die genaue Moto-Plattform), C, C ++, Visual Basic 6 und Java. Später lernte ich Basic, C #, Visual Basic .NET, x86 Assembly. Nach dem College habe ich in den ersten 2 Jahren mindestens 5 zusätzliche Programmiersprachen gelernt.
Ramhound
2
Wenn Sie Multitasking und Prioritäten setzen können und einen disziplinierten Lernansatz haben, dann lernen Sie auf jeden Fall eine zweite Sprache. Normalerweise ist es am besten, sich auf die erste Sprache zu konzentrieren und sie zu beherrschen. Es ist jedoch auch wichtig, verschiedene Programmierparadigmen zu lernen. Lesen Sie den Programmierabschnitt der folgenden Links, um zu sehen, was ich meine: Was jeder Informatik-Major wissen sollte und die Kompetenzmatrix des Programmierers
Anthony

Antworten:

8

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:

  • Hallo Welt (Text auf dem Bildschirm)
  • Hallo Welt, in eine Datei geschrieben (lehrt Sie die Grundlagen der Datei-E / A für diese Sprache und sehr oft auch andere Arten von E / A.)
  • Durchführen einiger Standardberechnungen mit verschiedenen Basen (10, hex, oktal), sowohl Ganzzahl als auch Gleitkomma. (lehrt Sie über Kürzung und Notation von Zahlen)
  • Versuchen Sie, eine grafische Bibliothek zu verwenden, um die Hallo-Welt in einem ausgefallenen Dialog anzuzeigen. (zeigt Ihnen, wie Sie Bibliotheken und externen Code verwenden)
Onno
quelle
Die abschließenden Bemerkungen im letzten Absatz sind ausgezeichnet. Ich bin zwar nicht ganz mit vollständigen Anwendungen in C ++ vertraut, aber ich schätze Ihr Argument, den Umfang meiner Kenntnisse zu erweitern, auch wenn es nur oberflächlich ist.
Vorfreude
6

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:

Die Werkzeuge, die wir verwenden, haben einen tiefgreifenden und verschlagenen Einfluss auf unsere Denkgewohnheiten und damit auf unsere Denkfähigkeiten.

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:

Für grundlegende Beiträge zur Programmierung als hohe intellektuelle Herausforderung; für eloquentes Beharren und praktische Demonstration, dass Programme korrekt zusammengestellt und nicht nur in die Korrektheit debuggt werden sollten; zur Beleuchtung der Wahrnehmung von Problemen an den Grundlagen der Programmgestaltung.

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.

DeveloperDon
quelle
"Ich habe mit BASIC angefangen und war fürs Leben gezeichnet" - widerlegt das nicht Ihren Standpunkt? Wenn Sie schon früh in andere Programmiersprachen eingeführt worden wären, hätte BASIC keinen so starken Einfluss gehabt?
tdammers
Ich brauchte wohl ein Emoticon. Wenn es hilft, habe ich diesen Satz gelöscht.
DeveloperDon
3

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.

Joachim Sauer
quelle
2

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.

nischayn22
quelle
ProjectEuler.net sieht fantastisch aus! Danke für die Empfehlung.
Vorfreude
2

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.

Karl Bielefeldt
quelle
Wenn Sie sich als Schüler nicht an die Unterschiede zwischen der Syntax zwischen den Sprachen erinnern können, haben Sie ein Problem. Sie werden nicht immer einen Compiler haben, der Ihre Syntax überprüft. In diesem Bereich gibt es einige sehr reale Situationen, in denen Sie die Syntax sofort abrufen können müssen.
Ramhound
Ich sage nicht, dass es unmöglich ist, sich zu erinnern, nur dass es für einen Anfänger viel schwieriger ist. Große syntaktische Unterschiede sind ziemlich einfach, aber Professoren können bei Details wie 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 .
Karl Bielefeldt