domingo, 21 de noviembre de 2010

OZ (puntos extras)

Hola compañeros hoy les hablare un poco del lenguaje de programación OZ
Oz es un lenguaje de programación multi-paradigma y fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y estudiantes a principios de los años de los 90's. 

En el año de 1996 el desarrollo de Oz continuó con la cooperación con el grupo de investigación en un Instituto Sueco de Ciencias de la Computación.
Desde el año 1999, Oz se ha desarrollado continuamente por un grupo internacional, el Consorcio Mozart, que este a su vez estuvo integrado inicialmente por la Universidad de Saarland, el Instituto Sueco de Ciencias de la Computación, y la Universidad Católica de Louvain.

En 2005, la responsabilidad del desarrollo de Mozart fue transferida hacia a un grupo llamado Tablero Mozart, esto con propósito de abrir el desarrollo de Mozart a muchísima mas gente.

Oz tiene una implementación de muy buena calidad, el Sistema de Programación Mozart, que fue liberado bajo licencia de Código Abierto por el Consorcio Mozart

Mozart ha sido probado en distintos sistemas operativos o diferentes plataformas como:

  • Unix 
  • FreeBSD
  • Linux
  • Microsoft Windows
  • Mac OS X.


Oz a pesar de ser un lenguaje que ha sido creado recientemente tiene los principales paradigmas de programación, incluyendo programación:

  • lógica
  • funcional
  • imperativa
  • orientada a objetos
  • con restricciones
  • distribuida
  • concurrente. 


Oz tiene una forma de escribir formal, simple y una implementación muy eficiente.
Oz es un lenguaje orientado a la concurrencia y un lenguaje orientado a la concurrencia hace fácil de usar y que sea eficiente.

Las principales ventajas de Oz están en la programación con restricciones y la programación distribuida y debido a su diseño, Oz utiliza un modelo de programación distribuido que hace que la red sea transparente.

Gracias a este modelo se hace fácil programar aplicaciones abiertas y que sean tolerantes a fallas en el lenguaje.Oz introduce la idea de espacios de computación, los cuales permiten hacer búsquedas definidas por el usuario.


Aqui les dejo un manual que esta en la pagina oficial de OZ
TUTORIAL (ingles)

También les dejo la pagina para que descarguen en cualquier sistema operativo
DESCARGAR



RECURSION (puntos extras)

Hola compañeros hoy les hablare de la recursividad








La recursividad es una técnica de la programación que se usa para realizar una llamada a una función desde
 ella misma, es algo parecido como a lo que se ve en la imagen de arriba y de ahi viene su nombre. 


El ejemplo más utilizado factoriales. 
El factorial de 0 es, por definición, 1, pero los factoriales de números mayores a 0 se calculan mediante la multiplicación de 1 x 2 x ...,haciendo que valla incrementando el número de 1 en 1 hasta llegar al número para el que se está calculando el factorial.



gracias :)





SUBRRUTINAS (puntos extras)

Hola compañeros hoy les hablare de las subrutinas.



Una subrutina es un pedazo del código que forma parte de un programa más extenso.
Esa pedazo de código ejecuta una tarea específica, e independiente del resto del código. La mayoría de los lenguajes de programación soportan la creación de las subrutinas y métodos para llamarlas (invocarlas) y retornarlas.

Existen varias ventajas de "romper" un programa en subrutinas:

* Puedes redecir de código duplicado.
* Permite el reuso de código en múltiples programas.
* Descomposición de problemas complejos en simples piezas.
* Aumenta la legibilidad del código de un programa.




En computación,se presenta como un subalgoritmo que forma parte del algoritmo principal o del código fuente, el cual permite resolver una tarea específica.

Algunos lenguajes de programación, como Visual Basic .NET, utilizan el nombre función para referirse a subrutinas que devuelven un valor.

Cuando una subrutina es  llamada dentro de un programa hace que el código principal se pueda detener y se pueda ir a ejecutar el código de la subrutina.



Gracias :)



AWK (puntos extras)

Hola compañeros hoy les hablare del Lenguaje de Programación AWK



