#67
No es que la programación funcional tenga un paralelismo brutal, sino que el estado inmutable es inherentemente paralelizable a gran escala (por eso Scala escala ), dado que no hay efectos colaterales y por tanto te da igual ejecutar cierto algortimo paralelizable sobre 1 que sobre 100000000 de computadoras.
Un ejemplo típico: "map" sobre un array es paralelizable si la función que mapea está libre de side-effects, por lo que cuanto más elementos de computación (cores, clústers, da igual.) Cuantos más elementos paralelizables tengas, más rápido irá el map sobre ese array, siendo el cuello de botella el hardware y en ningún momento el software.
Si embargo, podríais plantearme un ejemplo real (no es necesario que sea muy grande), donde podría utilizarse?
Shaders OpenGL (cada pixel es independiente del estado intermedio del resto), cálculo de físicas (un fotograma es estático), algortimo del viajante, etc. De hecho uno de mis deseos más húmedos es un compilador Lisp->GLSL (y había algún proyectillo por ahí.)
Cómo se afrota una arquitectura C/S con funcional?
Igual que con cualquier otro paradigma. Obviamente hay side-effects, si no no podrías comunicarte con el mundo exterior (cualquier tipo de I/O es un efecto colateral.)
Scala es funcional pero incorpora OO, de qué sirve la OO sin estado?
Incorrecto, la PF no es que no tenga estado, es que este es inmutable (preferentemente.)