No hay incompatibilidad fundamental entre OO y paralelismo.
En Google implementamos regularmente programas OO que se escalan a cientos de miles de máquinas, algunas con más de 16 núcleos cada una. Más núcleos en una caja significa mejor paralelismo y mejor localidad. Entonces, si tuviéramos más de 100 núcleos en una sola máquina, los programas actuales probablemente se ejecutarían aún más rápido. Quizás con un poco de ajuste podríamos obtener aún más rendimiento.
Gran parte del código que escribo está en C ++. El lenguaje mezcla paradigmas de programación procesal (de sus orígenes C), genéricos (de plantillas), orientados a objetos (de clases y objetos) y funcionales (de C ++ 11 lambdas, objetos de función, etc.). Todos estos elementos se utilizan en nuestros programas en diversos grados. Si bien evitamos ciertas funciones (por ejemplo, excepciones), es poco probable que decidamos abandonar todas las funciones OO. Después de todo, algunos de ellos son bastante útiles. (Separar la interfaz de la implementación, por ejemplo).
- Me dicen que si n = 25, tenemos Sn = 121392 donde Sn es el número de adiciones realizadas en la siguiente función para calcular el enésimo número de Fibonacci. ¿Alguien puede explicar cómo? Int F (int n) {if (n == 0) return (0); if (n == 1) return (1); retorno (F (n-1) + F (n-2));}
- No puedo encontrar el máximo / mínimo de este problema del multiplicador de Lagrange sin obtener un número complejo cerca del final. ¿Qué estoy haciendo mal?
- ¿Qué es una lista de todos los conjuntos de habilidades requeridas (matemáticas / programación / algoritmos, etc.) para poder programar juegos / escenarios de ajedrez?
- ¿Qué literatura necesitas para resolver el problema P vs NP?
- ¿Puede un niño de diez años aprender Java, si es bueno en matemáticas?
Si observa otros lenguajes populares como Java y Python, también utilizan una mezcla de diferentes paradigmas de programación. Los lenguajes “puristas” como Smalltalk y Haskell tienden a ser mucho más especializados. Cada uno tiene su lugar. No sospecho que un lenguaje purista dominará el mercado, e incluso si lo hiciera probablemente tendría que adoptar otros paradigmas o volverse menos relevante con el tiempo.
En cualquier caso, no creo que los conjuntos de características o las metodologías de los idiomas se vean influenciados mucho más por la cantidad de núcleos por máquina. Después de todo, ya estamos en un mundo altamente paralelo.