miércoles, 14 de julio de 2010



NUEVAS CORRIENTES DE LENGUAJES

La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas de ordenador. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. En la actualidad, existe variedad de lenguajes de programación que soportan la orientación a objetos La programación Orientada a Objeto se convirtió en la corriente dominante. El último factor que ha propulsado OOA&D, (Object Oriented Analysis and Design; OOA&D), ha sido su idoneidad para modelar interfaces gráficos de usuario. La popularidad de lenguajes gráficos orientados a objeto y basados en objeto como Visual Basic y Java refleja la efectividad de este enfoque.

Los objetos son entidades que combinan estado (atributo), comportamiento (método) e 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, qué operaciones se pueden realizar con él.

§ La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto análogo al de identificador de una variable o una constante).

Existe un acuerdo acerca de qué características contempla la "orientación a objetos", las características siguientes son las más importantes:

§ Abstracción: Denota las características esenciales de un objeto, donde se capturan sus comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Los procesos, las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.

§ Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.

§ Principio de ocultación: Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una interfaz a otros objetos que específica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas, solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no pueden cambiar el estado interno de un objeto de maneras inesperadas, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.

§ Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

§ Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

§ Recolección de basura: la Recolección de basura o Garbage Collector es la técnica por la cual el ambiente de Objetos se encarga de destruir automáticamente, y por tanto desasignar de la memoria, los Objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo Objeto y la liberará cuando nadie lo esté usando. En la mayoría de los lenguajes híbridos que se extendieron para soportar el Paradigma de Programación Orientada a Objetos como C++ u Object Pascal, esta característica no existe y la memoria debe desasignarse manualmente.

Los objetos interactúan enviando y recibiendo mensajes. El programador se concentra en cómo las acciones de cada uno de estos objetos se coordinan y cómo se comunican entre sí. El programador no necesita saber cómo un objeto en particular lleva a cabo su función.

Entre los lenguajes orientados a objetos se destacan los siguientes:

§ ActionScript; fue originalmente un lenguaje de creación de scripts, en ActionScript 3.0 la compatibilidad con la programación orientada a objetos es opcional. Esto proporciona a los programadores la flexibilidad de elegir el mejor enfoque para proyectos de ámbito y complejidad variables. Para tareas pequeñas, es posible que sea suficiente con utilizar un paradigma de programación mediante procedimientos. Para proyectos más grandes, los principios de la programación orientada a objetos pueden facilitar la comprensión, el mantenimiento y la ampliación del código.

C es el principal lenguaje de programación en todos los sistemas operativos y plataformas. El lenguaje C original, fue desarrollado por Kernighan y Ritchie en 1972, en la ATT. El estándar de C original estaba el libro escrito en 1978 por estos dos autores. (B. Kernighan and D. Ritchie, The C Programming Language, Prenctice-Hall, 1978.)

§ EL ANSI C Fue creado con el objetivo con el objetivo estandarizar un lenguaje uniforme a partir del C original. Este fue estandarizado por el "comité para el estándar ANSI C" en 1983

§ El lenguaje C++ se desarrollo a partir de 1980 y su autor fue B. Stroustrup, también de la ATT. El C++ era inicialmente era una extensión del lenguaje C que fue llamada "C with classes". A partir de de 1983 este lenguaje empezó a ser llamado C++ y utilizado fuera de la ATT. En nombre C++ se refiere al carácter del operador incremento de C (++). Este lenguaje tuvo gran difusión y éxito en el mundo de los programadores y la ATT comenzó a estandarizarlo internamente en 1987.

En 1989 se formó un comité ANSI C++ que fue seguido algún tiempo después por un comité ISO, quienes se encargaron de estandarizarlo a nivel americano e internacional. Actualmente el C++ es un lenguaje muy versátil, potente y general. Su éxito entre los programadores profesionales le ha llevado a ocupar el primer puesto como herramienta de desarrollo de aplicaciones y hasta es el preferido para compilar la mayor parte de sistemas operativos como Linux y Windows.

El C++ tiene las mismas las ventajas del C en cuanto a riqueza de operadores y expresiones, flexibilidad, concisión y eficiencia. Además, ha eliminado algunas de las dificultades y limitaciones del C original.

JAVA> La evolución de C++ ha continuado con la aparición de Java, un lenguaje creado simplificando algunas cosas de C++ y añadiendo otras, que se utiliza para realizar aplicaciones en Internet como la tecnología Microsoft C##. Hay que señalar que el C++ ha influido en algunos puntos muy importantes del ANSI C, como por ejemplo en la forma de declarar las funciones, en los punteros a void, etc. En efecto, aunque el C++ es posterior al C, sus primeras versiones son anteriores al ANSI C, y algunas de las mejoras de éste fueron tomadas del C++. En estas Notas se van a presentar los fundamentos del lenguaje C++ tradicional a partir del lenguaje C. Su descripción se va a realizar en dos partes: una inicial en la que se contemplan las modificaciones y una posterior con los añadidos.

El C++ es a la vez un lenguaje procedural (orientado a algoritmos) y orientado a objetos. Como lenguaje procedural se asemeja al C y es compatible con él. Como lenguaje orientado a objetos se basa en una filosofía completamente diferente, que exige del programador un completo cambio de mentalidad. Las características propias de la Programación Orientada a Objetos (Object Oriented Programming, u OOP) de C++ son modificaciones mayores que sí que cambian radicalmente su naturaleza.

Cualquier programador debe diferenciar a simple vista la diferencia entre un archivo C y un C++. :los archivos o ficheros fuente de C++ tienen la extensión *.cpp (c plus plus) en lugar de *.c

