stringtranslate.com

Lenguaje Wolfram

Wolfram Language ( / ˈw ʊ l f r əm / WUUL -frəm ) es un lenguaje de programación multiparadigma propietario, [7] general, de muy alto nivel [8] desarrollado por Wolfram Research . Enfatiza el cálculo simbólico , la programación funcional y la programación basada en reglas [9] y puede emplear estructuras y datos arbitrarios. [9] Es el lenguaje de programación del programa de cálculo simbólico matemático Mathematica . [10]

Historia

El lenguaje Wolfram 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 computacional. El lenguaje puede realizar integraciones, diferenciaciones, manipulaciones de matrices y resolver ecuaciones diferenciales utilizando un conjunto de reglas. Además, la versión inicial introdujo el modelo de cuaderno y la capacidad de incorporar sonido e imágenes, según la patente de Theodore Gray . [12]

Wolfram también agregó funciones para tareas más complejas, como el modelado 3D. [13]

Finalmente, en 2013 se adoptó un nombre para el lenguaje, ya que Wolfram Research decidió hacer una versión del motor del lenguaje gratuita para los usuarios de Raspberry Pi , y necesitaban encontrarle un nombre. [14] Se incluyó en el paquete de software recomendado que la Fundación Raspberry Pi proporciona para principiantes, lo que causó cierta controversia debido a la naturaleza propietaria del lenguaje Wolfram . [15] Los planes para portar el lenguaje Wolfram al Intel Edison se anunciaron después de la presentación de la placa en el CES 2014 , pero nunca se publicaron. [16] En 2019, se agregó un enlace para hacer que las bibliotecas Wolfram sean compatibles con el motor de juegos Unity , lo que brinda a los desarrolladores de juegos acceso a las funciones de alto nivel del lenguaje. [17] [18]

Sintaxis

La sintaxis del lenguaje Wolfram es en general similar a la expresión M de LISP de los años 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 utilizando operadores infijos .

(*Esto es un comentario.*)4 + 3 (* = 7 *)  1 + 2 * ( 3 + 4 ) (* = 15 *) (* Tenga en cuenta que se puede omitir la multiplicación: 1 + 2 (3 + 4) *)      (*Las divisiones devuelven números racionales: *) 6 / 4 (* = 3/2 *)  

Las llamadas de función se indican con corchetes:

Pecado [ Pi ] (* = 0 *)(*Esta es la función para convertir números racionales a punto flotante: *) N [ 3 / 2 ] (* = 1.5 *)  

Las listas se encierran entre llaves:

Lista impar = { 1 , 3 , 5 } (* = {1,3,5} *)

Azúcar sintáctico

El lenguaje puede desviarse del paradigma de expresión M cuando existe una forma alternativa y más amigable para los humanos de mostrar una expresión:

Un FullFormformateador desazucara la entrada: [19]

Formato completo [ 1 + 2 ] (* = Plus[1, 2] *)

Programación funcional

Se admite el curry .

Coincidencia de patrones

Las funciones en el lenguaje Wolfram son efectivamente un caso de patrones simples de reemplazo:

F [ x_ ] := x ^ 0    

