EDIT: Diese Frage scheint zunächst Java zu Bashing, und ich denke, an diesem Punkt ist es ein bisschen. Allerdings ist der größere Punkt den ich versuche zu machen, warum jeder eine einzige Sprache als ein Ende gewählt wird alle alle Lösung für alle Probleme sein. Zufällig wird Java verwendet, also musste ich es hier übertreffen, aber ich bin nicht gewollt, Java neu zu rippen :)
Ich mag Java in den meisten akademischen Situationen nicht. Ich sage nicht, dass die Sprache selbst schlecht ist - sie hat einige äußerst wünschenswerte Aspekte, vor allem die Fähigkeit, auf den meisten Plattformen ohne Neukompilierung ausgeführt zu werden. Es ist nichts falsch daran, die Sprache für Ihre nächste App ^ TM zu verwenden. (Nicht etwas, was ich persönlich tun würde, aber das ist mehr, weil ich weniger Erfahrung damit habe, als dass das Design schlecht ist.)
Ich halte es für eine Verschwendung, dass High-Level-CS-Kurse unter Verwendung von Java als Sprache unterrichtet werden. Zu viele meiner Kommilitonen kann nicht Programm Pfifferling wert, weil sie nicht wissen, wie man Arbeit in einer nicht-Garbage Collection Welt. Sie verstehen die Maschinen, für die sie programmieren, grundsätzlich nicht. Wenn jemand außerhalb einer müllsammelnden Welt arbeiten kann, kann er innerhalb einer arbeiten, aber nicht umgekehrt. GC ist ein Werkzeug, keine Krücke. Aber die Art und Weise, wie Informatikstudenten unterrichtet werden, ist wie eine Krücke.
Informatik sollte nicht eine ganze Reihe von Kursen unterrichten, die auf eine Sprache zugeschnitten sind. Die Schüler verlassen die Idee, dass alle einen gutes Design idiomatisches Java-Design ist, und dass Objektorientiertes Design ist der ein wahrer Weg, der einzige Weg ist, die Dinge getan werden können. Andere Sprachen, mindestens einer von ihnen kein Müll gesammelt Sprache zu sein, sollte in der Lehre eingesetzt werden, um den Absolventen ein besseres Verständnis der Maschinen zu geben.
Es ist eine Schande, dass jemand mit einem PHD in CS aus einer angesehenen Institution nicht ihren Weg aus einer Papiertüte programmieren.
Schlimmer noch: Wenn ich mit CS-Professoren spreche, die tatsächlich verstehen, wie die Dinge funktionieren, teilen sie die folgenden Gefühle, dass wir unseren Schülern einen schlechten Dienst erweisen, indem wir alles in Java erledigen. (Beachten Sie, dass das oben Genannte gleich wäre, wenn ich es durch eine andere Sprache ersetzen würde. Im Allgemeinen ist die Verwendung einer einzigen Sprache das Problem, nicht Java selbst.)
Insgesamt habe ich das Gefühl, dass ich keinen Abschluss mehr respektieren kann - wenn ich nicht sehe, dass meine Mitmenschen in der Lage sind, sich aus Fizzbuzz-Problemen herauszuprogrammieren.
Warum / wie kam es so sein?