La transparencia referencial y la inmutabilidad hacen que los programas sean mucho más fáciles de razonar. Los programas que son más fáciles de razonar pueden paralelizarse más fácilmente, verificarse más completamente en el momento de la compilación y son más fáciles de depurar, uno al que está acostumbrado. Esto es cierto tanto si los programas también están orientados a objetos como si no: las dos cosas son realmente ortogonales entre sí.
Los detalles de la pregunta plantean algunas preguntas adicionales interesantes. En primer lugar, para aclarar una confusión, si los datos son inmutables, no importa si se copian o no: la diferencia entre pasar por valor y pasar por referencia es un detalle de implementación si no puede modificar los datos de todos modos. Debido a que se implementa en la JVM, Scala en realidad usa pase por referencia, por lo que no es cierto que se copien muchos datos.
La transmisión de mensajes es una idea asociada con la orientación a objetos, pero que no es necesaria. Al pasar mensajes, las entidades que pasan mensajes de un lado a otro deben cambiar de estado, es fundamental para el modelo. Si va a pasar mensajes, debe modelar ese cambio de estado de alguna manera. No puede hacer esto si desea pasar mensajes entre objetos Scala viejos y simples y desea que se implementen de una manera referencialmente transparente. Scala tiene bibliotecas de actores que utilizan el paso de mensajes, pero obviamente dependen del estado mutable. Puede usar una mónada de estado (no común en Scala) para modelar el mensaje que pasa entre objetos inmutables, pero esto no se parece mucho al estilo normal orientado a objetos.
- ¿Qué es la arquitectura de software en ingeniería de software?
- ¿Cuáles son algunas prácticas de desarrollo de software que se usan al construir microservicios?
- Para un sitio de comercio electrónico, ¿cuáles son algunos indicadores de comportamiento sospechoso de los clientes que los administradores pueden usar para detectar estafadores?
- ¿De quién es la vida más agitada, un oficial de IAS o un ingeniero de software?
- ¿Cuál es el nivel más bajo de abstracción de GUI en Linux?