Le texte ne doit pas être écrit en capitales (les noms de famille non plus), ni en gras, ni en italique, ni en « petit »…
Le gras n'est utilisé que pour surligner le titre de l'article dans l'introduction, une seule fois.
L'italique est rarement utilisé : mots en langue étrangère, titres d'œuvres, noms de bateaux, etc.
Les citations ne sont pas en italique mais en corps de texte normal. Elles sont entourées par des guillemets français : « et ».
Les listes à puces sont à éviter, des paragraphes rédigés étant largement préférés. Les tableaux sont à réserver à la présentation de données structurées (résultats, etc.).
Les appels de note de bas de page (petits chiffres en exposant, introduits par l'outil « Source ») sont à placer entre la fin de phrase et le point final[comme ça].
Les liens internes (vers d'autres articles de Wikipédia) sont à choisir avec parcimonie. Créez des liens vers des articles approfondissant le sujet. Les termes génériques sans rapport avec le sujet sont à éviter, ainsi que les répétitions de liens vers un même terme.
Les liens externes sont à placer uniquement dans une section « Liens externes », à la fin de l'article. Ces liens sont à choisir avec parcimonie suivant les règles définies. Si un lien sert de source à l'article, son insertion dans le texte est à faire par les notes de bas de page.
Le langage Wolfram faisait partie de la version initiale de Mathematica en 1988.
Les aspects symboliques du moteur en font un système de calcul formel. Le langage peut exécuter des opérations d'intégration, de différenciation, de manipulation de matrices et résoudre des équations différentielles à l'aide d'un ensemble de règles. La version initiale a également introduit le modèle de notebook et la capacité d'intégrer du son et des images, selon le brevet de Theodore Gray.
Wolfram a également ajouté des fonctionnalités pour des tâches plus complexes, telles que la modélisation 3D.
Un nom a finalement été adopté pour le langage en 2013, lorsque Wolfram Research a décidé de rendre une version du moteur de langage gratuite pour les utilisateurs de Raspberry Pi, et qu'il a fallu lui trouver un nom. Il a été inclus dans le paquet de logiciels recommandé par la Fondation Raspberry Pi pour les débutants, ce qui a suscité une certaine controverse en raison de la nature propriétaire du langage Wolfram. Après la présentation de la carte au CES 2014, des projets de migration du langage Wolfram vers l'Intel Edison ont été annoncés, mais ils n'ont jamais vu le jour.
En 2019, les bibliothèques de Wolfram sont devenues compatibles avec le moteur de jeu Unity, donnant ainsi aux développeurs de jeux un accès aux fonctions de haut niveau du langage.
Principe de base
Le principe de fonctionnement du langage Wolfram repose sur la manipulation d' expressions symboliques de la forme :
Head[arg1, arg2, ...]
où Head, arg1, arg2 ... sont elles-mêmes d'autres expressions ou des symboles génériques telles que des chaînes de caractères, des identificateurs, des nombres ou, lorsque l'environnement de programmation le permet, des images. Ce concept est similaire à celui définissant les S-expressions.
Certaines expressions symboliques sont interprétées comme des règles de transformations d'autres expressions symboliques. Par exemple l'expression Rule[foo, bar] est une règle de transformation qui consiste à remplacer toute occurrence du symbole foo dans une expression par le symbole bar. Le langage associe certaines règles à certains symboles, et permet à l'utilisateur de définir ses propres associations, ce qui procure un mécanisme équivalent à la définition d'une routine ou d'une procédure.
L'application successive de ces règles de transformation constitue le concept unificateur qui sous-tend le paradigme de programmation symbolique du langage[5], le rendant assez proche du lambda calcul ou d'autres langages fonctionnels tels que Lisp. Plus généralement il s’agit d’un système dit de réécriture.
Syntaxe
La syntaxe du langage Wolfram est globalement similaire à l'expression M du LISP des années 1960, avec la prise en charge des opérateurs infixes et des appels de fonction par « notation de fonction ».
Notions de base
Le langage Wolfram écrit des expressions arithmétiques de base à l'aide d'opérateurs infixes.
(* Ceci est un commentaire. *)4+3(* = 7 *)1+2*(3+4)(* = 15 *)(* À noter que le symbole de multiplication peut être omis : 1 + 2 (3 + 4) *)(* Les divisions renvoient des nombres rationnels : *)6/4(* = 3/2 *)
Les appels de fonction sont indiqués entre crochets :
Sin[Pi](* = 0 *)(* La fonction "N" convertit les rationnels en nombres flottants : *)N[3/2](* = 1.5 *)
Le langage peut s'écarter du paradigme de l'expression M lorsqu'il existe une autre façon, plus conviviale, de représenter une expression :
Un certain nombre de règles de mise en forme sont utilisées dans ce langage, notamment TeXForm pour les expressions dactylographiées et InputForm pour les entrées du langage.
Les fonctions peuvent également être appliquées à l'aide de l'expression préfixe @ et de l'expression postfixe //.
Les dérivés peuvent être dénotés par une apostrophe '.
Les opérateurs infixes eux-mêmes sont considérés comme du « sucre » pour le système de notation des fonctions.
Voici une mise en forme de FullForm qui désuggère les données d'entrée :
Les fonctions du langage Wolfram sont en fait un cas de motifs simples de remplacement :
F[x_] := x ^ 0
Le := est un « opérateur SetDelayed », de sorte que le x n'est pas immédiatement recherché. x_ est un sucre syntaxique pour Pattern[x, Blank[]], c'est-à-dire un « blanc » pour toute valeur remplaçant x dans le reste de l'évaluation.
Une itération du tri à bulles s'exprime comme suit :
sortRule := {x__,y,z_,k___} /; y>z -> {x,z,y,k}
L'opérateur / ; est une « condition », de sorte que la règle ne s'applique que si y > z. Les trois caractères de tiret bas sont une syntaxe pour une BlankNullSequence[], pour une séquence qui peut être nulle.
Un opérateur ReplaceRepeated //. peut être utilisé pour appliquer cette règle de manière répétée, jusqu'à ce qu'il n'y ait plus de changement :
{ 9, 5, 3, 1, 2, 4 } //. sortRule
Le système de filtrage par motif permet également de procéder facilement à une intégration et à une dérivation basées sur des règles. Voici des extraits de l'ensemble des règles 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]
Implémentations
L'implémentation officielle et de référence du langage Wolfram se trouve dans Mathematica et les services en ligne associés. Ces derniers ne sont pas accessibles au public. Wolfram Research a toutefois publié un analyseur syntaxique C++ du langage sous la licence MIT en open source. L'ouvrage de référence est en libre accès.
Au cours des trois décennies d'existence du langage Wolfram, un certain nombre d'implémentations tierces en open source ont également été développées. MockMMA de Richard Fateman, datant de 1991, en est un exemple historique, à la fois parce qu'il s'agit de la première réimplémentation et parce qu'elle a fait l'objet d'une demande de cessation et de désistement de la part de Wolfram. Les implémentations modernes encore maintenues en avril 2020 comprennent Symja en Java, Expreduce en Golang et Mathics basé sur SymPy. Ces implémentations se concentrent sur le langage de base et le système de calcul formel qu'il implique, et non sur les fonctionnalités de la « base de connaissances » en ligne de Wolfram.
En 2019, Wolfram Research a publié un logiciel gratuit, appelé Wolfram Engine, destiné à être utilisé comme bibliothèque de programmation dans des logiciels non commerciaux.
Nom du langage
Le langage a été officiellement nommé en juin 2013 et a été utilisé comme back-end pour Mathematica et d'autres technologies Wolfram depuis plus de 30 ans[6],[7].