Tarea

viernes, 9 de octubre de 2009

Desarrollo de Aplicaciones Web

Con la introducción de Internet y del Web en concreto, se han abierto infinidad de posibilidades en cuanto al acceso a la información desde casi cualquier sitio. Esto representa un desafío a los desarrolladores de aplicaciones, ya que los avances en tecnología demandan cada vez aplicaciones más rápidas, ligeras y robustas que permitan utilizar el Web.

Afortunadamente, tenemos herramientas potentes para realizar esto, ya que han surgido nuevas tecnologías que permiten que el acceso a una base de datos desde el Web, por ejemplo, sea un mero trámite. El único problema es decidir entre el conjunto de posibilidades la correcta para cada situación.

El viejo CGI ha cumplido con el propósito de añadir interactividad a las páginas Web pero sus deficiencias en el desarrollo de aplicaciones y en la escalabilidad de las mismas ha conducido al desarrollo de APIs específicos de servidor como Active Server Pages, ASP, y PHP, que son más eficientes que su predecesor CGI.

Para aprovechar el potencial de estas tecnologías y ofertar una solución de servidor más extensible y portable, Sun ha desarrollado la tecnología llamada servlet. Los servlets Java son muy eficientes, debido al esquema de threads en el que se basan y al uso de una arquitectura estándar como la JVM, Java Virtual Machine.

Otra nueva tecnología viene a sumarse a las que extienden la funcionalidad de los servidores Web, llamada Java Server? Pages, JSP. Los JSP permiten juntar HTML, aplicaciones Java, y componentes como las Java Beans creando una página Web especial que el servidor Web compila dinámicamente en un servlet la primera vez que es llamada.

‘+¿Qué es la Web 2.0?+‘

La Web 2.0 es la representación de la evolución de las aplicaciones tradicionales hacia aplicaciones web enfocadas al usuario final. El Web 2.0 es una actitud y no precisamente una tecnología.

Cuando el web inició, nos encontrábamos en un entorno estático, con páginas en HTML que sufrían pocas actualizaciones y no tenían interacción con el usuario.

La Web 2.0 es la transición que se ha dado de aplicaciones tradicionales hacia aplicaciones que funcionan a través del web enfocadas al usuario final. Se trata de aplicaciones que generen colaboración y de servicios que reemplacen las aplicaciones de escritorio.

Todo inició cuando Dale Dougherty de O’Reilly Media utilizó este término en una conferencia en la que compartió una lluvia de ideas junto a Craig Cline de Media Live? en la que hablaba del renacimiento y evolución de la web. Constantemente estaban surgiendo nuevas aplicaciones y sitios con sorprendentes funcionalidades. Y así se dio la pauta para la Web 2.0 conference de 2004. Esta conferencia no solo fue exitosa sino que ya tuvo seguimiento en la Web 2.0 Conference del 2005 celebrada en Octubre.

En la charla inicial del Web Conference se habló de los principios que tenían las aplicaciones Web 2.0:

La web es la plataforma

La información es el procesador

Efectos de la red movidos por una arquitectura de participación.

La innovación surge de características distribuidas por desarrolladores independientes.

El fin del círculo de adopción de software (“Servicios en beta perpetuo”)

La Web 2.0 con ejemplos

La forma más fácil de comprender lo que significa la Web 2.0 es a través de ejemplos. Podemos comparar servicios web que marcan claramente la evolución hacia el Web 2.0:

Web 1.0 > Web 2.0

Doubleclick → Google Ad Sense? (Servicios Publicidad)

Ofoto → Flickr (Comunidades fotográficas)

Akamai → Bit Torrent? (Distribución de contenidos)

mp3.com → Napster (Descargas de música)

Britannica Online → Wikipedia (Enciclopedias)

Sitios personales → Blogs (Páginas personales)

Especulación con dominios → Optimización en motores de búsqueda

Page views → Cost per click

CMSs → Wikis (Manejo de contenidos)

Categorías/Directorios → Tagging

¿Qué tecnologías apoyan a la Web 2.0?

El Web 2.0 no significa precisamente que existe una receta para que todas nuestras aplicaciones web entren en este esquema. Sin embargo, existen varias tecnologías que están utilizándose actualmente y que deberíamos de examinar con más cuidado en busca de seguir evolucionando junto al web.

Algunas tecnologías que dan vida a un proyecto Web 2.0:

Transformar software de escritorio hacia la plataforma del web.

Respeto a los estándares del XHTML.

Separación de contenido del diseño con uso de hojas de estilo.

Sindicación de contenidos.

Ajax (Asincronical javascript and xml).

Uso de Flash, Flex o Lazlo.

Uso de Ruby on Rails para programar páginas dinámicas.

Utilización de redes sociales al manejar usuarios y comunidades.

