¿Cuál es el lenguaje más fácil (sintaxis y concepto inteligente) para pasar de Ruby on Rails? ¿Es Erlang, Go o Scala?

Yo diría que Ruby on Rails es una bestia muy escalable por derecho propio. Se está engañando a mucha gente con el modelo de microservicios, pero en el caso de Cookpad (jp) han escalado un producto LOC de medio millón y han mantenido un modelo monolítico.

Hay una charla fantástica sobre escalar el monolito Rails más grande del mundo:

De todos modos, no tengo mucha experiencia con Go, pero sé bastante sobre Erlang. Ir parece estar donde se están moviendo algunos de los zombis más francos de Rails, pero Erlang tiene una larga y digna historia de concurrencia y escalabilidad, pero no en el mismo sentido que lo que podrías estar pensando. Digamos que desea construir un sistema que maneje datos sensibles al tiempo en todo el mundo, y la latencia es crítica para la misión. Una red telefónica es el ejemplo pedagógico, y puede imaginar las consecuencias de una pausa de GC o algo así en medio de una llamada. Por lo tanto, Erlang usa lo que se llama el modelo de actor, en el que la ejecución se controla estrictamente dentro de pequeños módulos, llamados actores. Un actor tiene un propósito y no comparte memoria con otros actores. Puede enviar y recibir mensajes a otros actores de la manera que desee, y la estructura organizativa de una aplicación Erlang gira en torno al modelo de comunicación de los actores que utiliza.

No he tocado a Scala, pero la plataforma Akka es un modelo de actor como Erlang.

Ruby tiene celuloide para imitar actores y agente para imitar CSp, como Go.

Aquí es donde Go es diferente, en el uso de CSP para concurrencia. También es la razón por la cual las personas se confunden cuando comparan modelos de concurrencia entre idiomas, porque el término ‘concurrencia’ significa cosas diferentes para diferentes personas, según el modelo en el que estén pensando.

Entonces CSP está comunicando procesos secuenciales, y el concepto tiene sus raíces en Process / Pi Calculus. Los términos y nombres no importan. No soy un experto en Go, como ya he mencionado, pero la esencia del modelo es que cuando describe un modelo de concurrencia en CSP, esencialmente está escribiendo una función matemática. El cálculo de pi está destinado a garantizar que el código que escriba pueda funcionar independientemente de otro código, mientras pasa mensajes de aquí para allá. Similar a un modelo de actor, así es principalmente cómo se comunica el estado a través del programa a través de la transmisión de mensajes.

Un Golang-er sabrá más al respecto.

De todos modos, recomendaría usar Celuloid o Agent, ya que ya conoce Ruby (como está implícito) porque esas gemas abarcan la idea principal de cada modelo de concurrencia de los idiomas que podría estar aprendiendo a continuación.

Si va a aprender un nuevo modelo, es mejor que lo aprenda primero en un ambiente cómodo, de esa manera cuando comience a escribir Go o Erlang o Scala o lo que quiera, el resto del trabajo es solo recoger la sintaxis. EZPZ.

De todos modos, espero que esto ayude.

Según la similitud, puedes intentar aprender:

  • Idioma: Scala. Su sintaxis es similar a la de Ruby, vea esta comparación Scala vs Ruby). Al igual que las gemas Ruby, Scala tiene una gran cantidad de bibliotecas que puede usar de inmediato. Entonces usar Scala es muy práctico.
  • Marco web: Xitrum. Escrito por un antiguo Rubyist, implementa muchas ideas de Rails. Aquellos que estén familiarizados con Rails deberían poder aprenderlo rápidamente.

No sé si realmente está limitado a esos tres idiomas, pero si no, es posible que desee considerar Elixir.
Se ejecuta en la misma máquina virtual que Erlang y, por lo tanto, hereda todos sus rasgos legendarios en términos de escalabilidad, concurrencia y confiabilidad. Pero su sintaxis está inspirada en Ruby (¿modelado según?), Por lo que sería fácil de aprender.
También tienen un marco llamado Phoenix que parece conceptualmente similar a Rails.

Descargo de responsabilidad: De los idiomas en cuestión, el único que conozco muy bien es Erlang y, aunque es extraño en comparación con la mayoría de los demás, en realidad lo encuentro muy intuitivo.