Lohnt es sich, mehrsprachig zu sein? [geschlossen]

14

Man hört oft, dass Programmierer viele verschiedene Sprachen lernen sollten, um sich zu verbessern. Ich gehe immer noch zur Schule und habe keine große Programmiererfahrung (etwas mehr als ein Jahr). Aber aus der guten Absicht, die Programmierkenntnisse zu verbessern, wurde eine Art OCD: Ich habe das Gefühl, dass ich mich nicht beruhigen werde, bis ich alle relativ bekannten Programmiersprachen gelernt habe.

Und hier ist die Frage selbst: Wird es Ihnen wirklich helfen, Programmiersprachen polyglot zu sein (und ich meine nicht üblich "Programmierer sollten mindestens alle Paradigmen kennen", ich meine wirklich alle Sprachen, von denen Sie normalerweise hören)? Hat jemand ähnliche Erfahrungen? Hilft es bei Job / Fähigkeiten / Karriere? Wie oft können Sie diese Fähigkeiten anwenden?

Anton Barkovsky
quelle
3
Ich denke, wenn die Leute anderen vorschlagen, etwas über neue Sprachen zu lernen, geht es weniger darum, Sprachen zu lernen, als vielmehr darum, neue Paradigmen zu lernen. Meine beiden Hauptsprachen sind Python und C ++. Haskell zu lernen war eine großartige Erfahrung für mich, weil es mich dazu zwingt, anders zu denken, als ich es sonst tun würde.
Vitor Py
4
Alle wichtigen Paradigmen zu kennen, hilft wirklich sehr . Mindestens ein bisschen Kontakt mit allen interessanten Sprachen zu haben, könnte hilfreich sein, wenn Sie Ihre eigenen Sprachen entwerfen (und sobald Sie sich mit dem sprachorientierten Programmierparadigma befassen, werden Sie dies wahrscheinlich tun).
SK-logic
4
"Eine Sprache, die die Art und Weise, wie Sie über Programmierung denken, nicht beeinflusst, ist es nicht wert, sie zu kennen." (Alan Perlis). Amen.
2
@Job: Die Kenntnis von 10 Programmiersprachen erfordert nur einen Bruchteil des Aufwands, um die Grundlagen einer einzelnen gesprochenen Sprache zu erlernen.
SK-logic
2
@ SK-Logik hängt davon ab. Ich wette, ich kann einem Kind von 6 Jahren beibringen, schneller Spanisch zu sprechen, als ich ihm Python beibringen kann.
Raynos

Antworten:

10

"Programmierer sollten zumindest alle Paradigmen kennen"

Das hilft

Ich meine wirklich alle Sprachen, von denen man normalerweise hört

Das hilft nicht. Wenn Sie alle Paradigmen kennen, können Sie pro Woche eine Sprache lernen.

Es ist einfach optimaler, eine Woche lang diese Sprache zu lernen, wenn Sie diese Sprache brauchen .

Ein guter Programmierer ist ein fauler Programmierer

Randnotiz:

Das Erlernen gängiger / beliebter Sprachen ist nicht so hilfreich wie das Erlernen "aller Paradigmen". Ersteres deckt letzteres nicht ab. Zum Beispiel ist Selbstlernen unglaublich nützlich, um prototypische OO zu verstehen. Es ist keine verbreitete oder beliebte Sprache, aber es ist weitaus nützlicher, als Python zu lernen, wenn Sie Ruby bereits kennen.

Sprachgestaltung:

Die meisten Sprachen zu beherrschen ist nützlich, wenn Sie eine neue Sprache schreiben / entwerfen. Es gibt also einen soliden Anwendungsfall, aber es ist eine hübsche Nische.

Was ich Ihnen stattdessen empfehle:

Code lesen 2 Mal mindestens 3 Mal ausfüllen

Sprachen kommen und gehen, je nachdem, was "beliebt" ist. Technologie wird nach Monaten oder Jahren veraltet, je nachdem, wie die Technologiekurve aussieht. (Das Web veraltet die Technologie alle 6 Monate).

Programmiertechnik und Informatiktheorie bleiben immer gleich.

