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 [1] de alto nível [2] desenvolvida pela Wolfram Research, que serve como a principal linguagem de interface do Mathematica.

Wolfram Language
Paradigma Multiparadigma: sistema de redução, funcional, procedural, multidimensional
Última versão Janeiro de 2024
Criado por Stephen Wolfram / Wolfram Research
Estilo de tipagem Dinâmico, forte
Página oficial https://www.wolfram.com/language/

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.[3] É construída de modo a representar estruturas e dados arbitrários.[3]

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. [4]

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 . [5]

A Wolfram também adicionou recursos para tarefas mais complexas, como modelagem 3D. [6] 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. [7] 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. [8] 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. [9] [10]

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.

Referências

  1. «Wolfram Open Code, Open Source, Open Data, Open Resources». www.wolfram.com (em inglês). Consultado em 3 de fevereiro de 2023
  2. «Notes for Programming Language Experts about Wolfram Language». Wolfram.com. Consultado em 5 de novembro de 2015
  3. What Should We Call the Language of Mathematica?
  4. Wolfram (1988).
  5. Hayes, Brian (1 de janeiro de 1990). «Thoughts on Mathematica» (PDF). Pixel
  6. «Wolfram Language & System Documentation Center». Reference.wolfram.com. Consultado em 5 de novembro de 2015
  7. «Putting the Wolfram Language (and Mathematica) on Every Raspberry Pi—Wolfram Blog». Blog.wolfram.com. Consultado em 5 de novembro de 2015
  8. Sherr, Ian (22 de novembro de 2013). «Premium Mathematica software free on budget Raspberry Pi - CNET». News.cnet.com. Consultado em 5 de novembro de 2015
  9. «The Wolfram Language will soon be integrated into Unity». Gamasutra. 10 de março de 2014. Consultado em 5 de novembro de 2015
  10. «Is there a way to use Wolfram Language in Unity3D?». Wolfram. 2017. Consultado em 11 April 2017. Arquivado do original em 19 July 2017 Verifique data em: |acessodata=, |arquivodata= (ajuda)

Ligações externas

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.