Una de las ventajas del ANSI y el C++ es permiten incluir comentarios en el código con dos barras consecutivas (//) hasta el fin de la línea 2. Mientras que anteriormente había que marcar siempre el final con /* */.

También se incluyen variables tipo enum. Ejemplo: enum ( CERO, PRIMERO, SEGUNDO, TERCERO} es igual que declarar CERO=0, PRIMERO=1, SEGUNDO=2, TERCERO=3

El C++ incluye la deficion de variables multiples tip estructuras con "struct". Ejemplo: struct persona { int cedula; char[100] nombre; char[100] apellido1; char[100] direccion; }

Otras ventajas introducidas por el C++ son: scope de variables automatic (default) y static. Para mejorar la opcion #define se incluye una especificacion de variables constantes tipo "const" que estan sometidas a las mismas reglas de visibilidad que otras variables (como static). - También se introducen conversiones explicitas de tipo como int x = (int) (y/z); - Asimismo se incluyen las funcionen inline que son sustituidas por el compilador. Ejemplo: inline int copiar (int *x, int *y) { *x = *y; } Tambien introduce punteros tipo void. Operadores new y delete para gestion dinamica de mejoria.

§ C#; ¿Qué es? C# es un lenguaje de propósito general orientado a objetos creado por Microsoft para su plataforma .NET. Su sintaxis básica deriva de C/C++ y utiliza el modelo de objetos de la plataforma .NET el cual es similar al de Java aunque incluye mejoras derivadas de otros lenguajes. C# fue diseñado para combinar el control a bajo nivel de lenguajes como C y la velocidad de programación de lenguajes como Visual Basic.

§ Object Pascal (Delphi), es un lenguaje de programación de alto nivel de propósito general; esto es, se puede utilizar para escribir programas para fines científicos y comerciales. El lenguaje de programación Pascal fue desarrollado por el profesor Niklaus (Nicolás) Wirth en Zurich, Zuiza, al final de los años 1960s y principios de los 70s. Wirth diseñó este lenguaje para que fuese un buen primer lenguaje de programación para personas comenzando a aprender a programar. Pascal tiene un número relativamente pequeño de conceptos para aprender y dominar. Su diseño facilita escribir programas usando un estilo que está generalmente aceptado como práctica estándar de programación buena. Otra de las metas del diseño de Wirth era la implementación fácil. Él diseñó un lenguaje para el cual fuese fácil escribir un compilador para un nuevo tipo de computadora. Delphi es un entorno de desarrollo de software diseñado para la programación de propósito general con énfasis en la programación visual. En Delphi se utiliza como lenguaje de programación una versión moderna de Pascal llamada Object Pascal. Es producido comercialmente por la empresa estadounidense Code Gear?. En sus diferentes variantes, permite producir archivos ejecutables para Windows, Linux y la plataforma .NET.

§ Java, El lenguaje de programación Java, fue diseñado por la compañía Sun Microsystems Inc., con el propósito de crear un lenguaje que pudiera funcionar en redes computacionales heterogéneas (redes de computadoras formadas por más de un tipo de computadora, ya sean PC, MAC’s, estaciones de trabajo, etc.), y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier máquina o plataforma.

§ JavaScript (la herencia se realiza por medio de la programación basada en prototipos), Java Script ¿Qué es? Se trata de un lenguaje de programación del lado del cliente, porque es el navegador el que soporta la carga de procesamiento. Gracias a su compatibilidad con la mayoría de los navegadores modernos, es el lenguaje de programación del lado del cliente más utilizado.

§ Perl (soporta herencia múltiple. La resolución se realiza en preorden, pero puede modificarse al algoritmo linearization C3 por medio del módulo Class::C3 en CPAN)

§ PHP (a partir de su versión 5), PHP ¿Qué es? PHP usa una mezcla entre interpretación y compilación para intentar ofrecer a los programadores la mejor mezcla entre rendimiento y flexibilidad. PHP compila para tu código una serie de instrucciones (llamadas opcodes) siempre que estas son accedidas. Estas instrucciones son entonces ejecutadas una por una hasta que el script termina. Esto es diferente a la manera convencional de compilación de lenguajes como C++ donde el código es compilado a código ejecutable que es después ejecutado. Php es recompilado cada vez que se solicita un script.

§ Python, es un lenguaje de programación dinámica orientada a objetos que puede ser usado para el desarrollo de toda clase de software, es utilizado ampliamente por la NASA, Google, Linperial, etc. Ofrece soporte para la integración con otros lenguajes y herramientas y viene con una gran cantidad de bibliotecas estándar. El interprete/compilador de Python se encuentra disponible en Linux y en plataformas como Java y Mac OS X.

§ Ruby, y Ruby on Rails ¿Qué es? Ruby on Rails, también conocido como RoR o Rails es un Framework de aplicaciones Web de código abierto escrito en el lenguaje de programación Ruby. Ruby apareció en el año 1995 y creo que su principal problema había sido la falta de documentación en otro idioma que no sea japonés. Eso se ha ido solucionando y crece la popularidad del lenguaje. Su aplicación insignia, por decirlo de algún modo parece ser RoR. Su mecanismo de gem se me parece al CPAN de Perl y al Pear de PHP.

§ Visual Basic 6.0, Visual Basic es un lenguaje de programación desarrollado por Alan Cooper para Microsoft. El lenguaje de programación es un dialecto de BASIC, con importantes añadidos. Su primera versión fue presentada en 1991 con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas y en cierta medida también la programación misma.

§ Visual Objects, Visual Fox Pro es un lenguaje de programación orientado a objetos y procedural, un Sistema Gestor de Bases de datos o Database Management System (DBMS), y desde la versión 7.0, un Sistema administrador de bases de datos relacionales, producido por Microsoft.

Lenguaje de programación Scala (Lenguaje usado por Twister) http://www.scala-lang.org/

Muchos de estos lenguajes de programación no son puramente orientados a objetos, sino que son híbridos que combinan la POO con otros paradigmas.

Al igual que C++ otros lenguajes, como OOCOBOL, OOLISP, OOPROLOG y Object REXX, han sido creados añadiendo extensiones orientadas a objetos a un lenguaje de programación clásico.

Un nuevo paso en la abstracción de paradigmas de programación es la Programación Orientada a Aspectos (POA). Aunque es todavía una metodología en estado de maduración, cada vez atrae a más investigadores e incluso proyectos comerciales en todo el mundo.

Java es un lenguaje de programación orientado a objetos. La orientación a objetos es uno de los mayores cambios que ha sufrido la programación en los últimos años. La idea detrás de este concepto es que cada objeto (datos) tiene asociado un conjunto de funciones (programa) que permiten manipular estos datos. De esta forma tenemos un conjunto de datos con las funciones que utilizaremos para manipularlos permitiendo fácilmente crear componentes reutilizables. Es ampliamente reconocido que los lenguajes orientados a objetos permiten crear aplicaciones más robustas, claras y fáciles de mantener. Hoy en día, el lenguaje orientado a objetos más utilizado es C++ pero aún arrastra algunas limitaciones de su antecesor, el C. Java, que fue creado desde cero, y que no arrastra ninguna herencia, es un lenguaje creado a semejanza del C++ pero mucho más sencillo y claro.

jueves, 29 de abril de 2010






Definición de Bases de Datos.- Un conjunto de información almacenada en memoria auxiliar que permite acceso directo y un conjunto de programas que manipulan esos datos.

Requerimientos de las bases de datos:

El análisis de requerimientos para una base de datos incorpora las mismas tareas que el análisis de requerimientos del software. Es necesario un contacto estrecho con el cliente; es esencial la identificación de las funciones e interfaces; se requiere la especificación del flujo, estructura y asociatividad de la información y debe desarrollarse un documento formal de los requerimientos.
Requerimientos administrativos: se requiere mucho más para el desarrollo de sistemas de bases de datos que únicamente seleccionan un modelo lógico de base de datos. La bases de datos es una disciplina organizacional, un método, más que una herramienta o una tecnología. Requiere de un cambio conceptual y organizacional.

Características
Entre las principales características de los sistemas de base de datos podemos mencionar:
Independencia lógica y física de los datos.
Redundancia mínima.
Acceso concurrente por parte de múltiples usuarios.
Integridad de los datos.
Consultas complejas optimizadas.
Seguridad de acceso y auditoria.
Respaldo y recuperación.
Acceso a través de lenguajes de programación estándar



Ventajas de las bases de datos



Control sobre la redundancia de datos:
Los sistemas de ficheros almacenan varias copias de los mismos datos en ficheros distintos. Esto hace que se desperdicie espacio de almacenamiento, además de provocar la falta de consistencia de datos.
En los sistemas de bases de datos todos estos ficheros están integrados, por lo que no se almacenan varias copias de los mismos datos. Sin embargo, en una base de datos no se puede eliminar la redundancia completamente, ya que en ocasiones es necesaria para modelar las relaciones entre los datos.



Consistencia de datos:
Eliminando o controlando las redundancias de datos se reduce en gran medida el riesgo de que haya inconsistencias. Si un dato está almacenado una sola vez, cualquier actualización se debe realizar sólo una vez, y está disponible para todos los usuarios inmediatamente. Si un dato está duplicado y el sistema conoce esta redundancia, el propio sistema puede encargarse de garantizar que todas las copias se mantienen consistentes.



Comparición de datos:
En los sistemas de ficheros, los ficheros pertenecen a las personas o a los departamentos que los utilizan. Pero en los sistemas de bases de datos, la base de datos pertenece a la empresa y puede ser compartida por todos los usuarios que estén autorizados.
Mantenimiento de estándares:
Gracias a la integración es más fácil respetar los estándares necesarios, tanto los establecidos a nivel de la empresa como los nacionales e internacionales. Estos estándares pueden establecerse sobre el formato de los datos para facilitar su intercambio, pueden ser estándares de documentación, procedimientos de actualización y también reglas de acceso.



Mejora en la integridad de datos:
La integridad de la base de datos se refiere a la validez y la consistencia de los datos almacenados. Normalmente, la integridad se expresa mediante restricciones o reglas que no se pueden violar. Estas restricciones se pueden aplicar tanto a los datos, como a sus relaciones, y es el SGBD quien se debe encargar de mantenerlas.



Mejora en la seguridad:
La seguridad de la base de datos es la protección de la base de datos frente a usuarios no autorizados. Sin unas buenas medidas de seguridad, la integración de datos en los sistemas de bases de datos hace que éstos sean más vulnerables que en los sistemas de ficheros.
Mejora en la accesibilidad a los datos:
Muchos SGBD proporcionan lenguajes de consultas o generadores de informes que permiten al usuario hacer cualquier tipo de consulta sobre los datos, sin que sea necesario que un programador escriba una aplicación que realice tal tarea.



Mejora en la productividad:
El SGBD proporciona muchas de las funciones estándar que el programador necesita escribir en un sistema de ficheros. A nivel básico, el SGBD proporciona todas las rutinas de manejo de ficheros típicas de los programas de aplicación.
El hecho de disponer de estas funciones permite al programador centrarse mejor en la función específica requerida por los usuarios, sin tener que preocuparse de los detalles de implementación de bajo nivel.



Mejora en el mantenimiento:
En los sistemas de ficheros, las descripciones de los datos se encuentran inmersas en los programas de aplicación que los manejan.
Esto hace que los programas sean dependientes de los datos, de modo que un cambio en su estructura, o un cambio en el modo en que se almacena en disco, requiere cambios importantes en los programas cuyos datos se ven afectados.
Sin embargo, los SGBD separan las descripciones de los datos de las aplicaciones. Esto es lo que se conoce como independencia de datos, gracias a la cual se simplifica el mantenimiento de las aplicaciones que acceden a la base de datos.



Aumento de la concurrencia:
En algunos sistemas de ficheros, si hay varios usuarios que pueden acceder simultáneamente a un mismo fichero, es posible que el acceso interfiera entre ellos de modo que se pierda información o se pierda la integridad. La mayoría de los SGBD gestionan el acceso concurrente a la base de datos y garantizan que no ocurran problemas de este tipo.



Mejora en los servicios de copias de seguridad:
Muchos sistemas de ficheros dejan que sea el usuario quien proporcione las medidas necesarias para proteger los datos ante fallos en el sistema o en las aplicaciones. Los usuarios tienen que hacer copias de seguridad cada día, y si se produce algún fallo, utilizar estas copias para restaurarlos.
En este caso, todo el trabajo realizado sobre los datos desde que se hizo la última copia de seguridad se pierde y se tiene que volver a realizar. Sin embargo, los SGBD actuales funcionan de modo que se minimiza la cantidad de trabajo perdido cuando se produce un fallo.



Desventajas de las bases de datos

Complejidad:
Los SGBD son conjuntos de programas que pueden llegar a ser complejos con una gran funcionalidad. Es preciso comprender muy bien esta funcionalidad para poder realizar un buen uso de ellos.
Coste del equipamiento adicional:
Tanto el SGBD, como la propia base de datos, pueden hacer que sea necesario adquirir más espacio de almacenamiento. Además, para alcanzar las prestaciones deseadas, es posible que sea necesario adquirir una máquina más grande o una máquina que se dedique solamente al SGBD. Todo esto hará que la implantación de un sistema de bases de datos sea más cara.
Vulnerable a los fallos:
El hecho de que todo esté centralizado en el SGBD hace que el sistema sea más vulnerable ante los fallos que puedan producirse. Es por ello que deben tenerse copias de seguridad (Backup).

Tipos de bases de datos

TIPOS DE MODELOS DE DATOS Existen fundamentalmente tres alternativas disponibles para diseñar las bases de datos: el modelo jerárquico, el modelo de red y el modelo relacional.

MODELO JERARQUICO. Puede representar dos tipos de relaciones entre los datos: relaciones de uno a uno y relaciones de uno a muchos.







Bases de datos reticulares: el modelo reticular es muy parecido al jerárquico, y de hecho nace como una extensión de este último. También en estos modelos conjuntos de datos están unidos por relaciones de posesión, pero cada conjunto de datos puede pertenecer a uno o más conjuntos. La estructura resultante es una red de conjuntos de datos.

MODELO DE RED. Este modelo permite la representación de muchos a muchos, de tal forma que cualquier registro dentro de la base de datos puede tener varias ocurrencias superiores a él. El modelo de red evita redundancia en la información, a través de la incorporación de un tipo de registro denominado el conector.




MODELO RELACIONAL. Este modelo se está empleando con más frecuencia en la práctica, debido a las ventajas que ofrece sobre los dos modelos anteriores, entre ellas, el rápido entendimiento por parte de usuarios que no tienen conocimientos profundos sobre Sistemas de Bases de Datos.

BASES DE DATOS DISTRIBUIDAS. Las bases de datos distribuidas se están utilizando cada vez más en la misma medida en que se usan las arquitecturas de cliente-servidor y groupware. Los principales problemas que se generan por el uso de la tecnología de bases de datos distribuidas son en lo referente a duplicidad de datos y a su integridad al momento de realizar actualizaciones a los mismos. Además, el control de la información puede constituir una desventaja, debido a que se encuentra diseminada en diferentes localidades geográficas.


TENDENCIAS FUTURAS. En el futuro la mayoría de las organizaciones cambiarán la forma convencional de manejo de la información a la arquitectura de base de datos a las ventajas derivadas de su uso. El uso de las bases de datos distribuidas se incrementará de manera considerable en la medida en que la tecnología de comunicación de datos brinde más facilidades para ello. El uso de bases de datos facilitará y soportará en gran medida a los Sistemas de Información para la Toma de Decisiones.

Base de datos por objetos (object-oriented): el esquema de una base de datos por objetos está representado por un conjunto de clases que definen las características y el comportamiento de los objetos que poblarán la base de datos. La diferencia principal respecto a los modelos examinados hasta ahora es la no positividad de los datos. En efecto, con una base de datos tradicional (entendiendo con este término cualquier base de datos no por objetos), las operaciones que se tienen que efectuar en los datos se les piden a las aplicaciones que los usan. Con una base de datos object-oriented, al contrario, los objetos memorizados en la base de datos contienen tanto los datos como las operaciones posibles con tales datos. En cierto sentido, se podrá pensar en los objetos como en datos a los que se les ha puesto una inyección de inteligencia que les permite saber cómo comportarse, sin tener que apoyarse en aplicaciones externas.


Entre los diferentes tipos de base de datos, podemos encontrar los siguientes:

MySql:
es una base de datos con licencia GPL basada en un servidor. Se caracteriza por su rapidez. No es recomendable usar para grandes volúmenes de datos.
PostgreSql y Oracle: Son sistemas de base de datos poderosos. Administra muy bien grandes cantidades de datos, y suelen ser utilizadas en intranets y sistemas de gran calibre.
Access: Es una base de datos desarrollada por Microsoft. Esta base de datos, debe ser creada bajo el programa Access, el cual crea un archivo .mdb con la estructura ya explicada.
Microsoft SQL Server: es una base de datos más potente que Access desarrollada por Microsoft. Se utiliza para manejar grandes volúmenes de informaciones.

DBMS más populares

El sistema manejador de bases de datos (dbms).

Es un conjunto de programas que se encargan de manejar la creación y todos los accesos a las bases de datos. Se compone de un lenguaje de definición de datos, de un lenguaje de manipulación de datos y de un lenguaje de consulta.

Una de las ventajas del DBMS es que puede ser invocado desde programas de aplicación que pertenecen a Sistemas Transaccionales escritos en algún lenguaje de alto nivel, para la creación o actualización de las bases de datos, o bien para efectos de consulta a través de lenguajes propios que tienen las bases de datos o lenguajes de cuarta generación.


Describir las funciones de cada componente de un sistema de base de datos

Los datos.
Es lo que se conoce como base de datos propiamente dicha. Para manejar estos datos utilizamos una serie de programas.
Los Programas.
Son los encargados de manejar los datos, son conocidos como DBMS (Data Base Management System) o también SGBD (Sistema Gestor de Base de Datos). Los DBMS tienen dos funciones principales que son:
- La definición de las estructuras para almacenar los datos.
- La manipulación de los datos.


Lenguajes del DBMS

En la estructura básica de un Sistema Manejador de Base de Datos se enuncian dos lenguajes que permiten trabajar sobre la base de datos. Estos lenguajes estándar son:

DDL (Data Definición language): Lenguaje de Definición de Datos. Por medio de este el DBMS identifica las descripciones de los elementos de los esquemas y almacena la descripción del esquema en el catálogo del DBMS. Por medio de este el DBMS especifica el esquema conceptual e interno (Base de datos Almacenada).
SDL (Store Definition language): Lenguaje de definición de almacenamiento. Es utilizado por el DBMS para especificar el esquema interno que corresponde a la Base de Datos Almacenada.
VDL (View Definition language): Lenguaje de Definición de Vistas. Es utilizado por el DBMS para especificar las vistas del usuario y sus correspondencias con el esquema conceptual.
En las Bases de Datos Relacionales, el SQL, representa una combinación de los anteriores.
DML (Data Manipulation language): Lenguaje de Manipulación de Datos. Permite la manipulación de las operaciones de Inserción, Eliminación y Modificación.
Tipos de DML's:
De alto Nivel o No por procedimientos: SQL.
De bajo Nivel o por procedimientos.
Usuarios de un Sistema Manejador de Base de Datos
Personal del DBA
Usuarios Esporádicos
Programadores de Aplicaciones
Usuarios parametritos
El DBMS es conocido también como Gestor de Base de datos.

El DBMS interpreta las peticiones de entrada/salida del usuario y las manda al sistema operativo para la transferencia de datos entre la unidad de memoria secundaria y la memoria principal.
En sí, un sistema manejador de base de datos es el corazón de la base de datos ya que se encarga del control total de los posibles aspectos que la puedan afectar.
Arquitectura de un manejador de bases de datos (DBMS)
Nota: Las partes utilizadas para ejemplificar la arquitectura se refieren a Oracle

Una base de datos en ejecución consta de 3 cosas:

Archivos
Control (ctl): almacenan información acerca de la estructura de archivos de la base.
Rollback (rbs): cuando se modifica el valor de alguna tupla en una transacción, los valores nuevos y anteriores se almacenan en un archivo, de modo que si ocurre algún error, se puede regresar (rollback) a un estado anterior.
Redo (rdo): bitácora de toda transacción, en muchos dbms incluye todo tipo de consulta incluyendo aquellas que no modifican los datos.
Datos (dbf): el tipo más común, almacena la información que es accesada en la base de datos.
Indices (dbf) (dbi): archivos hermanos de los datos para acceso rápido.
Temp (tmp): localidades en disco dedicadas a operaciones de ordenamiento o alguna actividad particular que requiera espacio temporal adicional.

Memoria
Shared Global Area (SGA): es el área más grande de memoria y quizás el más importante.
Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL.
Redo Log Buffer: contiene un registro de todas las transacciones dentro de la base, las cuales se almacenan en el respectivo archivo de Redo y en caso de siniestro se vuelven a ejecutar aquellos cambios que aún no se hayan reflejado en el archivo de datos (commit).
Large Pool: espacio adicional, generalmente usado en casos de multithreading y esclavos de I/O.
Java Pool: usado principalmente para almacenar objetos Java
Program Global Area (PGA): información del estado de cursores/apuntadores
User Global Area (UGA): información de sesión, espacio de stack

Procesos
Threading
System Monitor: despierta periódicamente y realiza algunas actividades entre las que se encuentran la recuperación de errores, recuperación de espacio libre en tablespaces y en segmentos temporales.
Process Monitor: limpia aquellos procesos que el usuario termina de manera anormal, verificando consistencias, liberación de recursos, bloqueos.
Database Writer: escribe bloques de datos modificados del buffer al disco, aquellas transacciones que llegan a un estado de commit.
Log Writer: escribe todo lo que se encuentra en el redo log buffer hacia el redo file
Checkpoint: sincroniza todo lo que se tenga en memoria, con sus correspondientes archivos en disco

El manejador es responsable de las siguientes tareas:

1 Interacción con el manejador de archivos: Los datos en la base se guardan en disco mediante el sistema de archivos, proporcionado comúnmente por el sistema operativo. El manejador de la base, traduce las diferentes proposiciones del manejo de datos en comandos del sistema de archivos de bajo nivel. De esta forma el manejador se puede encargar del almacenamiento, recuperación y actualización de los datos en la base.

2 Implantación de la integridad: Los valores de los datos que se almacenan en la base, deben satisfacer ciertas limitantes de consistencia, estas limitantes deben ser determinadas por el administrador, pero es el manejador el encargado de verificar que las actualizaciones que se hagan a la base cumplan con dichas normas.

3 Puesta en práctica de la seguridad: El manejador de la base es quien verifica que los accesos a la base sean realizados por las personas autorizadas.

4 Respaldo y recuperación: Entre las labores que debe ejecutar el manejador está la de verificar de forma constante la integridad de la base, y lograr recuperación de datos y/o mejoras en caso que se requieran.

5 Control de concurrencia: Se podría entender, esta, como la principal tarea del manejador de la base, o por lo menos la más difícil. Cuando varios usuarios están acensando la base al mismo tiempo, es posible que la consistencia de los datos no se conserve. El manejador debe encargarse de coordinar los accesos de los diferentes usuarios, de forma que los datos en la base no se dañen.
En términos ideales, un DBMS debe contar con estas funciones, sin embargo, no todos las poseen, así existen algunos manejadores que no cumplen la función de respaldo o de seguridad, dejándola al usuario o administrador; sin embargo un DBMS que sea completo y que deba manejar una base de datos multiusuario grande, es conveniente que cuente con todas estas operaciones.








lunes, 16 de noviembre de 2009

SISTEMAS CREADOS POR EL HOMBRE


















la Cibernética

La Cibernética es la ciencia que se ocupa de los sistemas de control y de comunicación en las personas y en las máquinas, estudiando y aprovechando todos sus aspectos y mecanismos comunes. El nacimiento de la cibernética se estableció en el año 1942. La unión de diferentes ciencias como la mecánica, electrónica, medicina, física, química y computación, han dado el surgimiento de una nueva doctrina llamada Biónica, La cual busca imitar y curar enfermedades y deficiencias físicas. A todo esto se une la robótica, la cual se encarga de crear mecanismos de control los cuales funcionen en forma automática.

El nacimiento de la cibernética se estableció en el año 1942, en la época de un congreso sobre la inhibición cerebral celebrado en Nueva York, del cual surgió la idea de la fecundidad de un intercambio de conocimiento entre fisiólogos y técnicos en mecanismos de control. Cinco años más tarde, Norbert Wiener uno de los principales fundadores de esta ciencia, propuso el nombre de cibernética, derivado de una palabra griega que puede traducirse como piloto, timonel o regulador.
Dentro del campo de la cibernética se incluyen las grandes máquinas calculadoras y toda clase de mecanismos o procesos de autocontrol semejantes y las máquinas que imitan la vida. La biónica es la ciencia que estudia los: principios de la organización de los seres vivos para su aplicación a las necesidades técnicas. Una realización especialmente interesante de la biónica es la construcción de modelos de materia viva, particularmente de las moléculas proteicas y de los ácidos nucleicos.
La Robótica es la técnica que aplica la informática al diseño y empleo de aparatos que, en substitución de personas, realizan operaciones o trabajos, por lo general en instalaciones industriales. Se emplea en tareas peligrosas o para tareas que requieren una manipulación rápida y exacta. En los últimos años, con los avances de la Inteligencia Artificial, se han desarrollado sistemas que desarrollan tareas que requieren decisiones y auto programación además se han incorporado sensores de visión y tacto artificial.
La Cibernética puede ser considerada como una adquisición sumamente aprovechable para la evolución científica. Desde el estudio del comportamiento de la célula nerviosa, la neurona, hasta el del individuo en su conjunto, ofrece un inmenso campo de investigaciones, particularmente a la medicina.

DIFICULTADES ENCONTRADAS POR LA CIBERNÉTICA

Algunos ejemplos muestran cuan delicado es encontrar una relación entre el funcionamiento de una maquina y el de un órgano. La dificultad aumenta en cuanto se dirige a las contexturas nerviosas superiores. A este nivel, no existía ninguna maquina similar, porque la creación de maquinas nuevas que permitan la comparación implicaría un conocimiento perfecto de las estructuras nerviosas, sin embargo dichas máquinas se están desarrollando
"Sin embargo no hay que pedir a la cibernética que nos dé más de lo que nos pueda dar. No creo que se pueda esperar que nos suministre, por sí sola, en un porvenir mas o menos próximo, la solución del triple enigma de la vida, la conciencia y el pensamiento".

La Biónica

La medicina se beneficia de los descubrimientos las aplicaciones de la electrónica, se asiste sin embargo desde hace muchos años a un cambio inverso. Cuando dos disciplinas se fusionan, es muy raro que la colaboración se haga en sentido único; un día u otro hay un cambio mutuo. La aplicación de la biología a la electrónica, el estudio de los fenómenos fisiológicos que puedan inducir los dispositivos electrónicos, ha incitado a los electrónicos a examinar su propia disciplina bajo un ángulo nuevo: La biónica.

Los estudios de biología comparada, hechos en el conjunto del mundo viviente, han maravillado siempre a los cibernéticos. La naturaleza es un inmenso laboratorio donde se realizan continuamente experiencias; lo mas difícilmente seguramente saber observarlas e interpretarlas.

Es probable que la biónica, antes de alcanzar la edad adulta, pasara por diferentes estados donde se imbricaran más o menos la biología y la electrónica. No nos sorprendería ver montajes que contuvieran órganos receptores provenientes del mundo animal, unidos entre sí mediante componentes electrónicos, viviendo los órganos bañados en una solución fisiológica. Así se realizan circuitos, entre diferentes módulos electrónicos y un determinado numero de módulos biológicos.
Actualmente se han llevado a cabo varios avances en el campo de la biónica.


Músculos Biónicos:
Nariz Biónica:













Ojo Biónico:
Oído Biónico:












Estimulación Biónica:

















Todos estos avances en la Biónica han ayudado a la medicina a realizar grandes avances en la cura de enfermedades y deficiencias físicas.


DOMOTICA (Automatización de viviendas)

La idea de la moderna automatización del hogar para proporcionar a los usuarios mayor comodidad, ahorro de energía y, por supuesto, dinero, tiene pocos años, y fue desarrollada y patentada por una empresa escocesa utilizando un novedoso sistema de transmisión de señales a través de la red eléctrica. Más tarde se fue perfeccionando dicha idea y se utilizaron una serie de emisores que se enchufaban en una parte de la red eléctrica y que eran capaces de emitir una señal que circulaba a través de ella. A su vez, otra serie de receptores, que igualmente iban enchufados en otra parte de la red, eran los encargados de recibir dicha señal y de transformarla en una acción, por ejemplo activar un relee o contacto eléctrico.

Seguidamente se comentan algunos conceptos de automatización.
CONTROLADOR: Aparato electrónico emisor de señales enchufado a la red eléctrica con una serie de teclas de control. Cada una de estas teclas corresponde a un código de unidad y que, según la forma en que se activen, enviará las señales correspondientes a través de la red eléctrica, que serán captadas por los módulos receptores pertinentes. Tienen un código de casa que tendrá que ser coincidente con aquél de cada uno de los módulos receptores, para su correcta comunicación a través de la red. Los hay de muchos tipos diferentes, para cubrir todas las necesidades.

MÓDULO RECEPTOR: Pequeño aparato receptor enchufado a la red eléctrica que actúa de intermediario entre el controlador y el electrodoméstico a controlar. Es el elemento que ejecuta las órdenes de uno o más controladores y, activando su relé, encenderá o apagará el artefacto eléctrico, para lo cual el interruptor del electrodoméstico deberá mantenerse en posición de encendido. Tiene también su propio selector de código de casa y código de unidad, que habrá que hacer coincidir con su correspondiente código en el controlador. Estos módulos pueden ser de dos tipos:

MÓDULO DE ILUMINACIÓN: Diseñado exclusivamente para control de iluminación, ya que tiene un "dimmer" interno, mediante el cual se puede variar la intensidad de brillo de la luz, además de permitir el encendido y apagado directo. No deberá enchufarse nunca un elemento que no sea de iluminación a este tipo de módulo, ya que su capacidad de "dimmer" puede dañar el elemento enchufado (por ej. un televisor o una radio). Obedecen a los comandos "todo encendido"/ "todo apagado" de un controlador, para el control de todas las luces en forma simultánea.

MÓDULO DE POTENCIA: Su función únicamente es la de encendido y apagado. En vez de "dimmer", tiene un potente relee y no presenta ningún tipo de restricción en cuanto a los aparatos que se puedan enchufar, salvo el de no sobrepasar su potencia máxima. Este tipo de módulo no obedece al comando de "todo encendido" pero si al comando "todo apagado", ya que no tiene sentido que se enciendan electrodomésticos como la cafetera, TV, radio etc., todos a la vez; su activación o ha de ser individualizada.

CÓDIGO DE CASA: Corresponde a un código formado por una letra (desde la A a la P), que llevan tanto los controladores como los módulos, y que determina el código general que llevarán todos los elementos que trabajen en conjunto y se comuniquen dentro de una misma casa. Se selecciona a través de un mando rotativo que incluye todo elemento de automatización.

CÓDIGO DE UNIDAD: Este otro código corresponde a la dirección específica donde se va a enviar o recibir la señal. Su formato es numérico (de 1 a 16). Mientras que en el caso de los controladores, el código de casa se selecciona a través del mando rotativo, el código de unidad corresponde a cada una de las teclas del controlador. En cuanto a los módulos receptores, éstos tienen dos selectores independientes: uno para la selección del código de casa (letra), y otro para la selección del código de Unidad (número). Vendría ser como el "nombre" y "apellido" de cada módulo.

RED ELÉCTRICA: La instalación eléctrica que existe en todas las viviendas constituye la vía mediante la cual se comunican todos los elementos de automatización. A través de ella se envían y reciben señales de alta frecuencia que en nada afectan a otros elementos del hogar. Estas señales permiten que un controlador pueda activar o desactivar cualquier electrodoméstico o punto de luz, a través de su correspondiente módulo, por muy lejos que se encuentre, siempre que esté dentro de los límites del medidor de luz de dicha casa o departamento.

Desde hace algunos años se habla de la "vivienda inteligente", asociándose a pisos de gran lujo. Actualmente hay soluciones económicas al alcance de cualquiera, tomando como base un autómata programable y un PC como complemento. Con este equipamiento se pueden automatizar todo tipo de viviendas y locales.
Funciones más importantes
-Seguridad
-Detección de fugas de gas y agua
-Detección de incendios
-Detección de intrusos
-Simulación de presencia
-Alerta médicaAhorro
-Ahorro energético en calefacción
-Ahorro con tarifas nocturnas de electricidad
-Regulación mediante termostatosConfort
-Riegos automáticos
-Accionamiento automático de toldos y persianas
-Conexión y desconexión de alumbrado
Uso del MODEM para enviar órdenes desde grandes distancias, y recibir mensajes en un PC
Facilidad de uso La programación de un autómata es muy sencilla, se realiza desde el ordenador.

El manejo del autómata se hace desde un teclado, acompañado de una pequeña pantalla.
El programa del autómata se divide en cuatro grupos. El primero engloba todas las señales de emisores y actuadores que intervienen en las alarmas y que pertenecen al apartado de seguridad. Algunos de ellos se utilizan también en los grupos 2 a 3. En los grupos 2 a 4 se desarrollan los apartados correspondientes al ahorro y confort.
Grupo 1: Avisos del sistema
Grupo 2: Sistemas de riego
Grupo 3: Iluminación, toldos, persianas
Grupo 4: Control de cargas

La robótica es la ciencia y la tecnología de los robots. Se ocupa del diseño, manufactura y aplicaciones de los robots. La robótica combina diversas disciplinas como son: la mecánica, la electrónica, la informática, la inteligencia artificial y la ingeniería de control.Otras áreas importantes en robótica son el álgebra, los autómatas programables y las máquinas de estados

¿QUE ES UN ROBOT?
Un robot puede ser visto en diferentes niveles de sofisticación, depende de la perspectiva con que se mire. Un técnico en mantenimiento puede ver un robot como una colección de componentes mecánicos y electrónicos; por su parte un ingeniero en sistemas puede pensar que un robot es una colección de subsistemas interrelacionados; un programador en cambio, simplemente lo ve como una máquina ha ser programada; por otro lado para un ingeniero de manufactura es una máquina capaz de realizar un tarea específica. En contraste, un científico puede pensar que un robot es un mecanismo el cuál él construye para probar una hipótesis.

Un robot puede ser descompuesto en un conjunto de subsistemas funcionales: procesos, planeación, control, sensores, sistemas eléctricos, y sistemas mecánicos. El subsistema de Software es una parte implícita de los subsistemas de sensores, planeación, y control; que integra todos los subsistemas como un todo.
En la actualidad, muchas de las funciones llevadas acabo por los subsistemas son realizadas manualmente, o de una forma off-line, pero en un futuro las investigaciones en estos campos permitirán la automatización de dichas tareas.

Los tres principios o leyes de la robótica según Asimov son:

-Un robot no puede lastimar ni permitir que sea lastimado ningún ser humano.
-El robot debe obedecer a todas las órdenes de los humanos, excepto las que contraigan la primera ley.
-El robot debe autoprotegerse, salvo que para hacerlo entre en conflicto con la primera o segunda ley.Sensores del robot La utilización de mecanismos sensores externos permite a un robot interaccionar con su entorno de una manera flexible, esto esta en contraste con operaciones preprogramadas en las cuales a un robot se le enseña para efectuar tareas repetitivas mediante un conjunto de funciones preprogramadas. Aunque esto último es con mucho la forma más predominante de operación de los robots industriales actuales, la utilización de tecnología sensorial para dotar a las máquinas con un mayor grado de inteligencia al tratar con su entorno es realmente un tema de investigación y desarrollo activo en el campo de la robótica.

La función de los sensores del robot se pueden dividir en dos categorías principales: estado interno y estado externo. Los sensores del estado interno tratan con la detección de variables tales como la posición de la articulación del brazo, que se utiliza para controlar el robot. Por otra parte, los sensores de estado externo tratan con la detección de variables tales como alcance, proximidad y contacto. Los sensores externos se utilizan para guiado de robots, así como para la identificación y manejo de objetos. Aunque los sensores de proximidad, contacto y fuerza juegan un papel significativo en la mejora del funcionamiento del robot, se reconoce que la visión es la capacidad sensorial más potente del robot. La visión del robot se puede definir como el proceso de extraer, caracterizar e interpretar información de imágenes de un mundo tridimensional. Este proceso, también comúnmente conocido visión de máquina o de ordenador, se puede subdividir en seis áreas principales:

1) Sensor