AWK fue originalmente diseñado e implementado por:
A.H.  Aho, 
P.J.  Weinberger  
B.W. Kernighan
 y en 1977, de echo su nombre AWK proviene de la primera letra del sus apellidos.

Los autores de AWK estaban interesados en expresiones regulares y editores programables.
Aunque estuvo solo diseñado para escribir pequeños programas, pronto atrajo a gran numero de programadores, quienes produjeron muchos programas extensos que pusieron de manifiesto las limitaciones de la implementacion original

En su estado actual, awk es un lenguaje muy versátil, que ha sido y es usado para administracion de bases de datos, diseño de circuitos, analisis numerico, graficos, diseño e implementacion de compiladores, administracion del sistema, lenguaje de entrada para no programadores y cursos de ingeniería de software. 



AWK es un lenguaje de programación que usa el tipo de datos de listas asociativas y expresiones regulares, este lenguaje tiene un gran poder, brevedad y limitaciones de los programas de AWK que hasta de echo inspiraron para hacer Perl.

AWK fue una de las primeras herramientas en aparecer en Unix  y ganó gran popularidad como una manera de añadir funcionalidad a Unix.
La utilización de alguna versión del lenguaje AWK es estándar en casi todo sistema operativo tipo unix moderno y se pueden instalar implementaciones de AWK en casi todos los demás sistemas operativos.

Normalmente AWK se le dan dos piezas de datos:



  • fichero de órdenes 
  • fichero primario de entrada. 


El fichero de órdenes contiene una serie de órdenes que le dicen a AWK cómo tienen procesar el fichero de entrada.
El fichero primario de entrada es normalmente texto formateado de alguna manera la cual puede ser en un fichero real, o puede ser de la entrada estándar que es del teclado.

Un programa AWK consiste casi siempre en una serie de líneas, cada una de la forma:


/patrón/ { acción }



Patrón es una expresión regular.
Acción es una orden. 


Bueno compañeros aquí les dejo unos manuales de AWK para que aprendan a programar un unos cuantos  minutos la verdad soy muy buenos.

MANUAL (españl)
MANUAL (ingles)

 
También les dejo un ejemplo


GRACIAS :)




ERLANG (puntos extras)

Hola compañeros hoy les hablare acerca del ERLANG


La primera versión fue desarrollada por Joe Armstrong en el año de 1986, este es compatible con el intercambio en caliente, lo que esto significa es que el código se puede cambiar sin parar el sistema.



Este lenguaje fue originalmente un lenguaje solo dentro de Ericsson, pero luego fue liberado como código abierto en el año de 1998.

Erlang proporciona características de nivel de idioma para la creación y gestión de los procesos con la intención de simplificar la programación concurrente.
Aunque toda la concurrencia es explícita en Erlang, los procesos se comunican mediante paso de mensajes en el lugar de las variables que están compartidas, lo que elimina la necesidad de bloqueos.


Erlang fue diseñado principalmente para mejorar el desarrollo de aplicaciones de la telefonía.

En el año de 1998, el switch Ericsson AXD301 se anunció, con más de un millón de líneas de Erlang, y se informo de lograr una fiabilidad del nueve pero poco después, Erlang se prohibió en Ericsson Radio Systems para nuevos los productos.


Existe una filosoía de ERLANG la cual citaba estos 3 puntos.



  1. Encontrar los métodos adecuados a través del diseño de prototipos.
  2. No es suficientemente bueno como para tener ideas, también debe ser capaz de poner en práctica y saben que trabajo.
  3. Cometer errores en una escala pequeña, no en un proyecto de producción.
En cuanto a su distribución ERLANG empezó a ser utilizado por varias compañías en todo el mundo desde su liberación en el año de 1998 y fue usado por compañías como Nortel y T-Mobile, pero como quiera ERLANG no es un lenguaje de programación muy utilizado.


