Edição: Esta questão no início parece bashing Java, e acho que neste momento é um pouco. No entanto, o ponto mais importante que estou tentando destacar é por que qualquer idioma único é escolhido como o único fim, tudo solução para todos os problemas. Por acaso, o Java é o que é usado, por isso tive de bater aqui, mas não sou intencional: rasgar o Java por um novo :)
Eu não gosto de Java na maioria das configurações acadêmicas. Não estou dizendo que o idioma em si seja ruim - ele tem vários aspectos extremamente desejáveis, o mais importante é a capacidade de executar sem recompilação na maioria das plataformas. Não há nada errado em usar o idioma para o seu próximo aplicativo ^ TM. (Não é algo que eu faria pessoalmente, mas é mais porque tenho menos experiência com isso, em vez de ser ruim no design)
Eu acho que é um desperdício que cursos de CS de alto nível sejam ministrados usando Java como linguagem. Muitos dos meus colegas não conseguem programar nada, porque não sabem como trabalhar em um mundo sem coleta de lixo. Eles não entendem fundamentalmente as máquinas para as quais estão programando. Quando alguém pode trabalhar fora de um mundo coletado de lixo, ele pode trabalhar dentro de um, mas não vice-versa. GC é uma ferramenta, não uma muleta. Mas a maneira como é usada para ensinar estudantes de ciência da computação é uma muleta.
A ciência da computação não deve ensinar um conjunto completo de cursos adaptados a um único idioma. Os alunos partem da ideia de que todo bom design é um design Java idiomático e que o Design Orientado a Objetos é a ÚNICA MANEIRA VERDADEIRA DE QUE É A ÚNICA MANEIRA QUE AS COISAS PODEM SER FEITAS. Outras línguas, pelo menos uma delas não sendo uma coleta de lixo, devem ser usadas no ensino, a fim de dar ao graduado uma melhor compreensão das máquinas.
É uma vergonha que alguém com um PHD em CS de uma instituição respeitada não consiga programar o caminho para sair de um saco de papel.
O pior é que, quando converso com os professores de CS que realmente entendem como as coisas funcionam, eles compartilham sentimentos como este, que estamos fazendo um desserviço aos nossos alunos, fazendo tudo em Java. (Observe que o acima seria o mesmo se eu o substituísse por qualquer outra linguagem, geralmente usando um único idioma é o problema, não o próprio Java)
No total, sinto que não posso mais respeitar nenhum tipo de diploma - quando não consigo ver os que estão ao meu redor capazes de programar a saída de problemas de zumbido.
Por que / como foi assim?