2) reprocesamiento

3) segmentación

4) descripción

5) reconocimiento

6) interpretación.

EJEMPLO la aspiradora robótica capaz de identificar obstáculos

El primer robot aspiradora capaz de evitar obstáculos, gracias a un mecanismo similar al de los murciélagos, sale a la venta en el Reino Unido con un precio aproximado de 1400 euros.

La revolucionaria aspiradora va sola por las habitaciones y no tiene ninguna dificultad en limpiar lugares de difícil acceso, como por debajo de las camas, según sus fabricantes.

Su mecanismo de funcionamiento se basa en ondas sonoras que, similares al mecanismo de navegación de los murciélagos, le permiten identificar los obstáculos que encuentra en su camino, como el recipiente de agua de la mascota familiar o las patas de una silla.

El aparato funciona con pilas y, una vez activado, detecta la pared más cercana y empieza a aspirar a lo largo de la habitación, creando así una fotografía del espacio en su memoria que le permitirá reconocer el resto.

Patrick Le Corre, director de la empresa que ha creado el robot, comentó que "se trata del primer electrodoméstico inteligente que tiene una función realmente importante para el hogar".

ROBOTS IMPULSADOS NEUMATICAMENTE

La programación de estos robots consiste en la conexión de tubos de plástico a unos manguitos de unión de la unidad de control neumático. Esta unidad está formada por dos partes: una superior y una inferior. La parte inferior es un secuenciador que proporciona presión y vacío al conjunto de manguitos de unión en una secuencia controlada por el tiempo. La parte superior es el conjunto de manguitos de unión que activan cada una de las piezas móviles del robot.
Las conexiones entre manguitos determinan qué piezas intervendrán en el movimiento, en qué dirección se moverán y los diferentes pasos que deberán efectuar. Modificando las conexiones de los manguitos de unión se podrán programar otras secuencias de pasos distintas.
Los robots del tipo descrito son los más simples que existen. Hay quien opina que a este tipo de máquinas no se les debería llamar robots; sin embargo, en ellas se encuentran todos los elementos básicos de un robot: estas máquinas son programables, automáticas y pueden realizar gran variedad de movimientos.

