fungicida - Scala, el java del futuro(?)
scala vs python (7)
¡He estado usando Scala durante un año en el trabajo (tecnología financiera) y no querría volver a Java en absoluto! Las cosas que más me preocuparon al considerar originalmente la migración fueron:
- Soporte de herramientas (¿cómo es el IDE?)
- Interopere con las bibliotecas de Java existentes y construya tecnologías (
ant
, Spring , cosas escritas internamente) - Talent Pool (¿Dónde encuentro buenos desarrolladores de scala?)
- Tiempo de transición (¿cuánto tiempo antes de que esté escribiendo un buen scala?)
Descubrí que el complemento de Scala de IDEA (para la ahora gratuita v9 Community Edition ) es excelente: no es tan bueno como el soporte de herramientas de Java, pero ciertamente es lo suficientemente bueno para nuestras necesidades. Tiene refactorización y depuración básicas y un excelente resaltado de sintaxis. Mi experiencia con Eclipse ha sido extremadamente decepcionante: me han hecho comprender que se espera una gran mejora para Scala 2.8, pero he visto un Eclipse reciente todas las noches y fue, francamente, horrible.
La interoperabilidad con Java es de primera clase. No he tenido ningún problema en absoluto y aún uso mucho Spring y nuestro sistema de compilación a medida (basado en hormigas). El grupo de desarrolladores es solo una consideración para una empresa grande con una rotación de personal moderada a alta; Hasta ahora no ha sido un problema para nosotros y los entrevistados han expresado su interés en usar Scala de todos modos.
Quizás el mayor problema es el tiempo de transición. Descubrí que esto son 2 semanas para poder escribir cualquier cosa razonable, 3 meses para comenzar realmente a "entenderlo" y 6 meses-1 año para comenzar a aprovechar las ventajas de los aspectos funcionales y de DSL de Scala. Entonces, ¿cuáles son las grandes ganancias para mí?
- La inferencia de tipos y la co y la contra-varianza están integradas (el código es más legible e intuitivo; los genéricos simplemente funcionan , a diferencia de Java, donde puede ser extremadamente doloroso)
- Estilo de programación funcional y cierres (el código es más legible y más rápido de escribir)
- La biblioteca de concurrencia de actores (simplifica enormemente la programación concurrente)
Así que para concluir:
- ¿Scala es bueno? Si es fantastico
- ¿Está listo para el uso empresarial real? Sí , hay un buen número de compañías que lo usan ahora, incluyendo Twitter, Sony y EDF
- ¿Las ganancias valen el costo de la adopción? Si, absolutamente
Estoy tratando de averiguar la popularidad de scala y cuántos usuarios de SO realmente lo usan en el lugar de trabajo ?
- Aquí hay algunos enlaces de Scala
Acabo de empezar a trabajar con Scala y empiezo a ver más interés en el ámbito financiero.
Ahora estoy recibiendo más personas / colegas que muestran interés en esto. Algunas personas me han pedido que las mantenga informadas sobre mi progreso. No vi el mismo nivel de interés en Groovy (u otros lenguajes JVM que publican Java).
Así que definitivamente es el lenguaje de Java de jour , y creo que tiene más impulso que cualquier otra cosa antes que en el ámbito de Java. Sin embargo, ¿cómo se lleva esto adelante?
Escuché sobre Scala en una convención reciente (JavaEdge2009) y todos parecían bastante convencidos de que Scala es un gran lenguaje. La nota clave de la conferencia fue que el futuro de Java no es solo un nuevo lenguaje de programación JVM, sino que los lenguajes de programación SON el futuro de Java. Ya que JDK 7 tendrá soporte para lenguajes dinámicos incorporados, los profetas dicen que en unos años se desarrollará en su propio idioma, (DSL - Lenguaje específico de dominio)
En el lado práctico, descargué el plugin de Scala Eclipse y me decepcionó. El hecho de que las importaciones automáticas no funcionen todavía, trazó la línea para mí de un lenguaje interesante a un lenguaje práctico. Aunque puede sonar un poco raro, ser necesario como en los días antiguos para agregar importaciones manualmente es demasiado para mí.
Escuché sobre Scala hace algunos meses, y estaba muy emocionado de ver "una mejor Java que Java" para la JVM. Scala corrige una serie de problemas de Java con el molesto código repetitivo, agrega alguna programación funcional y soporte de programación concurrente. Tiene una buena compatibilidad (aunque no perfecta) con las bibliotecas de Java, por lo que todo ese código está disponible al instante. También es posible mezclar Scala con Java y posiblemente otros lenguajes JVM en el mismo proyecto.
Intenté aprender Lift (el marco web) y descubrí que no era lo suficientemente inteligente como para manejarlo. La sintaxis de Scala es muy tersa y críptica en algunos lugares (donde Java es prolijo) y requiere un poco de tiempo para acostumbrarse. Escribí algunos proyectos pequeños y funcionaron bien; pero los proyectos más grandes no fueron divertidos con el soporte medio adecuado de los complementos de Eclipse disponibles en ese momento.
Personalmente, me di por vencido con Scala y me mudé a Clojure, que ofrece muchas de las mismas ventajas y es más (lamento ser subjetivo aquí) "divertido" de programar.
Mi conclusión personal: Scala tiene una gran cantidad de características, lo que eleva la curva de aprendizaje. Se siente como la complejidad de C ++ con la sintaxis de Java y las construcciones FP de Ruby. Creo que será difícil convencer a la industria de que Scala tiene ventajas significativas sobre Java, lo suficiente como para justificar los costos de reequipamiento y capacitación.
He estado programando en Java durante muchos años, y Haskell y OCaml durante los últimos dos años. Hace unos meses comencé a desarrollar un proyecto personal en Scala, y es maravilloso. Un sistema de tipo real y todas las bibliotecas de soporte de Java.
La facilidad de mezclar Java y Scala significa que el lenguaje definitivamente tiene un futuro. Los costos de adopción para un proyecto Java existente son muy bajos.
Nadie tiene una bola de cristal, y alguien podría llegar a algo mejor (o algo peor con una potencia detrás) en cualquier momento.
Ha habido muchos artículos, podcasts, etc. Aquí en SO, le sugiero que lea: https://.com/questions/33744/is-scala-the-next-big-thing
Personalmente, creo que Scala es prometedor, pero puede que nunca logre atraer a la multitud. Gran parte del uso de producción de Java hoy gira en torno a J2EE y no veo que estas personas hagan la transición. Para los usuarios que no son de Java, los lenguajes más establecidos como Python pueden proporcionar todas las funciones funcionales que necesitan, incluso a costa de no usar la JVM.
No estoy seguro de si esta información ayuda, pero estoy creando un servidor de juegos en línea para una empresa de juegos exitosa y establecida, utilizando Scala y Project Darkstar.
Nuestro diseño está diseñado para escalar entre medio y diez millones de usuarios (¡gracias, Amazon EC2!), Y Scala me da más confianza en mi código por cinco razones: 1. Capto más cosas en tiempo de compilación. 2. Es fácil hacer que gran parte de los datos de mi juego sean inmutables. 3. Un código de nivel superior significa que es menos probable que obtenga un error de implementación trivial. 4. Un código más corto y simple me facilita la revisión y la búsqueda de errores. Las conversiones implícitas son una gran parte de esto. 5. Cuanto más feliz estoy escribiendo el código (y Scala generalmente me hace feliz), mejor trabajo hago.
Scala no es una panacea y tiene muchas verrugas (es decir, la falta de un gran soporte para herramientas) pero es, con mucho, el lenguaje más productivo que podría usar para este propósito.
Mi única queja es que me gustaría que se compilara en C o en un ensamblador de macros en gran medida, ya que las limitaciones de la JVM a menudo me molestan (borrado de tipo, falta de tipos de pila y matrices de objetos por valor).
No creo que Scala sea tan popular todavía, la conversión 2.8 está lamentablemente atrás y ha creado una ruptura en la comunidad, y el soporte de la herramienta simplemente no está allí. Pero si eres un programador de vaqueros que no teme la teoría de los tipos algebraicos y la falta de autocompletar, es difícil equivocarse.
Si decides usarlo, hazte un gran favor y compra el libro de Odersky. Durante un tiempo intenté codificar en Scala sin él, y era casi imposible hacer algo a la "manera de Scala" (no es que haya consenso al respecto).