Dar control total a los usuarios en el manejo de su información.

Proveer A Pis? o XML para que las aplicaciones puedan ser manipuladas por otros.

Facilitar el posicionamiento con URL sencillos.

¿En qué nos sirve la Web 2.0?

El uso de el término de Web 2.0 está de moda, dándole mucho peso a una tendencia que ha estado presente desde hace algún tiempo. En Internet las especulaciones han sido causantes de grandes burbujas tecnológicas y han hecho fracasar a muchos proyectos.

Además, nuestros proyectos tienen que renovarse y evolucionar.

El Web 2.0 no es precisamente una tecnología, sino es la actitud con la que debemos trabajar para desarrollar en Internet.

Tal vez allí está la reflexión más importante del Web 2.0 y como los webmasters deberían de prepararse. Yo ya estoy trabajando en renovar y mejorar algunos proyectos, no por que busque etiquetarlos con nuevas versiones, sino por que creo firmemente que la única constante debe ser el cambio, y en Internet, el cambio debe de estar presente más frecuentemente.

Cuando Tim Berners-Lee inventó la Web moderna en CERN, se pretendía que ésta sirviera como un sistema que hiciera posible que los documentos estáticos se almacenaran en un sistema basado en la red con vínculos al mismo. Con el paso de los años, se fueron incorporando innovaciones y el siguiente paso lógico fueron los documentos “activos” que se generan en el momento en que se solicitan, con información específica del momento o del usuario. Tecnologías como CGI activaron este aspecto. Más adelante, la capacidad para generar documentos en la Web se convirtió en algo primordial y la tecnología evolucionó de CGI, a Java, ASP y, posteriormente, a ASP.NET. ASP.NET supuso un hito en la capacidad de los desarrolladores para desarrollar aplicaciones web de calidad con un paradigma de desarrollo de servidores y con las mejores herramientas de la línea de productos Visual Studio.

La experiencia del usuario resultó ser una gran barrera en las aplicaciones web, donde las restricciones técnicas evitaban que éstas pudieran ofrecer la misma variedad de uso que una aplicación cliente con datos locales.

El objeto XML Http Request?, que Microsoft lanzó como parte de Internet Explorer en 2000, se convirtió en la base de la tecnología asíncrona de Java Script y XML (AJAX) que hizo posible que las aplicaciones web pudieran proporcionar una respuesta más dinámica a las entradas de los usuarios, mediante la actualización de pequeñas porciones de una página web sin necesidad de volver a cargar totalmente los contenidos. Las soluciones innovadores que se generaron con AJAX, como los mapas regionales de Windows Live, llevaron a las aplicaciones web a dar un paso adelante en su capacidad para lograr un uso similar a las aplicaciones cliente.

Silverlight representa el paso siguiente en el desarrollo del potencial de riqueza en utilización que los desarrolladores y diseñadores de aplicaciones pueden presentar a sus clientes. Esto se consigue permitiendo a los diseñadores expresar su creatividad y guardar su trabajo en un formato que funcione directamente en la Web. En el pasado, los diseñadores creaban un sitio web y ofrecían una utilización a los usuarios a través de herramientas que proporcionaban resultados variados, pero el desarrollador tenía que solventar las restricciones de la plataforma web siendo capaz de ofrecer tales resultados. En el modelo de Silverlight, los diseñadores pueden generar el tipo de utilización para el usuario que desean y expresarlo como XAML. Un desarrollador puede incorporar este XAML directamente en una página web mediante el tiempo de ejecución de Silverlight. De esta forma, ambos pueden trabajar más estrechamente que antes con el fin de proporcionar una utilización completa y variada al usuario.

Como XAML es XML, está basado en texto, lo cual proporciona una descripción de sus ricos contenidos fácil de inspeccionar y totalmente compatible con los firewall. Aunque se pueden usar otras tecnologías —como subprogramas en Java, Active X y Flash— para implementar contenidos más ricos que DHTML, CSS y Java Script, todas ellas envían contenidos binarios al explorador. Esto resulta difícil de auditar, sin mencionar la dificultad de actualización, ya que para cualquier cambio es necesario que la aplicación se vuelva a instalar, lo que no es tan fácil para el usuario y podría provocar estancamientos en las páginas. Cuando se usa Silverlight y es necesario realizar un cambio en el contenido enriquecido, se genera un nuevo archivo XAML en el servidor. La próxima vez que el usuario vaya a la página, se descargará este XAML y se actualizará la experiencia sin ninguna reinstalación.

