Translate

miércoles, 16 de abril de 2014

Moonscript


MoonScript es un lenguaje dinámico que compila a la plataforma Lua. Con este lenguaje vas a tener el poder de un potente lenguaje script y la potencia de Lua

MoonScript puede correr dentro de Lua y a la vez puede ser dinámicamente compilado y cargar los archivos dinamicamente gracias a moonloader. Lo único que necesita es que agreguemos el siguiente import: require "moonscript".

MoonScript proporciona una sintaxis limpia, como pueden ver:

export my_func
x = 2323

collection =
  height: 32434
  hats: {"tophat", "bball", "bowler"}

my_func = (a) -> x + a

print my_func 100

Dejo link:
http://moonscript.org/
http://moonscript.org/reference/

domingo, 13 de abril de 2014

Pattern matching


Pattern Matching nace del paradigma funcional aunque hoy en día lenguaje multiparadigma lo implementan como Scala o Kotlin. Pattern Matching permite definir funciones por medio de macheo de parámetros y resultados. Veamos un ejemplo en Haskell de definición de factorial:

 factorial 0 = 1
 factorial n = n * factorial (n - 1)

Para ver la diferencia entre la forma de resolver el problema sin Pattern Matching, voy a resolver lo mismo en C++

 int factorial(int n) {
       if (n == 0) {
              return 1;
       } else {
             return n * factorial(n-1);
       }
 }

Si comparamos nos ahorramos 5 lineas; pero el tema no es solo escribir menos código. Además debemos pensar: ¿Cuál les parece más legible? ¿Cuál es más simple?

Muchos lenguajes implementan Pattern Matching, al venir del paradigma funcional normalmente los lenguajes funcionales como Erlang lo implementan; vamos a hacer la función de factorial en Erlang.

 fac(0) -> 1;
 fac(N) when N > 0, is_integer(N) -> N * fac(N-1).

Se puede ver que en este caso se indica que debe ser positivo el número; si se ingresa un valor negativo lanza un error. Ojo estas restricciones también la podíamos hacer en Haskell.

 Factorial con ML se vería de la siguiente manera:

 fun fac 0 = 1
      | fac n = n * fac (n - 1)

 Otros lenguajes multiparadigma nos permiten jugar con Patter Matching como Scala:

 def fact(n: Int): Int = n match {
     case 0 => 1
     case n => n * fact(n - 1)
   }

En este caso se define fact que devolverá un entero, y que el parámetro n debe coincidir con 0 y devuelve 1 o con cualquier otro valor y devolverá n * fact(n - 1).

 Por ejemplo Kotlin permite hacer Pattern Maching por el tipo de la siguiente manera:

 when (x) {
   is Int -> print(x)
   is List<Int> -> print(x.sum())
   !is Number -> print("No es un número")
   else -> print("No puedo hacer nada")
 }

Para citar otro ejemplo, veamos desarrollar una función que indique el número que se encuentra en una posición indicada por parámetro de la secuencia de Fibonacci, y lo desarrollaremos con F# :

 let rec fib n =
     match n with
     | 0 -> 0
     | 1 -> 1
     | 2 -> 1
     | _ -> fib (n - 1) + fib (n - 2)

 Si lo comparamos con Mathematica:
 fib[0]:=0
 fib[1|2]:=1
 fib[n_]:= fib[n-1] + fib[n-2]

En Mathematica podemos utilizar el | para decir esto o aquello y el _ para indicar cualquier otro valor.

Pattern Matching es una técnica muy simple, pero muy potente. Por ejemplo necesitamos el primer elemento de una lista podemos definirla de la siguiente manera, vamos a implementarlo en Haskell:

primero :: [a] -> a
primero [] = error "¡No puedes utilizar la función primero con una lista vacía!"
primero (x:_) = x

Con (x:_) estamos diciendo que puede llegar una lista por parámetro que está conformada por un elemento y el resto. Implementemos la función cantidadDeElementos que nos indique cuantos elementos tiene una lista:

cantidadDeElementos :: (Num b) => [a] -> b
cantidadDeElementos [] = 0
cantidadDeElementos (_:xs) = 1 + cantidadDeElementos xs

Una desventaja del uso de Pattern Matching es que nuestro código se verá muy afectado ante un cambio en las estructuras. Pero la ventajas son muchísimas, para citar algunas: legibilidad de código, simplicidad, menos lineas de código, etc...

Netrunner

Ya hable de Netrunner en el post anterior, ahora ha probarlo!!

Les dejo screenshots:












sábado, 12 de abril de 2014

Netrunner, mi próximo linux!!


No sé que voy a hacer mañana, pero sé que quiero instalar Netrunner, cuanto antes.

Por qué? Porque por lo que vi es una muy buena opción. Un entorno KDE muy elegante, y no soy fan de KDE pero en Netrunner se ve su potencia, un entorno muy cuidado.

Además que es una distro basada en Ubuntu, por lo tanto basada en Debian. Y me encanta usar Debian. Y eso no es todo, hace poco anunciaron que sera una Rolling Release. Para el que no sabe Rolling Release es que para cambiar de versión debemos esperar un periodo de tiempo, sino que se va actualizando periódicamente.

Netrunner es una distro muy buena para los amantes de KDE, Debian y Rolling Release.

La voy a probar y les cuento!!


Dejo link:
http://www.netrunner-os.com/
http://en.wikipedia.org/wiki/Netrunner_(operating_system)

lunes, 7 de abril de 2014

Oracle Massive Open Online Course: Develop Java Embedded Applications Using a Raspberry Pi May 2014


Oracle ofrecerá un curso de programación de Raspberry Pi con Java.

Yo no estaba enterado que Raspberry Pi soportaba Java. La verdad es que me saco el sombrero. Raspberry Pi pinta como una gran plataforma que va a acercar el mundo de la rebotica a muchos programadores.

Y esta rebueno que Oracle ofrezca estas capacitaciones.



Dejo el link:
https://apex.oracle.com/pls/apex/f?p=44785:145:0::::P145_EVENT_ID,P145_PREV_PAGE:1841,143

domingo, 6 de abril de 2014

Show Off. Get Proof. Convince Your Boss.


No soy asiduo de hacer publicidad a empresas pero quiero recomendarles la pagina de Typesafe.

Go Typesafe es un conjunto de recursos para ayudar a convencer a sus compañeros para utilizar la plataforma reactive de Typesafe: Play Framework, Akka y Scala.

Dejo link:
http://go.typesafe.com/

viernes, 4 de abril de 2014

Roslyn el compilador Open Source de C# y Visual Basic


Microsoft ha publicado el compilador Roslyn, bajo la licencia Apache.
Roslyn representa una importante inversión de Microsoft. Microsoft ha reescrito su compilador C# y VB. NET desde cero y lo publico con licencia Open source.

Esto es un gran salto para Microsoft dado que abrió el proceso de compilación de sus lenguajes. El lanzamiento de hoy de la tecnología . ET marca un cambio importante en el pensamiento de Microsoft. La visibilidad del codigo del compilador debería conducir a mejores beneficios para todos, independientemente de su plataforma.

Dejo link: http://msdn.microsoft.com/en-us/vstudio/roslyn.aspx

miércoles, 2 de abril de 2014

Reactive Design Patterns



Reactive Design Patterns es un libro que acaba de publicar la editorial Manning. Lo interesante es que regala el primer capitulo, y es una buena idea leerlo para ver de que se trata.

Dejo el link:
http://www.manning.com/kuhn/


Try Flux Today!


Codescholl lanzo la pagina try flux que la verdad no entiendo bien. Alguien me lo puede explicar??

Dejo link:
https://www.codeschool.com/try-flux

lunes, 24 de marzo de 2014

Mixin, Mixin y más Mixin...


El mixin es una técnica para la reutilización de código. El objetivo es que una función pueda estar en diferentes clases, aunque las clases no tengan ninguna relación.

Los mixin fueron utilizados por primera vez en Flavors que era un enfoque a la orientación a objetos utilizado en Lisp Machine Lisp. La ventaja de los mixin es que fomentan la reutilización de código y evitan problemas típicos asociados con la herencia múltiple.

¿Cómo funciona? Existen diferentes formas de implementarlo dependiendo del lenguaje.

Scala

En scala existen entidades llamadas traits. Los traits son características, similares a las interfaces de java, pero pueden contener código. Código que va a ser reutilizados por las clases que utilicen esta característica. Por supuesto una clase puede utilizar varias características.

Voy a tomar el ejemplo del libro programming in scala.  Supongamos que queremos modelar la amistad entonces vamos hace un trait llamado Friend.

trait Friend {
val name : String
def listen() = println("Your friend " + name + "is listening")
}

Como se puede ver se declaro el val name, el cual debe ser proveído por la clase que vamos a mixiar. Ahora tenemos que utilizar a Friend, si la clase que utiliza este trait no extiende de ninguna clase podemos utilizar extends, por ejemplo:

class Human(val name: String) extends Friend

Human podría reescribir los métodos de Friend, por ejemplo si extendemos a Human en Man y Woman, estos también pueden reescribir estos métodos.

