Scala IDE


Ahora que tuve un poco de tiempo de probar varios lenguajes como: Scala, Ceylon, Clojure, etc. encontré este sitio Scala IDE http://scala-ide.org/

Se trata de un IDE (plugin) para crear programas en Scala desde Eclipse.

En Eclipse basta poner este link:
http://download.scala-ide.org/releases-29/stable/site
Y la verdad no pude evitarlo, quise probarlo con un código que hice en Groovy haber como quedaba:

Horoscopo.scala
 

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Sr. Negativo

Scala y otros lenguajes

Instala este plugin es bastante sencillo.

Crear un proyecto Scala

Crear aplicación

Ya habia hecho una breve comparativa con otros lenguajes:

http://www.javamexico.org/foros/groovy/groovycomparativa_con_otros_lenguajes.

Semejanzas con Groovy Python

Horoscopo.groovy
 

Horoscopo.py
 

Imagen de Sr. Negativo

Otros ejemplos

Mostrar los primeros 20 números pares al cuadrado
Python
Cuadrados.py
 
Scala
Cuadrados.scala
 

Groovy

Cuadrados.groovy
 

Imagen de greeneyed

¿Por que usar listas para los numeros?

¿Cual es la razón para usar listas para almacenar una serie de numeros? ¿Es algún requerimiento del código para la comparación o algo? No pasa nada, pero me parece que os trozos de código son mucho más complicados de lo que podría/debería y me pregunto si es por algún tema en particular.

Aparte de que los últimos fragmentos no parecen correctos (Scala/Groovy). Primero hacen el cuadrado y luego mira si es par... cuando el enunciado dice "los pares al cuadrado", no "aquellos cuyo cuadrado es par".

Imagen de ezamudio

Scala

Cuadrados.scala:  

Imagen de bferro

La sintaxis dulce de Scala

Para aquellos que no les queda claro la sintaxis dulce del código que escribe Enrique:
 
equivale a lo siguiente,escrito muy verboso:
 

// La verbosidad de Ryz :P (

 

Imagen de echan

alternativa

Si en algun momento ocupamos filter y map en la misma expresion tambien contamos con nuestro amigo collect.
 

cualquiera de los dos se ve muy cool.

Imagen de Sr. Negativo

Sinceridad

Sello de sinceridad:
Mis más sinceras disculpas si no queda satisfecho al 100% con el código (chiste)

Perdón pero apenas estoy estudiando el lenguaje :P !!!

MicroAporte

Bueno, pues yo tengo otra idea de como hacer el horoscopo chino en scala, algo menos verboso (a mi parecer)
 
Espero y si jale bien, sin errores ni nada...creo que es algo más declarativo que lo que vi.

Imagen de ezamudio

ultimo

en vez de   puedes hacer simplemente  

Re: último

Cool...quedando en:
 
O para los raperos:
 

Re: Otros ejemplos

Mostrar los primeros 20 números pares al cuadrado...Lo que entiendo en este es mostrar los 20 números pares al cuadrado. Creo que la solución en Python es:
 

mmm a ver

ya me emocione, segun san yo en python seria asi
los primeros 20 numeros pares al cuadrado
 

y en groovy

 

Me gusta más la

Me gusta más la "comprehensión de listas" que puso Mr(-)

 
Hasta se lee diferente:

Multiplica x por dos para x en el rango de 2 a 41 si x modulo 2 es cero

Re: Me gusta más la

Una corrección sería:
 
Porqué piden cuadrarlos no multiplicarlos por dos :).

Yo lo dejaría en una función más "flexible":
 

Imagen de Sr. Negativo

Groovy javesco .. carta del tarot

 
Aprender un nuevo o nuevos lenguajes si que es dificil ...