ROBOTS EQUIPADOS CON SERVOMECANISMOS

Otro tipo de robots más sofisticados desde el punto de vista del control y de las prestaciones que ofrecen son los que llevan servomecanismos.
El uso de servomecanismos va ligado al uso de censores, como los potenciómetros, que informan de la posición del brazo o la pieza que se ha movido del robot, una vez éste ha ejecutado una orden transmitida. Esta posición es comparada con la que realmente debería adoptar el brazo o la pieza después de la ejecución de la orden; si no es la misma, se efectúa un movimiento más hasta llegar a la posición indicada.

ROBOTS PUNTO A PUNTO
Añadiendo a los servomecanismos una memoria electrónica capaz de almacenar programas y un conjunto de circuitos de control digital, se obtienen robots más potentes y de más fácil manejo.

La programación de este tercer tipo de robots se efectúa mediante una caja de control que posee un botón de control de velocidad, mediante el cual se puede ordenar al robot la ejecución de los movimientos paso a paso. Se clasifican, por orden de ejecución, los pasos que el robot debe seguir, al mismo tiempo que se puede ir grabando en la memoria la posición de cada paso. Este será el programa que el robot ejecutará. Una vez terminada la programación, el robot inicia su trabajo según las instrucciones del programa. A este tipo de robots se les llama punto a punto, porque el camino trazado para la realización de su trabajo está definido por pocos puntos. Para ejemplificar este método de programación pensemos en un niño que dirige un automóvil por control remoto. Si el vehículo dirigido tuviera una memoria que grabase los movimientos que el niño le ordena, podría realizar los mismos movimientos sin control y ser dirigido por la circuiteria electrónica que ejecutaría el programa grabado en memoria.

