Ist das lernen von zu vielen Programmiersprachen eher kontraproduktiv?
Das ist eine Frage von Breite (Vielfalt von Programmiersprachen) und Tiefe (Feinheiten, Programmierstile, Bibliotheken). Man muss sich das wie eine Fläche vorstellen, die durch Breite und Tiefe aufgespannt wird. Wieviel dieser Fläche man erkunden und beherrschen kann, hängt von der verbrachten Zeit und individuellen Lerngeschwindigkeit ab.
Manche Sprachen oder Teile davon sind untereinander so ähnlich, dass man diese fast nicht lernen braucht. Wenn man z. B. einmal die verschiedenen Dialekte von Regular Expressions gelernt hat, dann ist es relativ egal, diese in sed, (a|e|p)grep, Perl, Java, Python oder was auch immer zu verwenden. Perl, PHP, JavaScript, Shell Script, C sind einander sehr ähnlich, Python etwas weniger ähnlich. Wer SQL kann, für den sind die minimalen Eigenheiten zwischen den verschiedenen Versionen eine kleine Aufgabe. Sowas lernt man nicht, sondern schlägt bei Bedarf die Details nach. Genauso habe ich PHP, Shell Script, JavaScript nie gelernt, sondern immer nur während des Entwickelns nachgeschlagen.
Die Tiefe, Vorteile, Nachteile, geeignetsten Programmierstil erlernt man auch nur mit ausgefallenen Problemstellungen wie z. B. Bildverarbeitung, Kartografie, Parsen, Sprachverarbeitung, Textverarbeitung und Formatierung, Vektor- und Matrixproblemen, Bäumen, Netzwerken, Asynchronität.
Was anderes sind ausgefallene Sprachen wie z. B. APL, Prolog oder Lisp. Das macht durchaus Sinn, diese mal grundsätzlich zu erlernen, weil es eine Bereicherung der Denkweise ist. Ob man sich dort vertieft, hängt von geeigneten Problemstellungen ab.