Wolfram Language - Wolfram Language

Wolfram Language
Wolfram Language Logo 2016.svg
Paradigma Multi-paradigma : reescrita de termos , funcional , procedural , array
Projetado por Stephen Wolfram
Desenvolvedor Wolfram Research
Apareceu pela primeira vez 1988 ; 33 anos atrás ( 1988 )
Versão estável
12.2 / 16 de dezembro de 2020 ; 7 meses atrás ( 2020-12-16 )
Disciplina de digitação Dinâmico , forte
SO Plataforma cruzada
Licença Proprietário
Extensões de nome de arquivo .nb, .m, .wl
Local na rede Internet www .wolfram .com / language /
Implementações principais
Mathematica , Wolfram | One , Mathics , Expreduce , MockMMA , WolframAlpha
Influenciado por
Influenciado

O Wolfram Língua ( / w ʊ l f r əm / WUUL -frəm ) é um general linguagem de programação multi-paradigma desenvolvido pela Wolfram Research . Ele enfatiza a computação simbólica , a programação funcional e a programação baseada em regras e pode empregar estruturas e dados arbitrários . É a linguagem de programação do programa de computação simbólica matemática Mathematica .

História

A Wolfram Language fazia parte da versão inicial do Mathematica em 1988.

Aspectos simbólicos do motor o tornam um sistema de álgebra computacional. A linguagem pode realizar integração, diferenciação, manipulação de matrizes e resolver equações diferenciais usando um conjunto de regras. Também em 1988 surgiu o modelo do notebook e a capacidade de incorporar som e imagens, de acordo com a patente de Theodore Gray .

Um front-end online para o idioma, WolframAlpha , foi lançado em 2009. Wolfram implementou este site traduzindo declarações em linguagem natural em consultas em linguagem Wolfram vinculadas ao seu banco de dados. O trabalho que levou ao Wolfram Alpha também significa que a implementação da linguagem pelo Wolfram agora tem acesso integrado a uma base de conhecimento, bem como a funções de processamento de linguagem natural.

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 fazer uma versão do mecanismo de linguagem gratuita para usuários do Raspberry Pi , e eles precisaram encontrar um nome para ela. Ele foi incluído no pacote de software recomendado que a Raspberry Pi Foundation fornece para iniciantes, o que causou alguma polêmica devido à natureza proprietária da linguagem Wolfram . Os planos para portar a linguagem Wolfram para o Intel Edison foram anunciados após a introdução da placa na CES 2014, mas nunca foram lançados. Em 2019, um link foi adicionado para tornar as bibliotecas Wolfram compatíveis com o motor de jogo Unity , dando aos desenvolvedores de jogos acesso às funções de alto nível da linguagem.

Sintaxe

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

Fundamentos

A linguagem Wolfram escreve expressões aritméticas básicas usando operadores infixos .

(* 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 *)

As chamadas de função são indicadas com colchetes:

Sin[Pi]
(* = 0 *)

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

As listas são colocadas entre chaves:

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

Açúcar sintático

A linguagem pode se desviar do paradigma da expressão M quando uma forma alternativa e mais amigável de mostrar uma expressão estiver disponível:

  • Uma série de regras de formatação são usadas neste idioma, incluindo TeXFormpara expressões compostas e InputFormpara entrada de idioma.
  • As funções também podem ser aplicadas usando a expressão de prefixo @e a expressão de pós-fixada //.
  • Os derivados podem ser denotados com um apóstrofo '.
  • Os próprios operadores de infixo são considerados "açúcar" para o sistema de notação de função .

Um FullFormformatador desugars a entrada:

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

Programação funcional

Currying é suportado.

Correspondência de padrões

As funções na linguagem Wolfram são basicamente um caso de padrões simples para substituição:

F[x_] := x ^ 0

O :=é um "operador SetDelayed", de forma que ox não seja procurado imediatamente. x_é a sintaxe para açúcar Pattern[x, Blank[]], ou seja, um "espaço em branco" para qualquer valor para substituir x no resto da avaliação.

Uma iteração de tipo de bolha é 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", de modo que a regra só se aplica quando y>z. Os três sublinhados são uma sintaxe para a BlankNullSequence[], para uma sequência que pode ser nula.

Um //.operador ReplaceRepeated pode ser usado para aplicar esta regra repetidamente, até que nenhuma alteração 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 dá origem facilmente à integração e derivação baseada em regras. A seguir estão trechos do pacote de regras 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]

Implementações

A implementação oficial e de referência da Wolfram Language está no Mathematica e nos serviços online associados. Estes são de código fechado. A Wolfram Research, no entanto, lançou um analisador C ++ da linguagem sob a licença MIT de código aberto . O livro de referência é de acesso aberto .

Em mais de três décadas de existência da linguagem Wolfram, várias implementações de terceiros de código aberto também foram desenvolvidas. O MockMMA de Richard Fateman de 1991 é de nota histórica, tanto por ser a primeira reimplementação quanto por ter recebido um cesse-e-desista de Wolfram. Os modernos ainda mantidos em abril de 2020 incluem Symja em Java , expreduce em Golang e o Mathics baseado em SymPy . Essas implementações enfocam a linguagem central e o sistema de álgebra computacional que isso implica, não nos recursos de "base de conhecimento" online do Wolfram.

Em 2019, a Wolfram Research lançou um freeware Wolfram Engine, para ser usado como uma biblioteca de programação em software não comercial.

Nomeação

O idioma foi oficialmente nomeado em junho de 2013, embora, como backend do sistema de computação Mathematica , esteja em uso de várias formas por mais de 30 anos desde o lançamento inicial do Mathematica.

Veja também

Referências

links externos