En un par de días, la conferencia
RubyRussia se llevará a cabo en Moscú. Nuestro invitado
Charles Nutter (trabajando en el soporte de JRuby y JVM en Red Hat) respondió un par de preguntas.
¿Cómo te metiste en el mundo de la programación y Ruby?En 2004, contraté una firma gubernamental como arquitecto de Java Enterprise. Trabajé en un proyecto para el USDA y pasé un par de semanas al mes en Washington. Uno de estos viajes coincidió con RubyConf 2004, y dado que uno de mis amigos me recomendó prestarle atención a Ruby, decidí ir a la conferencia. Así que terminé en un evento dedicado a Ruby, sin tener idea de este lenguaje ... pero entendí cada código, cada ejemplo dado. Me sorprendió y me prometí encontrar una manera de traer a Ruby a mi mundo Java.
¿En qué proyectos estás trabajando ahora?Soy uno de los dos gerentes de proyecto de JRuby. Este trabajo incluye varios proyectos relacionados, por ejemplo, soporte para bibliotecas nativas (admitimos Ruby FFI en JRuby), o conversión de cadenas (portando lógica similar desde CRuby). Además, trabajo con la comunidad para garantizar que nuestros usuarios siempre puedan obtener ayuda de nosotros. En general, ¡el trabajo siempre está lleno!
¿Cuál de estos proyectos tiene el futuro más brillante?Creo que este es JRuby, aunque este no es el lenguaje más popular en la plataforma JVM.
Al menos hemos contribuido a los cambios positivos en la propia JVM. En gran parte gracias a nuestra colaboración con Sun Microsystems y Oracle, la JVM se ha convertido en una plataforma conveniente para muchos lenguajes dinámicos, no solo Java. Espero que hayamos jugado un papel importante en este cambio.
¿Qué idiomas escribes con más frecuencia? ¿Cuál te gusta más y por qué?Escribo principalmente en Ruby y Java, ya que JRuby se escribe usando ambos. Cada uno de estos idiomas se adapta bien a sus tareas. Ruby: para crear aplicaciones que necesitan desarrollarse y adaptarse rápidamente. Java: para escribir bibliotecas y servicios confiables y de alta velocidad. ¡Y JRuby combina lo mejor de ambos mundos!
¿Te gusta programar en Java?Sí, especialmente considerando todas las mejoras de lenguaje agregadas recientemente, como lambdas (cierres o bloques en Ruby), y la nueva sintaxis para declarar variables locales (var) cuando un tipo estático es único.
¿Qué opinas de Rust?El óxido es un gran idioma! En la universidad, usaba mucho C ++, pero definitivamente puedo decir que si supiera Rust en ese momento, preferiría escribir en él. Me gusta especialmente el modelo de propiedad de tipo estático, que nos permite escribir programas paralelos estables y garantiza un acceso seguro a la memoria. Creo que otros idiomas deberían adoptar esto en el futuro.
¿Qué piensas sobre las perspectivas de Ruby? Durante muchos años, muchas personas creen que el lenguaje y su comunidad "mueren" ...Después de muchos años de trabajar en JRuby, me enamoré de la sintaxis de Ruby y de cómo funciona. Pero me temo que el problema de rendimiento realmente existe y es importante. JRuby está luchando por hacer realidad los hilos paralelos para los desarrolladores de Ruby, pero hasta ahora, la gran mayoría de los servicios de Ruby utilizan varios procesos aislados, gastando una gran cantidad de recursos de CPU y memoria. Creo que esto se debe a la API C demasiado grande e invasiva para escribir extensiones de Ruby, que no permite la implementación de mejoras como subprocesos paralelos.
Pero no pierdo la esperanza de que algún día todavía veremos cambios.
¿Cuál de las características de Ruby menos populares debería considerar en el futuro?Espero que las cadenas se vuelvan inmutables por defecto, como es el caso en la mayoría de los otros idiomas. La programación concurrente sería mucho más simple si se pudieran congelar más objetos Ruby. Puede parecerse al modelo utilizado en Rust ... si comparte un objeto en secuencias, debe elegir la versión del objeto que no se modificará exactamente. Esto se extiende a matrices, hashes y casi cualquier otro objeto mutable en Ruby: necesitamos simplificar el bloqueo de los cambios de datos.
Tengo un gran proyecto monolítico de Ruby. Me preguntaba si podría traducirlo a JRuby. ¿Cómo podría hacerse esto? ¿Tiene sentido?La primera pregunta, de hecho, es si este paso te ayudará.
Los argumentos importantes para cambiar a JRuby podrían ser:
- Reducir el costo de los recursos cuando hay un inconveniente, por ejemplo, si varias aplicaciones están alojadas en el mismo servidor a la vez
- Implementación de una aplicación Ruby en un entorno pesado JVM utilizado por grandes organizaciones financieras y gubernamentales
- La necesidad de acceder a bibliotecas que existen solo en Java, o que son más fáciles de portar a la JVM, que sus equivalentes en Ruby o C
- Un ligero aumento en el rendimiento en aplicaciones con computación pesada (que carga el procesador) o con una gran cantidad de tareas paralelas.
Yo diría que si la aplicación escala bien y no le cuesta demasiado, tal vez no debería hacer nada. Pero si decide obtener más de Ruby, aquí está el proceso de migración:
- Reúna todas las bibliotecas de terceros que utiliza su aplicación.
- Destaque entre ellos aquellos que usan extensiones C.
- Encuentre el equivalente de JRuby para cada extensión. Tenemos varios
- páginas en el wiki de JRuby sobre esto. Las bibliotecas más populares tienen versiones de JRuby. Si no hay una versión de JRuby, puede usar una versión de Ruby pura (será lo suficientemente rápida en JRuby) o bibliotecas JVM (en Java, Scala, Clojure, etc.), que pueden usarse como reemplazo.
- ¡Tan pronto como todas tus gemas hayan ganado en JRuby, toda la aplicación funcionará! Prestamos mucha atención a la compatibilidad e intentamos tener en cuenta los nuevos problemas a los que nuestros usuarios están prestando atención. Por lo tanto, con una alta probabilidad, si tiene un paquete en JRuby, la aplicación funcionará.
Bueno, entonces comienza la parte más difícil: qué hacer con los recursos liberados. Cuántos hilos para paralelizar la aplicación, cómo gastar el dinero ahorrado ... :)
¿Qué necesitan saber los estudiantes para convertirse en buenos programadores?Cuando estaba en la universidad, mis cursos de informática enseñaban Scheme, un lenguaje funcional como Lisp que era genial para aprender los conceptos básicos de la programación. Todavía recomiendo a los programadores novatos que estudien al menos parte del libro Estructura e interpretación de programas informáticos, publicado por el Instituto de Tecnología de Massachusetts (MIT). Bueno, en general, cuantos más idiomas diferentes conozcas, mejor. Esto le da nuevas ideas y le permite ver la solución a sus problemas desde diferentes ángulos.
¿De dónde sacas la motivación para trabajar? ¿Has enfrentado el problema del agotamiento profesional?El agotamiento es un problema real en nuestra industria. Especialmente trabajo en código abierto
Trae mucho estrés. Creo que esto les sucedió a todos ... cuando hay demasiado trabajo, no tienes tiempo para hacer todo, sacrificas tiempo con familiares y amigos, te olvidas de tu salud para corregir otro error regular. Para luchar contra esto, trato de concentrarme en un pasatiempo: jugar juegos de computadora y de mesa, aprender a tocar la guitarra,
aprender idiomas extranjeros y viajar por el mundo, conocer gente nueva. Un adicto al trabajo gruñón siempre vivirá en mí, persuadiéndome para que regrese al trabajo, pero aún trato de mantener el equilibrio correcto.
¿Cuál es su opinión sobre Rusia y qué espera del próximo evento RubyRussia?Amo a Rusia, y todos mis viajes a la conferencia aquí en los últimos años han sido muy útiles. Esta será mi cuarta visita, anteriormente estuve en San Petersburgo, Moscú e incluso en Novosibirsk (!!!). Espero volver a Moscú y reunirme con la comunidad rusa de Ruby, de la que he oído hablar mucho.
Las preguntas fueron preparadas por
Dmitry Matveev , PM en
Evrone . Y ya puedes hacer tu pregunta el 6 de octubre. ¡Nos vemos en la conferencia! Todos los detalles en el
sitio .
Puede leer el original en inglés en
hype.codes .
Y muchas gracias a las compañías que apoyan el evento principal de Ruby en Rusia:
Socio general -
ToptalGold Partners -
Gett y
CookpadSocios de plata:
Instamart ,
UCHi.ru ,
JetBrains y
QleanAfterparty partner -
TeachbaseSocios de bronce -
Bookmate e
InSales