¿Cómo puede scala hacer que escribir programas de subprocesos múltiples sea más fácil que en java? ¿Qué puede hacer Scala (que Java no puede) para facilitar el aprovechamiento de múltiples procesadores?¿Qué ventajas tiene Scala sobre Java para la programación simultánea?
Respuesta
Hay nada Scala hace que Java no lo haga. Eso sería tonto. Scala se ejecuta en la misma JVM que Java.
Lo que hace Scala hacer es más fácil escribir, más fácil de razonar y más fácil de depurar un programa multihilo.
Lo bueno de Scala para la concurrencia es su enfoque en objetos inmutables, su transmisión de mensajes y sus actores.
Esto le brinda datos de solo lectura de subprocesos de solo lectura, formas fáciles de pasar esos datos a otros subprocesos, y fácil uso de un grupo de subprocesos.
Le agregaré cierres. Realmente hace mucho más fácil. –
También agregaría que las continuaciones delimitadas realmente cambian el campo de juego para escribir programas concurrentes. Con suerte, el increíble soporte de la biblioteca aparece en unos meses. – jsuereth
Las reglas de concurrencia son
1 evitarlo si puedes
2 comparten nada si se puede objetos
3 comparten inmutables si se puede
4 tener mucho cuidado (y afortunado)
Para la regla 2 Scala ayuda al proporcionar un mensaje muy bien integrado que pasa la biblioteca de la caja en forma de los actores.
Para la regla 3 Scala ayuda a que todo sea inmutable por defecto.
Para la regla 4, la sintaxis flexible de Scala permite la creación de DSL internas, por lo que es más fácil y menos prolijo expresar lo que necesita de manera importante. es decir, menos lugar para sorpresas (si se hace bien)
Creo que # 1 es cada vez más difícil de hacer. Yo diría que usar un marco, p. map-reduce o alguna biblioteca fork-join, puede ayudarlo a escribir programas concurrentes sin que parezca concurrente. – jsuereth
Estoy de acuerdo. Definitivamente vale la pena examinar cuidadosamente sus necesidades y seleccionar patrones de simultaneidad que se ajusten a estos. Y luego use una biblioteca/marco depurado que implemente estos. –
# 1 Necesita venir de la lista; más bien, deberíamos estar buscando activamente maneras de explotar los múltiples núcleos de CPU disponibles en las computadoras modernas. –
Si se toma Akka como base para la computación simultánea (y distribuida), se podría argumentar que la única diferencia es lo habitual que distingue a Scala de Java, ya que Akka tiene ambos Java y enlaces Scala para todas sus instalaciones.
- 1. ¿Qué ventajas tiene Ceylon sobre Java o Scala?
- 2. .NET lenguaje para programación simultánea
- 3. ¿Qué ventajas tiene PHP sobre ASP.NET?
- 4. Por qué Clojure en lugar de Java para la programación simultánea
- 5. Patrones de diseño para la programación simultánea?
- 6. ¿Qué ventajas tiene StableNames sobre reallyUnsafePtrEquality #, y viceversa?
- 7. ¿Qué ventajas tiene jQuery sobre otras bibliotecas de JavaScript?
- 8. ¿Qué ventajas tiene MATLAB sobre SCILAB y viceversa?
- 9. Semáforos y programación simultánea
- 10. ¿La programación simultánea es igual a la programación en paralelo?
- 11. Pregunta sobre el cierre de Scala (de "Programación en Scala")
- 12. Para Scala, ¿existen ventajas de escribir borrado?
- 13. pregunta para principiantes sobre la programación de java (Quartz)
- 14. ventajas de la programación con estado?
- 15. ¿Qué tiene PyPy para ofrecer sobre CPython, Jython e IronPython?
- 16. ¿Ventajas de la programación sin estado?
- 17. ¿Por qué elegirías el lenguaje de programación Java sobre otros?
- 18. Ventajas de Parcelable sobre JSON
- 19. ¿Qué ventajas tiene una gran consulta de base de datos sobre muchas pequeñas
- 20. ¿Qué ventajas tiene OLAP en memoria sobre los sistemas tradicionales con memoria significativa?
- 21. Ventajas del subtipado sobre clases de tipos
- 22. Groovy ventajas sobre Jython o Jruby?
- 23. Software para tomar notas sobre la programación
- 24. ¿Qué ventajas tiene utilizar var sobre el tipo explícito en C#?
- 25. ¿Qué ventajas tiene una base de datos basada en documentos sobre una base de datos relacional?
- 26. Ventajas de [HandleError] sobre Application_Error
- 27. Ventajas del sistema de tipo de Scala
- 28. Ventajas de Tesla sobre GeForce
- 29. Programación de Scala para Android
- 30. Iteraciones sobre colecciones de Java en Scala
Java puede hacer todo lo que Scala puede hacer, y viceversa. Ambos se ejecutan en la JVM, y ambos están completos, por lo que, por definición, cualquiera puede hacer las mismas cosas que la otra. La diferencia es lo que es más fácil o más natural en un idioma que el otro. – cHao
@cHao @ Zan pregunta editada para tratar el problema con más detalle. :) –