Raynos
quelle
Aber es gibt viele interessante Kleinigkeiten in Sprachen, und selbst das Erlernen einer neuen Sprache aus einem bereits bekannten Paradigma kann Sie um den Verstand bringen (für mich war es beispielsweise Smalltalk)
Anton Barkovsky
@AntoBarkowski das ist eine falsche Aussage, vergleiche SmallTalk nicht mit anderen OO-Sprachen. Java / C ++ / C # / etc. sind keine echten OO-Sprachen. Natürlich ist SmallTalk lohnenswert, aber es ist nicht dasselbe Paradigma;)
Raynos
6
Die Leute sagen immer wieder: "Du kannst eine Sprache pro Woche lernen", aber das stimmt einfach nicht. Sicher, Sie werden in der Lage sein, syntaktisch korrekten Code in dieser Sprache zu schreiben, aber es steckt noch mehr dahinter. Zum Beispiel sind C # und Java syntaktisch sehr ähnlich und beide OO-Sprachen. Das Schreiben von Java-Code in C # macht Sie jedoch nicht zu einem C # -Programmierer.
R0MANARMY
3
@ R0MANARMY "<gute Programmierer> können in einer Woche eine Sprache lernen". Eine Sprache enthält keine Bibliotheken, Frameworks und APIs. Meine Definition von guten Programmierern könnte allerdings sehr hoch sein.
Raynos
1
@ R0MANARMY, welche dieser winzigen, unwichtigen semantischen Teile, die Sie erwähnt haben, können mehr als eine Stunde dauern, um sie zu verstehen?
SK-logic
4

Es geht nicht darum, wie man in einer Vielzahl von Sprachen codiert, es geht, wie Sie sagen, um die Paradigmen. Je mehr Optionen Sie kennen, desto besser. Es hilft sicherlich, mehrere Sprachen zu beherrschen, aber wenn Sie weiterhin dieselben Arten von Sprachen lernen, stoßen Sie schnell auf eine Sackgasse.

Der Schlüssel ist, zu wissen, welche Sprache / welches System für die Implementierung eines Teils Ihres Projekts am besten geeignet ist. Selbst wenn Sie sich für eine Hauptsprache entschieden haben (wie die meisten Projekte), müssen Sie dennoch alle Arten von Tools, Skripten, Automatisierung und Build-Unterstützung schreiben. In der Regel sind eine Vielzahl anderer Sprachen oder Tools besser darin als Ihre Hauptsprache.

Um es zu verdeutlichen, finde ich es albern, alle Sprachen zu lernen, von denen man tatsächlich hört: Es gibt Hunderte davon und oft sind es nur geringfügige Abweichungen von anderen Sprachen.

edA-qa mort-ora-y
quelle
3

IMHO tut es nicht. Erstens, weil man eine Sprache nicht in weniger als einem Jahr lernen kann. Es dauert 2 Tage, um Code darin zu schreiben, aber es erfordert viel Erfahrung, fließenden und gut geformten Code für die gegebene Sprache zu schreiben. Warum GC so funktioniert, wo man Speicher zuweist, welche Konstruktionen schneller sind, wie man Zeichenfolgen richtig verkettet, was gefährliche Ecken der Sprache sind usw.

Ich schreibe schrecklichen Java / .NET-Code als C ++ - Entwickler, wie viele Java-Entwickler schrecklichen C ++ - Code schreiben.

Das Beste am Lernen anderer Sprachen ist, dass Sie neue Paradigmen lernen und vielleicht ein besseres Werkzeug für ein konkretes Problem haben. Angenommen, Sie benötigen eine sehr schnelle, nicht öffentliche GUI-App. .NET ist dort unersetzlich.

Das Erlernen einer Sprache, damit Sie in .NET keine Strukturen verwenden oder nicht jedes Objekt in C ++ verlieren, ist jedoch sehr zeitaufwändig. Ich denke, es ist besser, es für das Erlernen von Designprinzipien, Plattformen und der Sprache Ihrer Wahl auszugeben.

Das ist aber nur meine Meinung.

Coder
quelle
2
"weil man in weniger als einem Jahr keine Sprache lernen kann" Falsch. Verwechseln Sie das Erlernen einer Sprache nicht mit dem Erlernen der gängigen Rahmenbedingungen. Fügen Sie am Ende der Liste auch "Allgemeine Programmiertechniken" hinzu.
Raynos
@Raynos: Ich dachte, das war es, worauf er sich bezog.
Steven Jeuris
1
Meine Lieblingsmethode beim Spielen mit einer neuen Sprache ist die Implementierung eines Compilers für eine anständige Teilmenge davon. Insgesamt dauert es 2 bis 4 Stunden, um die Sprache zu verstehen und die besten Funktionen zu identifizieren und daraus zu stehlen. Nicht annähernd ein Jahr, nicht einmal einen Tag.
SK-logic
1
Wenn Sie sich einem großen C ++ - Projekt anschließen und ein Interview mit Worten wie "Ich programmiere seit 10 Jahren in Java, aber ich habe die letzten 6 Monate mit C ++ verbracht, damit ich die Sprache kenne" erhalten. Ich bezweifle, dass Sie für diesen Job eine hochbezahlte Position als leitender Entwickler bekommen. Also, nein, ich denke immer noch, dass Sie in einem Monat oder so keine Sprache lernen können.
Coder
2
@Coder, wenn Sie sich einem großen C ++ - Projekt anschließen und zu einem Interview mit Worten wie "Ich programmiere seit 10 Jahren in 20 Sprachen, einschließlich C ++" kommen, würden Sie wahrscheinlich einen Job bekommen.
SK-logic
2