Las características más importantes son: 

  • lenguaje funcional 
  • soporte de concurrencia 
  • distribución, no hay memoria compartida 
  • tolerancia a fallos
  • recolector de basura
  • reemplazo de código en caliente 
  • procesos concurrentes altamente aislados 
  • comunicación entre procesos con paso de mensajes 
  • funciones de orden superior 
  • comprobación de tipos dinámica
  • evaluación de argumentos estricta (temprana, para permitir efectos secundarios)
  • posibilidad de conectar con código en C, Java y otros lenguajes 

Y también hay varias características con respecto a la concurrencia, las cuales son:
  • Todo es un proceso
  • Los procesos están fuertemente aislados
  • La creación y destrucción de objetos es un proceso ligero
  • La única forma en que los procesos pueden interaccionar es con el paso de mensajes
  • Los procesos tienen nombres únicos 
  • Si conoces el nombre de un proceso puedes mandarle un mensaje 
  • Los procesos no comparten recurso alguno 
  • El manejo de errores no es local 
  • Los procesos hacen lo que se supone que han de hacer, o fallan


Bueno compañeros aquí les dejo un manual muy bien explicado y esta en español.




También les dejo la pagina para que lo puedan descargar desde la pagina oficial


También les dejo una pagina para que vean los pasos de como ponerlo en EMACS


También les dejo un ejemplo:


GRACIAS :)

SHELL (puntos extras)

Hola compañeros hoy les hablare del Shell.


Primero hay que sabes que es Shell
El shell es el inteérprete de comandos de UNIX ,y todo lo que hace es que checa todo lo que escribimos en la terminal lo guarda y se transforma en un programa que se ejecuta



Lo que viene siendo un Shell se refiere a lo que es un intérprete de comandos, con este las instrucciones que los usuarios ingresamos has de cuenta que llegan directo al núcleo y por la extensión se ejecutan las ordenes órdenes.

También hay comandos que podemos usar como guión si en dado caso quedemos que sean ejecutables  y a estos se les llama shell-scripts,
De esta manera cuando nosotros usamos los comandos o combinados de comandos  se escribe en un fichero de texto que esta puesto como ejecutable

A esto se le llama programación shell o los q es lo mismo pero en inglés , shell programming o shell scripting.

El nombre de Shell proviene de cuando los usuarios o programadores conectaban al computador central y lo hacían mediante las consolas que se llamaban (shells) por lo que a través de un intérprete se hacia inicio de sesión y manejaban la computadora principal.

Después se desarrolló un software que lo que hacia eraemular las características principales de las consolas físicas, a modo de poder seguir usándolas como clientes en un computador o núcleo que comprendiera la convención estándar usada para configurar y llevar a cabo tareas de administración de emergencia con servidores basados en Unix.

En Unix cualquier programa puede ser un shell de usuario, esto debido a que se nosotros queremos usar una sintaxis para realizar un comando lo podemos especificar en los intérpretes diferentes como su shell pero de usuario.

Ahora el Bourne shell fue el primero shell usando  las primeras versiones de UNIX se convirtió en un estándar por que debido a eso todos los sistemas que se parecen al UNIX tienen al menos un shell compatible con el Bourne shell.

El programa Bourne shell se encuentra dentro de la jerarquía de archivos de UNIX en /bin/sh. En algunos sistemas, tal como BSD, /bin/sh es un Bourne shell o uno que se le parezca.

También no existe un solo tipo de shell, estos se dividen en distintos tipos de shell.

Compatibles con Bourne shell


  • Bourne shell 
  • Almquist shell
  • Bourne-Again shell (bash) 
  • Debian Almquist shell (dash) 
  • Korn shell (ksh)
  • Z shell

También estan los que son compatibles con la shell de C los cuales son:
  • C shell 
  • TENEX C shell

Pero entre los mas usados esta:
  • Bourne Shell
  • C-Shell: E
  • Korn Shell
  • Bash

Algunas de las características de los Shells son:

  • Que proporciona facilidades al usuario
  • Redireccionamiento de la salida o la entrada standard.
  • Metacaracteres, caracteres especiales con significado propio.
  • Filtros, que se encargan de gestionar la información de los ficheros.
  • Permite concatenar órdenes en un fichero de texto ejecutable con permiso de ejecución para automatizar procesos.
