Así que ahora Eclipse ha ofrecido Xtend y JetBrains está ofreciendo Kotlin, los cuales parecen ser versiones diluidas de Scala. Mi pregunta es por qué He jugado con Scala un poco y no es que dura. ¿Es solo una reacción a la dificultad inherente del salto de imperativo a funcional o hay algo más en el trabajo aquí?
EDITAR: disculpas. Al releer la pregunta tal como la publiqué originalmente, puedo ver dónde suena un poco como trolling. La forma en que formulé la pregunta parecía ser la mejor manera de formularla. He visto publicaciones de blog en el sentido de que "Scala es demasiado difícil / Scala es demasiado complejo" y también "Kotlin es un intento de hacer Scala pero más simple". Dejaré la frase como estaba originalmente pero honestamente no estaba tratando de troll.
fuente
Respuestas:
En mi humilde opinión, alguien que ha programado en Java durante los últimos 7 años y siendo mi lenguaje más fuerte, encuentro que Scala es bastante ajeno y me está costando acostumbrarme.
Xtend se siente más como Java y fue capaz de escribir una aplicación simple mucho más rápido. Por supuesto, no me di suficiente tiempo con Scala, pero ciertamente entiendo por qué algunos pueden ser desactivados por él.
Dicho esto, la gente elegirá un infierno familiar sobre un cielo desconocido.
fuente
JetBrains tiene una página wiki que compara Scala con Kotlin, y parece que hay algunas cosas que Kotlin hace y Scala no:
Entonces, llamar a Kotlin agua abajo Scala es probablemente una simplificación excesiva. En cuanto a Xtend, creo que está dirigido principalmente a usuarios de Xtext, en lugar de a un público más amplio. Una gran diferencia para Scala es que Xtend compila a Java en lugar de bytecode.
Otro lenguaje "asesino de Java" que debe agregar a su lista es el de Ceilán de Red Hat , aunque no tengo idea de si se compara con Scala y cómo.
fuente
He estado usando Scala como mi idioma principal durante el último año (con Java como segundo cercano, ambos dentro de una gran base de código Java heredado). Todavía tengo que buscar características bastante básicas si no las he usado en un mientras. Claro, usted puede escribir algunas Scala rápidamente, pero es un lenguaje extremadamente rica en características, y se necesita mucho tiempo para dominar.
Además, su complejidad no es solo un problema para los humanos, sino también para IDE y compiladores. Tanto Celyon como Kotlin compilan directamente para limpiar bastante JavaScript. Scala puede producir JavaScript, a través de GWT, aunque llegar allí es complicado y la salida de GWT no es legible ni está diseñada para jugar bien con JavaScript externo o HTML.
Definitivamente soy más productivo en Scala que Java, y el código es más compacto y legible (una vez que conoces un poco de Scala). Pero su complejidad me hace dudar en recomendarlo a otros. Un lenguaje con un 20% de complejidad pero un 80% de la capacidad sería una alternativa bienvenida.
[Editado para eliminar la mención del código heredado, vea el comentario a continuación.]
[Anexo 2017: Scala ahora es compatible con JavaScript como objetivo de compilación, mientras que Kotlin ha continuado agregando características que tienen sentido para un reemplazo de Java / Groovy / JavaScript similar a Scala. Ahora son idiomas más distintivos que cuando escribí esto por primera vez.]
fuente
+:
extractores, por ejemplo). Espero que la Programación en Scala se actualice en un futuro próximo. Para 2.11, algunas cosas mejoran aún más. El stdlib ya está libre de desaprobaciones y también se reducirá un poco. Quizásscala.util.parsing
también se traslade fuera de stdlib. Veremos ...::
,::=
o lo+:=
que antecede, pero la mayoría de la gente quiere lo:+=
que se agrega, pero eso no es eficiente para una Lista.JetBrains ha establecido muy claramente sus objetivos para Kotlin :
fuente
He usado Scala unos meses en Eclipse con Play Framework. Me gusta el idioma pero también hay cosas que no me gustan.
Para mí, la razón para cambiar de Java a otro lenguaje es ser más productivo.
Hasta ahora no he sido más productivo con Scala. Una razón es la falta de un buen soporte para Scala en Eclipse, el complemento Scala es malo (por ejemplo, la sangría falla) y todavía no tiene muchas funciones (por ejemplo, no hay una "Jerarquía de llamadas abiertas"). El compilador Scala también es lento, esto puede no ser un problema, pero uso Scala con Play Framework, que compila el código para cada solicitud, y allí la velocidad del compilador es importante.
fuente
No sé sobre Kotlin, pero Scala y Xtend son dos bestias muy diferentes.
Contrariamente a los dichos comunes, Scala NO es un mejor Java. Scala es un lenguaje mucho más destacado que Java, con su propia sintaxis y semántica, y su propio paquete de bibliotecas base.
Xtend es un mejor Java. Mantiene la semántica de Java y mejora su sintaxis. Cada línea de código Xtend se puede traducir directamente a un montón de líneas de código Java. No hay tiempo de ejecución adicional, tampoco.
Creo que ambos enfoques son correctos, aunque diferentes. No me disgusta Scala (como idioma), pero no me gusta que se agreguen tarros Scala a mis proyectos. Tampoco puedo usar Scala correctamente en Android (agrega problemas de peso y rendimiento). Xtend no es tan destacado, pero está bien para mí (vale la pena usarlo más que el lenguaje Java) y funciona en todas las plataformas como si estuviera escribiendo directamente en Java.
Creo que ambos idiomas cubren nichos diferentes y pueden coexistir sin interferir entre sí. En mi humilde opinión, Scala es demasiado complejo, no agrega nada nuevo. Si desea ser más funcional y menos OO, simplemente elija uno de los muchos lenguajes funcionales más simples, como Clojure o JHaskell. Si solo desea Java con una mejor sintaxis y un poco de programación funcional, Fantom sería tan bueno como Scala (se parece mucho a C #).
Pero encuentro que Xtend está en un punto dulce entre todos esos idiomas. Agrega todos esos patrones sintácticos que quería para Java, manteniendo las partes buenas de Java (su semántica). Piénselo como Coffescript para Java.
Y el soporte de Eclipse es excelente ...
fuente