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.