Es ist nicht praktisch wissen sie, aber es kann sehr nützlich sein , zu wissen , über sie. Was ich damit meine, ist, wenn Sie ein neues Problem bekommen, können Sie sagen: "Ich erinnere mich vage, dass [andere Sprache] einen überlegenen Weg hatte, Probleme wie dieses zu lösen. Ich sollte das nachschlagen."

Karl Bielefeldt
quelle
Ich finde Podcasts wie SE Radio sind dafür gut. Sie haben oft die richtige Länge, um auf dem Weg zur Arbeit zuzuhören, und auf diese Weise können Sie viel lernen. Aber es ist von der Form, warum <X> interessant ist.
Zachary K
1

Sie würden Ihrer Karriere mehr helfen, indem Sie Domain-Kenntnisse aufbauen und dann viele Programmiersprachen lernen. Ganz zu schweigen davon, dass Sie zusätzliche Tools erlernen müssen, um beispielsweise einen Profiler in Ihrer Sprache zu verwenden. Dies gilt auch für den Debugger, das beste GUI-Framework und wie Sie schnell damit programmieren können und sprachspezifische Redewendungen.

Es ist auch klüger zu lernen, mehr Dinge zu tun als viele Möglichkeiten, dasselbe zu tun.

Peter Smith
quelle
1

Ich habe auf mehreren Systemen gearbeitet, auf denen Komponenten in mehreren Sprachen geschrieben waren (der schlimmste Verstoß verlangte, dass ich Code lieferte, der in Ada 83, C, Fortran 77, SQL und DCL geschrieben war, während ich bei meinem letzten Auftrag C ++ und Java-Code lieferte ). Also, ja, es gibt Fälle in der Praxis, in denen Sie mehrere Sprachen gut genug kennen müssen, um produktiv zu sein (produktiv! = Kompetent; Sie werden kein tiefer Experte in C ++ und Java sein und ... es sei denn, Sie bist ein Freak).

Darüber hinaus sollten Sie sich Zeit nehmen, um mehrere Sprachen zu lernen, um Konzepte von der Implementierung zu trennen . Für mich machte OOP erst Sinn, als ich mit mehreren OOPLs gearbeitet hatte. Auch an einem gewissen Punkt in Ihrer Karriere, Sie werden müssen schnell Gänge schalten und arbeitet an etwas völlig Neues und Unbekanntes starten; Wenn Sie sich jetzt etwas Zeit nehmen, um über das hinauszugehen, was Sie wissen müssen , wird dies den Übergang erleichtern, wenn dies tatsächlich geschieht.

John Bode
quelle
1

Ich denke, es wäre besser, wenn Sie ein paar verschiedene Sprachen lernen und dann mindestens eine, bevor Sie sich auf die Notwendigkeit einlassen, jede mögliche Sprache zu lernen. Sobald Sie ein Minimum an Breite haben, wird Tiefe für Ihren Fortschritt als Entwickler wirklich wichtig. Ich hätte jemanden mit einer Tiefe in einer oder zwei Sprachen und ein paar anderen als jemanden mit einem Hauch von allem gesehen. Tiefe zu erlernen ist wie ein anderes Paradigma zu lernen. Es wird Ihre Einstellung zur Programmierung verändern und Türen zu wirklich komplexen, aufregenden Projekten öffnen.

HLGEM
quelle
0

Es ist, als würde man lernen, viele Sprachen zu sprechen. Es ist nahezu unmöglich, sie alle so weit zu lernen, dass sie nützlich sind. Halten Sie sich an diejenigen, die Sie wahrscheinlich verwenden, und Sie werden besser dran sein. Sie könnten C ++, C # und Java ziemlich gut erlernen, aber es ist nur dumm, gleichzeitig zu versuchen, Perl, Python, VB (nicht VB.NET), Ruby und JavaScript auf ein professionelles Niveau zu bringen. Der Tag hat nicht genügend Stunden, um Ihre Fähigkeiten auf einmal zu verbessern.

Christopher Bibbs
quelle