Translate

sábado, 20 de octubre de 2012

Lo que viene, lo que viene en Scala


Han anunciado el el release candidate de Scala (Scala 2.10.0 RC1) entre las características más importante puedo nombrar:

La verdad que están a full, muchas características nuevas que hacen más potente el lenguaje.

Dejo link:
http://www.scala-lang.org/downloads#RC
https://groups.google.com/forum/#!topic/scala-language/eRYM3-SIAso/discussion


jueves, 18 de octubre de 2012

Groovy o Scala esa es la cuestión?


Dos lenguajes están haciendose famosos en la plataforma Java, Groovy y Scala; los dos son similares pero tienen diferencias importantes; que son buenas saberlas antes de elegir uno o otro.

Lo principal a mi entender 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 el framework Play! 2. Si bien Grails esta super maduro, play tiene una comunidad muy buena, Por lo tanto podemos decir que en este punto es empate.


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 closures. 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 caracteristicas es más natural en Scala. 

Groovy es un lenguaje dinámicamente tipado, 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  sintácticamente se ve la influencia de Java y Ruby, pero semánticamente fue influido por Java, SML, Haskell y gBeta.

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 singletones; en cambio groovy, si utiliza statics.

Estas son las diferencias más importantes, que tenemos que tener en cuenta cuando escogemos uno o el otro...




miércoles, 17 de octubre de 2012

Prueba Ceylon !!

Ceylon es un lenguaje que corre sobre jvm. Es un lenguaje hecho por Jboss/Red Hat ; el principal impulsor es ni más, ni menos Gavin King el creador de Hibernate. Ya hable en varias oportunidades del lenguaje: http://emanuelpeg.blogspot.com.ar/2011/08/ceylon.html

En este post les quiero recomendar que pasen por esta pagina donde van a poder probar el lenguaje y  van a comprobar la gran potencia de este lenguaje.

Dejo link:
http://try-ceylon.rhcloud.com/

martes, 16 de octubre de 2012

Advanced Linux Programming


Quien no quiere programar en Linux? Este es un libro gratuito para gente que esta familiarizado con el ambiente de programación Linux y quiera mejorar; es de libre distribución y a simple vista esta muy bueno.


Dejo links:
http://www.advancedlinuxprogramming.com/
http://www.advancedlinuxprogramming.com/alp-folder/
http://www.advancedlinuxprogramming.com/alp-folder/advanced-linux-programming.pdf

domingo, 14 de octubre de 2012

Cual es el futuro lenguaje de la plataforma Java?


Como sabrán en la plataforma Java se esta trabajando para hacer que la JVM sea políglota, por que? Porque el lenguaje Java no siempre es bueno, es decir, pensar que un lenguaje sea bueno para resolver todos los problemas es tirar a la basura mucha teoría, por ejemplo de paradigmas y mucha investigación. Y además para se sincero Java esta un poco viejo, no por tiempo si no por nivel de abstracción, por ejemplo si vamos a hacer algo a nivel hardware esta bueno pode acceder a la memoria, pero si vamos hacer un software de administración no esta bueno tener que preocuparnos por la memoria o cuestiones de hardware, este nivel de abstracción es bueno tener en cuenta cuando hay que elegir un lenguaje. En Java existen muchas cosas que hoy no tienen sentido por ejemplo los datos primitivos; que ventaja nos da el int comparándolo con el Integer?

Por estas razones se busca que otros lenguajes permitan correr sobre bytecode con la misma eficiencia que Java. Pero existe un lenguaje que va a remplazar a Java o van a ser varios? Sin duda que existe una guerra fría de lenguajes para quedarse con la plataforma. Scala, groovy, clojure, Ceylon,  jruby, jython, Kotlin, etc... ofrecen soluciones validas y diferentes formas de encarar una solución; hasta diferentes paradigmas.

En mi opinión Java como lenguaje no va a desaparecer, dado que Android le tiro un salvavidas. Para Android, java es un buen lenguaje; con un nivel de abstracción adecuado; ya que hay que cuidar los recursos dado que se ejecuta desde un celular o tablet. Además cuenta con muchos desarrolladores que esto es muy importante para una nueva plataforma.  

