El Lenguaje Wolfram ( / w ʊ l f r əm / Wuul -frəm ) es un general lenguaje de programación multi-paradigma [8] desarrollado por Wolfram Research . Se hace hincapié en la computación simbólica , la programación funcional y programación basada en reglas [9] y se puede emplear arbitrarias estructuras y datos. [9] Es el lenguaje de programación del programa de cálculo simbólico matemático Mathematica . [10]
Paradigma | Multi-paradigma : reescritura de términos , funcional , procedimental , matriz |
---|---|
Diseñada por | Stephen Wolfram |
Desarrollador | Investigación Wolfram |
Apareció por primera vez | 1988 |
Lanzamiento estable | 12.2 [1] / 16 de diciembre de 2020 |
Disciplina de mecanografía | Dinámico , fuerte |
SO | Multiplataforma |
Licencia | Patentada (disponible sin costo para algunas plataformas) [2] |
Extensiones de nombre de archivo | .nb, .m, .wl |
Sitio web | www |
Implementaciones importantes | |
Mathematica , Wolfram | One , Matemáticas , Expreduce , MockMMA , WolframAlpha | |
Influenciado por | |
Influenciado | |
Historia
Wolfram Language fue parte de la versión inicial de Mathematica en 1988. [11]
Los aspectos simbólicos del motor lo convierten en un sistema de álgebra informática. El lenguaje puede realizar integración, diferenciación, manipulaciones de matrices y resolver ecuaciones diferenciales usando un conjunto de reglas. También en 1988 fue el modelo de portátil y la capacidad de incrustar sonido e imágenes, según la patente de Theodore Gray . [12]
En 2009 se lanzó una interfaz en línea para el idioma, WolframAlpha . Wolfram implementó este sitio web traduciendo declaraciones en lenguaje natural en consultas en Wolfram que enlazan con su base de datos. El trabajo que condujo a Wolfram Alpha también significa que la implementación de Wolfram del lenguaje ahora tiene acceso integrado a una base de conocimientos, así como a funciones de procesamiento de lenguaje natural.
Wolfram características también añadidos para tareas más complejas, tales como el modelado 3D. [13]
Finalmente se adoptó un nombre para el idioma en 2013, cuando Wolfram Research decidió hacer una versión del motor de idioma gratuita para los usuarios de Raspberry Pi , y necesitaban encontrar un nombre para él. [14] Se incluyó en el paquete de software recomendado que la Fundación Raspberry Pi proporciona para principiantes, lo que provocó cierta controversia debido a la naturaleza propietaria del lenguaje Wolfram . [15] Los planes para el puerto de lenguaje Wolfram a la Intel Edison se dieron a conocer después de la introducción de la junta en el CES 2014 , pero nunca fue puesto en libertad. [16] En 2019, se agregó un enlace para hacer que las bibliotecas de Wolfram sean compatibles con el motor de juego de Unity , dando a los desarrolladores de juegos acceso a las funciones de alto nivel del lenguaje. [17] [18]
Sintaxis
La sintaxis de Wolfram Language es en general similar a la expresión M del LISP de la década de 1960 , con soporte para operadores infijos y llamadas a funciones de "notación de función".
Lo esencial
El lenguaje Wolfram escribe expresiones aritméticas básicas usando operadores infijos .
(* Este es un comentario. *)4 + 3 (* = 7 *)1 + 2 * ( 3 + 4 ) (* = 15 *)(* Tenga en cuenta que la multiplicación se puede omitir: 1 + 2 (3 + 4) *)(* Las divisiones devuelven números racionales: *)3 / 2 (* = 3/2 *)
Las llamadas a funciones se indican con corchetes:
Sin [ Pi ](* = 0 *)(* Esta es la función de números racionales Convertir a puntos flotantes: *)N [ 3 / 2 ] (* = 1,5 *)
Las listas se incluyen entre corchetes:
Oddlist = { 1 , 3 , 5 }(* = {1,3,5} *)
sintaxis de azúcar
El lenguaje puede desviarse del paradigma de la expresión M cuando se dispone de una forma alternativa y más amigable para los humanos de mostrar una expresión:
- En este lenguaje se utilizan varias reglas de formato, incluidas las
TeXForm
expresiones tipográficas y laInputForm
entrada de lenguaje. - Las funciones también se pueden aplicar utilizando la expresión de prefijo
@
y la expresión de sufijo//
. - Las derivadas se pueden denotar con un apóstrofe
'
. - Los propios operadores infijos se consideran "azúcar" para el sistema de notación de funciones .
Un FullForm
formateador desugars la entrada: [19]
Fullform [ 1 + 2 ](* = Más [1, 2] *)
Programación funcional
Se admite el curry .
La coincidencia de patrones
Funciones en el idioma Wolfram son básicamente un caso de patrones simples para el reemplazo:
F [ x_ ] : = x ^ 0
El :=
es un "operador SetDelayed", por lo que la x no se veía inmediatamente. x_
es azúcar de sintaxis para Pattern[x, Blank[]]
, es decir, un "espacio en blanco" para cualquier valor para reemplazar x en el resto de la evaluación.
Una iteración de ordenamiento de burbuja se expresa como:
sortRule : = { x___ , y_ , z_ , k___ } /; y > z -> { x , z , y , k } (* Rule [Condition [List [PatternSequence [x, BlankNullSequence []], Pattern [y, Blank []], Pattern [z, Blank []], PatternSequence [k, BlankNullSequence []]], Mayor [y, z ]], Lista [x, z, y, k]] *)
El /;
operador es "condición", por lo que la regla solo se aplica cuando y>z
. Los tres guiones bajos son una sintaxis para a BlankNullSequence[]
, para una secuencia que puede ser nula.
Se //.
puede usar un operador ReplaceRepeated para aplicar esta regla repetidamente, hasta que no ocurran más cambios:
{ 9 , 5 , 3 , 1 , 2 , 4 } // . sortRule (* = ReplaceRepeated [{9, 5, 3, 1, 2, 4}, sortrule] *)(* = {1, 2, 3, 4, 5, 9} *)
El sistema de coincidencia de patrones también da lugar fácilmente a la integración y derivación basadas en reglas. Los siguientes son extractos del paquete de reglas de Rubi: [20]
(* Recíproco regla *)Int [ 1 / x_ , x_Symbol ] : = Log [ x ];(* Regla de poder *)Int [ x_ ^ m_ . , X_Symbol ] : = x ^ ( m + 1 ) / ( m + 1 ) /; FreeQ [ m , x ] && NeQ [ m , -1 ]
Implementaciones
La implementación oficial y de referencia de Wolfram Language se encuentra en Mathematica y los servicios en línea asociados. Estos son de código cerrado. [21] Wolfram Research ha, sin embargo, dio a conocer un C ++ programa de análisis de la lengua bajo el código abierto licencia MIT . [22] El libro de referencia es de libre acceso . [23]
En la existencia de más de tres décadas del lenguaje Wolfram, también se han desarrollado varias implementaciones de terceros de código abierto . MockMMA de Richard Fateman de 1991 es de una nota histórica. Los modernos aún se mantienen a partir de abril de 2020.[actualizar]Symja incluir en Java , expreduce en Golang y el sympy -basado Mathics . [24] Estas implementaciones se enfocan en el lenguaje central y el sistema de álgebra computacional que implica, no en las características de la "base de conocimiento" en línea de Wolfram.
En 2019, [25] Wolfram Research lanzó un software gratuito Wolfram Engine, que se utilizará como biblioteca de programación en software no comercial. [26]
Nombrar
El lenguaje fue nombrado oficialmente en junio de 2013 aunque, como backend del sistema informático Mathematica , ha estado en uso en varias formas durante más de 30 años desde el lanzamiento inicial de Mathematica. [10] [27]
Ver también
- Interfaz de portátil
Referencias
- ^ "Resumen de nuevas funciones en 12.2" .
- ^ Stephen Wolfram apunta a democratizar su software por Steve Lohr, The New York Times, 14 de diciembre de 2015
- ^ Wolfram, Stephen. "Tini Veltman (1931-2021): del lenguaje ensamblador a un premio Nobel: escritos de Stephen Wolfram" . stephenwolfram.comwritings . Consultado el 22 de enero de 2021 .
- ^ Maeder, Roman E. (1994). El programador de Mathematica® . Academic Press, Inc. pág. 6. ISBN 978-1-48321-415-3.
- ^ "Wolfram Idioma Q & A" . Wolfram Research . Consultado el 5 de diciembre de 2016 .
- ^ Somers, James. "El artículo científico es obsoleto" . El Atlántico . Consultado el 10 de abril de 2018 .
- ^ Hickey, Rich. "Estantería Clojure" . Amazon.com . Archivado desde el original el 3 de octubre de 2017 . Consultado el 6 de mayo de 2020 .
- ^ "Notas para expertos en lenguajes de programación sobre Wolfram Language" . Wolfram.com . Consultado el 5 de noviembre de 2015 .
- ^ a b "¿Cómo deberíamos llamar el lenguaje de Mathematica? —Stephen Wolfram Blog" . Blog.stephenwolfram.com. 2013-02-12 . Consultado el 5 de noviembre de 2015 .
- ^ a b "Celebrando el primer cuarto de siglo de Mathematica — Wolfram Blog" . Blog.wolfram.com . Consultado el 5 de noviembre de 2015 .
- ^ Wolfram (1988). Mathematica, un sistema para hacer matemáticas por computadora.
- ^ Hayes, Brian (1990-01-01). "Reflexiones sobre Mathematica" (PDF) . Pixel .
- ^ "Centro de documentación de Wolfram Language & System" . Reference.wolfram.com . Consultado el 5 de noviembre de 2015 .
- ^ "Poner Wolfram Language (y Mathematica) en cada Raspberry Pi — Blog de Wolfram" . Blog.wolfram.com . Consultado el 5 de noviembre de 2015 .
- ^ Sherr, Ian (22 de noviembre de 2013). "Software premium de Mathematica gratis en el presupuesto Raspberry Pi - CNET" . News.cnet.com . Consultado el 5 de noviembre de 2015 .
- ^ Daniel AJ Sokolov (11/22/2014). "Intels Edison: Pentium-System im Format einer SD-Karte | heise online" . Heise.de . Consultado el 5 de noviembre de 2015 .
- ^ "Wolfram Language pronto se integrará en Unity" . Gamasutra. 2014-03-10 . Consultado el 5 de noviembre de 2015 .
- ^ "¿Hay una manera de utilizar Wolfram Idioma en Unity3D?" . Wolfram. 2017 . Consultado el 11 de abril de 2017 .
- ^ "Fullform" . Documentación de Wolfram Language .
- ^ "Bienvenido a Rubi, el integrador basado en reglas" . Integración basada en reglas .
- ^ McLoone, J. "¿Por qué Wolfram Tech no es Open Source-una docena de razones-Wolfram Blog" .
- ^ "codeparser: Analice el código fuente de Wolfram Language como árboles de sintaxis abstracta (AST) o árboles de sintaxis concreta (CST)" . GitHub . Wolfram Research, Inc. 13 de abril de 2020.
- ^ "Materiales abiertos de Wolfram: código abierto, código abierto, datos abiertos, recursos abiertos" . www.wolfram.com .
- ^ Simón. "¿Existe una implementación de código abierto de Mathematica-the-language?" . Intercambio de pila de Mathematica .
- ^ Wolfram, Steven. "Lanzamiento hoy: motor Wolfram gratuito para desarrolladores — Stephen Wolfram Writings" .
- ^ "Wolfram motor gratuito para desarrolladores" . www.wolfram.com . Consultado el 19 de enero de 2021 .
- ^ "Stephen Wolfram dice que tiene un algoritmo para todo - Literalmente" . Readwrite.com . Consultado el 5 de noviembre de 2015 .
enlaces externos
- Documentación para Wolfram Language
- Una introducción elemental a Wolfram Language
- La nube de programación Wolfram
- WolframLanguage.org : una guía de recursos comunitarios sobre Wolfram Language