WOLFRAM

Notas para expertos en lenguajes de programación

Orígenes

Wolfram Language constituye, en primer lugar, 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 mediante 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 aplicados por primera vez al área altamente exigente de la computación matemática en Mathematica, con un éxito extraordinario en el transcurso de más de tres décadas.

Millones de usuarios incluso antes de que existiera

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

Superando el hardware

Desde sus inicios, Wolfram Language fue creado para seguir principios, sin ser afectado por las limitaciones del hardware disponible de la época (todo simbólico, precisión infinita, etc.).

El concepto de la 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 las salidas y la 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... Durante las tres décadas en las que fue concebido, Wolfram Language descubrió más y más maneras de aplicar la programación simbólica.

Wolfram|Alpha: Incorporando el mundo real

Wolfram|Alpha volvió computable el vasto conocimiento del mundo real, de manera que pueda ser integrado en Wolfram Language con el fin de lograr que el lenguaje hable no solo 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 lo que ahora es código de Wolfram Language se encuentran dentro de sistemas de software en todo el 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 1.0 de Mathematica en 1988.

Adelantado a su época por tres décadas

Wolfram Language ha originado muchas nuevas ideas de programación, algunas de las cuales han influenciado los lenguajes desarrollados durante las últimas tres décadas, pero muchas de las cuales permanecen solo en Wolfram Language.

Cumple con la terminología de moda

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

Wolfram Language es...

(entre otras cosas)

Basado en conocimiento

(Nuestro propio término de moda) Como uno de sus principios fundamentales, Wolfram Language cuenta con conocimiento extensivo incorporado, acerca de algoritmos y del mundo.

Simbólico

En Wolfram Language, todo (ya sea código, datos, imágenes, documentos, interfaces, programas, etc.) es una expresión simbólica.

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 carácter simbólico, Wolfram Language es compatible con a una forma extendida de programación funcional basada en transformaciones generalizadas.

De alto nivel

Es posible que, gracias a su carácter basado en conocimiento y su principio de máxima automatización, Wolfram Language sea el lenguaje de programación de nivel más alto en el mundo.

Declarativo

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

"Incluye baterías"

Es más como "planta eléctrica incluida": Wolfram Language posee un vasto arreglo coherente de algoritmos y conocimiento incorporados, todos configurados para ser inmediatamente interoperables.

Homoicónico

Con su carácter simbólico, código es igual a datos de manera fundamental en Wolfram Language.

Orientado a patrones

La sofisticada coincidencia de patrones de expresiones simbólicas es una característica fundamental de Wolfram Language.

Metaprogramable

Con su carácter simbólico, Wolfram Language puede manipular código de forma inmediata, no solo usando macros, sino el poder completo del lenguaje.

Conciso

Con todas sus funcionalidades incorporadas, así como sus primitivas cuidadosamente seleccionadas, los programas en Wolfram Language son típicamente muy cortos en relación con lo que logran.

Basado en expresiones

Todo en Wolfram Language (datos, código, etc.) está representado como una expresión simbólica con estructura de árbol que posee un valor.

Reflexivo

El carácter simbólico de Wolfram Language le permite tener completa introspección.

Polimórfico

Especificar funciones mediante coincidencia de patrones permite a Wolfram Language expresar comportamiento profundamente polimórfico de inmediato.

Compatible con tipos dinámicos

En Wolfram Language todo es una expresión simbólica, y cada expresión simbólica posee una cabecera 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

Ya que Wolfram Language es simbólico, los programas pueden ser construidos de forma inmediata como concatenaciones de partes individualmente importantes.

Compatible con el principio "DRY"

La libertad con la que el código puede ser factorizado en el paradigma simbólico funcional de Wolfram Language hace que sea fácil programar en usando el principio "No te repitas" (DRY por sus siglas en inglés).

Habilita DSL

El carácter simbólico de Wolfram Language hace que sea fácil crear lenguajes específicos para dominios dentro del lenguaje, y ya cuenta con muchos de ellos incorporados (regex, gráficos, interfaces, implementación, etc.)

Representa el conocimiento

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

Semántico

Wolfram Language cuenta con una amplia representación incorporada de entidades y constructos del mundo real.

Matemático

Wolfram Language posee, por un amplio margen, la cobertura más amplia y profunda de computación matemática en el mundo.

Capaz de precisión arbitraria

Los números pueden tener cualquier precisión o longitud en todo Wolfram Language.

Simbólico-numérico

Wolfram Language posee amplio soporte para computación simbólica y numérica, y muchos de sus algoritmos combinan estos enfoques.

Capaz de recibir consultas

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

Orientado a objetos

Wolfram Language admite una potente alternativa simbólica ala programación orientada a objetos tradicional.

Reactivo

Wolfram Language implementa programación reactiva funcional para admitir la elaboración de interfaces de usuario dinámicas y complejas de manera declarativa.

Distribución múltiple

La coincidencia de patrones simbólicos de Wolfram Language permite de inmediato la distribución en cualquier argumento de una función o en cualquier parte de una expresión.

Expresivo

El diseño cuidadoso y la vasta funcionalidad incorporada de Wolfram Language hacen que sea fácil expresar ideas computacionales claramente en el lenguaje.

Legible

Un fuerte énfasis en nombres y estructuras bien elegidos 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, y en cambio puede presentarse en cuadernos avanzados.

Literario

En Wolfram Language, los programas ejecutables pueden escribirse como cuadernos altamente estructurados.

Programable

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

Lenguaje natural

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

Compilado en JIT

Wolfram Language a menudo utiliza compilación en tiempo de ejecución de manera fluida en sus propias máquinas virtuales para optimizar el rendimiento y proporcionar lo mejor tanto de la ejecución interpretada como de la compilada.

Paralelizable

Wolfram Language cuenta con funcionalidad incorporada de computación paralela, tanto para máquinas individuales como para redes potencialmente heterogéneas.

Basado en la nube

Wolfram Language se ejecuta en la nube y admite numerosas formas de computación basada en la nube, además de ejecutarse localmente.

Orientado a arquitectura cliente-servidor

La interfaz interactiva de Wolfram Language está configurada para comunicarse a través del protocolo simbólico WSTP (Protocolo de transferencia simbólica Wolfram) con uno o más kernels computacionales.

Independiente de la plataforma

Wolfram Language es igual en todas las plataformas informáticas estándar, tanto localmente como en la nube.

Permite el cambio en caliente (hot swap)

Dado 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.

Compatible con FFI

Wolfram Language cuenta con soporte avanzado para interfaces de funciones externas operando en diversos niveles.

Interoperable

La habilidad de interactuar con otros lenguajes, al igual que con datos en cientos de formatos está integrada en Wolfram Language.

Seguro

Wolfram Language no expone constructos de nivel bajo, tales como punteros y asignación de memoria, por lo cual se evitan grandes clases de errores.

Persistente

Ya que todo en Wolfram Language (código, datos, gráficos, interfaces, etc.) está representado como una expresión simbólica, puede serializarse de inmediato para almacenamiento persistente.

Admite parches de código

En Wolfram Language existe 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, y solo funciones específicas tienen efectos secundarios que modifican expresiones "en su lugar".

Estable

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