У каждого языка есть куча подводных камней, своих заморочки и т.д. Плюс к этому к каждому прилагается набор окружения - от библиотек, стандартных и не очень, до фреймворков и стеков, так же ide, отладчиков, профайлеров, систем тестирования и пр.
И всё это постоянно развивается.
Поэтому препод одновременно прав и не прав. Хорошо изучить можно только то, с чем постоянно имеешь дело. Знать общие принципы и быть неплохим разработчиком можно для большого набора языков.
Ещё важный момент момент, опытные ребята утверждают, что важно какой язык был изучен первым. Динамический или со статической типизацией( строгой). Это определяет подход к разработке на всю жизнь. Потом люди меняют язык, а принципы и подходы сохраняхт теми же.