Gracias a la memoria electrónica que poseen estos robots, se pueden tener almacenados varios programas. El modo de elegir uno de los programas almacenados se hace a través de los recogidos por algún censor o por una señal de input que les llega a través de las órdenes dadas por el programador.
Estos robots se usan por ejemplo en las cadenas de soldadura de carrocerías de automóviles. Los robots están programados para soldar automóviles de varios modelos distintos. El programador, o un censor, reconocen el tipo de automóvil y decide el programa que se ha de aplicar en cada caso.
Estos programas constan de pocos pasos, muchas veces sólo cien; esto significa que no sirven como controladores de robots para trabajos de continuo movimiento. Para solventar este inconveniente, se usa una cinta en la que se almacenan miles de pasos de programa que el robot leerá y ejecutará; en estos casos la cinta actúa de memoria. Robots de este tipo, que se pueden encontrar en cadenas de pintura por spray, ya empiezan a trabajar como si fueran computadoras propiamente dichas.

ROBOTS CONTROLADOS POR COMPUTADORA

Un cuarto tipo de robots comprende aquellos que se pueden controlar mediante computadora. Con ella es posible programar el robot para que mueva sus brazos en línea recta o describiendo cualquier otra figura geométrica entre puntos preestablecidos. La programación se realiza mediante una caja de control o mediante el teclado de la computadora. El movimiento de sus brazos se especifica mediante varios sistemas de coordenadas según la referencia que se tome: la mesa de trabajo en la que se encuentra apoyado el robot o el extremo del brazo del robot. La computadora permite además acelerar más o menos los movimientos del robot, para facilitar la manipulación de objetos pesados.