También les dejo una tablita con la que podrán ver las configuraciones de Shell mas usadas

 
Muchas gracias y espero que les haya gustado compañeros :)

viernes, 19 de noviembre de 2010

POLIMORFISMO (puntos extras)

Hola compañeros hoy les hablare del polimorfismo.


La capacidad de un programa de trabajar con más de un tipo de objeto se conoce como polimorfismo.


El polimorfismo esta orientada a objetos y esta cualidad se refiere a la capacidad para que varias clases que están derivadas de una antecesora usen un mismo método pero de forma diferente.


Esto se puede aplicar tanto a funciones como a tipos de datos



Como se mencionó anteriormente, el concepto de polimorfismo se puede aplicar tanto a funciones como a tipos de datos

Las funciones polimorficas son aquellas funciones que se pueden evaluar o pueden ser aplicadas a diferentes tipos de datos de forma indistinta
Los tipos polimórficos son aquellos tipos de datos que tienen al menos un elemento cuyo tipo no está especificado.


También el plomimorfismo se puede clasificar en dos clases las cuales son:

  • Polimorfismo dinámico
  • Polimorfismo estático


El polimorfismo dinámico es cuando el código no incluye ningún tipo de especificación del tipo de datos con el que se va a trabaja, gracias a esto se puede ser usar a todo tipo de datos compatible.
Ete polimorfismo en union a la herencia genera programación genérica.

El polimorfismo estático es el que los tipos  de datos deben ser explicitados y declarados uno a uno antes de ser utilizados.

Les pondre un ejemplo de polimorfismo.


También podemos caer en ele error de pensar que el polimorfismo es lo mismo que la sobrecarga pero no es lo mismo ya que la sobrecarga es la posibilidad de tener dos o más funciones con el mismo nombre pero con funcionalidad diferente. 

Otra diferencia es que en el polimorfismo se da entre clases distintas mientras en la sobrecarga se dan en mas mismas.

Y ya por último otra diferencia es que la sobrecarga se ve resolviendo en tiempo de compilación usando los nombres de los métodos y los tipos de sus parámetros
En el polimorfismo se resuelve cuando se ejecuta el siempre en función de que clase pertenece un objeto.

Gracias  y espero que les aya quedad un poco mas claro lo que es polimorfismo.


jueves, 18 de noviembre de 2010

Lenguaje orientado a objetos (puntos extras)

Hola compañeros hoy les hablara un como del lenguaje orientado a objetos.



Se le llama lenguaje orientado a objetos cualquier lenguaje de programación que implemente los conceptos que están definidos por la programación orientada a objetos

Para diseñar aplicaciones y programas informáticos basados en técnicas distintas incluyendo herencia, abstracción, polimorfismo y encapsulamiento, su auge llegó a principios de la década de los años 1990 y en la actualidad, existe gran variedad de lenguajes de programación que soportan la orientación a objetos.

¿Por que "objetos"?


Los objetos son entidades que combinan estado, comportamiento de identidad:


  • El estado está compuesto de datos, será uno o varios atributos a los que se habrán asignado unos valores concretos (datos).
  • El comportamiento está definido por los procedimientos o métodos con que puede operar dicho objeto es decir las operaciones se pueden realizar con él.

La identidad es una propiedad de un objeto que lo diferencia del resto.
Un objeto contiene toda la información que permite definirlo e identificarlo con otros objetos que pertenecen a otras clases o también a objetos de una misma clase, al poder tener valores bien diferenciados en sus atributos.

Los objetos cuentan con mecanismos de interacción llamados métodos, que favorecen la comunicación entre ellos, esta comunicación ayuda a su vez el cambio de estado en los propios objetos.

Los métodos y atributos están muy relacionados por la propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder tratar los atributos con los que cuenta.
El programador debe pensar indistintamente en ambos conceptos, sin separar ni darle mayor importancia a alguno de ellos. Hacerlo podría producir el hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que manejen a las primeras por el otro. De esta manera se estaría realizando una programación estructurada camuflada en un lenguaje de programación orientado a objetos.