Cuando una clase extiende de otra clase se debe utilizar la palabra clave with. Con with podemos utilizar varios trait. Veamos la clase Dog:

class Dog(val name:String) extends Animal with Friend {
      override def listen = println(name + "'s listening quietly")
}

En el ejemplo reescribimos el método sólo para mostrar que se puede reescribir, pero si no es necesario no se debe reescribir.

Ahora podemos utilizar el trait heredado y es más podemos tipar por ese trait como lo hacemos en java con las interfaces:

val john = new Man("John" )
val sara = new Woman("Sara" )
val comet = new Dog("Comet" )

john.listen
sara.listen
comet.listen

val mansBestFriend : Friend = comet

mansBestFriend.listen

También podemos utilizar el mixin en instancias no solo en clases por ejemplo una clase gato, el gato por naturaleza no es muy amistoso:

class Cat(val name: String) extends Animal

Pero existe un gato llamado snowy que es muy amigable, entonces podemos hacer lo siguiente:

val snowy = new Cat("Snowy" ) with Friend
val friend : Friend = snowy
friend.listen

Mixin es una técnica de reutilización de código que nos provee gran flexibilidad en Scala. Veamos como se implementa en Ruby.

Ruby

En Ruby definimos módulos y podemos importar estos módulos en nuestras clases.

module Debug
   def who_am_i?
      "#{self.class.name} (\##{self.id}): #{self.to_s}"
   end
end

class Phonograph
  include Debug
  # ...
end

class EightTrack
  include Debug
  # ...
end

ph = Phonograph.new("West End Blues")
et = EightTrack.new("Surrealistic Pillow")

ph.who_am_i? #Phonograph (#935520): West End Blues
et.who_am_i?  #EightTrack (#935500): Surrealistic Pillow

Groovy 

El caso de Groovy resuelve el mixin con anotaciones o con el método mixin, es como una fusión de Java y Ruby.
 Pero como Ruby tiene la ventaja de ser un lenguaje de tipado dinámico, lo que nos da ciertas libertades.


Usemos anotaciones:

class Dog {
  def talk() {
    "Woof, woof"
  }
}


@Mixin(Dog)
class Talk {
  // other stuff here
}

Y listo! Pero a la vez groovy permite hacer mixin con instancias no solo con clases de la siguiente manera:

someoneElsesClass.mixin(Dog)

Como es dinámicamente tipado, no hay problema si hacemos:

someoneElsesClass.talk()

En Scala si queríamos hacer esto usábamos with en el constructor tipando de esta manera al objeto:

val snowy = new Cat("Snowy" ) with Friend
val friend : Friend = snowy
friend.listen

El método mixin de Groovy tiene la ventaja que se puede utilizar en cualquier momento, no como la palabra reservada de Scala with que sólo se puede utilizar en el constructor.

Dart

Dart implementa el mixin muy similar a scala, es decir tiene trait que pueden ser agregados a las instancias o a las clases. Pero además tiene interfaces, veamos un ejemplo:

interface Shape {
   num perimeter();
}

trait Rectangle implements Shape {
   final num height, width;

   Rectangle(num this.height, num this.width); // Compact constructor syntax.

   num perimeter() => 2*height + 2*width; // Short function syntax.
}

class Square extends Rectangle {
   Square(num size) : super(size, size);
}

Dart usa las interfaces como Java, pero tiene trait como Scala y estas características se pueden combinar.

Ceylon

En Ceylon existen las interfaces que al igual que Scala pueden contener código; es decir una interfase de Ceylon es similar a un trait de Scala:

shared interface Writer {
    shared formal Formatter formatter;
   
    shared formal void write(String string);
   
    shared void writeLine(String string) {
        write(string);
        write(process.newLine);
    }
   
    shared void writeFormattedLine(String formatString, Object... args) {
        writeLine( formatter.format(formatString, args) );
    }
   
}

shared class ConsoleWriter()
        satisfies Writer {
   
    formatter = StringFormatter();
   
    shared actual void write(String string) {
        writeLine(string);
    }
   
}

Hay una diferencia sutil pero importante entre los traits de Scala y las interfaces en Ceylon: en Ceylon no puedes guardar estado en las interfaces; es decir, no puedes tener atributos concretos (ni mutables ni inmutables). Solamente puedes definir atributos como "formal", para que los implemente la clase que satisfaga dicha interfaz. La única manera de tener atributos concretos en una interfaz es definirlos con getter y opcionalmente con setter, pero atributos simples no lo permite.

Como podemos ver en todos los lenguajes la idea la similar, cambia un poco la forma de implementarla.