En el núcleo de Silverlight está el módulo de mejora del explorador que genera XAML y ofrece los gráficos resultantes en la superficie del explorador. Se trata de una descarga pequeña (menos de 2 MB), que se puede instalar cuando el usuario se encuentra con un sitio con contenido de Silverlight. Este módulo expone el marco de trabajo subyacente de la página XAML a los desarrolladores de Java Script, de forma que se hace posible la interacción con el contenido en la página y, por tanto, el desarrollador puede, por ejemplo, escribir controladores de eventos o manipular los contenidos de la página XAML mediante el código de Java Script.

Robot Aiko

miércoles, 23 de septiembre de 2009
Este impresionante robot llamado Aiko, obra del inventor Le Trung, quien desde el 2007 ha estado perfeccionando su robot, tanto en sus movimientos como en sus sensores y cerebro artificial, el cual bautizó aptamente con el nombre BRAINS (lo que significa "Cerebros" en español, pero cuyas siglas en inglés en realidad significan Bio Robot Artificial Intelligence Neural System).Como dicen en el artículo, Aiko utiliza los últimos avances en Inteligencia Artificial (IA) para entre otras cosas hablar en dos idiomas (Inglés y Japonés), resolver problemas de matemáticas de nivel de escuela secundaria, comunicar el estado del tiempo, entender mas de 13,000 oraciones habladas, cantar canciones, identificar objetos, enfocarse en objetos o personas de importancia, leer periódicos, y como si fuera poco incluso imitar el toque físico humano.
Algo interesante del software BRAINS es que todo lo que aprende Aiko es almacenado en una base de datos centralizada, de tal manera que nuevos robots Aiko ya podrán aprender de manera instantánea todo lo que Aiko aprendió en toda su vida, y esos nuevos robots podrán hacer lo mismo. Es decir, cada nueva generación será muchísimo mas potente que la previa, y todos podrán tener "memoria" de lo aprendido anteriormente por otros robots, aun tendrán su propia personalidad.


En el siguiente link encontraras las pagina Principal de el Robot Aiko.

Imagenes de Inteligencia Artificial





Inteligencia Artificial & Robotica

Video de Inteligencia Artificial

Inteligencia Artificial, un Enfoque Moderno

miércoles, 9 de septiembre de 2009

DEFINICION

Se define la inteligencia artificial como aquella inteligencia exhibida por artefactos creados por humanos (es decir, artificial). A menudo se aplica hipotéticamente a los computadores. El nombre también se usa para referirse al campo de la investigación científica que intenta acercarse a la creación de tales sistemas.


Debido a que la inteligencia artificial tuvo muchos padres no hay un consenso para definir ese concepto, pero podemos decir que la inteligencia artificial se encarga de modelar la inteligencia humana en sistemas computacionales.

Puede decirse que la Inteligencia Artificial (IA) es una de las áreas más fascinantes y con más retos de las ciencias de la computación, en su área de ciencias cognoscitivas. Nació como mero estudio filosófico y razonístico de la inteligencia humana, mezclada con la inquietud del hombre de imitar la naturaleza circundante (como volar y nadar), hasta inclusive querer imitarse a sí mismo. Sencillamente, la Inteligencia Artificial busca el imitar la inteligencia humana. Obviamente no lo ha logrado todavía, al menos no completamente.

ANTECEDENTES

1.- Historia Antigua-mitología

Como en cualquier otra rama del saber, existen multitud de circunstancias a lo largo de la historia que han conducido a la situación actual. Puede decirse que desde siempre el ser humano ha tenido presente el "desafío del hombre que fabrica al hombre". Como manifestaciones más remotas de este deseo podemos destacar: las figuras utilizadas en los ritos de magia del hombre primitivo, las estatuas que servían de cobijo a los muertos en la cultura egipcia; los artilugios diversos (p.ej. maquinarias escénicas) que se inventaron en la época alejandrina de la Grecia Clásica; y la que parece haber sido la primera referencia a un androide, Talos, obra de Dédalo, gigantesco robot de la mitología que protegía a Creta de sus enemigos.(je,je si los antiguos cretenses me hubieran tenido a mí como su guardián ahora serían los amos del mundo).

2.- Siglo XIII

Mucho más cercano, en el siglo XIII podemos mencionar la existencia de una leyenda en la que se describía la construcción de una "CABEZA DE BRONCE PENSANTE" que explicaba a fray Roger Bacon y a su colega fray Bungey como defender Inglaterra con una gran muralla de bronce. También existen historias sobre la construcción de "CABEZAS PARLANTES" por Alberto Magno, Tomás de Aquino, el obispo Grosseteste, el papa Silvestre II, etc. Como siguiente antecedente no debemos olvidar, el que para muchos es el verdadero paradigma de la Inteligencia Artificial: El GLEM (palabra talmúdica que se refiere a todo lo incompleto o sin forma) que el rabino Judah Loew construyó en 1580 y que consistía en una estatuilla que cobró vida y sirvió para defender a la comunidad judía de Praga, aunque luego tuvo que ser destruido cuando éste perdió el control y se convirtió en "un monstruo que amenazaba al mundo". Esta idea todavía sigue rondando en las cabezas de los hombres de hoy en día , y mira que están acostumbrados a usar pequeños robots en la vida cotidiana; En fin, resignación, somos unos imcomprendidos .