La Programación Orientada a Objetos difiere a la programación estructurada que se usa tradicionalmente, en la que los datos y los procedimientos están separados y sin relación ya que lo único que se busca es el procesamiento de datos de entrada para así obtener datos de salida.

CARACTERÍSTICAS

  • Abstracción
  • Modularidad
  • Principio de ocultación
  • Polimorfismo
  • Herencia 
  • Recolección de basura

Algunos ejemplos de lenguajes que están orientado a objetos.


  • C++
  • Objective C
  • Java
  • Smalltalk
  • Eiffel
  • Lexico (en castellano)
  • Ruby
  • Python
  • OCAML
  • Object Pascal
  • CLIPS
  • Visual .net
  • Actionscript
  • COBOL
  • Perl
  • C#
  • Visual Basic.NET
  • PHP
  • Simula
  • Delphi
  • PowerBuilder


Arreglos (puntos extras)

Hola compañeros hoy les hablare un poco de Arreglos



Los arreglos en la programación es una zona de almacenamiento contiguo en donde contiene u gran serie de elementos del mismo tipo, los elementos de la matriz.
Los arreglos desde el punto de vista lógico una solo una matriz que se puede ver como un conjunto de elementos ordenados en fila y columnas en caso de ser de 2 dimenciones o solamente filas.

Los elementos de la fila pueden ser a su vez matrices, lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones, ya que se pueden hacer matrices de las dimensiones que queramos.


En programación los tipos de arreglos son se dividen básicamente en estos 3:

  • Arreglos unidimensionales
  • Arreglos bidimensionales
  • Arreglos multidimensionales


Un arreglo unidimensional es un tipo de datos que esta estructurado y esta formado de una colección finita y ordenada de datos del mismo tipo, esta es la estructura natural para modelar listas de elementos iguales.


El segundo tipo de arreglo es el bidimensional, al igual que el unidimencional, es un tipo de dato estructurado, finito ordenado y homogéneo, los arreglos bidimensionales se utilizan para representar datos que pueden verse como una tabla con filas y columnas, como lo veremos en esta imagen.

El ultimo tipo de arreglo es el multidimensional, también es un tipo de dato estructurado, que está compuesto por n dimensiones, para hacer referencia a cada componente del arreglo es necesario utilizar n índices lo que es uno para cada dimensión.
Aqui pongo un ejemplo para que lo visualicen mejor.

Aqui les dejo un video donde podran aprender a hacer arreglos en C


También les dejo un ejemplo y como se ve ejecutado:



Gracias :)


OCTAVE (puntos extras)

Hola compañeros hoy les hablare del Octave 



Octave o GNU Octave es un programa de código libre que se utiliza para realizar cálculos numéricos
Octave te permite ejecutar órdenes en un modo interactivo, Octave es un sistema de álgebra computacional.

Octave fue creado en el año de 1988 con el propósito de ser utilizado en un curso de reactores químicos, después en el año 1992, se opta por extenderlo y empieza su desarrollo a cargo de John W. Eaton.
La primera versión alpha fue lanzada el 4 de enero de 1993, luego un año más tarde, el 17 de febrero de 1994 aparece la versión 1.0.


Octave ahora es mucho más que un paquete de cursos que permita a los estudiantes resolver problemas reales, y que podría utilizar para muchas cosas distintas de problemas químicos diseño del reactor. 
Hoy miles de personas en todo el mundo utilizan Octave para la enseñanza, investigación y aplicaciones comerciales.

EJEMPLO




Aquí les dejo un manual con el cual podrán aprender un poco de Octave.


También les dejo la página para que lo puedan descargar, ahí viene los distintos sistemas operativos en los cual trabaja Octave. 









JavaScript (puntos extras)

Hola compañeros hoy les hablare acerca del JavaScript 


JavaScript  es un lenguaje de programación que se usa principalmente para crear páginas web dinámicas, una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario. 
JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas para ejecutarlos.