El :=es un "operador SetDelayed", por lo que no se busca x inmediatamente. x_es un azúcar sintáctico para Pattern[x, Blank[]], es decir, un "espacio en blanco" para cualquier valor que reemplace a 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 } (* Regla[Condición[Lista[SecuenciaPatrón[x, SecuenciaNuloBlanco[]], Patrón[y, Blanco[]], Patrón[z, Blanco[]], SecuenciaPatrón[k, SecuenciaNuloBlanco[]]], 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 un BlankNullSequence[], para una secuencia que puede ser nula.

//.Se puede utilizar un operador ReplaceRepeated para aplicar esta regla repetidamente, hasta que no se produzcan más cambios:

{ 9 , 5 , 3 , 1 , 2 , 4 } // .sortRule (* = ReemplazarRepetido[{ 9, 5, 3, 1, 2, 4 }, sortRule] *) ( * = {1, 2, 3, 4, 5, 9} *)         

El sistema de comparación de patrones también da lugar fácilmente a la integración y derivación basadas en reglas. A continuación se presentan extractos del paquete de reglas de Rubi: [20]

(* Regla recíproca *) Int [ 1 / x_ , x_Símbolo ] := Log [ x ]; (* Regla de potencia *) Int [ x_ ^ m_ . , x_Símbolo ] := 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] Sin embargo, Wolfram Research ha publicado un analizador del lenguaje bajo la licencia MIT de código abierto . [22] El analizador se desarrolló originalmente en C++, pero se reescribió en Rust en 2023. El libro de referencia es de acceso abierto . [23]

En las más de tres décadas de existencia del lenguaje Wolfram, también se han desarrollado varias implementaciones de terceros de código abierto . MockMMA de Richard Fateman de 1991 es de importancia histórica, tanto por ser la primera reimplementación como por haber recibido una orden de cese y desistimiento de Wolfram. Las implementaciones modernas que aún se mantienen en abril de 2020 incluyen Symja en Java , expreduce en Golang y Mathics basado en SymPy . [24] Estas implementaciones se centran en el lenguaje central y el sistema de álgebra computacional que implica, no en las características de "base de conocimiento" en línea de Wolfram.

En 2019, [25] Wolfram Research lanzó el software gratuito Wolfram Engine, para ser utilizado como una biblioteca de programación en software no comercial. Este motor exclusivo para desarrolladores proporciona un shell de línea de comandos del evaluador de Mathematica (con una cantidad limitada de núcleos) y requiere registro y activación de la licencia a través de la web. El proyecto Jupyter Notebook/Lab, disponible de forma gratuita, proporciona un protocolo (ZMQ) para conectar sus cuadernos a varios idiomas; está disponible como una alternativa a la interfaz CLI de solo texto a través del núcleo Wolfram para Jupyter. [26]

Nombramiento

El lenguaje recibió su nombre oficialmente en junio de 2013 y se ha utilizado como back-end de Mathematica y otras tecnologías Wolfram durante más de 30 años. [27] [28]

Véase también

Referencias

  1. ^ "La historia continúa: anunciamos la versión 14 de Wolfram Language y Mathematica". Escritos de Stephen Wolfram . 2024-07-31 . Consultado el 2024-07-31 .
  2. ^ 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 .
  3. ^ Maeder, Roman E. (1994). El programador de Mathematica® . Academic Press, Inc., pág. 6. ISBN 978-1-48321-415-3.
  4. ^ "Preguntas y respuestas sobre el lenguaje Wolfram". Wolfram Research . Consultado el 5 de diciembre de 2016 .
  5. ^ Somers, James. "El artículo científico está obsoleto". The Atlantic . Consultado el 10 de abril de 2018 .
  6. ^ Hickey, Rich. "Estantería de Clojure". Amazon.com . Archivado desde el original el 2017-10-03 . Consultado el 2020-05-06 .
  7. ^ "Código abierto de Wolfram, código abierto, datos abiertos, recursos abiertos". www.wolfram.com . Consultado el 3 de febrero de 2023 .
  8. ^ "Notas para expertos en lenguajes de programación sobre Wolfram Language". Wolfram.com . Consultado el 5 de noviembre de 2015 .
  9. ^ ab "¿Cómo deberíamos llamar al lenguaje de Mathematica? —Blog de Stephen Wolfram". Blog.stephenwolfram.com. 2013-02-12 . Consultado el 2015-11-05 .
  10. ^ "Celebrando el primer cuarto de siglo de Mathematica: blog de Wolfram". Blog.wolfram.com. 23 de junio de 2013. Consultado el 5 de noviembre de 2015 .
  11. ^ Wolfram (1988). Mathematica, un sistema para hacer matemáticas por computadora.
  12. ^ Hayes, Brian (1 de enero de 1990). "Reflexiones sobre Mathematica" (PDF) . Pixel .
  13. ^ "Centro de documentación de sistemas y lenguajes Wolfram". Reference.wolfram.com . Consultado el 5 de noviembre de 2015 .
  14. ^ "Cómo instalar Wolfram Language (y Mathematica) en cada Raspberry Pi: blog de Wolfram". Blog.wolfram.com. 21 de noviembre de 2013. Consultado el 5 de noviembre de 2015 .
  15. ^ Sherr, Ian (22 de noviembre de 2013). "Software de Mathematica premium gratuito y económico para Raspberry Pi - CNET". News.cnet.com . Consultado el 5 de noviembre de 2015 .
  16. ^ Daniel AJ Sokolov (22 de noviembre de 2014). "Intels Edison: sistema Pentium en formato de tarjeta SD | aquí en línea". Heise.de . Consultado el 5 de noviembre de 2015 .
  17. ^ "El lenguaje Wolfram pronto se integrará en Unity". Gamasutra. 2014-03-10 . Consultado el 2015-11-05 .
  18. ^ "¿Existe alguna manera de utilizar Wolfram Language en Unity3D?". Wolfram. 2017. Archivado desde el original el 19 de julio de 2017. Consultado el 11 de abril de 2017 .
  19. ^ "FullForm". Documentación de Wolfram Language .
  20. ^ "Bienvenido a Rubi, el Integrador Basado en Reglas". Integración basada en reglas .
  21. ^ McLoone, J (2 de abril de 2019). "Por qué Wolfram Tech no es de código abierto: una docena de razones - Blog de Wolfram".
  22. ^ "codeparser: analiza el código fuente de Wolfram Language como árboles de sintaxis abstracta (AST) o árboles de sintaxis concreta (CST)". GitHub . Wolfram Research, Inc.
  23. ^ "Materiales abiertos de Wolfram: código abierto, fuente abierta, datos abiertos, recursos abiertos". www.wolfram.com .
  24. ^ Simon. "¿Existe una implementación de código abierto de Mathematica-the-language?". Mathematica Stack Exchange .
  25. ^ Wolfram, Steven (21 de mayo de 2019). "Lanzamiento hoy: Wolfram Engine gratuito para desarrolladores: escritos de Stephen Wolfram".
  26. ^ "Wolfram Engine gratuito para desarrolladores". www.wolfram.com . Consultado el 19 de enero de 2021 .
  27. ^ Kastrenakes, Jacob (14 de noviembre de 2013). «Wolfram anuncia su proyecto más importante: un lenguaje de programación que modela el mundo». The Verge . Consultado el 21 de septiembre de 2023 .
  28. ^ "Algo muy grande está por llegar: nuestro proyecto tecnológico más importante hasta ahora: escritos de Stephen Wolfram". writings.stephenwolfram.com . 2013-11-13 . Consultado el 2023-09-21 .

Enlaces externos