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
- Sr. Negativo's blog
- Inicie sesión o regístrese para enviar comentarios
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
Otros ejemplos
Mostrar los primeros 20 números pares al cuadrado
Python
Cuadrados.py
Scala
Cuadrados.scala
Groovy
Cuadrados.groovy
¿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".
Scala
Cuadrados.scala:
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 (
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.
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.
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":
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 :( !!
... 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
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.
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.
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.
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