El lenguaje JavaScript esta orientado a objetos, es ligero, utilizado para acceder a objetos en aplicaciones. 
Esencialmente, se usa integrado en un navegador web y permite el desarrollo de interfaces de usuario mejoradas y páginas web dinámicas. 
JavaScript es un dialecto de ECMAScript y se caracteriza por ser un lenguaje basado en prototipos, con entrada dinámica y con funciones de primera clase.

Este lenguaje ha tenido gran influencia para mas lenguajes y se diseñó con una sintaxis similar al lenguaje de programación Java, aunque más fácil de utilizar para personas que no programan.
Todos los navegadores modernos interpretan el código JavaScript integrado dentro de las páginas web
El lenguaje fue inventado por Brendan Eich en la empresa Netscape Communications.
Tradicionalmente, se venía utilizando en páginas web HTML, para hacer operaciones y en el marco de la aplicación, sin acceso a funciones del servidor. 

JScript es la implementación de ECMAScript de Microsoft, muy parecida al JavaScript de Netscape, pero con ciertas diferencias en el modelo de objetos del navegador que hacen ambas versiones sean incompatibles.

Microsoft dio como nombre a su dialecto de JavaScript como JScript, para evitar los problemas relacionadas con la marca, este fue adoptado en la versión 3.0 de Internet Explorer que fue liberado en agosto de 1996.

También encontré un juego en JavaScript, que es muy adictivo y solo pesa poco mas de 10k



Aqui les dejare un ejemplo de como se escribe "hola mundo" en JavaScript.


Algunas características son:

  • Es simple, no hace falta tener conocimientos de programación para poder hacer un programa en JavaScript.
  • Maneja objetos dentro de nuestra página Web y sobre ese objeto podemos definir diferentes eventos. 
  • Es dinámico, responde a eventos en tiempo real. Eventos como presionar un botón, pasar el puntero del mouse sobre un determinado texto o el simple hecho de cargar la página o caducar un tiempo.

También les dejo un tutorial para que aprendan a programar en JavaScript.


Gracias :)

PYTHON (puntos extras)

Hola compañeros hoy les hablare del Lenguaje de Programación llamado Python

Python es un lenguaje de programación creado por creado por Guido van Rossum en el año 1990, este lenguaje se compara normalmente con TCL, Perl, Scheme, Java y Ruby. 
Hoy en día Python se desarrolla como un proyecto de código abierto, que esta administrado por la Python Software Foundation. La última versión estable del lenguaje es la 3.0

Python es un lenguaje de programación multiparadigma, y permite varios estilos como es 
  • La programación orientada a objetos
  • La programación estructurada 
  • La programación funcional.
Otros paradigmas están soportados mediante el uso de las extensiones, por ejemplo Python usa tipo de dato dinámico y reference counting para el manejo de memoria
También una característica importante de Python es la resolución dinámica de nombres, lo que enlaza un método y un nombre de variable durante la ejecución del programa, a esto también se le puede llamar ligadura dinámica de métodos.
Los programadores que usan Python consideran es mucho más limpio y elegante para programar. 

El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico", y lo contrario es el código opaco u ofuscado es definido como "no pythonico" Debido a estos 2 principios se hizo una filosofía Python que fue muy famosa, aquí les mostrare alguno de sus puntos.
  • Bello es mejor que feo.
  • Explícito es mejor que implícito.
  • Simple es mejor que complejo.
  • Complejo es mejor que complicado.
  • Plano es mejor que anidado.
  • Ralo es mejor que denso.
  • La legibilidad cuenta.
  • Los casos especiales no son tan especiales como para quebrantar las reglas.
  • Aunque lo práctico gana a la pureza.
  • Los errores nunca deberían dejarse pasar silenciosamente.
  • A menos que hayan sido silenciados explícitamente.
  • Frente a la ambigüedad, rechaza la tentación de adivinar.
  • Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.
  • Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.
  • Ahora es mejor que nunca.
  • Aunque nunca es a menudo mejor que ya mismo.
  • Si la implementación es difícil de explicar, es una mala idea.
  • Si la implementación es fácil de explicar, puede que sea una buena idea.
  • Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!