Mixin es una característica de los lenguajes modernos, que nos brinda una forma práctica de reutilización de código.

Que implementación les gusto más?

domingo, 23 de marzo de 2014

Correr scripts sql con Hibernate

Esto no es una gran novedad pero bueno; Hibernate permite configurar un script que se ejecute cuando crea las tablas por lo tanto, deben imaginar que Hibernate debe estar configurado en hibernate.hbm2ddl.auto en create o create-drop.

Simplemente en el persistence.xml debes configurar el parámetro hibernate.hbm2ddl.import_files con los archivos sql que vas a correr separados por comas, como por ejemplo /1.sql, /2.sql, /etc.sql

     
     com.ejemplo.model.Clase1
     com.ejemplo.model.Clase2
     com.ejemplo.model.Clase3
     com.ejemplo.model.Clase4
              
   
   
  
    



Y listo, cuando Hibernate arranque va a crear las tablas y luego va a correr estos scripts. Si queres que logee tenes que agregar a la configuración de log4j los siguiente:

log4j.logger.org.hibernate.tool.hbm2ddl=DEBUG

Espero que les sirva.

Influencia de los lenguajes de programación

Una infografía de los lenguajes y sus influencias, la idea de la infografía no es saber que lenguaje influyo a otro, simplemente porque no se ve pero nos sirve para saber que lenguajes son los más influyentes, a simple vista se puede ver:

Lisp, scheme, Logo, Forth, Dylan, Smalltalk, Ruby, Python, Lua, Java, Object-C, ML, Pascal, Haskell, etc

Y que lenguaje sabes? y cual vas a aprender?


jueves, 20 de marzo de 2014

CourseBuffet, buscando los mejores cursos...


CourseBuffet es un buscador de cursos gratuitos. Como sabrán coursera, edx, Udacity y otras plataformas, brindan excelentes cursos. Cual tomar? donde encuentro el curso del tema que necesito? Para responder estas preguntas inventaron CourseBuffet.

Gran idea!!

Dejo el link: http://www.coursebuffet.com/

Java 8

Llegue retarde a la noticia, pero de igual manera me quiero hacer eco de esta noticia. La página de Oracle ya está presente la descarga de Java 8; pero al parecer el lanzamiento oficial, será el próximo 25 de marzo.

Ya deben estar enterados de las novedades, entre las que se encuentra lambda. Esta versión sin duda es una de las más importantes.

En mi opinión el cambio de lenguaje no es tan importante, dado que tenes lenguajes en esta plataforma que son muy buenos, ya pensados para utilizar lambda. Si yo manejaría la pelota, me dedicaría a aprender Scala, Groovy, Clojure, etc. Pero es verdad que va a haber mucho trabajo en Java 8.

Que opinan? Tiene posibilidades Java 8?

domingo, 16 de marzo de 2014

The Open source owns the web

Como sabrán Linux fue concebido en la web, y con filosofía web 2.0 dado que la la gente compartía su código por la web. No es casual que las mayores tecnologías que se usan en la web sean Open Source.


sábado, 15 de marzo de 2014

Groovy o Scala esa es la cuestión

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…

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/

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.

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 es un framework que esta ganando espacio y creciendo rápidamente y no debemos perderle la pisada.

Dejo link:
https://typesafe.com/blog/akka-230-major-release

Google Analytics Education Infographic

Ya que estamos hablando de Google Analytics, les dejo una infrografia sobre Google Analytics;


Join our next Analytics Academy course

Google nos invita a realizar un nuevo curso de Google Analytics.

Les dejo el mail que me mandaron:


Google Analytics
 
 
 

Join our next Analytics Academy course

Learn how the Analytics platform works to get more value from your reports.
 
 
 
Register now
 
 
Last October, we introduced Digital Analytics Fundamentals, our first course on Analytics Academy. We were thrilled to have over 145,000 students join us to learn about the core concepts of digital measurement.

Today, we’re diving deeper into how Analytics works with our next course in the series: Google Analytics Platform Principles.

In this course, we’ll cover:
  • the four components of the Analytics platform: collection, processing, configuration and reporting
  • how Analytics collects data across different devices
  • how data is transformed before you see it in reports
  • key concepts for customizing your data in useful ways

You’ll have two weeks to complete the course alongside a worldwide community of Analytics enthusiasts to earn a certificate of completion. After that, the course will remain open for you to complete at your own pace.

Interested in participating? Enroll now and join us when the course begins on March 11, 2014.
 

Preview the course



Watch this quick course previewto learn about joining a course on Analytics Academy.
 
 
Register now
 
 
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?


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/

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/

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