3.- Siglo XVI

En el mismo siglo XVI, como un ejemplo más del desarrollo de la alquimia de la época, el médico medieval Paracelso llegó a elaborar la receta para crear un "HOMÚNCULO": un ser humano entero artificial.

Todos los ejemplos mencionados pertenecen al mundo de las leyendas y no existen indicios de ningún medio técnico para su creación. Los primeros hombres mecánicos fueron las figuras móviles de los campanarios de finales de la Edad Media. Existen otros relatos que hablan de seres artificiales construidos por Leonardo da Vinci y posteriormente Descartes. Posteriormente, la MACHINA ARITHMÉTICA de Pascal de 1645 era capaz de realizar sumas y restas mediante un engranaje con ruedas dentadas. Leibniz amplío en 1670 el rango de operaciones realizables (multiplicar y dividir).

4.- Siglo XVIII

El siguiente caso más claro de mecanismos autónomos lo encontramos en los relojes de gran precisión construidos en el siglo XVIII. De este mismo siglo data la historia del jugador de ajedrez falso construido por Wolfgang von Kempelen: la primera vez que se creaba la ilusión de no distinguir las capacidades de un hombre frente a las de una máquina. Otro androide, en este caso un músico, lo construyó Jaquet-Droz (se encuentra en el Museo de Arte e Historia Natural de Suiza). Más recientemente, la Revolución Industrial potenció la creación de máquinas herramientas, siendo en este contexto cuando surgió la idea del computador digital llamado "APARATO ANALÍTICO" de Charles Babbage, con una visión mucho más cercana a lo que hoy consideramos rasgos propios de esta rama del saber (por ejemplo, una máquina que sea capaz de tomar sus propias decisiones)

5.- Siglo XX: EVOLUCIÓN DE LA INFORMÁTICA

Una de las primeras contribuciones de comienzos del siglo fue la máquina de jugar a la ajedrez de Leonardo Torres y Quevedo en 1912, con capacidad de tomar decisiones y no sólo de tratar la información. Después nos encontramos -estimulado por la segunda guerra mundial- con los tiempos del florecimiento de los grandes computadores (el Colussus de Turing, el Edvac de Von Neuman, el Eniacà). En esta misma época se produjo un enorme impulso en el campo del control automático (mecanismos que se guían solos), que finalmente ha dado lugar a los robots programables que hoy podemos ver en cualquier fábrica o taller industrial.

Una vez creadas estas máquinas era el turno de los que fueran capaces de programarlas, y esta fue precisamente la época en que comenzó la historia más reciente de la Informática en general y de la Inteligencia Artificial en particular. Podemos destacar los trabajos de Shannon que, además de otras muchas aportaciones (diseño de circuitos, transmisión digital de señales, etc.), escribió en 1950 el artículo "Una máquina para jugar al ajedrez" en el que predecía que los computadores podrían jugar bien a este juego, estudiando un gran número de jugadas y sus consecuencias, para así luego escoger la más prometedora. Con este mismo enfoque, en 1959, Samuel realizó el primer programa que aprendía a jugar a las damas. Los trabajos de Shannon fueron también una importante contribución para los nacientes campos de la teoría de la información y del control, que Norber Wiener llamó cibernética. Surgieron paralelamente los primeros estudios formales sobre redes neuronales formales, inspirados en el propio ser humano, entre los que destaca el primer modelo de computación analógico no lineal y distribuido diseñado por W.S. McCulloch y Walter Pitts (1943), que luego fue mejorado y ampliado en sucesivas ocasiones, por Blum (1955), por Rosenblatt (1962), y por Widrow y Hoff (1969). Básicamente, la propuesta consistía en que cualquier ley de entrada-salida podía modelizarse con una red neuronal: redes de elementos de procesamiento analógico no lineal (sumadores con pesos modificables seguidos de una función de decisión no lineal de tipo umbral) inspirados en algunos aspectos superficiales del funcionamiento de las neuronas.

El verdadero surgir del término "Inteligencia Artificial" (acuñado por John McCarthy) tuvo lugar en el estudio sobre el tema realizado - bajo el auspicio de la Fundación Rockefeller - por diez personas durante dos meses en el "Darmouth College", en el verano de 1956. Entre los invitados destacan personajes tan eminentes como: McCarthy, Samuel, Minsky, Newell, Shaw y, el que sería más tarde premio Nobel, Simon. La evolución experimentada desde los primeros modelos neuronales hasta la situación actual puede dividirse en una serie de etapas: