Groovy y Scala son lenguajes que se están haciéndose famosos en la plataforma Java. Los dos son similares pero tienen diferencias importantes; que son buenas saberlas antes de elegir uno o otro.
Como semejanza los dos lenguajes corren sobre la JVM, con interoperabilidad con toda la plataforma. Los dos son orientados a objetos pero Scala también es funcional y los dos tienen clausuras. Además los dos permiten un sistema de reutilización con mixins.
Los dos lenguajes soportan aplicación parcial de una función y curring, pero el uso de estas características es más natural en Scala dado que es funcional. Además Scala optimiza las funciones recursivas esto tiene gran importancia en el paradigma funcional pero no tiene tanta importancia en la programación imperativa.
Los dos tienen por defecto evaluación ansiosa o eagerly; sin embargo Scala permite call-by-name y lazy evaluation. En Groovy se puede emular call-by-name con clousures.
Scala no tiene el concepto de campos o clases estáticas, utiliza el concepto de objetos que son similares a objetos singletones; en cambio Groovy, si utiliza statics.
Groovy es un lenguaje dinámicamente tipado pero también podemos trabajar con tipado estático (definiendo los tipos a las variables), esto puede ser bueno o malo depende de como lo veamos; además Groovy soporta dynamic meta-programming.
Scala es un lenguaje estáticamente tipado por lo tanto no soporta dynamic meta-programming, es este punto Scala es más parecido a Java pero Scala cuenta con un sistema de tipos más sofisticado que Java. Algo que también hace la curva de aprendizaje más empinada.
Groovy es sintácticamente más parecido a Java pero semánticamente se ve la influencia que tuvo Ruby. Scala en cambio sintácticamente se ve la influencia de Java y Ruby, pero semánticamente fue influido por Java, SML, Haskell y gBeta.
A mi entender lo principal que impulso a Groovy fue Grails fue el caballo de batalla y que le hizo muy buena publicidad al lenguaje. En cambio Scala no tenia un framework de desarrollo ágil que lo impulsara hasta que la empresa Typesafe compro el framework Play! y con Play 2 adaptaron a Play para que funciones con Scala. Si bien Grails esta super maduro, Play! tiene una comunidad muy buena.
James Strachan el creador de Groovy dijo: “I can honestly say if someone had shown me the Programming in Scala book by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy.” Dicho que condena a Groovy, pero a mi entender es un tanto injusto. Groovy es un lenguaje de tipado dinámico con características que lo hacen muy práctico y muy fácil de aprender. En cambio Scala es un lenguaje de tipado estático, que tiene una curva de aprendizaje mayor a Groovy.
Estas son las diferencias más importantes, que tenemos que tener en cuenta cuando escogemos uno o el otro…
Translate
sábado, 15 de marzo de 2014
Discover Dart
Hola quería compartir un nuevo curso de code scholl sobre Dart. Recuerdan que Dart es el lenguaje de google que quiere desterrar a Javascript.
Dejo link:
http://dart.codeschool.com/
Dejo link:
http://dart.codeschool.com/
jueves, 13 de marzo de 2014
lunes, 10 de marzo de 2014
Recompensa del esfuerzo
Si bien no tiene que ver directamente con el blog; quiero compartir esta reflexión de Alejandro Dolina. La relación con este blog tiene que ver con el goce de aprender, el goce de usar la cabeza, tiene que ver con una visión que quiero del mundo. Y en parte explica este blog.
domingo, 9 de marzo de 2014
La historia de los lenguajes de programación
He posteado varias infografias o comparativas de lenguajes pero creo que ninguna es tan completa y fácil de leer como la que adjunto. Y a la vez muestra las personas detrás del lenguaje.
Dejo link:
http://thequickword.wordpress.com/2014/02/16/james-irys-history-of-programming-languages-illustrated-with-pictures-and-large-fonts/
Dejo link:
http://thequickword.wordpress.com/2014/02/16/james-irys-history-of-programming-languages-illustrated-with-pictures-and-large-fonts/
La Linux Foundation pone en marcha cursos en línea para profesionales
Quiero hacerme eco de una noticia que vi en MuyLinux, al pareces la gente de linux fundation se asocio con la gente de edX y van a dictar cursos de nuestro querido sistema operativo.
Dejo el link:
http://www.muylinux.com/2014/03/07/linux-foundation-cursos-en-linea
http://www.linuxfoundation.org/news-media/announcements/2014/03/linux-foundation-build-massive-open-online-course-program-edx
http://training.linuxfoundation.org/linux-courses/find-linux-training-courses?pi_ad_id=18794231074&gclid=CP_n-aax_rwCFYRQ7AodAB8ABw
Dejo el link:
http://www.muylinux.com/2014/03/07/linux-foundation-cursos-en-linea
http://www.linuxfoundation.org/news-media/announcements/2014/03/linux-foundation-build-massive-open-online-course-program-edx
http://training.linuxfoundation.org/linux-courses/find-linux-training-courses?pi_ad_id=18794231074&gclid=CP_n-aax_rwCFYRQ7AodAB8ABw
miércoles, 5 de marzo de 2014
Encuesta sobre java 8
Interesante encuesta de la gente de Typesafe sobre Java 8
Dejo link:
http://info.typesafe.com/acton/form/3608/0026:d-0007/1/index.htm?id=0026&utm_medium=email&utm_source=Act-On+Software&utm_content=email&utm_campaign=Typesafe%20Newsletter%20-%20March%20%27014&utm_term=Java%208%20Survey%20Results
Nueva versión de Akka
Hoy me entere de un nuevo release del framework de la empresa Typesafe. El pasado 5 de marzo se dio a conocer la nueva versión de Akka 2.3.0.
Para el que no conoce Akka es un framework open source basado en el concepto de Actores. Este framework nos facilita la creación de aplicaciones distribuidas y concurrentes. Fue escrito en Scala y se puede utilizar en cualquier lenguaje de la plataforma Java.
Entre las novedades de la nueva versión podemos nombrar:
- Akka Persistence: Este módulo le permite escribir Actores con estado persistente que sobrevivan a los fallos de hardware y software, y también proporciona un mecanismo de opt-in.
- Soporte para Java 8: Akka viene preparando la cancha para la nueva versión de Java y dejando todo preparado para el uso de lambda.
- Mejoras en el uso de Cluster: La gente de Akka aprendió varias cosas dado que ejecuto Akka en 2400 nodos, dando lugar a varias mejoras de rendimiento y mejoras de usabilidad.
- Activator Templates: Activator es como Maven (salvando las diferencias) y los templates como los archetypes. La gente de Akka creo nuevos templates, para que tengamos menos trabajo al crear un nuevo proyecto que use Akka:
- akka-sample-camel-java
- akka-sample-camel-scala
- akka-sample-cluster-java
- akka-sample-cluster-scala
- akka-sample-fsm-java-lambda
- akka-sample-fsm-scala
- akka-sample-main-java
- akka-sample-main-scala
- akka-sample-multi-node-scala
- akka-sample-persistence-java
- akka-sample-persistence-scala
- akka-sample-remote-java
- akka-sample-remote-scala
- akka-cluster-sharding-scala
Dejo link:
https://typesafe.com/blog/akka-230-major-release
Join our next Analytics Academy course
Google nos invita a realizar un nuevo curso de Google Analytics.
Les dejo el mail que me mandaron:
Les dejo el mail que me mandaron:
Join our next Analytics Academy courseLearn how the Analytics platform works to get more value from your reports. | |||||||
| |||||||
|
| |||||||
Happy analyzing,
The Google Analytics Team |
lunes, 3 de marzo de 2014
Julia, un lenguaje del futuro...
Julia es un lenguaje de programación conocido en el ámbito científico por su basta librería de funciones matemáticas, a la vez es un lenguaje de alto nivel y de alta perfomance. El lenguaje fue creado por Stefan Karpinski, estudiante graduado de la Universidad de California, que estaba involucrado en una herramienta simulación de redes que requería el uso de varios lenguajes de programación diferentes. Curiosamente, ninguno de los lenguajes usados podía hacer toda la tarea, todo el proceso. Por ello, Karpinski, junto con su compañero de universidad Viral Shah y Jeff Bezanson del MIT, decidieron resolverlo diseñando un nuevo lenguaje que fuera compatible con prácticamente cualquier tarea. La meta de Karpinski y su equipo es construir un lenguaje único que haga todo bien.
La librería de funciones matemáticas, en gran parte estan escrita en Julia, pero también se integra con librerías maduras, las mejoras librerías de C y las librerías de Fortran para álgebra lineal, la generación de números aleatorios, procesamiento de señales y procesamiento de cadenas.
Entre las características de este lenguaje podemos nombrar:
- Posibilidad de definir el comportamiento de una función con una combinación de tipos de argumentos
- Sistema dinámico de tipos: tipos para documentar, optimizar y ejecutar rutinas
- Buen desempeño, el cual se aproxima (estadísticamente) a lenguajes como C
- Manejador de paquetes interconstruido
- Macros como en LISP y otras funcionalidades de metaprogramación
- Se pueden llamar funciones de Python usando el paquete PyCall
- Llamada a funciones de C directamente. No se necesita nada más
- Poderosas Shell que puede manejar otros procesos
- Diseñado para computación distribuida y en paralelo
- Corrutinas
- Tipos definidos por el usuario que son rápidos y compactos
- Generación automática de código especializado, eficiente, de acuerdo al tipo de argumentos
- Conversiones elegante y extensibles para tipos numéricos y otros tipos
- Soporte para Unicode
- Licencia MIT : libre y de código abierto
Una de las características más notables de Julia es la performance de su compilador JIT, el cual es capaz de superar a lenguajes que tienen más historia. En la pagina oficial de Julia podemos ver un benchmark realizado que compara a Julia con otros lenguajes como Fortran, Python, R, matlab, etc. Como podemos ver a continuación Julia queda muy bien parado:
IJulia, es un entorno gráfico e interactivo que permite combinar instrucciones Julia con funciones matemáticas, gráficos, multimedia todo en un solo documento. Ijulia utiliza el poderoso entorno IPython para su funcionamiento.
Julia ha ganado un espacio importante en el mundo científico con su amplia librería matemática y su velocidad. La pregunta es si seguirá ganando terreno en otros ámbitos. Ustedes que opinan?
viernes, 28 de febrero de 2014
miércoles, 26 de febrero de 2014
SkySQL
En diciembre de 2012, Michael Widenius, David Axmark, y Allan Larsson anunciaron la creación de una fundación que se encargaría de supervisar el desarrollo de MariaDB. En abril de 2013, la Fundación anunció que había nombrado a Simon Phipps a su Secretario y interino consejero delegado, Rasmus Johansson para Presidente de la Junta, y Andrew Katz, Jeremy Zawodny, y Michael Widenius a placa miembros. Tomando nota de que deseaba crear un modelo de gobierno similar a la utilizada por la Fundación Eclipse, la Junta nombrado Director Ejecutivo de la Fundación Eclipse Mike Milinkovich a un asesor para dirigir la transición
SkySQL, es una compañía formada por ex-MySQL que cuando Oracle le empezó a echarle mano decidieron dejar la compañía y seguir por su camino.
MariaDB es hija de MySQL y se esta volviendo cada vez más fuerte, de a poco va ganando a su padre. SkySQL existe como el nuevo hogar natural para los ex clientes de MySQL AB y aquellos que buscan explotar MySQL por primera vez. También somos la fundición técnica y comercial para MariaDB - el futuro de SQL de código abierto.
Dejo link:
http://www.skysql.com/
https://mariadb.com/
SkySQL, es una compañía formada por ex-MySQL que cuando Oracle le empezó a echarle mano decidieron dejar la compañía y seguir por su camino.
MariaDB es hija de MySQL y se esta volviendo cada vez más fuerte, de a poco va ganando a su padre. SkySQL existe como el nuevo hogar natural para los ex clientes de MySQL AB y aquellos que buscan explotar MySQL por primera vez. También somos la fundición técnica y comercial para MariaDB - el futuro de SQL de código abierto.
Dejo link:
http://www.skysql.com/
https://mariadb.com/
El futuro llego hace rato...
Nada más que decir, el futuro es Wolfram. Increible lo que se ve en el video que les dejo abajo. Pero los pongo al tanto, el lenguaje Wolfram es un lenguaje muy general de programación multi-paradigma desarrollado por Wolfram Research, que sirve como el principal idioma de interfaz para Mathematica.
Es un lenguaje de programación que se apoya en una base de conocimiento. Está diseñado para ser lo más general posible, con énfasis en computación simbólica, programación funcional y programación basada en reglas. Está construido para representar estructuras y datos arbitrarios.
El lenguaje es muy amplio, tocando numerosos dominios, a menudo especializados. Por ejemplo, éste incluye funciones incluidas para generar y ejecutar máquinas de Turing, crear gráficos y audio, analizar modelos 3D y resolver ecuaciones diferenciales.
También cuenta con una gran cantidad de documentación, pero no ha sido estandarizada. Una estandarización parcial está planeada y un prelanzamiento incompleto ya existe. Será incluido con el software instalado en cada Raspberry Pi.
Toma tu torta!!
Les dejo un video:
Dejo link:
http://www.wolfram.com/wolfram-language/
Es un lenguaje de programación que se apoya en una base de conocimiento. Está diseñado para ser lo más general posible, con énfasis en computación simbólica, programación funcional y programación basada en reglas. Está construido para representar estructuras y datos arbitrarios.
El lenguaje es muy amplio, tocando numerosos dominios, a menudo especializados. Por ejemplo, éste incluye funciones incluidas para generar y ejecutar máquinas de Turing, crear gráficos y audio, analizar modelos 3D y resolver ecuaciones diferenciales.
También cuenta con una gran cantidad de documentación, pero no ha sido estandarizada. Una estandarización parcial está planeada y un prelanzamiento incompleto ya existe. Será incluido con el software instalado en cada Raspberry Pi.
Toma tu torta!!
Les dejo un video:
Dejo link:
http://www.wolfram.com/wolfram-language/
martes, 25 de febrero de 2014
Grails y Cassandra, un solo corazón.
Quiero compartir unos slite sobre grails y cassandra. Cassandra es una base de datos NoSQL, utilizada en Facebook y donada a la comunidad apahe.
Dejo link:
http://beckje01.github.io/gum-2014-cassandra-grails-talk/#/4
Suscribirse a:
Entradas (Atom)