lunes, 15 de octubre de 2012

Lo que amo de Scala: las colecciones

Primera entrada en la serie de lo que me gusta de Scala.  Ojo que no pretendo escribir un tutorial, solamente explicar porque me gusta y que me permite hacer.  Ojo 2: no se cuales otros lenguajes permiten implementar lo mismo, solamente puedo comparar con Pascal, Fortran, C, C++, PL-SQL, Shell script, Javascript y Java.

El código fuente de las colecciones de Scala tiene la reputación de ser complejo.  Se supone que usan teorías algébricas esotéricas como Category Theory que no son para el común de los mortales.  Algún día me daré el tiempo de investigar más sobre el tema, pero mientras tanto, se que se puede hacer maravillas con ellas en forma simple.

Básicamente, son como tener el poder de SQL sin tener que ir y volver a la base de datos.  Los siguientes extractos comparan código Scala con SQL.


Ahora no dudo en llevar datos en memoria y procesarlos fuera de la BD.  Obtengo mejoras en rendimiento y mejoras en mantenibilidad usando un solo lenguaje y eliminando el código de ida a vuelta a la BD

Scala vs otros "next java"

Kotlin, Ceylon e Xtend son 3 lenguajes que están en la misma liga que Scala
  • basados en la JVM,
  • adoptan algo de programación funcional sin renunciar a la OOP,
  • tratan de evitar algunos errores de Java,
  • mantienen la programación genérica y el static typing.
El hecho que estos lenguajes existen demuestran que hay una necesidad.  Java se estanco y, si se destraba el avance de algunas JSR como el project lambda para Java 8, es probable que la sintaxis de Java termine muy compleja.

Una guerra de lenguajes siempre es entretenida, así que empece a mirarlos.  Me fue difícil intuir como serán cada lenguaje sin ver ejemplos avanzados y todos los micro ejemplos se ven bien.  Así que empece a evaluar primero los aspectos no técnicos, poniéndoles notas y publicando mis resultados en G+ y en ingles.  El resumen es:
El resumen del resumen es que estos lenguajes llegan muy tarde y tendrán que superar bastante a Scala para encontrarse un nicho.  Pueden superar a Scala de varias formas, siendo más simples y abordables por un programador Java promedio, con mejor soporte en IDE, creando una comunidad muy entusiasta, etc.

Al final, decidí no dedicar tiempo tratando de implementar una aplicación real con cada uno de ellos. Lo que si tengo pendiente, es listar lo que me gusta de Scala y lo que necesito que otros lenguajes igualen o superen.   Este tema me da para varias entradas en mi blog resucitado.

sábado, 13 de octubre de 2012

De la TI empresa a la TI para el consumidor

Ahora que re-anime este blog, aprovecho leer mis antiguos post y no puedo dejar de notar como ha cambiado mi visión del mercado de las TI.

Hace 2-3 años atrás, le daba mucha importancia al rol de los proveedores de la TI empresarial como Oracle, Sun, IBM, Adobe, Microsoft, jBoss y SpringSource.  Trataba de analizar el futuro de sus productos como ESB, bases de datos y servidores de aplicación.  Me gustaba predecir como evolucionaran sus tecnologías como JavaFx, Silverlight, Flash, XML, BPEL, SQL.

Ahora, estoy completamente convencido que si se quiere mirar el futuro de la TI, no hay que mirar a estos proveedores y sus tecnologías.  Básicamente porque cambio el negocio y se quedaron en el pasado.

Hace 30 años, la TI era para empresas y los usuarios de los sistemas eran los empleados de estas empresas.  Con la web, despego la TI para el consumidor final y nacieron empresas como Google, Amazon, eBay, Twitter y Facebook.  Con la llegada del móvil, la TI para consumidor final ahora supera la "vieja" TI para empresas.

Un ejemplo claro es Apple que casi muere en los 90 y ahora es la más valiosa en la bolsa.  La razón de ser de Apple nunca fue la TI empresarial y no pudo competir con IBM y Microsoft en los 90. Ahora, Apple esta en su zenit con sus iPhone e iPad.

Entonces, ahora miro que hace Twitter, Facebook, Google, Amazon y Apple.  A pesar que algunos no son proveedores de TI, son los que marcan el pulso de este mercado.



No, no comprare un tablet

Seamos realistas, vivo en Chile con un hijo en la universidad y otro por entrar pronto.  Simplemente, no tengo ingresos para renovar cada 2 años el smartphone, un tablet y un PC.  Hay que priorizar.

Yo necesito un PC para el trabajo. Cuando digo PC me refiero a un dispositivo con una pantalla grande, un teclado y un ratón.  No necesariamente tiene que usar un Desktop OS tipo Windows o KDE/Gnome.

Ya estoy adicto al smartphone.  Me resistí durante un tiempo comprar uno, porque pensaba que lo iba a perder o destruir como algunos de mis celulares anteriores.  No fue así y mi pequeño Android es realmente una buena forma de matar tiempo ocioso.  Pronto caduca el contrato con mi Telco y me comprare un smartphone top.

Tengo claro a que sirve un tablet.  Muchas veces, es una lata sentarse en un escritorio y esperar que se encienda el PC para revisar pocas paginas web y es incomodo llevar el notebook en todas partes.  Las pantallas de los smartphone son muy chicas para ver vídeos cómodamente o incluso para leer paginas web no optimizadas para este tamaño.  Claramente, es útil tener algo intermedio para el consumo rápido y en todas partes de contenidos.  Los tablet llenan esta necesidad.

Si no voy a comprar un tablet, necesito que el smartphone o el PC suplan algunos casos de uso.   Por el momento, no me sirven los PC/tablet híbridos ya que tienen pantallas muy enanas. Supongo que los proveedores de Windows 8 van a ser muy creativos, su sobrevivencia depende de eso, y que pronto habrán híbridos más grandes.

Me queda entonces ver como usar mi próximo smartphone como tablet.  Me parece que un smartphone no puede superar 5 pulgadas para que sea practico llevarlo en un bolsillo. Entonces, necesito que el smartphone sea capaz de usar monitores externos.  Miracast y algunos proveedores como Samsung o LG proveen esta capacidad.  Claro, no podre usar esta solución en el metro o en la playa, pero no son lugares donde usaría un tablet de todas formas.

Finalmente, la siguiente etapa sería usar el smartphone como PC también.  Hay equipos como el Motorola Atrix o el Nexphone que van en esta dirección.  Falta poco para que sean utilizables.




De vuelta al blog

Después de un paseo por las redes sociales, me parece que el blog sigue el mejor método para divagar sobre temas tecnológicos.

El año pasado, cerré mi cuenta de facebook porque esta compañía tiene practicas comerciales muy desagradables.  De todas formas, facebook nunca fue un buen lugar para postear temas de nerd.

Acabo de cerrar mi cuenta twitter donde seguía varios gurus del mundo de las TI, en particular los de la comunidad Scala.  Yo era seco para el re-tweet, pero el formato de 140 caracteres siempre me bloqueo para publicar algo inteligente.  Admiro los que son capaz de decir mucho en tan poco espacio.  Finalmente, Twitter es demasiado serio y, sobre todo, es bastante malo para armar conversaciones.

Luego de usar Google Buzz, me quedo con G+, básicamente como un reemplazo de un RSS Reader ya que varias revistas publican sus entradas.  Y, solamente con el "what's hot", justifico quedarme en G+ por lo menos por un año más.

En fin, aquí estoy de vuelta, bloggeando en español después de intentar masacrar el ingles con mis entradas sobre Scala vs Ceylan vs Kotlin en G+.