РЕДАКТИРОВАТЬ: Этот вопрос на первый взгляд, кажется, бьет Java, и я думаю, на данный момент это немного. Тем не менее, я хочу подчеркнуть, что любой отдельный язык выбирается как единый конец, который будет решением всех проблем. Я использую Java, поэтому мне пришлось побеждать здесь, но я не намеренно разрываю Java на новый :)
Я не люблю Java в большинстве учебных заведений. Я не говорю, что язык сам по себе плохой - у него есть несколько чрезвычайно желательных аспектов, и, самое главное, возможность работать без перекомпиляции на большинстве платформ. Ничего плохого в использовании языка для вашего следующего приложения ^ TM. (Не то, что я лично сделал бы, но это больше, потому что у меня меньше опыта с этим, а не то, что дизайн плохой)
Я думаю, это пустая трата, что курсы высокого уровня CS преподаются с использованием Java в качестве языка. Слишком многие из моих сокурсников не могут программировать напрасно, потому что они не знают, как работать в мире без сбора мусора. Они принципиально не понимают машины, для которых они программируют. Когда кто-то может работать за пределами мира, где собирается мусор, он может работать внутри него, но не наоборот. GC - это инструмент, а не костыль. Но то, как оно используется для обучения студентов-информатиков, является опорой.
Информатика не должна преподавать целый набор курсов, предназначенных для одного языка. Студенты уходят с идеей, что весь хороший дизайн - это идиоматический Java-дизайн, и что объектно-ориентированный дизайн - это единственно верный путь, то есть единственные способы, которые могут быть выполнены. Другие языки, по крайней мере один из которых не является языком для сбора мусора, должны использоваться в обучении, чтобы дать выпускнику лучшее понимание машин.
Это смущение, что кто-то с докторской степенью в CS из уважаемого учреждения не может запрограммировать свой выход из бумажного пакета.
Хуже всего то, что когда я общаюсь с профессорами CS, которые действительно понимают, как все работает, у них возникает такое чувство, что мы оказываем плохую услугу нашим студентам, делая все на Java. (Обратите внимание, что вышеперечисленное было бы таким же, если бы я заменил его на любой другой язык, обычно проблема заключается в использовании одного языка, а не самой Java)
В целом, я чувствую, что больше не могу уважать какую-либо степень - когда я не вижу, чтобы окружающие могли программировать выход из проблем fizzbuzz.
Почему / как так получилось?