Creo que con los años Java va entrar en desuso en su plataforma pero va a tener larga vida en Android. La plataforma java va ser tomada por otros lenguajes; lo que no estoy seguro es si va a ver un único ganador o va ser un triunfo compartido.

Coinciden con mi opinó? Que lenguaje les gusta? Que lenguaje tiene más futuro?

jueves, 11 de octubre de 2012

Cursos a distancia

Este no es un post para solo informáticos ya que existen varias herramientas para hacer e-learning y diferentes cursos para tomar, de diferentes materias, la herramienta que más me gusta es coursera; pero hay otras que tienen presencia en internet.

Dejo link de la 5 más renombradas:
https://www.coursera.org/
http://www.udacity.com/
http://www.ck12.org/
https://www.edx.org/
http://www.khanacademy.org/

miércoles, 10 de octubre de 2012

Curso Gratuito de Ruby on Rails!!

La nueva entrega de Rails for Zombis se llama Rails for Zombis Redux que es como una reedición; en fin por lo que vi esta bueno.

Dejo link:
http://railsforzombies.org

Nuevo curso de Ruby en Codecademy


Todavía no hice el curso de Python y ahora lanzan uno de Ruby; están con todas las pilas. Vamos a tener que echarle un ojo a este curso.

Dejo link:
http://www.codecademy.com/es/tracks/ruby

javafxcommunity.com

Oracle abrió un sitio para compartir información y hacer comunidad sobre JavaFX, dejo el link:  http://community.java.net/community/javafx

martes, 9 de octubre de 2012

WebPlataform.org

WebPlataform.org es una gran idea la W3C junto a las empresas grandes como Google, Facebook, Microsoft, Opera, Mozilla, Nokia, HP, Adobe y Apple, abrieron una comunidad para desarrolladores  con el objetivo de hacer una web mejor.

"Somos una comunidad abierta de desarrolladores que crean recursos para una web mejor, sin importar la marca, el navegador o plataforma. Cualquiera puede contribuir y cada persona que lo hace, nos hace más fuertes. Juntos podemos seguir impulsando la innovación en la Web para servir a un bien mayor. Se inicia aquí, contigo."

De esta forma se presenta esta web que promete tener muchos recursos para desarrolladores web, dejo un video:


lunes, 8 de octubre de 2012

Nuevo libro gratuito sobre Big Data y Cloud Computing


"Acaba de ser editado este nuevo material/libro académico con licencia commons 3.0 en ES y CAT por la Universitat Oberta de Catalunya (UOC). Mi humilde aportación para ayudar a personas con ganas de emprender, permitiéndoles hacer una entrada rápida a estas nuevas tecnologías que ya están aquí y que quizás puedan ser una herrramienta más en su viaje hacia nuevos retos. Pero junto con la UOC esperamos también que sea útil para todos aquellos alumnos (y personas en general) que quieran tener una visión introductoria de estos temas que son de tanta actualidad. Esperamos que sea un buen punto de partida y en el documento encontrarán referencias en cada apartado para poder profundizar más en el tema si se desea."

Así comienza su post Jordi Torres, en el cual nos deja un link a su libro gratuito de big data y cloud computing:

http://www.jorditorres.org/nuevo-libro-sobre-big-data-y-cloud-computing/


JSON-LD (JavaScript Object Notation for Linking Data)

JSON-LD es una extensión de JSON que le da la capacidad de representar datos semánticos de nuestras paginas. JSON-LD es un método de transporte de Linked Data con JSON. Ha sido diseñado para ser tan simple y conciso posible, sin dejar de ser legible. Además, era una meta que requiere el menor esfuerzo posible de desarrolladores para transformar su JSON simple y llano a semánticamente rica JSON-LD.

Es muy simple, veamos un ejemplo:


{
  "@context": {
    "name": "http://xmlns.com/foaf/0.1/name",
    "homepage": {
      "@id": "http://xmlns.com/foaf/0.1/workplaceHomepage",
      "@type": "@id"
    },
    "person": "http://xmlns.com/foaf/0.1/Person"
  },
  "@id": "http://me.markus-lanthaler.com",
  "@type": "person",
  "name": "Markus Lanthaler",
  "homepage": "http://www.tugraz.at/"
}

Dejo un video:




