Согласен, Erlang и Ruby вполне подходят для вправления мозгов.
Java всё ещё актуальна. И будет долго таковой. C++ тоже актуален. Есть ещё C#, чудо из MS мира.
Но Java и C++ не очень подходят для вправления мозгов, только для зарабатывания денег. За них можно браться, когда в голове всё будет разложено по полочкам, настолько, что кривизна Java или C++ не уведут программиста не в ту степь. Вообще, на мой взгляд, это верх идиотизма, в университете преподавать Java.
Python! Даже больше, чем Ruby, подходит и для обучения, и для практического использования. Так как Ruby, к сожалению, имеет серьёзные проблемы с подходом к развитию языка. Вечно на какой-то экспериментальной стадии. Python намного чётче, с внятной политикой развития, отлично документирован и стандартизирован. Ну а уж его синтаксис -- это вершина чистоты.
Так что если не просто кодить, а изучать, как правильно программировать, то лучше что-нибудь функциональное или около-функциональное. Ещё можно Objective Caml. Очень люблю этот язык. И как-то даже использовал его в некоторых рабочих проектах. И функционально, и практично. Haskell -- для академиков, совсем не прагматичный язык, но для обучения очень хорош.
Common Lisp, Scheme -- тоже хороши для обучения. Из более-менее новых, Scala, Clojure, слишком сырые ещё, но интересные. А если знаешь OCaml и Lisp, ни Scala, ни Clojure ничего нового не дадут.