Durante anos, venho fazendo coisas algorítmicas, escrevendo estruturas de dados escaláveis para pesquisa na Internet, por exemplo, Árvores de Pesquisa Binária Aleatória para Recomendação Automática, BitMaps, Algoritmos baseados em Sabedoria de Multidão usando Gráficos, escrevendo alguns Algoritmos de Aprendizado de Máquina interessantes como Clustering, Detecção de Anomalias, trabalhando em coisas de recuperação de informações e assim por diante
Há uma coisa comum nas coisas que mencionei acima. Todo o material acima, cada um se codificado em uma linguagem como C ++, requer um punhado de classes. Quero dizer, são problemas interessantes, mas não são complexos em termos de material Orientado a Objetos muito carregado. Eu nunca usei Herança, material virtual etc. Embora eu tenha usado muito a Programação Genérica, Modelos e assim por diante.
Eu amo C ++ (- coisas volumosas de OO, como eu gosto do que Joe Armstrong, criador de Erlang diz: No mundo de OO, se você pedir uma banana, você terá uma grande selva junto com um gorila segurando a banana). Eu gosto de codificar em outras linguagens como Java, Python também.
Agora, minha pergunta é: estou gostando do tipo de projeto / algoritmo em que estou trabalhando. Preciso realmente aprender coisas sobre OO; serei um melhor codificador / designer apenas usando coisas como herança, polimorfismo dinâmico (virtuais)? OU posso mudar para o mundo da Programação Funcional (ainda não o fiz até agora), o que me atrai mais, pois posso me concentrar apenas em tarefas / algoritmos e não deixar que o material baseado em OO do Kingdom Of Noun, tem-a, é uma regra mim?
Em suma, as coisas OO podem / podem me ajudar em todos os tipos de projetos / algoritmos que mencionei acima?
EDITAR:
Um link extremamente interessante para adicionar aqui:
http://steve-yegge.blogspot.in/2006/03/execution-in-kingdom-of-nouns.html