sábado, 21 de enero de 2012

Computación basada en el conocimiento y la versión 2.0 de la APi de Wolfram|Alfa

Wolfram|Alpha está haciendo posible un nuevo tipo de computación muy interesante y muy potente. Con el lanzamiento de la versión 2.0 de la API Wolfram|Alfa, será mucho más fácil para una amplia gama de desarrolladores de software tomar ventaja de ella.

Estoy feliz de decir que Wolfram|Alpha es bastante útil para los humanos -por ejemplo a través de la sitio web wolframalpha.com- pero también resulta que Wolfram|Alpha es muy útil para los programas. Y de hecho, incluso hoy en día, el número de solicitudes procedentes de programas que llegan a Wolfram|Alpha cada segundo a menudo excede por un margen a todas las solicitudes que llegan directamente de los seres humanos.

La razón de esta popularidad es realmente muy simple: Wolfram|Alpha cambia por completo la economía de una gran cantidad de programación. Se ve, en estos días que un notable número de programas se basan en tener algún tipo de conocimiento. Y, tradicionalmente, la única manera de conseguir el conocimiento en un programa fue que el programador cuidadosamente lo puso allí.

Sin embargo, con Wolfram|Alpha en escena, la historia es diferente. Porque se tiene construido dentro de Wolfram|Alpha una enorme cantidad de conocimientos computables. Y si un programa se conecta a Wolfram|Alpha, entonces de inmediato se puede hacer uso de todo ese conocimiento.

Ya sea que uno está construyendo un sitio web o una aplicación móvil o de escritorio o una aplicación empresarial, el punto es que uno puede usar Wolfram|Alpha como una "plataforma de computación basada en el conocimiento" de manera que el acceso a todo tipo de conocimiento computablea sea efectivamente libre desde el punto de vista de ingeniería.

¿Cómo un programa se comunica con Wolfram|Alpha? Utiliza la API Wolfram|Alpha. (En estos días, la API es más o menos un término en sí mismo, pero viene de "Application Program Interface").

Wolfram|Alpha API Explorer


 Al final, la forma en que funciona es bastante simple. Cuando utiliza el sitio web de Wolfram|Alfa, cada consulta que escribe corresponde a un URI determinada (la dirección web), como http://www.wolframalpha.com/input/?i=2+plus+2. Lo que su navegador web regresa de la URI es todo tipo de HTML y Javascript que hace que ensamble la página que usted ve.

Bueno, si usted fuera un programa, lo único que haría es utilizar una URI de la forma http://api.wolframalpha.com/ ... Y lo que obtiene es una estructura que puede utilizar dentro de su programa.

Al igual que las API  más modernas, la API de Wolfram|Alpha es una API de tipo REST, que retorna una salida de XML.

La salida de XML puede contener todo tipo de elementos diferentes. Puede tener una gran estructura HTML, adecuada para la reproducción de una página página de salida entera de Wolfram|Alfa. O puede tener imágenes individuales, o texto, que corresponden a pods particulares o de partes de pods en la salida de Wolfram|Alfa.

También puede tener una representación simbólica completa de cada pieza de la salida, como una expresión simbólica de Mathematica.

No hace falta decir que, se proporcionan todo tipo de controles detallados. Para determinar la ubicación geográfica ha asumir. Para especificar si los resultados deben volver todos juntos de forma sincrónica o asincrónica en piezas cuando estén listas. Y así sucesivamente.

También hay todo un lenguaje extendido para las consultas en Wolfram|Alfa, que permite especificar, por ejemplo, que pods en particular de salida de se deben generar o qué supuestos deben ser hechos sobre los tipos de objetos en la entrada.

Todas estas capacidades en última instancia, se puede acceder con sólo enviar la cadena apropiada a los servidores de Wolfram|Alfa. Sin embargo, para su conveniencia, ahora hay bibliotecas para muchos lenguajes comunes (. Net, Perl, Python, Ruby, PHP y Java, por no hablar de Mathematica) que estableció la cadena de solicitud, y luego manipular la estructura resultante que regrese. (El caso de Mathematica es particularmente conveniente, porque es un lenguaje simbólico, por lo que fácilmente se puede tratar con estructuras arbitrarias y es interactivo, por lo que se puede ver todo de inmediato.)

Muchas de las bibliotecas de lenguaje para la API de Wolfram|Alfa  fueron aportados en realidad por los desarrolladores de software en la comunidad de Wolfram|Alfa (¡gracias!). Hay más por venir, así como SDK ("kits de desarrollo de software") para una variedad de entornos y plataformas.

Una manera en que la API de Wolfram|Alpha se puede utilizar es para añadir las capacidades de Wolfram|Alpha a los sitios web. Sin embargo, se puede utilizar dentro de cualquier software de sistemas en una computadora de escritorio (como Mathematica), en un servidor o en la nube (como webMathematica), o en cualquier tipo de dispositivo móvil o de otro tipo. (Y, por ejemplo, todos los aplicaciones de Wolfram|Alfa, y aplicaciones de "Wolfram Course Assistant", se construyen con la API de Wolfram|Alfa)

Hay un montón de proyectos de software que ya están utilizando la API de Wolfram|Alpha. Un ejemplo notable es Bing de Microsoft, donde las consultas se envían desde el motor de búsqueda de Bing a la API de Wolfram|Alfa. Otro ejemplo, de un carácter muy diferente, es en los ebooks "Touch Press", donde Wolfram|Alpha se utiliza para generar elementos dinámicos en los libros.

¿Qué está pasando hoy con la versión 2.0 de la  API de Wolfram|Alpha?   estamos abriendo mucho más a los desarrolladores de software. No hay racionalización y la extensión de la propia API. Y estamos simplificando los requisitos de licencia para la API-sobre todo para que cualquiera pueda empezar el libre uso de la API.
 
La creación de una API que se usa ampliamente es una gran responsabilidad. Hay nubes de servidor para mantener funcionando bien. Hay compatibilidad que mantener. Hay usuarios para dar soporte.

Pero sabemos lo que estamos consiguiendo. Porque hemos tenido una API para Mathematica desde hace 21 años-desde mucho antes de que nadie había oído hablar de una API. El API MathLink de Mathematica es bastante sofisticado. Permite a los programas externos comunicarse con Mathematica desde 1990. Y, de hecho, Mathematica lo utiliza ampliamente, sobre todo en la conexión de la interfaz de usuario ("front end") a su núcleo computacional, y en la creación de computación distribuida.

A medida que construimos nuevas cosas con la tecnología de Wolfram|Alpha, hay un montón en preparación - todos  se basan esencialmente en API de Wolfram|Alfa. Pero lo que estamos haciendo internamente  muy pronto va a ser totalmente eclipsada por lo que los desarrolladores externos están haciendo con la API de Wolfram|Alfa.

No sé todos los proyectos que están en marcha. Pero de los que conozco, lo más destacable es su diversidad. Todos ellos en última instancia usan la misma plataforma de Wolfram|Alpha, pero lo que están haciendo  es muy diferente.

Empiezan a construir la primera generación de lo que es posible gracias al concepto de la computación basada en el conocimiento que Wolfram|Alpha ha introducido ...



Fuente y más información aquí.

No hay comentarios:

Publicar un comentario en la entrada