# Wolfram (linguagem de programação)

A Wolfram Language (/ˈwʊlfrəm//ˈwʊlfrəm/ WUUL-frəm-frəm) é uma linguagem de programação multiparadigma geral proprietária de alto nível desenvolvida pela Wolfram Research, que serve como a principal linguagem de interface do Mathematica.
Foi concebida para ser o mais abrangente possível, com ênfase em computação simbólica, programação funcional e programação baseada em regras. É construída de modo a representar estruturas e dados arbitrários.
A linguagem é bastante extensa, abrangendo vários domínios, muitos deles especializados. Ela inclui, por exemplo, funções integradas para a geração e execução de máquinas de Turing, a criação de gráficos e áudio, a análise de modelos 3D e a resolução de equações diferenciais.

## História

A Wolfram Language fez parte da versão inicial do Mathematica em 1988.
Aspectos simbólicos do engine fazem dele um sistema de álgebra computacional. A linguagem pode realizar integração, diferenciação, manipulações de matrizes e resolver equações diferenciais usando um conjunto de regras. Além disso, a versão inicial introduziu o modelo de notebook e a capacidade de incorporar som e imagens, conforme patente de Theodore Gray .
A Wolfram também adicionou recursos para tarefas mais complexas, como modelagem 3D. Um nome foi finalmente adotado para a linguagem em 2013, quando a Wolfram Research decidiu tornar uma versão do mecanismo de linguagem gratuita para usuários do Raspberry Pi, e eles precisavam encontrar um nome para ela. Foi incluída no pacote de software recomendado que a Raspberry Pi Foundation fornece para iniciantes, o que causou alguma polêmica devido à natureza proprietária da Wolfram Language. Em 2019, foi adicionado um link para tornar as bibliotecas Wolfram compatíveis com o game engine Unity, dando aos desenvolvedores de jogos acesso às funções de alto nível da linguagem.

## Sintaxe

A sintaxe da Wolfram Language é globalmente semelhante à expressão M do LISP dos anos 1960, com suporte para operadores infixos e chamadas de função de "notação de função".

## Fundamentos

A Wolfram Language escreve expressões matemáticas básicas usando operadores infixos.
Chamadas de função são indicadas com colchetes:
Listas são delimitadas por chaves:

## Syntactic sugar

A linguagem pode se desviar do paradigma de M-expression quando uma alternativa mais amigável para humanos de mostrar uma expressão está disponível:
* Várias regras de formatação são usadas nesta linguagem, incluindo TeXForm para expressões em formato tipográfico e InputForm para entrada de linguagem.
* Funções também podem ser aplicadas usando a expressão de prefixo @ e a expressão de sufixo //.
* Derivadas podem ser denotadas com um apóstrofo '.
* Os operadores infixos em si são considerados "açúcar sintático" para o sistema de notação de função.
Um formatador FullForm desmembra a entrada:

## Programação funcional

O Currying é suportado

## Correspondência de padrões

As funções na Linguagem Wolfram são efetivamente um caso de padrões simples para substituição:
O := é um "operador SetDelayed", para que x não seja imediatamente procurado. x_ é 'syntax sugar' de Pattern[x, Blank], ou seja, "campo em branco" para qualquer valor substituir x no restante da avaliação.
Uma iteração da classificação em bolhas é expressa como:
O operador /; é "condição", para que a regra se aplique apenas quando y > z. Os três sublinhados (___) são uma sintaxe para BlankNullSequence, representando uma sequência que pode ser nula.
O operador ReplaceRepeated //. pode ser usado para aplicar essa regra repetidamente até que nenhuma mudança adicional ocorra:
O sistema de correspondência de padrões também facilita a criação de integração e derivação baseadas em regras. Os trechos a seguir são do pacote de regras Rubi:

## Implementações

A implementação oficial e de referência da Wolfram Language está presente no Mathematica e nos serviços online associados. Esses são de código fechado. No entanto, a Wolfram Research lançou um analisador em C++ da linguagem sob a Licença MIT de código aberto. O livro de referência é de acesso aberto.
Ao longo dos mais de três décadas de existência da Wolfram Language, várias implementações de terceiros de código aberto também foram desenvolvidas. O MockMMA de Richard Fateman, de 1991, é digno de nota na história, tanto por ser a reimplementação mais antiga quanto por ter recebido uma notificação 'cessar e desistir' da Wolfram. Implementações modernas que ainda estão em manutenção até abril de 2020 incluem Symja em Java, expreduce em Golang e o Mathics baseado no SymPy. Essas implementações concentram-se na linguagem principal e no sistema de álgebra computacional que ela implica, não nas características online do "banco de conhecimento" da Wolfram.
Em 2019, a Wolfram Research lançou o Wolfram Engine como freeware, destinado a ser usado como uma biblioteca de programação em software não comercial.