Translate
viernes, 16 de septiembre de 2016
freebookspot
Encontré este sitio, donde hay muchos libros de todo tipo. Busque muchos temas que me interesan y encontré mucho material.
Dejo el link:
https://freebookspot.immunicity.date/
miércoles, 14 de septiembre de 2016
Oracle Propone NetBeans como un proyecto Apache
Notición!!!
Al parecer oracle se canso de mantener a NetBeans y lo va a donar a Apache. Como todo cambio, esperemos que sea para bien.
Esta IDE es genial para hacer aplicaciones de escritorio y cualquier otra.
Dejo link:
https://netbeans.org/community/apache-incubator.html
Al parecer oracle se canso de mantener a NetBeans y lo va a donar a Apache. Como todo cambio, esperemos que sea para bien.
Esta IDE es genial para hacer aplicaciones de escritorio y cualquier otra.
Dejo link:
https://netbeans.org/community/apache-incubator.html
Unos cuantos libros de programación y tecnología
Quiero compartir un link donde se pueden bajar varios libros de forma gratuita:
http://elbauldelprogramador.tradepub.com/category/information-technology/1207/
miércoles, 7 de septiembre de 2016
Objective Categorical Abstract Machine Language o OCaml para los amigos
Objective CAML, también conocido Ocaml, el nombre proviene de las siglas en inglés Objective Categorical Abstract Machine Language. Es un hijo de ML, desarrollado y distribuido por el INRIA en Francia. Ocaml admite los paradigmas de programación imperativa, programación funcional y programación orientada a objetos.
Es un lenguaje que reúne ML con Objetos, que no se si es lo mejor. Pero es un intento de introducir objetos a un lenguaje funcional.
Es de tipado estático y por lo tanto tiene chequeo por tipos. Que más tenemos? objetos, polimorfismo, pattern matching, garbage collection, generic, etc.
Veamos un hola mundo:
> print_endline "Hello World !" ;;
Hello World !
val () : unit = <fun>
(* Listas genéricas *)
(* Longitud de una lista *)
let rec long = function
|[] -> 0
|x::xs -> 1 + long xs;;
(* Ordenamiento por inserción *)
(* dada una relación de orden *)
let rec ordenar = function
|[] -> []
|x::xs -> insertar x (ordenar xs)
and insertar e = function
|[] -> [e]
|x::xs -> if x > e
then e::x::xs
else x::(insertar e xs);;
Dejo link:
https://ocaml.org/
Codecademy lanza un curso de ReactJS
Do you want to take your JavaScript to the next level? Check out our two new courses in React!
What You'll Learn:
In these courses, you’ll learn how to use React.js, a library developed by engineers at Facebook. React provides graceful solutions to some of front-end programming’s most persistent issues. Its flexible, modular style has made it extremely popular. At the end of the courses, you’ll know how to build sophisticated React applications.
Start Learning
Happy coding!
The Codecademy Team
|
Codescholl lanza un nuevo curso ahora Django!!
|
domingo, 4 de septiembre de 2016
A desarrollar con Smalltalk!!
Vamos a introducirnos de lleno en la programación con Smalltalk. Aprender a programar con Smalltalk es mucho más que aprender una sintaxis y una librería de clases; es mucho más importante conocer como utilizar el ambiente en nuestro beneficio y entender que implica utilizar un ambiente de objetos vivos.
Smalltalk no es sólo un lenguaje de computación, Smalltalk es un ambiente donde conviven objetos y estos interactúan entre sí enviándose mensajes. Toda la computación ocurre como el resultado del envío de mensajes a los objetos. Cuando un usuario interactúa con un ambiente Smalltalk, este ambiente se ve modificado como efecto de esa interacción.
Recordemos que en Smalltalk todo es un objeto. Las clases, los métodos, etc (obviamente) también son objetos y para impactar sobre ellos debemos enviarles mensajes. Esto implica que la tarea de programación no es diferente a cualquier otra cosas que se haga en un ambiente Smalltalk: Objetos que reciben mensajes y que reaccionan como efecto de ese envío de mensajes.
En Smalltalk no existe diferencia entre “desarrollo” y “ejecución”, sino que la programación se hace modificando objetos mientras estos están funcionando. Para ilustrar mejor esta idea vamos a desarrollar, paso a paso, un ejemplo sencillo. El ejemplo, también, nos servirá para tomar un primer contacto con las principales herramientas de desarrollo con Smalltalk.
Entonces empecemos descargando Pharo, recuerden el post de recursos sobre Pharo.
Si no tuvieron problema lo pudieron abrir y vieron algo como esto:
Cerramos esta ventana de bienvenida y hacemos click con lo que se abrira un menu en el cual podemos seleccionar System browser y nos abrirá la siguiente ventana:
El browser está compuesto principalmente por 4 paneles superiores y un panel inferior. En los paneles superiores encontraremos - de izquierda a derecha - las Categorías de Clases, las Clases, las Categorías de Métodos y los Métodos.
Podemos hacer un nuevo package si seleccionamos add package.
Luego si hacemos click en el panel de objetos aparecerá el siguiente menú:
Programar con Smalltalk es enviar mensajes a objetos que viven en un ambiente. Programar, con Smalltalk, no es más que modificar un ambiente de objetos y adaptarlo a nuestra necesidad.
Al crear una nueva categoría, esta se selecciona automáticamente y vemos en el panel inferior una plantilla (un template) para crear una clase nueva. Para crear una nueva clase tenemos que enviarle un mensaje a la superclase, para eso nos podemos valer de la plantilla que el Browser de Clases nos ofrece. Simplemente reemplazamos donde dice NameOfSubclass por el nombre de la clase que queremos crear. Y de esta forma tenemos una nueva clase.
En un próximo post veremos crear un método.
Smalltalk no es sólo un lenguaje de computación, Smalltalk es un ambiente donde conviven objetos y estos interactúan entre sí enviándose mensajes. Toda la computación ocurre como el resultado del envío de mensajes a los objetos. Cuando un usuario interactúa con un ambiente Smalltalk, este ambiente se ve modificado como efecto de esa interacción.
Recordemos que en Smalltalk todo es un objeto. Las clases, los métodos, etc (obviamente) también son objetos y para impactar sobre ellos debemos enviarles mensajes. Esto implica que la tarea de programación no es diferente a cualquier otra cosas que se haga en un ambiente Smalltalk: Objetos que reciben mensajes y que reaccionan como efecto de ese envío de mensajes.
En Smalltalk no existe diferencia entre “desarrollo” y “ejecución”, sino que la programación se hace modificando objetos mientras estos están funcionando. Para ilustrar mejor esta idea vamos a desarrollar, paso a paso, un ejemplo sencillo. El ejemplo, también, nos servirá para tomar un primer contacto con las principales herramientas de desarrollo con Smalltalk.
Entonces empecemos descargando Pharo, recuerden el post de recursos sobre Pharo.
Si no tuvieron problema lo pudieron abrir y vieron algo como esto:
Cerramos esta ventana de bienvenida y hacemos click con lo que se abrira un menu en el cual podemos seleccionar System browser y nos abrirá la siguiente ventana:
El browser está compuesto principalmente por 4 paneles superiores y un panel inferior. En los paneles superiores encontraremos - de izquierda a derecha - las Categorías de Clases, las Clases, las Categorías de Métodos y los Métodos.
Podemos hacer un nuevo package si seleccionamos add package.
Luego si hacemos click en el panel de objetos aparecerá el siguiente menú:
Programar con Smalltalk es enviar mensajes a objetos que viven en un ambiente. Programar, con Smalltalk, no es más que modificar un ambiente de objetos y adaptarlo a nuestra necesidad.
Al crear una nueva categoría, esta se selecciona automáticamente y vemos en el panel inferior una plantilla (un template) para crear una clase nueva. Para crear una nueva clase tenemos que enviarle un mensaje a la superclase, para eso nos podemos valer de la plantilla que el Browser de Clases nos ofrece. Simplemente reemplazamos donde dice NameOfSubclass por el nombre de la clase que queremos crear. Y de esta forma tenemos una nueva clase.
En un próximo post veremos crear un método.
sábado, 3 de septiembre de 2016
Codescholl nos invita a un nuevo curso de ASP.net
Codescholl lanza un nuevo curso de Asp.net de forma gratuita!!
Las dejo más detalles:
Las dejo más detalles:
|
domingo, 28 de agosto de 2016
Librería de Clases y Frameworks en Smalltalk
La imagen de un Smalltalk cuenta con cientos, si no miles, de clases con funcionalidad aprovechable por nuestro desarrollo.
Las clases que vienen en Smalltalk nos brindan, entre otras cosas, la siguiente funcionalidad:
Números: Existen todo tipo de números. Enteros, coma flotante, fracciones, etc.
Colecciones: El framework de colecciones de Smalltalk es uno de los más antiguos y más funcionales que existen en la actualidad. La lista de colecciones incluye Bag, Set, OrderedCollection, SortedCollection, Dictionary, etc.
String: Soporte para cadenas de caracteres de bytes y cadenas que soportan caracteres unicode.
Boolean: Las clases Boolean, True y False se usan, entre otras cosas, para implementar algunas de las 'estructuras de control'.
Cronología: Clases como Date, Time, DateAndTime, Month, Week, Year,
Gráficos: Smalltalk tiene mucho que ver con el desarrollo de las interfaces de usuario gráficas. En los Smalltalk completamente auto-contenidos (como Squeak) todo lo referente al procesamiento gráfico está implementado en Smalltalk y, por ende, es inspeccionable y modificable por el usuario. Se cuentan con operaciones 2D básicas (como BitBtl) hasta soporte para gráficos 3D con OpenGL. El Squeak, a la fecha, tiene soporte para colores con el canal alfa (transparencia), anti-aliasing, renderizado de TTF (True Type Fonts), etc.
Stream: Hay veces que es necesario combinar operaciones de acceso a los elementos de una colección con operaciones de inserción de elementos. Los típicos mensajes de enumeración de las colecciones de Smalltalk no permiten insertar elementos mientras sucede la iteración. La jerarquía de clases de Stream permite la iteración de colecciones a la vez que la inserción de elementos. La metafora de los “streams de objetos” funcionó tan bien en Smalltalk que, a partir de entonces, se usa para acceder a fuentes de datos externas en Smalltalk y en muchos lenguajes orientados a objetos.
Weak References: Se puede hacer un uso avanzado del recolector de basura utilizando referencias débiles a objetos. Las referencias débiles, al contrario de las referencia normales o fuertes, no evitan que un objeto sea reclamado por el recolector. Un objeto puede ser reclamado por el recolector cuando no tenga referencias en absoluto, o tenga sólo referencias débiles. Muy útil para implementar caches, pool de instancias, mecanismos de finalización de objetos, etc.
Multithreading: El Smalltalk soporta multithreading desde los inicios. Se cuenta con una rica variedad de clases para hacer computación concurrente de forma sencilla. Las clases Process (Proceso = Thread) y Semaphore (Semáforo) sirven de base para la programación con threads.
Excepciones: Smalltalk cuenta con un moderno esquema de excepciones. A diferencia de otros lenguajes, toda la implementación de excepciones está escrita en el mismo lenguaje. Entre otras cosas, el mecanismo de excepciones de Smalltalk permite continuar con la ejecución en el punto siguiente donde ocurrió la excepción.
Metaclases: Todo en Smalltalk es un objeto. Todos los objetos tienen una clase. Las clases, como todo, son objetos. Las clases tienen su clase, que se llama la Metaclase. Todo el mecanismo de herencia está modelado con clases y metaclases.
Seaside: El Seaside es un framework para hacer aplicaciones web basado en continuations. Un framework como Seaside simplifica muchísimo el manejo del flujo de un sitio web.
SUnit: Este es el framework 'padre' de todos los frameworks de unit-testing que existen.
Magma: Base de datos de objetos, multiusuario, que permite una completa transparencia a la hora de persistir objetos.
Las clases que vienen en Smalltalk nos brindan, entre otras cosas, la siguiente funcionalidad:
Números: Existen todo tipo de números. Enteros, coma flotante, fracciones, etc.
Colecciones: El framework de colecciones de Smalltalk es uno de los más antiguos y más funcionales que existen en la actualidad. La lista de colecciones incluye Bag, Set, OrderedCollection, SortedCollection, Dictionary, etc.
String: Soporte para cadenas de caracteres de bytes y cadenas que soportan caracteres unicode.
Boolean: Las clases Boolean, True y False se usan, entre otras cosas, para implementar algunas de las 'estructuras de control'.
Cronología: Clases como Date, Time, DateAndTime, Month, Week, Year,
Gráficos: Smalltalk tiene mucho que ver con el desarrollo de las interfaces de usuario gráficas. En los Smalltalk completamente auto-contenidos (como Squeak) todo lo referente al procesamiento gráfico está implementado en Smalltalk y, por ende, es inspeccionable y modificable por el usuario. Se cuentan con operaciones 2D básicas (como BitBtl) hasta soporte para gráficos 3D con OpenGL. El Squeak, a la fecha, tiene soporte para colores con el canal alfa (transparencia), anti-aliasing, renderizado de TTF (True Type Fonts), etc.
Stream: Hay veces que es necesario combinar operaciones de acceso a los elementos de una colección con operaciones de inserción de elementos. Los típicos mensajes de enumeración de las colecciones de Smalltalk no permiten insertar elementos mientras sucede la iteración. La jerarquía de clases de Stream permite la iteración de colecciones a la vez que la inserción de elementos. La metafora de los “streams de objetos” funcionó tan bien en Smalltalk que, a partir de entonces, se usa para acceder a fuentes de datos externas en Smalltalk y en muchos lenguajes orientados a objetos.
Weak References: Se puede hacer un uso avanzado del recolector de basura utilizando referencias débiles a objetos. Las referencias débiles, al contrario de las referencia normales o fuertes, no evitan que un objeto sea reclamado por el recolector. Un objeto puede ser reclamado por el recolector cuando no tenga referencias en absoluto, o tenga sólo referencias débiles. Muy útil para implementar caches, pool de instancias, mecanismos de finalización de objetos, etc.
Multithreading: El Smalltalk soporta multithreading desde los inicios. Se cuenta con una rica variedad de clases para hacer computación concurrente de forma sencilla. Las clases Process (Proceso = Thread) y Semaphore (Semáforo) sirven de base para la programación con threads.
Excepciones: Smalltalk cuenta con un moderno esquema de excepciones. A diferencia de otros lenguajes, toda la implementación de excepciones está escrita en el mismo lenguaje. Entre otras cosas, el mecanismo de excepciones de Smalltalk permite continuar con la ejecución en el punto siguiente donde ocurrió la excepción.
Metaclases: Todo en Smalltalk es un objeto. Todos los objetos tienen una clase. Las clases, como todo, son objetos. Las clases tienen su clase, que se llama la Metaclase. Todo el mecanismo de herencia está modelado con clases y metaclases.
Seaside: El Seaside es un framework para hacer aplicaciones web basado en continuations. Un framework como Seaside simplifica muchísimo el manejo del flujo de un sitio web.
SUnit: Este es el framework 'padre' de todos los frameworks de unit-testing que existen.
Magma: Base de datos de objetos, multiusuario, que permite una completa transparencia a la hora de persistir objetos.
jueves, 25 de agosto de 2016
Apache Mesos
Recuerdan a Apache Mesos? Se acuerdan lo que escribí hace tiempo que Apache Mesos es un proyecto open source que permite administrar cluster, es decir que es un cluster manager desarrollado por University of California, Berkeley.
Ahhhh reclaro... pero que es un cluster manager? Uno de los retos en el uso de un cluster de ordenadores es el costo de la administración de la misma que a veces puede ser tan alto como el costo de la administración de N máquinas independientes, si el clúster tiene N nodos.
Por esta razón fue creado Apache Mesos. Apache mesos nos aleja de conceptos tales como CPU, memoria, almacenamiento y otros recursos de las máquinas (físicos o virtuales), permitiendo que los sistemas distribuidos de alta disponibilidad sean fácilmente construidos y funcionan con eficacia.
Dejo link: http://mesos.apache.org/
Ahhhh reclaro... pero que es un cluster manager? Uno de los retos en el uso de un cluster de ordenadores es el costo de la administración de la misma que a veces puede ser tan alto como el costo de la administración de N máquinas independientes, si el clúster tiene N nodos.
Por esta razón fue creado Apache Mesos. Apache mesos nos aleja de conceptos tales como CPU, memoria, almacenamiento y otros recursos de las máquinas (físicos o virtuales), permitiendo que los sistemas distribuidos de alta disponibilidad sean fácilmente construidos y funcionan con eficacia.
sábado, 20 de agosto de 2016
Frege como Haskell pero en la plataforma Java
Siempre me pregunte como no habia un leguaje igual a Haskell pero que corra en la plataforma java y aca esta!! Frege, que si vien no es una copia exacta de Haskell tiene mucha similitud.
Este lenguaje soporta muchas características de haskell, como:
- Typeclasses con polimorfismo
- Pattern matching
- Listas por compresión
- módulos
- Abstracción matemática que nos permite tenes estructuras como functors, monoids, semigroups, y monads.
Veamos un poco de código:
-- file hello.fr
module Hello where -- moduleName maybe hierarchical as pkgdir.JavaClassname
main args = println $ "Hello world! your arguments are: " ++ show args
En este ejemplo se puede ver un simple hello world. Como ven es mu similar a haskell para tiene una clara influencia de la plataforma java.
Veamos otro ejemplo:
{--
Este programa muestra la
hora actual en la salida estándar
cada dos segundos.
-}
module examples.CommandLineClock where
data Date = native java.util.Date where
native new :: () -> IO (MutableIO Date) -- new Date()
native toString :: Mutable s Date -> ST s String -- d.toString()
--- 'IO' action to give us the current time as 'String'
current :: IO String
current = do
d <- Date.new () -- reads system timer, hence IO
d.toString
main args =
forever do
current >>= print -- print formatted date
print "\r" -- followed by carriage return
stdout.flush -- make sure it's shown
Thread.sleep 999L -- wait 0.999 seconds
Este lenguaje fue diseñado por Ingo Wechsung quien nombra este lenguaje Frege por el matemático alemán Gottlob Frege.
Además podemos probarlo de forma online desde esta pagina: http://try.frege-lang.org/
Dejo links:
https://github.com/Frege/frege
https://en.wikipedia.org/wiki/Frege_(programming_language)
jueves, 18 de agosto de 2016
Con nosotros Eclipse Che!!
La nube esta de moda y porque no no tener un entorno de desarrollo en la nube y porque no, no tener todo el entorno de desarrollo en la nube. Esto fue lo que penso la gente de eclipse che. Hacer una IDE en la nube.
Esta IDE es totalmente funcional y trae con sigo las ventajas de trabajar en la nube. Desde cualquier browser podemos tirar lineas de código y a la vez el código no esta en una pc o notebook. Por lo tanto tenemos las ventajas de la nube en nuestro desarrollo.
Sin más les presento eclipse che:
http://www.eclipse.org/che/
Prueba Ubuntu desde el browser
Por lo tanto los que nunca vieron ubuntu funcionando, a probar!!
Dejo link: http://tour.ubuntu.com/en/
miércoles, 17 de agosto de 2016
LIBROS GRATIS por las próximas 22 horas !!!
Packtpub nos regala una cantidad de libros por las próximas 22 horas!!
Sin más nada que decir, dejo link:
https://www.packtpub.com/packt/offers/free-learning/
lunes, 15 de agosto de 2016
Seguimos con Smalltalk, parte 3
En Smalltalk el comportamiento (el código) también es un objeto. Los bloques son una forma de capturar comportamiento (código) en un objeto para utilizarlo a nuestra discreción. La forma básica de un bloque es una lista de expresiones, separadas por un punto, encerradas entre corchetes ([]).
[ExpresiónSmalltalk1].
[ExpresiónSmalltalk1. ExpresiónSmalltalk2].
La forma de activar un bloque (de ejecutar el código que encierra) es enviándole el mensaje #value. La última expresión del bloque será el valor de retorno.
| bloque |
bloque := [World flash]. "En este punto el mundo NO parpadea"
bloque value. "Ahora que evaluamos el bloque el mundo SI parpadea"
Una cosa muy interesante del lenguaje Smalltalk es que no existen, como parte de la sintaxis, las 'estructuras de control'. La funcionalidad que los lenguajes tradicionales se da con extensiones en la sintaxis, en Smalltalk se resuelve con mensajes a objetos.
Smalltalk allClasses size > 2000
ifTrue:[Transcript show: '¡Cuantas clases!'; cr].
Smalltalk allClasses size > 2000
ifTrue:[Transcript show: '¡Cuantas clases!']
ifFalse:[Transcript show: '¡No son tantas las clases!'].
Transcript cr.
| número paridad |
número := 11.
(número \\ 2) = 0
ifTrue:[paridad := 0]
ifFalse:[paridad := 1].
| número paridad |
número := 11.
paridad := (número \\ 2) = 0 ifTrue:[0] ifFalse:[1].
Veamos una estructura tipo WHILE:
| index |
index := 1.
[index < 10]
whileTrue:[
Transcript show: index; cr.
index := index + 1
].
Veamos una estructura tipo FOR:
1 to: 10 do:[:index | Transcript show: index; cr].
1 to: 10 by: 2 do:[:index | Transcript show: index; cr].
25 timesRepeat:[Transcript show: '.'].
Transcript cr.
Es muy interesante ver la implementación del los métodos True>>ifTrue:ifFalse: y False>>ifTrue:ifFalse: para entender como funcionan las 'estructuras de control' con objetos y mensajes.
A los bloque, también, se les puede activar con argumentos. La sintaxis para definir un bloque que necesita argumentos para evaluarse es la siguiente:
[:argumento1 | Expresiones].
[:argumento1 :argumento2 | Expresiones].
Para activar un bloque que requiere un argumento se usa el mensaje #value:, para activar uno que requiere 2 argumentos se usa el mensaje #value:value:, y así sucesivamente para bloques con 3 o más argumentos.
| productos |
productos := #(2 3 5 7 11 13) collect:[:primo | primo * primo].
Transcript show: productos; cr.
| colección |
colección := SortedCollection sortBlock:[:x :y | x size < y size].
colección add: 'un string más largo'.
colección add: 'un string'.
colección add: #(#un #array #con @simbolos).
Transcript show: colección; cr.
Y, por último, se pueden declarar variables temporales al bloque con la siguiente sintaxis.
[| variableTemporal | Expresiones].
[:argumento1 | | variableTemporal | Expresiones].
Suscribirse a:
Entradas (Atom)