WOLFRAM

Apuntes para expertos en lenguajes de programación

Orígenes

Wolfram Language constituye una evolución del lenguaje simbólico desarrollado para Mathematica en el transcurso de más de tres décadas. Pero es mucho más que eso, agregando el conocimiento, la representación de conocimiento y las capacidades de lenguaje natural de Wolfram|Alpha, así como un nuevo mecanismo de implementación simbólica creado con Wolfram Cloud.

Fundamentos teóricos

Desde sus etapas iniciales, Wolfram Language fue concebido como un lenguaje general para la computación, basado en ideas fundamentales acerca de sistemas simbólicos.

Primera aplicación clave: Math

Los conceptos de Wolfram Language fueron primero aplicados al área altamente exigente de la computación matemática de Mathematica, con un éxito notable en el transcurso de más de tres décadas.

Millones de usuarios antes de ser lanzado

En sus precursores en Mathematica, Wolfram Language ha tenido millones de usuarios por más de tres décadas, incluyendo muchos de los principales investigadores del mundo, y un sin número de estudiantes y otros usuarios.

Transcendiendo el hardware

Desde sus orígenes, Wolfram Language fue creado para seguir principios, sin ser afectado por las limitaciones del hardware disponible (todo simbólico, precisión infinita, etc.).

El concepto de programación en cuadernos

Presentado por primera vez en Mathematica hace más de tres décadas, Wolfram Language le permite programar en documentos de cuaderno interactivos que combinan la ejecución de código con salida y composición tipográfica de calidad editorial.

Aprendiendo la importancia de la programación simbólica

Estructuras de datos, fragmentos de código, gráficos, documentos, interfaces... Por más de tres décadas de estar siendo incubado, Wolfram Language descubrió más y más formas de aplicar la programación simbólica.

Wolfram|Alpha: Conexión con el mundo real

Wolfram|Alpha hace computable el vasto conocimiento del mundo real, para que pueda ser integrado en Wolfram Language, con el fin de lograr que el lenguaje hable no sólo acerca de constructos formales, sino también acerca del mundo real.

Miles de millones de líneas de código

Miles de millones de líneas de código que constituyen hoy en día código de Wolfram Language, están dentro de sistemas de software alrededor del mundo; con decenas de millones dentro de Wolfram|Alpha y el mismo Wolfram Language.

Un lenguaje para todos los tiempos

Wolfram Language es tan claro que ha sido capaz de mantener su compatibilidad desde sus inicios en la versión de Mathematica 1.0 de 1988.

Adelantado a su época por más de tres décadas

Wolfram Language ha originado muchas nuevas ideas de programación, algunas de ellas han influenciado los lenguajes desarrollados en las últimas tres décadas, pero muchas de las cuales están presentes sólo en Wolfram Language.

Más que palabras de moda

Wolfram Language es a la vez nuevo y conocido: con una larga historia, pero lleno de nuevas ideas. Tiene muchos atributos que corresponden con los términos de moda de los lenguajes de programación modernos comunes, así como muchos atributos que no son familiares en otros lenguajes de programación.

Wolfram Language es...

(entre otras cosas)

Basado en conocimiento

(Nuestra propia palabra de moda) Como uno de sus principios fundamentales, Wolfram Language contiene conocimiento extensivo integrado, acerca de algoritmos y acerca del mundo.

Simbólico

En Wolfram Language, todo (código, datos, imágenes, documentos, interfaces, programas, etc.) son expresiones simbólicas.

Interactivo

El código de Wolfram Language puede ser ejecutado de forma interactiva como un diálogo REPL basado en documentos, entre el usuario y el sistema.

Funcional

Con su caracter simbólico, Wolfram Language da soporte a una forma extendida de programación funcional basada en transformaciones generalizadas.

De alto nivel

Wolfram Language, por estar basado en conocimiento y por su principio de máxima automatización, puede que sea el lenguaje de programación de más alto nivel en el mundo.

Declarativo

Wolfram Language incorpora una forma extrema del concepto declarativo, con superfunciones altamente automatizadas para lograr metas específicas de alto nivel.

"Baterías incluidas"

Es más como "planta de poder incluida": Wolfram Language tiene un vasto y coherente arreglo de algoritmos y conocimiento incorporados, todos listos para ser inmediatamente interoperables.

Homoicónico

Con su caracter simbólico, la relación código=datos es fundamental en Wolfram Language.

Orientado a patrones

El sofisticado ajuste de patrones de expresiones simbólicas es un atributo fundamental de Wolfram Language.

Metaprogramable

Con su caracter simbólico, Wolfram Language puede manipular código de forma inmediata, no sólo con macros, sino con el poder completo del lenguaje.

Conciso

Con todas sus funcionalidades integradas, y primitivos elegidos cuidadosamente; los programas en Wolfram Language son típicamente muy cortos en relación con lo que pueden hacer.

Basado en expresiones

Todo en Wolfram Language (datos, código, etc.) está representado como una expresión simbólica de tres estructuras que tiene un valor.

Expresivo

El diseño cuidadoso y la vasta funcionalidad incorporada de Wolfram Language, facilita la expresión de ideas computacionales de forma clara en el lenguaje.

Polimórfico

