Translate
domingo, 19 de julio de 2015
sábado, 11 de julio de 2015
Lisp en python = Hy
Imaginen programar en Lisp en la plataforma python, bueno eso es Hy. Hy transforma código Lisp en python y lo ejecuta en su plataforma.
Algo que me llamo la atención es lo maduro que esta el proyecto y a la vez que han creado un nuevo lenguaje ya que tiene muchas cosas de python.
Veamos un ejemplo:
=> (print "Hy!")
Hy!
=> (defn salutationsnm [name] (print (+ "Hy " name "!")))
=> (salutationsnm "YourName")
Hy YourName!
Como ven tiene un RELP y tambien se puede probar código desde una pagina web.
Y como están pensando tiene interoperabilidad con python:
=> (import [sh [cat grep wc]])
=> (-> (cat "/usr/share/dict/words") (grep "-E" "^hy") (wc "-l"))
210
En el ejemplo importa python-sh y utiliza los comandos como si fueran del propio lenguaje. Claro todo termina siendo python.
Dejo link:
https://hy.readthedocs.org
Strongtalk
Strongtalk es un lenguaje derivado de smalltalk que promete mayor performance, según la pagina es la implementación más rápida de smalltalk.
Strongtalk es una vuelta de tuerca a smalltalk que como ventajas podemos enumerar:
- Performance: StrongTalk es mucho más rápido dado que se ejecuta con tecnología type-feedback originalmente desarrollada por Sun Microsystem Labs
- Type System: Utiliza un sistema de tipos estáticos, sisi estáticos de hay su nombre.
Strongtalk es totalmente open source.
La desventaja es que esta un tanto descontinuado. Pero creo que fue una gran idea :P
Dejo link:
http://www.strongtalk.org/
Certificar tus conocimientos en Mongo
Me llego este mail departe de la gente de MongoDB University:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MongoDB Inc., 2015. All rights reserved. 229 West 43rd Street 5th Floor New York, NY 10036 | ||||||
To view the online version click here. To unsubscribe from future MongoDB emails or to update your MongoDB email preferences click here. |
Como pueden leer, MongoDB University tuvo una gran idea, dar la posibilidad de certificar tus conocimientos en MongoDB. Al parecer haciendo un examen.
Lo unico que no me gusto fue que en los requerimientos de sistema dice:
Mac OS 10.6 or later or Windows 7 or later. Linux is not currently supported.
Como que no soporta Linux? Bajo examen y Baja actitud.
Sin más dejo los links:
https://university.mongodb.com/exams/C100DBA/about
https://university.mongodb.com/exams/C100DEV/about
jueves, 9 de julio de 2015
Seven More Languages in Seven Weeks: Languages That Are Shaping the Future
Alguna vez les hable del libro 7 lenguajes en 7 semanas, bueno las editorial The Pragmatic Bookshelf ha lanzado un nuevo libro con la misma temática. Los lenguajes a analizar son Lua, Factor, Elm, Elixir, Julia, MiniKanren y Idris.
Y hasta tiene video y todo:
Ya saben que regalarme!!
Dejo el link:
https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks
Y hasta tiene video y todo:
Ya saben que regalarme!!
Dejo el link:
https://pragprog.com/book/7lang/seven-more-languages-in-seven-weeks
Una mirada a F#
Como ustedes saben microsoft dio un vuelco importante a su mirada al open source y yo dispuesto a evolucionar tambien me anime a cambiar y a mirar de forma diferente sus productos.
Por lo tanto hoy voy a probar F#. F# es supuestamente un derivado de ML, pero la verdad que por lo que vi es una involución.
Entre las ventajas podemos nombrar, es open source, es multiplataforma, fuertemente tipado y multiparadigma (objeto y funcional) aunque es sobre todo funcional. Por lo tanto se puede utilizar el modelo de objetos para mantener estados, y en las situaciones que es más fácil resolver el problema de forma funcional, se puede utilizar.
Mi primera impresión con el lenguaje es que es similar a C# pero se escriben las cosas de forma diferente, nada más pero es mi opinión.
Estoy hablando demasiado, veamos algo de código:
let mutable sum = 0
for i = 0 to 100 do
if i%2 <> 0 then sum <- sum + i
printfn "the sum of odd numbers from 0 to 100 is %A" sum
Este pedazo de código se puede apreciar que no es un lenguaje funcional puro sino que permite sentencias for y mutables.
Otros detalles:
- el operador de asignación es el <-
- usa el if then como Pascal
- el for tiene un inicio y final (o desde hasta) como pascal!
- Con let declaramos los mutables (variables) o inmutables
También tiene listas por compresión, veamos un ejemplo
let list2 = [for i=0 to 4 do yield i*i]
A la vez tiene secuencias y arreglos.
let array0 = [| 1 .. 10 |]
Los arreglos son bastante inteligentes:
// get slice from element 2 through 6
array0.[2..6]
// get slice from element 4 to the end
array0.[4..]
// get the slice from the start to element 6
array0.[..6]
// get all the elements (copy the whole array)
array0.[*]
Una cosa muy interesante es el operador |> que es similar al operador | de unix. Lo que permite es que el resultado de una función sea la entrada de otra de forma que componer funciones sea simple, veamos un ejemplo:
seq { 0..100 }
|> Seq.filter (fun n -> n%2<>0)
|> Seq.sum
|> printfn "the sum of odd number from 0 to 100 is %A"
Es hora de ver una clase en F#:
// define a Point2D class
type Point2D() =
// define field x
let mutable x = 0.0
// define X property
member this.X with get() = x
and set(v) = x <- v
// define Y property using an auto-implemented property
member val Y = 0.0 with get, set
// define a function to get the distance from the current point
member this.GetDistance(point:Point2D) =
let xDif = this.X - point.X
let yDif = this.Y - point.Y
let distance = sqrt(xDif**2. + yDif**2.)
distance
La primera impresión es "como extraño los {} y el punto y coma. Y hace minutos los odiaba. Luego de esto podemos ver que se esta definiendo un nuevo tipo, es decir una clase en un tipo. Luego creo que todo es bastante entendible, se define una propiedad y sus geters y seters y luego la función que calcula la distancia.
También tiene monad y patter matching, mira:
type MyClass() =
member this.PrintValue(?value:int) =
match value with
| Some(n) -> printfn "value is %A" n
| None -> printfn "sorry, no value"
Muy a vuelo de pájaro fue una primera probada de F#
Dejo link:
http://fsharp.org/
miércoles, 8 de julio de 2015
Brython, Una implementación de Python para la programación web del lado del cliente
Como saben hoy en día existe una tendencia de hacer todo con un mismo lenguaje y cuando me refiero todo es todo, de esta forma nacen proyectos como Brython, que nos permite programar en javascript en el cliente.
Este framework permite utilizar python entre los tags </script> ingresando en tipo como "text/python".
Veamos un ejemplo:
<html> <head> <script src="/brython.js"></script> </head> <body onload="brython()"> <script type="text/python"> from browser import document, alert def echo(ev): alert(document["zone"].value) document['mybutton'].bind('click',echo) </script> <input id="zone"><button id="mybutton">click !</button> </body> </html> |
Como podemos ver este lenguaje nos permite trabajar con HTML de forma transparente.
La mayor ventaja que tiene el uso de esta técnica es que sabiendo python podemos programar todo un proyecto.
Dejo link: http://www.brython.info/index.html
lunes, 6 de julio de 2015
¿Cómo Hacer una Tesis?
Este post esta bien fuera de tópico, pero quería comentarles que estoy leyendo el libro de Sabino, ¿Cómo Hacer una Tesis? Y se los recomiendo, es de muy fácil lectura, cortito y al pie.
Un buen resumen, se puede leer en sus primeras paginas:
"La primera versión de este libro, aparecida ya hace más de diez años, tuvo inmediatamente una acogida muy favorable entre estudiantes y
profesionales, pues estaba concebido para responder a las expectativas y preocupaciones de estudiantes y profesionales en general, sin limitaciones geográficas o de especialidad. Su lenguaje claro y su accesible redacción, la profusión de ejemplos y el modo ordenado en que se han dispuesto los materiales lo hacen especialmente indicado para las personas que no poseen mayor experiencia en el campo de la redacción o que, como es frecuente, tienen demasiadas experiencias frustrantes y negativas.
El propósito de la obra es ofrecer una guía práctica para elaborar tesis, trabajos científicos y, en general, todo tipo de escritos que no
pertenezcan a los géneros de ficción. Sus capítulos van llevando al lector paso a paso por todas las
numerosas etapas que hay que transitar para culminar con éxito la redacción de un libro, una tesis o una monografía."
Dejo link:
http://www.catedranaranja.com.ar/taller5/notas_T5/Como_hacer_una%20tesis-Sabino.pdf
sábado, 4 de julio de 2015
Community-driven documentation for Scala
Encontré un sitio muy interesante, tal vez es viejo y famoso, pero yo recién lo veo. Tiene un motonaso de recursos, hasta tutoriales en castellano.
Esta muy bueno!!
Dejo link:
http://docs.scala-lang.org/
miércoles, 1 de julio de 2015
Vert.x construyendo aplicaciones reactivas en jvm
Vert.x es un framework java para la construcción de aplicaciones asíncronas, basadas en eventos y no bloqueantes. Esto significa que con Vert.x podemos obtener aplicaciones concurrentes con un mínimo de complejidad, y un hardware mínimo.
Para ser más explicativo se compara Vert.x con Node.js, por lo que se puede inferir que Vert.x fue pensado para ser concurrente, asíncrono y barato.
Otra ventaja de este framework es que es poliglota es decir podemos escribir aplicaciones en varios lenguajes, veamos un ejemplo:
Java:
public class Server extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
Ruby:
vertx.create_http_server().request_handler() { |req|
req.response()
.put_header("content-type", "text/plain")
.end("Hello from Vert.x!")
}.listen(8080)
Javascript:
vertx.createHttpServer()
.requestHandler(function (req) {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
Groovy:
vertx.createHttpServer().requestHandler({ req ->
req.response()
.putHeader("Content-Type", "text/html")
.end("Hello from Vert.x!")
}).listen(8080)
Como vemos Vert.x proporciona una API en varios lenguajes que da soporte.
Dejo link:
http://vertx.io/
http://vertx.io/docs/
Para ser más explicativo se compara Vert.x con Node.js, por lo que se puede inferir que Vert.x fue pensado para ser concurrente, asíncrono y barato.
Otra ventaja de este framework es que es poliglota es decir podemos escribir aplicaciones en varios lenguajes, veamos un ejemplo:
Java:
public class Server extends AbstractVerticle {
public void start() {
vertx.createHttpServer().requestHandler(req -> {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
}
}
Ruby:
vertx.create_http_server().request_handler() { |req|
req.response()
.put_header("content-type", "text/plain")
.end("Hello from Vert.x!")
}.listen(8080)
Javascript:
vertx.createHttpServer()
.requestHandler(function (req) {
req.response()
.putHeader("content-type", "text/plain")
.end("Hello from Vert.x!");
}).listen(8080);
Groovy:
vertx.createHttpServer().requestHandler({ req ->
req.response()
.putHeader("Content-Type", "text/html")
.end("Hello from Vert.x!")
}).listen(8080)
Como vemos Vert.x proporciona una API en varios lenguajes que da soporte.
Dejo link:
http://vertx.io/
http://vertx.io/docs/
lunes, 29 de junio de 2015
Introducción a la Programación con Python, Andrés Marzal & Isabel Gracia
Quiero recomendar el siguiente libro gratuito, con el siguiente me refiero a :Introducción a la Programación con Python de los autores: Andrés Marzal y Isabel Gracia.
A la vez aprovecho a recomendarles, el sitio www.freelibros.org que tiene muy buenos libros gratuitos, muy buenos.
Dado este consejo, les dejo el link:
http://www.freelibros.org/libros/introduccion-a-la-programacion-con-python-andres-marzal-isabel-gracia.html
A la vez aprovecho a recomendarles, el sitio www.freelibros.org que tiene muy buenos libros gratuitos, muy buenos.
Dado este consejo, les dejo el link:
http://www.freelibros.org/libros/introduccion-a-la-programacion-con-python-andres-marzal-isabel-gracia.html
domingo, 28 de junio de 2015
Por qué deberías aprender programación funcional ya mismo
Quiero compartir un excelente video sobre programación funcional:
viernes, 26 de junio de 2015
Esta disponible Eclipse Mars!!
Estoy bajando eclipse mars por lo que esta disponible!!
Entre otras cosas hay una mejora importante en la performance, sin más dejo los links:
http://www.eclipse.org/
https://projects.eclipse.org/releases/mars
miércoles, 24 de junio de 2015
ECMAScript 2015 esta aprobado
La Asamblea General de Ecma International ha anunciado la aprobación de ECMA-262 sexta edición, que es la especificación del lenguaje ECMAScript de 6 (ES6), también conocido como ECMAScript 2015.
JavaScript fue creado por Brendan Eich en el 95, pero necesitó 20 años para evolucionar algunas de las características que son populares en otros idiomas modernos. JavaScript no era un gran lenguaje para empezar, pero fue una gran idea: un lenguaje para el navegador. JavaScript llamar la atención de inmediato, que se somete a la estandarización del año siguiente, con la versión 1.0 que sale de Ecma en 1997, seguido por 2,0, con algunos cambios de menor importancia, en 1998, y luego 3,0, con algunas novedades, en 1999.
La noticia es porque se acaba de aprobar una nueva versión de este estandard, con lo que van a llegar nuevas funcionalidades a javascript.
dejo link: http://www.infoq.com/news/2015/06/ecmascript-2015-es6
JavaScript fue creado por Brendan Eich en el 95, pero necesitó 20 años para evolucionar algunas de las características que son populares en otros idiomas modernos. JavaScript no era un gran lenguaje para empezar, pero fue una gran idea: un lenguaje para el navegador. JavaScript llamar la atención de inmediato, que se somete a la estandarización del año siguiente, con la versión 1.0 que sale de Ecma en 1997, seguido por 2,0, con algunos cambios de menor importancia, en 1998, y luego 3,0, con algunas novedades, en 1999.
La noticia es porque se acaba de aprobar una nueva versión de este estandard, con lo que van a llegar nuevas funcionalidades a javascript.
dejo link: http://www.infoq.com/news/2015/06/ecmascript-2015-es6
sábado, 20 de junio de 2015
Cabal
Cabal es como maven pero para Haskell. Bien resumido...
Cabal es el sistema de paquetes estándar para el software de Haskell. Ayuda a la gente para configurar, compilar e instalar el software de Haskell y para distribuir fácilmente a otros usuarios y desarrolladores.
Es una herramienta de línea de comandos para trabajar con paquetes. Ayuda con la instalación de paquetes existentes y también ayuda a las personas que desarrollan sus propios paquetes. Se puede utilizar para trabajar con paquetes locales o instalar paquetes en línea, incluyendo la instalación de dependencias automáticamente. Por defecto está configurado para utilizar Hackage que es archivo paquete central de Haskell que contiene miles de bibliotecas y aplicaciones en el formato de paquete de Cabal.
Todo muy lindo pero como empezamos? bueno un buen comienzo es instalando cabal y luego cabal init ...
Dejo link:
https://www.haskell.org/cabal
Suscribirse a:
Entradas (Atom)