Translate

domingo, 25 de septiembre de 2016

A desarrollar con Smalltalk!! 3



Continuamos con nuestro ejemplo. Ahora vamos a crear una instancia de nuestra recién creada clase Saludador.  Para evaluar algo de código, podemos utilizar otra herramienta que un ambiente Smalltalk nos brinda: El Playground.

El Playground (espacio de trabajo) es una ventana que nos permite ordenar el código que vamos evaluando de forma interactiva en nuestro ambiente.

El Playground es una herramienta conveniente, pero es importante resaltar que en Smalltalk se puede evaluar código en cualquier panel de texto y no sólo en los Playground.

Para abrir un Playground usaremos nuevamente el Menú  y dentro la opción 'Playground' :



Luego escribimos un programa que instancie nuestra clase y que llame al método saludar. Y luego podemos presionar el botón de play: 



Y nos saluda!!


Aprende Python con PyCharm Edu !!


PyCharm Edu, una herramienta gratuita y de código abierto para aprender a programar con Python. PyCharm Edu 3 es una edición educativa de PyCharm, el medio ambiente de desarrollo de la empresa JetBrains para Python.

Además del editor y del entorno de programación, PyCharm Edu tiene integradas lecciones interactivas para que podamos aprender python y las características del lenguaje y a las herramientas del entorno de programación (el IDE).

Dejo link: https://www.jetbrains.com/pycharm-edu/

A desarrollar con Smalltalk!! 2

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.

Vamos a hacer una clase que salude, por lo tanto le vamos a llamar saludador:



Y Ya tenemos nuestra primera clase!!

Como la probamos? lo verán en el próximo post.


jueves, 22 de septiembre de 2016

Elm el lenguaje funcional que compila a javascript


Elm es un lenguaje funcional que compila a JavaScript. Elm tiene un fuerte énfasis en la simplicidad, facilidad de uso y herramientas de calidad.

Les quiero compartir una muy buena guia para comenzar: https://guide.elm-lang.org/

miércoles, 21 de septiembre de 2016

Swift 3 fue liberado



Swift 3.0 ha sido liberado, escribe ingeniero de Apple, Ted Kremenek, y trae consigo una  gran cantidad de cambios en el lenguaje y su biblioteca estándar.

Swift 3 es la primera versión principal de Swift, desde que es código abierto. Y con esta versión llegan grandes cambios.

Además esta versión trae un sistema de paquetes para Linux.

Dejo link: https://swift.org/blog/swift-3-0-released/

Ceylon 1.3.0 esta aquí!!


Ceylon 1.3.0 esta disponible para descargar! Si si si!
Ceylon 1.3.0 es un release muy importante con aproximadamente de 330 problemas solucionados. Este es el primer release que soporta desarrollo Android, tambien soporta lo paquetes  Node Package Manager (npm).

Y trae muchas novedades, entre las que podemos nombrar:

  • Soporte para IntellJ
  • Soporte para eclipse
  • Soporte para Android
  • Soporte para el sistema de paquetes, npm
  • Soporte para la creación de microservice con WildFly Swarm
  • Full soporte para Java 8
  • Y más!!


Dejo link: https://ceylon-lang.org/blog/2016/09/19/ceylon-1-3-0/

lunes, 19 de septiembre de 2016

Que es Abstract Data Types?

Abstract Data Types o ADT es un tipo de dato con operaciones asociadas, pero cuya representación está oculto o es abstracta. Los ejemplos más comunes de tipos de datos abstractos son los tipos primitivos en Haskell como Integer y Float.

Haskell apoya la definición de tipos de datos abstractos a través del sistema de módulos. Los tipos paramentados se pueden ver como una especie de tipo abstracto, porque dejan algunas partes del tipo de datos no definido, o abstracto.

Veamos un ejemplo:

data Tree a = Nil
            | Node { left  :: Tree a,
                     value :: a,
                     right :: Tree a }

Este tipo es abstracto, ya que deja algunos aspectos de su estructura indefinida, que será asumida por el usuario del tipo de datos. Esta es una forma débil de tipo abstracto de datos.

Un usuario puede utilizar esta estructura con enteros:

three_number_tree :: Tree Integer
three_number_tree = Node (Node Nil 1 Nil) 2 (Node Nil 3 Nil)

Otro usuario diferente podría especificar un tipo diferente para ese parámetro. Esta flexibilidad es lo que permite este tipo que se utiliza en muchos contextos diferentes. 

Por el contrario, un tipo de datos concreto es uno que no proporciona tal flexibilidad.

Un tipo abstracto de datos más tradicional oculta completamente la estructura interna, o representación, de los datos. El siguiente ejemplo ilustra esta forma más tradicional de tipo abstracto de datos.

Podemos implementar una pila polimórfico simple usando una lista sin tener que decir algo a los consumidores acerca de su funcionamiento interno. El módulo sólo exporta el constructor de tipos (pero no el constructor de datos) y las funciones:

module Stack (Stack, empty, isEmpty, push, top, pop) where
 
empty :: Stack a
isEmpty :: Stack a -> Bool
push :: a -> Stack a -> Stack a
top :: Stack a -> a
pop :: Stack a -> (a,Stack a)
 
newtype Stack a = StackImpl [a] -- opaque!
empty = StackImpl []
isEmpty (StackImpl s) = null s
push x (StackImpl s) = StackImpl (x:s)
top (StackImpl s) = head s
pop (StackImpl (s:ss)) = (s,StackImpl ss)

Si más tarde decide cambiar la pila de ejecución, la API no cambia. También puede estar seguro de que el usuario no puede modificar "sus" estructuras de datos dentro del tipo de datos abstracto.

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

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!!

Code School
 
Digging into Django
Journey into the depths of Django to build a fully functioning, scalable web application filled with treasures that will wow your users.
View Course
What You'll Build
Forging Ahead with ASP.NET Core
 
 
What You'll Learn
 
Templates & Inheritance
Update the homepage in a Django app to have a grid view, as well as add a detail page and improve code with template inheritance.
 
Level 2: Forms
Add a new Treasure form so users can easily create new treasures from the homepage.
 
Level 3: Image Uploads
Enable the ImageField so users can upload treasure images from their own computer.
 
Level 4: Users
Relate the built-in user model to our treasure model to create a user profile page, and then add user authentication.
 
Level 5: AJAX
Leverage the power of AJAX to create instantaneous search functionality and a seamless Like button.
Why Django?
If you're wondering why you should choose to learn Django, Course Instructor Sarah Holderness breaks down the benefits in her new blog post.
 
Twitter IconFacebook IconYoutube IconGoogle+ Icon

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.



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:

Code School
Forging Ahead with ASP.NET Core
Pick up where Try ASP.NET Core left off and learn how to use ASP.NET Core to create scalable web applications that are easy to test and maintain.
Start Level 1
What You'll Learn

Level 1: Engaging Data
Set up Entity Framework to read from and write to a database.

Level 2: Showing Off Our Data
Discover how data is related and how to get it from the database to our user’s screen.

Level 3: Making Our Presentation Smarter
Use layouts, partials, and editor templates to add functionality to our views and make them easier to maintain.

Level 4: Creating Logical URLs
Learn how to make URLs more user friendly and accessible to search engines.

Level 5: Validating Our Input
Keep our data clean by ensuring we only get valid input.      
Why ASP.NET?
If you're wondering why you should choose to learn ASP.NET, Course Instructor Eric Fisher breaks down the benefits in his new blog post.