Главное не язык а понимание принципов ООП и знание паттернов
Забавная тема. Что бы понять, перспективу, необходимо заглянуть в историю развития языков программирования.
Для меня история развития языков - это перманентное состояние смены парадигм программирования.
Императивное программирование (asm):
Написание программ в виде машинного кода изначально не впечатлило человечество. Поэтому естественно появление языка низкого уровня - ассемблер (автокод). Написание программ на языке ассемблер - достаточно занимательное занятие. Однако вскоре стало очевидно, что написание аппаратно-зависимых программ потенциально-проблемное решение.
Вывод:
Скорость разработки: 1единица (Программирование на автокоде - максимально отделено от концепции мышления человека, а следовательно максимально неэффективно)
Бысбродействие программы: 100единиц
Процедурное (императивное) программирование (С):
Процедруная парадигма программирования предоставляет возможность программисту описать шаг за шагом алгоритм решаемой задачи в виде вызовов процедур, которые изменяют состояние памяти. Синтаксис языка С не привязан к конкретной платформе, за что иногда его называют универсальным ассемблером.
Вывод:
Скорость разработки: 10единиц(Программирование в рамках процедурного программирования - все еще отделено от концепции мышления человека, но многих людей мыслить логически и последовательно всетаки удалось научить)
Быстродействие программы на С: 90единиц
Объектоно-ориентированная парадигма программирования (С++):
Разработчики на С подметили, что данные и подпрограммы (процедуры) их обработки логически связаны. Осталось только формализовать эти связи в виде классов и их методов. А также навязать программистам мысль о том, что человек мыслит оъектами и соответственно должен в рамках этих объектов составлять программу.
Вывод:
Скорость разработки С++: 100единиц(Программирование в рамках объектно ориентированного программирования - все еще не приближено к концепции мышления человека, в следствии чего до сих пор людей пытаются научить мыслить объектами)
Быстродействие программы на С++: 80единиц
Функциональная парадигма программирования (Haskell):
Сложность программ тем временем росла. И встала проблема повышение надёжности кода. Ответственность за недежнсть кода в вышеприведенных языках практически (за редким исключением) полностью ложилась на плечи программиста. Появление многоядерных архитектур выявило основной недостаток существующих языков программирования - они не имели ни механизмов ни принципиальной возможности распараллеливания программ написанных на таких языках. А следовательно требовали полной переработки. В этом свете как спасательный круг появляется функциональное программирования в основу которого положены идеи машины Тьюринга, основы теории категорий, лямбда исчисление...
Вывод:
Скорость разработки Haskell: 1000единиц(Программирование в рамках функционального программирования - максимально приближено к концепции мышления человека, ведь известно, что человек мыслит категориями, а следовательно максимально эффективно)
Быстродействие программы на Haskell: 70единиц