Futuro de la robótica

A pesar de que existen muchos robots que efectúan trabajos industriales, aquéllos son incapaces de desarrollar la mayoría de operaciones que la industria requiere. Al no disponer de unas capacidades sensoriales bien desarrolladas, el robot es incapaz de realizar tareas que dependen del resultado de otra anterior.
En un futuro próximo, la robótica puede experimentar un avance espectacular con las cámaras de televisión (ejemplo de aparato sensorial), más pequeñas y menos caras, y con las computadoras potentes y más asequibles.
Los censores se diseñarán de modo que puedan medir el espacio tridimensional que rodea al robot, así como reconocer y medir la posición y la orientación de los objetos y sus relaciones con el espacio. Se dispondrá de un sistema de proceso sensorial capaz de analizar e interpretar los datos generados por los censores, así como de compararlos con un modelo para detectar los errores que se puedan producir. Finalmente, habrá un sistema de control que podrá aceptar comandos de alto nivel y convertirlos en órdenes, que serán ejecutadas por el robot para realizar tareas enormemente sofisticadas.
Si los elementos del robot son cada vez más potentes, también tendrán que serlo los programas que los controlen a través de la computadora. Si los programas son más complejos, la computadora deberá ser más potente y cumplir nos requisitos mínimos para dar una respuesta rápida a la información que le llegue a través de los censores del robot.
Paralelo al avance de los robots industriales era el avance de las investigaciones de los robots llamados androides, que también se beneficiarán de los nuevos logros en el campo de los aparatos sensoriales. De todas formas, es posible que pasen decenas de años antes de que se vea un androide con mínima apariencia humana en cuanto a movimientos y comportamiento.