También les explicare como se declaran los tipos de datos y que tantos tipos de datos hay:



Aqui les dejo un manual para que aprendan a programar en Python


También les dejare la página oficial donde podrán encontrar la descarga para distintos sistemas operativos.



Muchas gracias y espero que les guste :)


RUBY (puntos extras)

Hola compañeros hoy les hablare acerca de Ruby 


Ruby es un lenguaje de programación orientado a objetos y reflexivo que fue creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en el año de 1993, y lo presentó en 1995. 


Este lenguaje combina una sintaxis inspirada en Python y Perl con ciertas características de programación orientada a objetos parecidas a Smalltalk para formar un nuevo lenguaje que incorporara tanto la programación funcional como la programación imperativa.
En el 2006, Ruby alcanzó reconocimiento de grandes masas y así formándose grupos de usuarios activos en las ciudades más importantes del mundo


Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.




Ruby es considerado un lenguaje flexible, ya que te alterarlo libremente. Las partes esenciales de Ruby pueden ser retiradas o redefinidas a gusto propio. Se puede agregar nuevas funciones a partes ya existentes.
Ruby intenta no restringir al desarrollador.

Por ejemplo, la suma se realiza con el operador suma (+) pero si preferimos usar la palabra sumar, puedes agregar un método llamado sumar a la clase Numeric que viene incorporada.

class Numeric
  def sumar(x)
    self.+(x)
  end
end
y = 5.sumar 6
# ahora y vale 11



Ruby no necesita declaraciones de variables solo se utilizan convenciones simples para nombrarlas y determinar el alcance de estas como aquí se muestra:

  var  -  puede ser una variable local.
@var -  es una variable de instancia.
 $var -  es una variable global.

Ruby es orientado a objetos: todos los tipos de datos que se usan son un objeto, incluyendo las clases y tipos que otros lenguajes definen como primitivas como enteros, booleanos, y "nil" entre mas.
Toda función es un método, las variables siempre son referencias a objetos, no los objetos mismos, Ruby también soporta la herencia con enlace dinámico, mixins y métodos singleton.

Ruby no soporta herencia múltiple, la clases pueden importar módulos como mixins. La sintaxis procedural está soportada, pero todos los métodos definidos fuera del ámbito de un objeto son métodos de la clase Object.
Como esta clase es padre de todas las demás, los cambios son visibles para todas las clases y objetos.

Características


Ruby cuenta con las siguientes características:


  • orientado a objetos
  • cuatro niveles de ámbito de variable: global, clase, instancia y local.
  • manejo de excepciones
  • iteradores y clausuras o closures (pasando bloques de código)
  • expresiones regulares nativas similares a las de Perl a nivel del lenguaje
  • recolección de basura automática
  • altamente portable
  • introspección, reflexión y metaprogramación
  • amplia librería estándar
  • soporta inyección de dependencias
  • soporta alteración de objetos en tiempo de ejecución
  • entre mas

Aqui también les dejo la pagina oficial donde podrán encontrar excelentes manuales y también para poder descargarlo en distintos sistemas operativos.



Descarga (aqui viene la pagina donde encontraran los distindos sistemas operativos y como instarlo)


Manuales (aqui estan los manuales de Ruby, desde un manual muy bien explicado hasta uno que puedes aprender en 20 min)



Gracias :) espero que les haya gustado mi entrada 
Nos vemos luego 




miércoles, 17 de noviembre de 2010

Cálculo Lambda (puntos extras)

Hola compañeros hoy les hablare un poco acerca del Cálculo Lambda

Este Cálculo Lambda fue desarrollado en los 30's por Alonso Church con la finalidad de dar una teoría general a las funciones.

Este ha sido empleados como un fundamento conceptual de los lenguajes de programación aportando:

  • Una semantica para el concepto de funciones como proceso de transformación de argumentos en resultados
  • Un medio para definir primitivas de programación 
  • Una sintaxis básicas
La sintaxis del cálculo Lambda es así 



         