Dejo links:
http://json-ld.org/
http://en.wikipedia.org/wiki/JSON-LD
http://en.wikipedia.org/wiki/Linked_data

JSONiq: The JSON Query Language


JSONiq es un nuevo lenguaje de consulta construido sobre xquery, como SQL o LinQ tiene funcionalidad de let, for, group by, where, etc. Veamos un ejemplo:


let $stats := db:find("stats")
for $access in $stats
where $access("response_time") > 5
group by $url := $access("url")
return
{
    "url": $url,
    "avg": avg($access("response_time")),
    "hits": count($access)
}

También permite updates:


let $dbj := collection("users")[ .("name") = "Deadbeat Jim" ]
return insert json { "status" : "credit card declined" } into $dbj


Esta muy bueno que se estandarice la forma de consultar datos json, este estándar esta en pañales pero ya tiene una implementación en el producto Zorba. Promete gran futuro!!

Fuente:
http://www.infoq.com/news/2012/10/JSONiq

Links:
http://www.jsoniq.org/
http://jsoniq.org/docs/spec/en-US/html-single/index.html
http://jsoniq.org/grammars/jsoniq.xhtml
http://www.zorba-xquery.com/html/index

domingo, 7 de octubre de 2012

Currying


Currying es una técnica de transformación de una función con múltiples argumentos de tal manera que se puede llamar como una cadena de funciones cada uno con un único argumento.

Vamos a explicarlo con un ejemplo, supongamos que tenemos una función f(x,y) para evaluar esta función la llamamos de la siguiente forma f(2,3) por ejemplo. Suponiendo que no tenemos el valor de y se podría definir una función g(y) = f(2,y). De esta forma cuando llamamos a g(3) = f(2,3)

No parece una técnica muy potente, simplemente definimos una función como una segunda función con parámetros fijos, pero esta técnica con clousures puede ser muy útil y nos permite componer funciones a partir de otras.

Oficialmente cada función de Haskell solo puede tomar un parámetro.  Todas las funciones que aceptan más de un parámetro hacen uso de currying. Cuando tenemos una función con dos parámetros en realidad por ejemplo:

max 4 5

es igual que llamar

(max 4) 5

(max 4) es una función que devuelve el parámetro si es mayor a 4 o 4 si es menor.

Por ejemplo en Haskell se puede definir una función double de la siguiente manera:


mult :: Int -> Int -> Int
mult x y = x * y



double = mult 2


En la pagina de scala podemos encontrar el siguiente ejemplo:


object CurryTest extends Application {

  def filter(xs: List[Int], p: Int => Boolean): List[Int] =
    if (xs.isEmpty) xs
    else if (p(xs.head)) xs.head :: filter(xs.tail, p)
    else filter(xs.tail, p)

  def modN(n: Int)(x: Int) = ((x % n) == 0)

  val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
  println(filter(nums, modN(2)))
  println(filter(nums, modN(3)))
}


Noten que la función modN es llamada con un parámetro por lo tanto devuelve una función del tipo Int => Boolean que luego se utiliza en la función filter.

Currying es una técnica que nos facilita la vida y cobra gran potencia junto a el uso de clousures.

Dejo links:
http://www.scala-lang.org/node/135
http://www.engr.uconn.edu/~jeffm/Papers/curry.html
http://blog.gnucom.cc/2010/currying-in-f/
http://www.haskell.org/haskellwiki/Currying
http://en.wikipedia.org/wiki/Currying

sábado, 6 de octubre de 2012

VOTE!!! Give JBoss Application Server a new name!


Me llego un mail de la gente de Red Hat al parecer van a cambiar el nombre de su producto estrella JBoss y quieren consultar a la comunidad cual es el mejor nombre para el servidor Open Source. Ojo van a cambiar el nombre de su servidor pero la versión de la comunidad; el servidor comercial va seguir llamándose JBoss.

Creo que Red Hat esta haciendo el mismo movimiento que hizo con Red Hat en su momento, tener una versión para la comunidad Fedora y otra para facturar Red Hat.

Vamos a ver como sigue esta historia, por ahora a votar el mejor nombre!

Dejo el link:
https://sso.jboss.org/login?service=https%3A%2F%2Fwww.jboss.org%2Frename.html