Ты прав.
Многообразие языков может сбить с толку. Но если по коду - то есть два набора - данные и инструкции процессору, которые тоже по сути данные, но принято их выделять и даже разделять. Всё это либо 0 либо 1, проще некуда. Но мало кто пишет в двоичном коде, но пишут в восьмеричном, шестнадцатеричном, на ассемблере, на си, на плюсах и далее как ты и сказал.
Разнообразие можно объяснить усложнением не аппаратной базы, а необходимостью разработки сложных систем и систем систем (в системе
![:))](http://blender-3d.ru/forum/Smileys/default/laugh.gif)
. То есть код нужно не просто написать одному человеку, а сделать его пригодным для дальнейшей интеграции и сопровождения. А поскольку тараканов в голове много, и у каждого кодера своё представление как это сделать, то и появляются альтернативные языки + манагеры еще стараются монетизировать любую новую фичу. Что собственно говоря стимулирует развитие - своего рода мутация, которая приводит к естественному отбору.
Опять же, всё развивается по спирали, и вычислительная архитектура и программная база. Допустим, сейчас вектор к централизации вычислений, создание вычислительных кластеров, центров обработки, большие данные, нейронные сети, расшифровка генома и всё такое. А завтра, может быть другой вектор - на децентрализацию. Сегодня модно python, scala, а завтра - чистая цифра в бинарной ипостаси.
Опять же второй раз - если нейронка и определит контур поражения, то сигнал пойдет по контроллеру, где этой нейронке физически места нет. А контроллер тоже кто-то должен кодить/заполнить.
Суть - разные ниши, разные решения.