¿Por qué Twitter eligió Scala como su idioma principal cuando reescribió el back-end para abordar los desafíos de escalabilidad?

Esta es una respuesta de nivel ultra alto, y ciertamente espero que alguien de Twitter pase por allí, pero probablemente eligieron Scala porque necesitaban exactamente lo que Scala estaba destinado a hacer: escalar. Quiero decir, la escalabilidad está literalmente en los nombres de Scala.

Su arquitectura original era notoriamente inestable, pero incluso al nivel de una compañía como Twitter, no querían cambiar a un lenguaje de bajo nivel como C. Java es la opción obvia. Ha existido por veinte años. Es maduro como todos salen. Y tiene un GRAN grupo de desarrolladores calificados. Pero Java tiene sus propios problemas, uno de los cuales es Oracle, pero eso es para otra publicación.

Entonces, ¿qué más hay por ahí? Los lenguajes de alto nivel como Python, PHP, Perl y Vanilla Ruby tendrían los mismos problemas a escala. Lisp, Scheme y Haskell tienen grupos de desarrolladores mucho más pequeños en el mercado abierto. Para una gran empresa, tener proyectos ralentizados porque no pueden obtener desarrolladores no es una opción. Entonces, si bien los lenguajes funcionales son geniales, puedo apreciar por qué las compañías elegirían evitarlos.

¡Pero hey! Scala tiene todas las ventajas de Java (rápido, recolección de basura, estable) y abandona algunas de las idiosincrasias sintácticas que a muchos no les gustan, al tiempo que agrega muchas cosas interesantes. Cuando se mira desde esta perspectiva, leer el artículo de Scala en Wikipedia hace que parezca bastante obvio por qué Twitter lo integraría en su pila. Se ejecuta en la JVM, incluye formas maravillosas de expresar el pensamiento e incluye muchas de las habilidades funcionales que mencioné anteriormente. Con Scala, una empresa puede ser tan rápida como Java, aprovechar los paquetes públicos de Java, aprovechar el conjunto de desarrolladores de OOP que existen y también estar atentos a los desarrollos futuros en el mundo funcional. Demonios, ahora que lo pienso, ¡siento que debería aprender Scala!

O no. Si me preguntas, deberían haberse ido con Smalltalk. ٩ (● ̮̃ •) ۶

Scala tenía una oferta bastante interesante, siendo un lenguaje JVM que puede aprovechar todos los activos de Java sin problemas. Aumenta Java con características funcionales importantes, haciendo que el código sea robusto y conciso.

Fue sobre todo una decisión de ingeniería. Como Twitter carecía de una dirección clara del producto, los ingenieros no tenían nada bueno que hacer, además de hacer que las cosas existentes funcionaran mejor. Si hubiera habido muchas presiones de lanzamiento de características del producto, dudo que nos molestemos en abandonar RoR. Caso en cuestión, Facebook tenía una configuración muy similar inicialmente, pero eligió otra ruta de Hack + C ++, que probablemente sea la mejor solución.

El desarrollador principal de idiomas en Scala trabajó en JVM en Sun. Cuando comenzó Java, era claramente un gran lenguaje, pero la VM era lenta. El JVM ha sido llevado a la era moderna y no lo pensamos dos veces antes de usarlo.

Scala puede tomar prestadas bibliotecas de bibliotecas Java; está compilando hasta el código de bytes de Java, y todo está llamando de un lado a otro de una manera que es realmente eficiente.

La gran teoría unificada de Scala es que combina la programación orientada a objetivos (OOP) y la programación funcional (FP) . El objetivo de Scala es esencialmente decir que OOP y FP no tienen que ser estos mundos separados. Es un poco zen, y no lo obtienes cuando comienzas. Es muy, muy poderoso.

Obtenga más información sobre cómo y por qué Twitter usa Scala.

¿Qué idiomas se consideraron antes de Scala?

Aquí, charla de ingeniero a ingeniero: cómo y por qué Twitter usa Scala – @Redfin