Como todos tendemos a la iluminación les quiero recomendar esta pagina, en la cual nos enseñan sobre el lenguaje Agda. Para el que no leyó el post anterior Agda es un lenguaje funcional con dependently typed. A la vez esta muy emparentado con nuestro amigo Haskell. Por lo que es bueno tener nociones de Haskell antes de leer esta libro.
Sin más y esperando la iluminación, dejo link:
http://learnyouanagda.liamoc.net/
Translate
domingo, 27 de marzo de 2016
Dependently typed languages
Existe una lucha en la oscuridad que nosotros poco conocemos entre tipado dinámico y estático. En cualquier sitio de programación se ven tablas comparativas con ventajas y desventajas de cada uno.
En el plano de la investigación hubo un gran adelanto en este tema con las teorías de dependently typed languages, que expanden los limites del tipado estático.
Dependent type es un concepto de la programación pero también de la lógica; Dependent type es un tipo que depende de un valor. En la programación funcional se utiliza para prevenir errores, al permitir un sistema de tipo extensivo.
Dependent type añaden complejidad a un sistema de tipos. Es decir, para saber un tipo en algunos casos se deben realizar cálculos o ejecutar sentencias; esto hace bastante complejo el proceso de chequeo de tipos; y en algunos casos imposible. Pero algunos aspectos del comportamiento de un programa se pueden especificar con precisión en el tipo.
Entre los lenguajes que implementan esta tecnica tenemos:
Agda: Agda es un lenguaje funcional con dependent typed. Es similar a Epigram pero con una sintaxis más parecida a Haskell-like syntax.
Idris: Lenguaje de proposito general muy parecido a haskell pero con dependent typed
Cayenne: Este lenguaje fue influido por la teoría constructive type (pero eso es para otro post)
Que ventajas trae Dependently typed:
-Se pueden encontrar más errores en tiempo de compilación
-Editores que nos ayuden más
-Puede checkear que los elementos de tu programa estén bien.
Todo muy lindo, pero vamos con algo menos abstracto, vamos a ver una definición de tipo en Idris:
data Vect : Nat -> Type -> Type where
Nil : Vect Z a
(::) : a -> Vect k a -> Vect (S k) a
ufff, y yo pienso que mi vida es complicada...
Veamos, en la primera linea decimos, que definimos una familia de tipos que toman un Nat y retornan un tipo. Entonces le decimos cuando, en esta sentencia tiene que haber siempre al menos un verdadero. Es parecido a pattern maching pero con tipos.
Este tema es muy interesante voy a seguir con esto en futuros post.
Dejo link: https://wiki.haskell.org/Dependent_type
En el plano de la investigación hubo un gran adelanto en este tema con las teorías de dependently typed languages, que expanden los limites del tipado estático.
Dependent type es un concepto de la programación pero también de la lógica; Dependent type es un tipo que depende de un valor. En la programación funcional se utiliza para prevenir errores, al permitir un sistema de tipo extensivo.
Dependent type añaden complejidad a un sistema de tipos. Es decir, para saber un tipo en algunos casos se deben realizar cálculos o ejecutar sentencias; esto hace bastante complejo el proceso de chequeo de tipos; y en algunos casos imposible. Pero algunos aspectos del comportamiento de un programa se pueden especificar con precisión en el tipo.
Entre los lenguajes que implementan esta tecnica tenemos:
Agda: Agda es un lenguaje funcional con dependent typed. Es similar a Epigram pero con una sintaxis más parecida a Haskell-like syntax.
Idris: Lenguaje de proposito general muy parecido a haskell pero con dependent typed
Cayenne: Este lenguaje fue influido por la teoría constructive type (pero eso es para otro post)
Que ventajas trae Dependently typed:
-Se pueden encontrar más errores en tiempo de compilación
-Editores que nos ayuden más
-Puede checkear que los elementos de tu programa estén bien.
Todo muy lindo, pero vamos con algo menos abstracto, vamos a ver una definición de tipo en Idris:
data Vect : Nat -> Type -> Type where
Nil : Vect Z a
(::) : a -> Vect k a -> Vect (S k) a
ufff, y yo pienso que mi vida es complicada...
Veamos, en la primera linea decimos, que definimos una familia de tipos que toman un Nat y retornan un tipo. Entonces le decimos cuando, en esta sentencia tiene que haber siempre al menos un verdadero. Es parecido a pattern maching pero con tipos.
Este tema es muy interesante voy a seguir con esto en futuros post.
Dejo link: https://wiki.haskell.org/Dependent_type
viernes, 25 de marzo de 2016
Elixir School
Inspirados en scala school la gente de elixir creo Elixir school, básicamente una pagina para aprender elixir y lo bueno que entre los idiomas disponibles esta el castellano.
Que más decir, a estudiar!!
Dejo links:
https://elixirschool.com/es/
http://elixirschool.com/
lunes, 21 de marzo de 2016
Programación lógica con miniKanren
Siempre pero siempre pero siempre que escuchamos sobre programación lógica, relacionamos con prolog y hacemos bien. Pero prolog no es la única opción.
Con ustedes miniKanren.
miniKanren es un DSL (Domain Specific Language) para la programación logica.
miniKanren es muy simple, con sólo tres operadores lógicos y un operador de interfaz.
La primera implementación fue en scheme, pero ahora existen implementaciones en diferentes lenguajes y tecnologías como Racket, Clojure, Haskell, Python, JavaScript, Scala, Ruby, OCaml, PHP y algunos más.
miniKanren fue diseñado para ser simple y fácil pero a la vez fácil de extender.
Veamos un ejemplo:
(run* [q] (== q 1))
Esto parece una linea de codigo pero hace muchas cosas.
run* retorna la lista de comandos que se pueden ejecutar. q es una variable booleana.
Como podemos ver miniKanren es simple y open source!
Dejo link: http://minikanren.org/
Con ustedes miniKanren.
miniKanren es un DSL (Domain Specific Language) para la programación logica.
miniKanren es muy simple, con sólo tres operadores lógicos y un operador de interfaz.
La primera implementación fue en scheme, pero ahora existen implementaciones en diferentes lenguajes y tecnologías como Racket, Clojure, Haskell, Python, JavaScript, Scala, Ruby, OCaml, PHP y algunos más.
miniKanren fue diseñado para ser simple y fácil pero a la vez fácil de extender.
Veamos un ejemplo:
(run* [q] (== q 1))
Esto parece una linea de codigo pero hace muchas cosas.
run* retorna la lista de comandos que se pueden ejecutar. q es una variable booleana.
Como podemos ver miniKanren es simple y open source!
Dejo link: http://minikanren.org/
sábado, 19 de marzo de 2016
1bookcase
Les quiero compartir una muy buena pagina para bajar libros. La verdad que esta pagina me puso muy contento dado que encontré muy buenos libros y algunos que hace rato que le sigo la pista.
Dejo link: https://1bookcase.com/
martes, 15 de marzo de 2016
Scalacenter, para open source y para aprender
Scalacenter es un sitio publicado por EPFL y varias empresas interesadas en la enseñanza de la tecnología basada en scala.
Este centro tiene como objetivo:
- Dar soporte y guias a la comunidad Scala
- Coordinar y desarrollar librerías y herramientas open source para el beneficio de todos.
- Proveer educación de calidad
En el sitio se puede ver que nos prometen 4 cursos en coursera:
- Functional Programming Principles in Scala by Martin Odersky
- Functional Program Design in Scala by Martin Odersky
- Parallel Programming by Viktor Kuncak, Aleksandar Prokopec
- Big Data Analysis in Scala and Spark by Heather Miller
Puff vamos a tener para estudiar!!!!
Dejo link: https://scala.epfl.ch/
PHP 7.0.1 ya está entre nosotros
Medio tarde llegue con la noticia, PHP 7.0.1 ya esta aquí. Este popular lenguaje para desarrollo web gana en potencia y, sobre todo, en rapidez y comodidad para los desarrolladores. Entre sus muchas novedades, introduce nuevos operadores, sintaxis y mejoras en la gestión de errores que permiten que PHP 7 sea hasta dos veces más rápido que las versiones anteriores.
Desde el pasado diciembre, ya se encuentra disponible la nueva versión de PHP, un lanzamiento que supone un antes y un después para la historia de PHP, un lenguaje de gran trayectoria en el mundo web.
Esta primera versión es hasta dos veces más rápida que PHP 5.6, y reduce significativamente la cantidad de memoria necesaria para su funcionamiento. Además, PHP 7 facilita la vida de los programadores con una buena cantidad de herramientas disponibles en otros lenguajes, uso explícito de tipos de datos, aserts, mejor gestión de las excepciones, clases anónimas, y con la eliminación diversas API y extensiones que se habían quedado ya obsoletas.
Dejo link: http://php.net/archive/2015.php#id2015-12-17-1
jueves, 10 de marzo de 2016
Simplificando el testing con JUnit 5 y lambda
Con el advenimiento de java 8 y lambda, las librerías Java se van actualizando en este caso tenemos la noticia de junit. Junit utilizo las ventajas de lambda para mejorar nuestros test.
Veamos un ejemplo:
@Test
void groupedAssertions() {
assertAll("address",
() -> assertEquals("John", address.getFirstName()),
() -> assertEquals("User", address.getLastName())
);
}
@Test
void exceptionTesting() {
Throwable exception = expectThrows(IllegalArgumentException.class, () -> {
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
Por ahora JUnit 5 esta en alpha, pero en un futuro vamos a poder utilizarlo.
Dejo link: http://junit-team.github.io/junit5/
Veamos un ejemplo:
@Test
void groupedAssertions() {
assertAll("address",
() -> assertEquals("John", address.getFirstName()),
() -> assertEquals("User", address.getLastName())
);
}
@Test
void exceptionTesting() {
Throwable exception = expectThrows(IllegalArgumentException.class, () -> {
throw new IllegalArgumentException("a message");
});
assertEquals("a message", exception.getMessage());
}
Por ahora JUnit 5 esta en alpha, pero en un futuro vamos a poder utilizarlo.
Dejo link: http://junit-team.github.io/junit5/
miércoles, 9 de marzo de 2016
Microsoft SQL Server en Linux ya es una realidad.
No es una broma, es totalmente cierto...
Sip, SQL server corre en linux y ya tiene una versión estable. La verdad es que no se que más decir, solo que tenemos que probarla.
Dejo link: http://blogs.microsoft.com/blog/2016/03/07/announcing-sql-server-on-linux/
Microsoft se une a la fundación Eclipse
Increíble noticia, Microsoft ha anunciado que se une a la fundación Eclipse. Esta decisión probablemente orientado a fortalecer la posición de la compañía dentro del ecosistema del código abierto.
Microsoft en la actualidad ya tiene un toolkit para Azure basado en Eclipse. Como parte de este anuncio, Microsoft también ha anunciado que ha convertido en opensource un plugin para Eclipse: Team Explorer Everywhere. Toma tu torta!!!
Dejo link: https://blogs.msdn.microsoft.com/visualstudio/2016/03/08/microsoft-joins-the-eclipse-foundation/
lunes, 7 de marzo de 2016
App Evolution With Swift
La gente de codescholl nos regala otro curso, se llama "App Evolution With Swift". Este curso nos cuenta como desarrollar con swift aplicaciones para IOS.
Dejo más info:
COURSE OVERVIEW
Dejo link:
https://www.codeschool.com/courses/app-evolution-with-swift
Dejo más info:
COURSE OVERVIEW
LEVEL 1 FREE LEVELXcode and Storyboards 2 Videos | 7 Challenges
Explore how to lay out your application's interface with storyboards.LEVEL 2 FREE LEVELOutlets and Actions 2 Videos | 7 Challenges
Learn how you can use storyboard outlets and actions to connect view objects to code.LEVEL 3 FREE LEVELScroll Views 1 Video | 3 Challenges
Discover how you can display more content than what fits on 1 screen with scroll views.LEVEL 4 FREE LEVELTable Views 2 Videos | 6 Challenges
Find out how you can use table views and table view controllers to efficiently display lists of content.LEVEL 5 FREE LEVELNavigation 3 Videos | 10 Challenges
Learn how to use navigation controllers to connect multiple screens and pass data between them.LEVEL 6 FREE LEVELCustom Classes for Data 1 Video | 1 Challenge
Explore how to create separate classes for your data and then pass them between view controllers during transition segues.
Dejo link:
https://www.codeschool.com/courses/app-evolution-with-swift
jueves, 3 de marzo de 2016
Patrones de Diseño en Java
Les quiero recomendar este libro gratuito sobre patrones de diseño utilizando el lenguaje Java. Para los que no saben los patrones de diseño son soluciones genéricas que podemos aplicar a cualquier lenguaje. En este libro se utiliza Java.
domingo, 28 de febrero de 2016
JetBrains anuncia Kotlin 1.0 para jvm y android
Tarde llego con la noticia pero llego.
JetBrains anuncia Kotlin 1.0 y que sorpresa tanto para Jvm como para Android.
Para el que no sabe que es Kotlin en resumen es un lenguaje de JetBrains para jvm y Android que permite desarrollar de forma más rápida. Básicamente es otro lenguaje que persigue el objetivo de escribir poco y programar mucho. Para esto combina la programación orientada a objeto y la programación funcional.
Les dejo un ejemplo:
Para el que conoce el lenguaje, uno de los ejes principales de Kotlin ha sido la interoperabilidad y el soporte de los proyectos Java + Kotlin. Además, Kotlin tiene una extensa biblioteca estándar que hace que las tareas cotidianas fácil. Por supuesto, cualquier biblioteca de Java puede ser utilizado en Kotlin, también; y viceversa.
A la vez se encuentra en todos los entornos, eclipse, Androi, Android studio, jvm, IntelliJ IDEA, Maven, Gradle and Ant, Spring Boot, GitHub, Slack and even Minecraft
Buenísimo!! Vamos a probarlo.
Dejo link:
https://kotlinlang.org/
http://blog.jetbrains.com/kotlin/2016/02/kotlin-1-0-released-pragmatic-language-for-jvm-and-android/
viernes, 26 de febrero de 2016
Microsoft adquiere Xamarin
Se venia venir, no? Microsoft adquiere Xamarin, es decir que adquiere la empresa más importante, en llevar .net a plataformas no windows. Responsable de tecnologías como mono.
Lo que indica un claro objetivo de .net de posicionarse en plataformas no microsoft. Esto es un notición para la gente de .net
Dejo link: http://www.infoq.com/news/2016/02/microsoft-xamarin
Lo que indica un claro objetivo de .net de posicionarse en plataformas no microsoft. Esto es un notición para la gente de .net
Dejo link: http://www.infoq.com/news/2016/02/microsoft-xamarin
Introducción al Business Intelligence, de Josep Curto y Jordi Conesa
Si te interesa Business Intelligence tenes que bajarte este libro y es de forma gratuita, solo tenes que
hacer lo siguiente:
El procedimiento es muy sencillo:
1) Tenéis que hacer clic en el siguiente enlace: http://goo.gl/forms/nL9aRyqyly
2) El enlace os conducirá a un formulario que tenéis que cumplimentar en aquellos campos que son obligatorios y aceptar la inclusión en una base de datos de la UOC, sometida a los criterios de la Ley de Protección de Datos española.
3) Seguidamente hacéis clic en enviar el formulario y normalmente enseguida se os abre otra pantalla desde la cual podéis bajaros el libro en pocos segundos.
Bueno, metele...
Suscribirse a:
Entradas (Atom)