INTELIGENCIA ARTIFICIAL SOFTWARE INTELIGENTE

El matemático y científico de la U de Pensilvania Doug Lenat ha ingresado más de 100 millones de conocimientos generales y razonamientos en el software «base de conocimientos» llamado Cyc. Su meta: equipar un computador con todo el conocimiento general y el sentido común de un adulto. Asegura que en 2 años Cyc entenderá el inglés lo suficiente como para continuar su educación leyendo libros, diarios y revistas.
Cyc servirá de plataforma para otros programas, que podrán utilizar sus conocimientos generales y su sentido común. «Hacia 1999 a nadie se le ocurrirá comprar un computador sin Cyc, tal como nadie compra hoy uno que no tenga procesador de textos», afirma Lenat.

Es una de las áreas de las ciencias computacionales encargadas de la creación de hardware y software que tenga comportamientos inteligentes.
La IA es una rama de la ciencia de computación que comprende el estudio y creación de sistemas computarizados que manifiestan cierta forma de inteligencia: sistemas que aprenden nuevos conceptos y tareas, sistemas que pueden razonar y derivar conclusiones útiles acerca del mundo que nos rodea, sistemas que pueden comprender un lenguaje natural o percibir y comprender una escena visual, y sistemas que realizan otro tipo de actividades que requieren de inteligencia humana.

