Wolfram Language - Wolfram Language

Wolfram Language
Logotipo de Wolfram Language 2016.svg
Paradigma Multi-paradigma : reescritura de términos , funcional , procedimental , matriz
Diseñada por Stephen Wolfram
Desarrollador Investigación Wolfram
Apareció por primera vez 1988 ; Hace 33 años ( 1988 )
Lanzamiento estable
12.2 / 16 de diciembre de 2020 ; hace 7 meses ( 2020-12-16 )
Disciplina de mecanografía Dinámico , fuerte
SO Multiplataforma
Licencia Propiedad
Extensiones de nombre de archivo .nb, .m, .wl
Sitio web www .wolfram .com / language /
Implementaciones importantes
Mathematica , Wolfram | One , Matemáticas , Expreduce , MockMMA , WolframAlpha
Influenciado por
Influenciado

El lenguaje Wolfram ( / w ʊ l f r əm / Wuul -frəm ) es un general lenguaje de programación multi-paradigma desarrollado por Wolfram Research . Enfatiza el cálculo simbólico , la programación funcional y la programación basada en reglas y puede emplear estructuras y datos arbitrarios . Es el lenguaje de programación del programa de cálculo simbólico matemático Mathematica .

Historia

Wolfram Language fue parte de la versión inicial de Mathematica en 1988.

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 .

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 lenguaje Wolfram que se vinculan a 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 también agregó funciones para tareas más complejas, como el modelado 3D.

Finalmente se adoptó un nombre para el lenguaje en 2013, cuando Wolfram Research decidió hacer una versión del motor de lenguaje gratuita para los usuarios de Raspberry Pi , y necesitaban encontrar un nombre para él. 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 . Los planes para trasladar el lenguaje Wolfram a Intel Edison se anunciaron después de la presentación de la placa en CES 2014, pero nunca se lanzaron. En 2019, se agregó un enlace para hacer que las bibliotecas de Wolfram sean compatibles con el motor de juego de Unity , lo que brinda a los desarrolladores de juegos acceso a las funciones de alto nivel del lenguaje.

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 .

(* This is a comment. *)

4 + 3
(* = 7 *)

1 + 2 * (3 + 4)
(* = 15 *)
(* Note that Multiplication can be omitted: 1 + 2 (3 + 4) *)

(* Divisions return rational numbers: *)
3 / 2
(* = 3/2 *)

Las llamadas a funciones se indican con corchetes:

Sin[Pi]
(* = 0 *)

(* This is the function to convert rationals to floating point: *)
N[3 / 2]
(* = 1.5 *)

Las listas se incluyen entre corchetes:

Oddlist={1,3,5}
(* = {1,3,5} *)

Azúcar de sintaxis

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 TeXFormexpresiones tipográficas y la InputFormentrada de lenguaje.
  • Las funciones también se pueden aplicar usando 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 FullFormformateador desazúcar la entrada:

FullForm[1+2]
(* = Plus[1, 2] *)

Programación funcional

Se admite el curry .

La coincidencia de patrones

Las funciones en Wolfram Language son básicamente un caso de patrones simples para reemplazo:

F[x_] := x ^ 0

El :=es un "operador SetDelayed", por lo que la x no se busca 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 clasificación de burbujas 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[]]], Greater[y, z]], List[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:

(* Reciprocal rule *)
Int[1/x_,x_Symbol] :=
  Log[x];
(* Power rule *)
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. Wolfram Research, sin embargo, ha lanzado un analizador sintáctico C ++ del lenguaje bajo la licencia MIT de código abierto . El libro de referencia es de acceso abierto .

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, tanto por ser la reimplementación más temprana como por haber recibido un cese y desistimiento de Wolfram. Los modernos que aún se mantienen a partir de abril de 2020 incluyen Symja en Java , expreduce en Golang y Mathics basados ​​en SymPy . 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, Wolfram Research lanzó un software gratuito Wolfram Engine, que se utilizará como biblioteca de programación en software no comercial.

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.

Ver también

Referencias

enlaces externos