Lenguajes JVM
Scala: Parte 2
Los primeros pasos en Scala
Como había comentado en mi post anterior sobre el lenguaje Scala, mi pretensión es contribuir "paso a paso" con algunas de las cosas importantes de este lenguaje, discutiendo conceptos relevantes y algo de código para ilustrar esos conceptos.
Creo que es necesario aprender a caminar con pasos firmes para después correr, y por esa razón me voy despacio explicando cada cosa en su momento.
Casi todos los libros y tutoriales de Scala aconsejan comenzar con el intérprete de Scala y "oyendo" a los que saben voy a hacer lo mismo, aunque también me gustaría "saltar del REPL a programas completos. Esa forma me ha ayudado a entender el lenguaje, aunque debo confesar que aun me falta mucho por aprender y que bueno que sea así pues evito el aburrimiento.
El REPL (Read Eval Print Loop) es un shell interactivo que compila código de Scala y retorna el resultado (o el tipo) de manera inmediata. Espero que todos los que leen esto ya tengan en su máquina a Scala y puedan interactuar con el intérprete a medida que leen esta notas.
Definamos algunas variables en el REPL:
Traductor Java Zone
Seguimos sacandole jugo a las apis de Google XD, desarrollamos un sencillo programa para mostrar el funcionamiento de la api de google translate.
Codigo Clase Principal
Scala: Parte 1
En este sitio se han discutido algunas de las cosas del lenguaje Scala, todas ellas muy interesantes y que han llamado la atención de los participantes en esta comunidad.
Tengo la intención de escribir varios artículos sobre este lenguaje de manera “disciplinada” lo que quiere decir comenzar desde el principio, aunque seguramente repetiré algunas de las cosas que ya se han dicho aquí. Eso no es traumático: a veces conviene leer lo que varios dicen sobre lo mismo.
Seguramente va a suceder que los posts queden “algo” extensos: pongo el parche antes que salga el grano, aceptando cualquier crítica al respecto y a otras cosas que pueda escribir aquí.
Comienzo entonces con una introducción al lenguaje. Para algunos será “pan comido” para otros será carbohidrato por digerir.
Scala es un lenguaje escalable
Scala es bautizado con ese nombre para precisamente decir que se inventa un lenguaje escalable.
Sobre invokeDynamic en Java 7
Nota Esta es una sobresimplificación, para más detalles ver el link al final.
Una cosa que viene en Java 7 esa si seguro es la instrucción
que si bien no será posible usar desde Java mismo, dará un boost sorprendente para todos los lenguajes dinámicos que corren sobre la JVM ( cuando sean portados claro ).
A manera de resumen y como una sobresimplificación ( que conste ):
Cuando Groovy, JRuby, Jython y otros lenguajes con tipeo dinámico invocan un método sobre la JVM hacen algo como esto:
Invocan al método
pues... dinámicamente, al vuelo, siempre y cuando el objeto sea de una clase que tenga ese método. Si no lo tiene pues nomás truenan en runtime y ya.
La forma más fácil de entender como se invoca ese métod dinámicamente es pensar en algo similar a lo siguiente en Java:
Programación orientada a objetos para novatos
Principios de programación Orientada a Objetos
Presentación de Ryz en el HackerRoomMx ( vie. 27 mayo 2011 8 p.m. )
Después de casi un mes de atraso derivado entre otras cosas que mi disco duro voló, por fin he decidido hacer una presentación del lenguaje de programación Ryz que llega al fin a su pre-pre-pre-Alpha release.
En esta presentación hablaré sobre las características del lenguaje y algunos aspectos sobre su origen, estado actual y siguientes pasos. Habrá claro algún ejemplo para que no sea todo teórico.
En esta presentación no hablaré sobre la implementación, en parte porque da pena y en parte porque no es la idea ( para no desilusionarse tan rápido ) Pero si no nos corren pues podemos quedarnos ahí un rato programando :)
Importante Esta es una versión pre-pre-pre-alpha y como tal tiene muchisimas "areas de oportunidad" :P, quedan advertidos.
La cita es el siguiente viernes 27 de mayo 2011 a las 8 p.m. en el mismísimo HackerRoom:
Rio Volga 80, Mezzanine 2-A
Col. Cuauhtemoc
Mexico, DF 06500
Atte:
Oscar Reyes de la Cruz
@OscarRyz
@ryz_language
Programando en Visual Basic 6 sobre Java: Jabaco
Si ya sé muchos odian VB, pero me llamó la atención este programa.
Es demasiado parecido al original VB6, salvo algunas diferencias, la más importante es que corre sobre la máquina virtual de java (necesitas instalarla antes de usarlo).
Conserva muchos de los controles clásicos como Text, List, Combo, etc. Puedes crear archivos .bas, clases, y controles.
Creo que hasta corre más rápido que el original (según yo). Tiene las mismas estructuras de control como:
- For..Next
- If..Then..Else
- While...Wend
- Select Case...
Puedes enlazar tus programas a cualquier base de datos, convertir los proyectos de VB6 a Jabaco.
Algunos ejemplos.
1. Un login muy sencillo (sin BD)
Ceylon: El proyecto secreto de RedHat que ha mantenido a Gavin King muy ocupado
Hace mucho tiempo, Gavin King anuncio en su blog que se iba a retirar a trabajar a un proyecto secreto que le llevaría bastante tiempo. Este lunes ha hecho un sneak peek de dicho proyecto: El proyecto Ceylon.
Aqui pueden ver muchos de los detalles de las presentaciones de Gavin King en el QCon Beijing
Y tambien ya hay entrada en la wikipedia Revisen al final de la entrada, hay unos PDFs que uso Gavin para presentarlo, no tienen desperdicio
Creo que RedHat se esta equivocado mucho con este proyecto. Se han tardado 2 años en hacerlo y dicen que a finales de año estará listo el compilador. Existen muchos lenguajes para la JVM como Groovy, Scala, Clojure, etc. que tienen mucha mas masa critica de usuarios y desarrolladores. No hace falta otro lenguaje, menos aún con lo horrible que es Ceylon.
¿Necesitamos otro lenguaje? ¿Gavin King olvido como hacer proyectos (Hibernate fue muy exitoso por ser abierto, Ceylon ha sido desarrollado a piedra y lodo)?
"Keep the JVM, dump the rest" - Havoc Pennington
Para más de uno nos hemos planteado el uso de Java cómo tecnología de desarrollo principal. Típico llegamos vemos un foro, vemos tutoriales, vemos la tendencia en cuanto a herramientas, usamos lo más popular, en caso de ser novato lo más nuevo y terminamos con frustraciones muy grandes y proyectos inconclusos, todo por falta de búsqueda de información e incluso a veces por flojera.
Primero, cuando empezamos a programar entramos a un foro cómo este, preguntamos "¿qué es lo in para programar en web?". Obviamente que quien responda de manera honesta y que te deja de: "Ah, pues eso que dice es lo mejor", son las personas experimentadas que hacen macro-proyectos o proyectos muy interesantes que uno cómo principiante (o incluso cómo experimentado, está lejos de hacer algo así). Y obtenemos respuestas cómo Tapestry, Spring, Struts y JSF (digamos, son los más populares por acá) y claro terminamos en una decepción por diversos factores: Curva de aprendizaje, poco conocimiento base, viniendo de otro lenguaje -poco dominio de Java-, etc.