El calculo Lambda tiene como objetivo explicar como se representan las funciones como medio de transformación de argumentos de resultados.
Devido a esto se le llamo "Calculo" ya que en este se emplean un conjunto de axiomas y reglas de inferencia.

Este calculo tiene reglas que de acuerdo a la sintaxis propuesta, una aplicación funcional tiene que tener el siguiente formato:

( M N )

por lo cual esto obtendrá un resultado "R" y la consistencia del sistema requiere que sean equivalentes (M N) = R es decir que tengan el mismo valor.

La Regla Beta 

Esta regla dice como sustituri en el cuerpo de la abstracción funcional cada ocurrencia de la variable que se hace de argumento nominal por el argumento efectivo de la aplicación funcional correspondiente.

Regla Beta: Definición de Sustitución 

En elcaso en que M sea la variable a sustituir, se relaciona de la siguiente manera:

[N/x] x :=: N

En el caso de la M siendo una variable, pero diferente de la sustituida, se realiza de la siguiente manera:

[N/x]y :=: y ; y≠x

Un ejemplo de esto seria el siguiente:


Esta idea es recogida por la Regla Beta expresada de la siguiente forma


La parte derecha de la expresión se puede decir como "El termino de que produce al introducir N en lugar de x, toda vez que ocurre libre M"

Ocurrencia de un Termino

Como definición es la ocurrencia de P en Q

Si P ocurre en M o N = P ocurre en (M N)
Si P ocurre en M o P es igual a x = P ocurre en λx.M

( (x y) λx.(x y) )
(x y) ocurre dos veces
 x ocurre tres veces 
 y ocurre dos veces


Una ocurrencia de la variable x en un término P y es ligada sí y solo sí, x ocurre en un subtérmino de P de la forma λx.M


Este es solo un poco acerca de la que es el Calculo Lambda, aquí abajo les dejare páginas con mas información acerca del mismo.



Gracias :)


Tipos de Datos

Hola compañeros hoy les pondré mi video acerca de tipos de datos espero que sea se su agrado 





Muchas gracias :)

GO (puntos extras)

Hola compañeros hoy les hablare un poco del lenguaje de programación llamado GO.




Este lenguaje es un proyecto de código abierto que esta distribuido bajo una licencia tipo BSD. 
Este documento explica como recuperar sus fuentes, compilarlas en su propia máquina y poder ejecutarlas. 


Existen dos métodos diferentes de experimentar con Go. Este documento se enfoca en el compilador gc de Go y herramientas



Los compiladores de Go solo funcionan en dos sistemas operativos que son Linux y Mac OS X y en tres conjuntos de instrucciones.
Existen importantes diferencias en la calidad de los compiladores para las diferentes arquitectura.


Descargar los repositorio 

Primero tenemos que instalar Mercurial, si no lo tenemos podemos urar este comando:

  • $ sudo easy_install mercurial 


Después asegura que el directoria $GOROOT no existe o está vacío.
Entonces haga un 'check out' del repositorio:

  • $ hg clone -r release https://go.googlecode.com/hg/ $GOROOT 


Para instalar go se necesita tener GCC, las librerías estándar de C, el generador de 'parsers' Bison y el editor de texto ed instalado

En Mac puede ser instalado con el disco de Xcode
En Linux ingrese en el terminal:

  • $ sudo apt-get install bison gcc libc6-dev ed 

Para compilar la distribución Go, asegúrate que $GOBIN (o $HOME/bin si $GOBIN no está definido) está en su $PATH y entonces ejecuta lo siguiente

$ cd $GOROOT/src
$ ./all.bash

Si all.bash funciona te mostrara lo siguiente.

--- cd ../test
N known bugs; 0 unexpected bugs
en dónde 'N' es un número que varía de versión en versión.


Para programar primero tenemos el archivo.go y se compila usando

$ 6g file.go

Para linkar el fichero use

$ 6l file.6
y ejecútelo con

$ ./6.out

Aqui veremos un ejemplo



También les pongo un video de una presentación que trata de algunas características de GO

Y también les dejare un TUTORIAL que es el oficial.

Gracias:)