A Wolfram Language (/ˈwʊlfrə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. Wolfram (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. (* Esse é um comentário. *)

4 + 3 (* = 7 *)

1 + 2 * (3 + 4) (* = 15 *) (* Observe que a multiplicação pode ser omitida: 1 + 2 (3 + 4) *)

(* Divisões retornam números racionais: *) 6 / 4 (* = 3/2 *) Chamadas de função são indicadas com colchetes: Sin[Pi] (* = 0 *)

(* Esta é a função para converter números racionais em ponto flutuante: *) N[3 / 2] (* = 1.5 *) Listas são delimitadas por chaves: Oddlist={1,3,5} (* = {1,3,5} *)

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: FullForm[1+2] (* = Plus[1, 2] *)

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: F[x_] := x ^ 0 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: 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]] *) 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: { 9, 5, 3, 1, 2, 4 } //. sortRule (* = ReplaceRepeated[{ 9, 5, 3, 1, 2, 4 }, sortRule] *) (* = {1, 2, 3, 4, 5, 9} *) 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: (* Regra recíproca *) 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]

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.

Ligações externas Documentação para a linguagem Wolfram Wolfram Language

Categoria:Linguagens de programação criadas em 1988 Categoria:Linguagens de programação funcionais Categoria:Plataformas em nuvem