El objetivo de la IA es el de entender la naturaleza de la inteligencia a través del diseño de sistemas computacionales que la exhiban. En forma más concreta, puede afirmarse que, en lo que ha transcurrido de su corta historia, la IA ha estado dirigida por tres objetivos generales:

1. El análisis teórico de las posibles explicaciones del comportamiento inteligente

2. La explicación de habilidades mentales humanas

3. La construcción de artefactos (computadoras) inteligentes

Aplicaciones de la Inteligencia Artificial

-Robótica.

-Procesamiento de Lenguaje Natural.

-Reconocimiento de Patrones.

-Sistemas Expertos

-Tutores Inteligentes.

-Manipulación Inteligente de Base de Datos.

-Programación Automática.

-Visión Computarizada.
Tareas formales:
· Juegos
· Ajedrez
· Backgammon
· Damas
· Go
· Matemáticas
· Geometría
· Lógica
· Cálculo Integral
· Demostración de las propiedades de los programas

Tareas de los expertos:
· Ingeniería
· Diseño
· Detección de fallos
· Planificación de manufacturación
· Análisis científico
· Diagnosis médica
· Análisis financiero
Pero de que sirve crear algoritmos capaces de imitar la inteligencia y el razonamiento humano; es aquí donde la I. A. y la Robótica tienen un punto en común.

La IA. Tiene aplicación en la Robótica cuando se requiere que un robot "piense" y tome una decisión entre dos o más opciones, es entonces cuando principalmente ambas ciencias comparten algo en común. La IA. También se aplica a los ordenadores, ya sean PC’s, servidores de red o terminales de red, ya que su principal aplicación es desarrollar programas computacionales que resuelvan problemas que implican la interacción entre la máquina y el hombre, es decir, las máquinas "aprenderán" de los hombres, para realizar mejor su labor.
¿SE PUEDE PRODUCIR ARTIFICIALMENTE LA INTELIGENCIA HUMANA?

Del ser humano se afirma su inteligencia porque posee intuición, inspiración, capacidad de organizar cadenas lógicas de pensamiento, sentimientos y expresión lingüística, entre otras cosas. El lenguaje es una manifestación externa de las otras capacidades o rasgos del conocimiento. No obstante, la definición resulta imprecisa y abstracta.
La inteligencia artificial recoge en su seno los siguientes aspectos fundamentales:
- sistemas expertos
- robots
- procesamiento de lenguaje natural
- modelos de conocimiento
- visión artificial.
Cada uno de los campos señalados responde a sus propios objetivos. En ellos se aprecia la distribución de tareas y la investigación y realización especializadas. Es común a todos ellos el objetivo general de la inteligencia artificial. Y, así como existen etapas de profundización y dispersión, los progresos de cada campo revierten en los otros y en una previsible reunión integral de estos avances. La especialización puede ser un método que responde a una necesidad transitoria: posteriormente, podrá ser tan sólo una forma de rentabilización de acuerdo a las aplicaciones.

Entender: Tener Idea Clara de las cosas.
Resulta obvio que cuando se entiende algo, se tiene una idea clara de ese algo. Lo que no esta tan claro es que cuando uno dice entender algo, no siempre se tiene una idea clara de ese algo. Más confuso y problemático aún, es por ejemplo con las mujeres, cuando a pesar de tener una idea clara de ellas, difícilmente se les entiende. Si este párrafo te ha confundido, vuelve a leer el concepto y reflexiona, este proceso de leer y reflexionar sobre lo leído, es la manera de clarificar el concepto y por lo tanto, entenderlo.
CONOCER: Percibir el objeto como distinto de todo lo que No es Él.

El conocimiento va más allá del exterior del objeto o sujeto, se refiere también a las características internas o comportamiento del sujeto y de sus reacciones a los estímulos del medio ambiente y de las relaciones con otros sujetos. Así pues, cundo decimos conocer algo debemos poder diferenciarlo perfectamente de otras cosas que pudieran aparecer ante nuestros ojos como iguales. Por ejemplo, debemos poder diferenciar perfectamente el bien, del mal, por más intentos que alguien haga para presentarnos algo malo como bueno.
REPRESENTACION DEL CONOCIMIENTO
A continuación se muestran solo dos maneras de representar el conocimiento.
Redes Semánticas:
Información representada como conjunto de nodos. Este método de representación es gráfico, se tienen nodos que representan objetos, interconectados entre sí mediante relaciones llamadas arcos o flechas.
Frames:
Describe clases de objetos en función de los aspectos de los mismos. Este método es una manera de organizar el conocimiento como una colección de características comunes al concepto, objeto, situación ó sujeto.
APRENDIZAJE
Cambio adaptativo que permite, al repetir una tarea sobre la misma población, realizarla más efectivamente.
Cuando una persona realiza la misma tarea, una y otra vez, sin realizarla de una manera más efectiva, decimos que esa persona no ha aprendido, al menos en relación a esa tarea.
Métodos de Aprendizaje
· Por Implantación: Cuando el conocimiento es colocado en el sujeto, sin pasar por un proceso previo de razonamiento, como la simple memorización.
· Por Instrucción: Cuando el experto en un dominio, presenta una serie de conceptos al alumno siguiendo una estrategia predeterminada.
· Por Analogía: Cuando las similitudes entre objetos se establecen de manera concisa y breve.
· Por Ejemplos: Cuando después de utilizar otro método, se presentan muestras ampliamente descriptivas o gráficas de un conocimiento recién expuesto.
· Por Observación: Método valioso cuando se ha desarrollado un nivel razonable de competencia en el dominio seleccionado. Este método nos permite detectar los detalles de la solución a un problema en un ambiente no inventado.
· Por Descubrimiento: adquisición de conocimiento sin la ayuda de alguien que ya tiene ese conocimiento.

El proyecto COSPAL, dirigido por un grupo de científicos-ingenieros quienes aseguran haber diseñado y desarrollado el primer bebe-robot con inteligencia artificial (IA) de 2 a 3 años de edad.
Este bebe-robot es el resultado de unificar dos filosofías en una sola, sobre la base de un diseño con inteligencia artificial. “Por un lado se proveyó al robot con un conjunto extenso de reglas, las cuales son evaluadas por la IA y toma decisiones en base a ellas, y por otro lado se logro crear lo que se llama una red neuronal, que permite que la IA misma aprenda las reglas y se adapte al medio ambiente.”
Realmente es un proyecto muy interesante, ya que el mismo no necesita de intervención humana ni de ningún tipo de programación, y donde el mismo puede por voluntad propia resolver tareas especificas.
La robótica y la inteligencia artificial van tomadas de la mano ya que la una se encarga de la parte mecánica, y la otra de la parte analítica.
Gracias a la inteligencia artificial se ha logrado que una maquina sea capaz de desarrollar áreas de conocimiento muy especificas y complicadas, haciendo que la maquina pueda simular procesos que el hombre realiza. Pero cabe destacar que aún no se ha logrado que una máquina piense como un humano, pienso que una limitación es el hecho de que el hombre es irremplazable ya que el ser humano cuenta con una característica propia el cual es el sentido común.