Especificar funciones usando el ajuste de patrones, le permite a Wolfram Language expresar inmediatamente comportamiento polimórfico profundo.

Interpretado de forma dinámica

En Wolfram Language, todo es una expresión simbólica, y cada expresión simbólica tiene una cabeza que automáticamente define su comportamiento.

Aplicativo

En Wolfram Language, los programas pueden ser considerados como la aplicación de secuencias de transformaciones simbólicas en expresiones simbólicas inmutables.

Concatenativo

Debido a que Wolfram Language es simbólico, los programas puede ser construidos de forma inmediata como concatenaciones de partes individuales significativas.

Amigable con DRY

La libertad con la que el código puede ser factorizado en el paradigma simbólico funcional de Wolfram Language, facilita programar en una forma "no te repitas".

Activación de DSL

El caracter simbólico de Wolfram Language hace que sea fácil crear lenguajes de dominio específico dentro del lenguaje; y muchos ya están incorporados (regex, gráficos, interfaces, implementación, etc.).

Conocimiento representacional

Con su vasto conocimiento incorporado y estructura simbólica, Wolfram Language es ideal para representar conocimiento y hacerlo computable.

Semántico

Wolfram Language tiene una amplia gama de representaciones incorporadas de entidades del mundo real y constructos.

Matemático

Wolfram Language tiene por mucho la mayor y más profunda cobertura incorporada de computación matemática en el mundo.

Capaz de precisión arbitraria

En todo Wolfram Language, los números pueden tener cualquier precisión o longitud.

Simbólico-numérico

Wolfram Language da gran soporte para la computación simbólica y numérica, y muchos de sus algoritmos mezclan ambos enfoques.

Capaz de hacer consultas

En Wolfram Language, todos los datos están representados por expresiones simbólicas que permiten consultas uniformes usando constructos funcionales de alto nivel.

Orientado a objetos

Wolfram Language da soporte a una potente alternativa simbólica para la programación tradicional orientada a objetos.

Reactivo

Wolfram Language implementa programación funcional reactiva para dar soporte a la construcción de interfaces de usuario dinámicas complejas de forma declarativa.

Envío múltiple

El ajuste de patrones simbólico de Wolfram Language le permite inmediatamente enviar cualquier argumento de una función o cualquier parte de una expresión.

Expresivo

El diseño cuidadoso y la vasta funcionalidad incorporada de Wolfram Language, facilita la expresión de ideas computacionales de forma clara en el lenguaje.

Legible

Un gran énfasis en nombres y estructuras bien elegidas hace que el código de Wolfram Language sea altamente legible.

Centrado en documentos

En Wolfram Language, el código no está atrapado en texto ASCII, en su lugar, puede ser dado en ricos cuadernos.

Instruido

En Wolfram Language, los programas ejecutables pueden ser escritos como cuadernos ricamente estructurados.

Programable

Wolfram Language puede ser utilizado para escribir comandos de operaciones externas en una variedad de entornos y lenguajes.

Lenguaje natural

Sobre la base de la misma tecnología que Wolfram|Alpha, Wolfram Language permite entrada de lenguaje natural, tanto como parte de los programas como en su propia funcionalidad.

Compilado en JIT

Wolfram Language usualmente utiliza sin problemas compilación en el tiempo de ejecución en sus propios equipos virtuales para optimizar el rendimiento y para proporcionar lo mejor de la operación interpretativa y de compilación.

Paralelizable

Wolfram Language tiene incorporada la funcionalidad de computación paralela, tanto para equipos individuales como para redes potencialmente heterogéneas.

Basado en la nube

Wolfram Language puede ser ejecutado en la nube y da soporte a muchas formas de computación basada en la nube, además de ser ejecutado localmente.

Orientado en el modelo cliente-servidor

La interfaz interactiva de Wolfram Language está hecha para comunicarse vía el protocolo simbólico WolframLink con uno o más kérnels computacionales.

Independiente de plataformas

Wolfram Language es el mismo en todas las plataformas informáticas estándar, locales y en la nube.

Permite el Hot Swap

Debido a que Wolfram Language es interpretado, y su implementación es simbólica, el código puede ser interrogado, depurado y modificado en cualquier etapa de su ejecución.

FFI activado

Wolfram Language tiene un rico soporte para interfaces de función foráneas que operan en una variedad de niveles.

Interoperable

Incorporada dentro de Wolfram Language está la habilidad de interactuar con otros lenguajes y con datos en cientos de formatos.

Seguro

Wolfram Language no expone constructos de bajo nivel, tales como indicadores y asignación de memoria, por lo tanto se evitan muchas clases de errores.

Persistente

Debido a que todo en Wolfram Language (código, datos, gráficos, interfaces, etc.) es representado como una expresión simbólica, puede ser serializado de forma inmediata para el almacenamiento persistente.

Permite "Monkey Patch"

En Wolfram Language, hay un mecanismo uniforme para redefinir la operación de casi todo.

Inmutable

En Wolfram Language, todo es una expresión simbólica que representa su propio valor, con sólo funciones específicas teniendo efectos secundarios de las expresiones que modifican "en sitio".

Estable

Wolfram Language es una evolución compatible del lenguaje en Mathematica, el cual ha mantenido la compatibilidad casi perfecta com versiones anteriores por más de tres décadas.