El problema del código no es que no funciones si no que sigo "pensando" de manera javesca :( !!

Imagen de Sr. Negativo

... y peor con Scala :(

La verdad dejar de pensar de manera javesca es dificil, no es lo mismo definir una función/método/variables en Scala que en Java/Groovy, vaya que es confuso para mi ... aunque con los post de @bferro y @ezamudio más o menos entiendo lo básico

Imagen de ezamudio

Regla primordial

Cuando veas que tienes más de 3 o 4  's comparando contra el mismo valor y son comparaciones secuenciales, es hora de refactoring. No puede ser que tengas 22 comparaciones para ver si el numero va de 1 a 22 y devolver una cadena. Mete las cadenas en una lista, valida que te pasen un número del 1 al largo de la cadena, y devuelve la cadena en la posición n-1 (para que siga funcionando el método con valores de 1 a N).

Lo mismo va para los meses.

Imagen de Sr. Negativo

Re: Regla primordial

Ando super perdido ...

 

La idea original era usar el each, ... pero bueno tendre que seguir estudiandolo ... gracias por la observación

Re: Groovy javesco .. carta del tarot

Esta es la principal razón de porqué no me agrada Groovy, y esto es que no te obliga a cambiar
ni tu manera de codificar ni el paradigma de programación. No me tomen a mal, a lo que me
refiero es que si en Groovy yo tecleo:
 
Simplemente funciona, y a la hora en que yo no tenga idea como "se debe" hacer algo en
Groovy, pues puedo usar el estilo Java. Sin embargo esto dificulta la legibilidad del código
fuente, y más si desarrollas en grupo y las habilidades de cada uno son diferentes, si le llegas
a decir a alguien que no está empapado en Groovy: "No te apures, que al cabo la gran mayoría
de código Java se ejecuta en Groovy", pues tendríamos verdaderos casos que ni quiero imaginar.

Esa es la principal razón de porqué Groovy está "en mi lista de promesas a olvidar" xD.

Imagen de Sr. Negativo

Tarot groovy ... mejorado

Después del "regaño" de @ezamudio (jaja no es cierto) ya pude mejorar el código del tarot y del horoscopo chino:


Horoscopo.groovy

 

Tarot.groovy
 

Si, es difícil aprender un nuevo lenguaje. Y dejar de pensar de manera "javesca" igual. @wishmaster77 a mi parecer Groovy es el más fácil de aprender y es el que más me gusta de Scala, Ceylon, Clojure, ...

Re: Tarot mejorado

El del horóscopo chino basta con lo que lo dejes en un arreglo, no necesitas un mapa. Respecto a lo de que es más fácil y difícil, pues, Scala no es particularmente difícil, pero no tiene una curva de aprendizaje "natural" para alguien que viene de Java. Bueno, tiene esa curva a medias, porqué de Java uno llega queriendo usar objetos para todo, cosa que se puede hacer en Scala. Sin embargo para sacar el verdadero potencial de Scala es necesario aprender algunos conceptos de programación funcional, y es ahí en donde muchos batallamos.

Groovy es sencillo porqué a mi parecer combina lo que ya sabías de Java con una sintáctica azucarada (muy inspirada en Ruby a mi parecer), por lo que no es un cambio de manera de pensar sino más bien de codificar. En otras palabras en lugar de teclear en Java   sólo escribo   o en lugar de hacer una iteración tipo   con Groovy me limito a  . Digamos que Groovy es como un Java enfocado a la productividad. Mientras que otros lenguajes tienen otros fines distintos. Ceylon es un lenguaje de propósito general, del cual no sé su fin específico. Scala es un sistema pensado en aplicaciones escalables. Clojure por lo que he visto está enfocado más a fines matemáticos.

Imagen de Sr. Negativo

Scala ... es algo dificil pero me gusta

Es más fácil escibir   que hacer un programa más "completo" en java.

Clojure es muy complejo a mi parecer.

Ceylon entiendo algunas cosas ,pero se me complica todavía.

Por ejemplo, hacer un programa para convertir decimales a binarios en java tiene muchas líneas de código, con estos dos en particular no escribes tanto.
Binario.groovy
 

Binario.scala