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 :)