Разные проблемы удобно решать на разных языках. Ув. Вирт вообще считает, что для каждой проблемы надо писать свой язык и не может быть универсального языка типа Си (он всю жизнь так и делал, но он решал глобальные, большие, не стандартные проблемы, для которых это было уместно).
Исторически так сложилось, что у каждой машины был свой машинный язык (а иначе и быть не могло, ведь машины развивались, у них была разная разрядность и разные фичи внедрялись). Поэтому еще в 60х годах языков была тьма.
Затем языки развивались (и поэтому их опять понаписали тысячи). Если бы все рассуждали как SIZIF (см комментарии в соседнем ответе) - мы мы до сих пор писали на алголе (в лучшем случае).
Всем же понятно, что неудобно писать и серверный и клиентский код сайта на Си. Клиентский код интерпретируется браузером, серверный компилируется. Очевидно, что нельзя программировать микроконтроллеры на Джаваскрипте.
И по сложности языки также отличаются не менее чем по области применения. Художники могут, впринципе переварить какой-нибудь декларативный язык и описывать на нем игровые сцены (если пишут игрушки), но С++ они переваривать запарятся.
Да и что такое "язык" вообще? - это синтаксис и семантика, но ведь нельзя забывать о библиотеках (посмотрите на С++ и его библиотеку, что она позволяет? (она зафиксирована в стандарте языка), а потом посмотрите на actionScript, например - там совсем другие потребности, он работает с совсем другими сущностями. Если мало - посмотрите с чем работает 1С).
Лично я, пишу на С++. Я хочу писать под андроид (и пишу, используя Qt), но мой товарищ уже доказал мне многократно, что под андроид гораздо удобнее писать на haxe {есть такой язык}. Он пишет на haxe игрушку, собирает ее и для андройда, и для айфона, и для вконтакта и еще для кучи разных платформ. Очень сложно реализовать все это для С++. Но эффективность кода haxe страдает.
Кстати, если уж говорить об областях применения - то нельзя забывать про декларативные языки. Ну например, графический интерфейс на декларативных языках описывать удобнее чем на ассемблере - с этим спорить даже безумный не станет. Поэтому ДАЖЕ в библиотеки встаивают дополнительные языки (все тот де QML из Qt).
Посмотри на язык систем сборки (утилит make, cmake, qmake и прочих) - у них такой синтаксис, чтобы их было удобно и просто использовать, а не чья-то блажь или как тут пишут, тщеславие.
Язык - не самая большая проблема в программировании. Нет ничего страшного в том, что языков много.