¿Cómo aprendo la concurrencia en Ruby? [cerrado]

7

Ayer leí este gran artículo sobre concurrencia en JRuby de EngineYard y me doy cuenta de que Necesito aprovechar mis habilidades sobre la concurrencia en Ruby. Al mencionar a Ruby, quiero decir que podría ser todas las implementaciones de Ruby: JRuby , Ruby MRI , Rubinius , Ruby en Parrot / Cardinal excepto IronRuby , no codifico en el entorno de Windows.

Lo que aprendí del mundo Haskell, especialmente de Simon Peyton-Jones , dijo en su video que OOP tiene que ver con el estado.

Nota: tengo muy poca experiencia cuando menciono a Haskell, solo vi algunos buenos videos sobre Haskell resuelto muy pocos (menos de 10) proyectos de euler en Haskell, leí algunos buenos libros y tutoriales de Haskell, nunca he codificado profesionalmente en Haskell, solo leí algunos códigos fuente en Haskell, ej. pugs , Darcs , y algunos otros Los códigos de Haskell no recuerdo la fuente.

Es posible que desee usar Jaskell para engañar la concurrencia siempre que use jruby, pero eso es para mi plan de aprendizaje a largo plazo, quiero maximizar mi habilidad de concurrencia en ruby primero, ¿tiene alguna sugerencia para mí? ¿Aprender concurrencia en ruby? Me gustaría que hubiera una especie de Head First book para que yo aprenda la concurrencia en Ruby. Cosas como estrategias / cómo abordar el problema de concurrencia en ruby, inspirado en el artículo de EngineYard y Haskell. Tal vez algunos buenos videos descargables que explican paso a paso para fortalecer mi fundamento sobre la concurrencia en general y luego pasar a la concurrencia en ruby específicamente.

¿Consejo? Gracias.

    
pregunta Arie 24.07.2011 - 02:24

1 respuesta

6

Para comenzar, primero lea Se explica la concurrencia de Ruby para obtener una descripción general . Tenga en cuenta que la comunidad de Ruby, en general, parece encontrar que la concurrencia es un tema nuevo y controvertido y que las personas discuten con vehemencia e incesantemente sobre muchos detalles sobre cómo se debe implementar en Ruby oa través de ella. ¡Busca los fundamentos y no te atrapes en trivia argumentativa!

Una recomendación para la claridad es separar mentalmente la idea de concurrencia de subprocesos múltiples, que es solo un método de implementación. El enhebrado es una forma de implementar la concurrencia, pero hay otras; en particular, observe el paralelismo de procesos como se menciona en La concurrencia es un mito en Ruby .

el enfoque de Actor Model se implementa en muchos idiomas, ahora, y La concurrencia de Ruby con los actores ofrece una introducción cuidadosa de cómo los actores pueden implementarse a través de Ruby. Los actores pueden simplificar la concurrencia en muchos casos y pueden ayudarlo a evitar algunas de las trampas más desagradables.

La comunidad Ruby ha implementado una clase de fibra para brindar "concurrencia cooperativa de peso ligero" en Rubí. Definitivamente querrá seguir algunos de los enlaces en Ruby Fibres: 8 lecturas útiles en la nueva función de concurrencia de Ruby para comprender esta nueva adición al lenguaje.

Tenga en cuenta que, como explicó Engine Yard , JRuby y Ruby operan en diferentes máquinas y que estas diferencias pueden tener enormes implicaciones para las implementaciones de concurrencia, en términos de lo que puede ser posible y cómo se puede lograr.

La suya es una pregunta valiosa, ya que Ruby acaba de ingresar al dominio concurrente y usted puede ser un "adoptante temprano". Buena suerte en tu búsqueda digna!

    
respondido por el John Tobler 26.09.2011 - 23:06

Lea otras preguntas en las etiquetas