# Mathematica

Wolfram Mathematica est un système logiciel avec des bibliothèques intégrées permettant l'apprentissage automatique, les statistiques, le calcul symbolique, la manipulation de données, l'analyse de réseaux, l'analyse de séries temporelles, le traitement automatique du langage naturel (TALN), l'optimisation, le traçage de fonctions et de divers types de données, la mise en œuvre d'algorithmes, la création d'interfaces utilisateur et l'interface avec des programmes écrits dans d'autres langages de programmation. Il a été conçu par Stephen Wolfram et est développé par Wolfram Research à Champaign, Illinois$^,$.
Le langage Wolfram est le langage de programmation utilisé dans Mathematica. Mathematica 1.0 a été lancé le 23 juin 1988 à Champaign (Illinois) et à Santa Clara (Californie)$^,$$^,$.

## Interface de notebook

Mathematica est divisé en deux parties : le noyau et l'interface. Le noyau interprète les expressions (code Wolfram Language) et renvoie des expressions de résultat, qui peuvent ensuite être affichées par l'interface utilisateur.
Le front-end original, conçu par Theodore Gray en 1988, consiste en une interface de notebook et permet la création et l'édition de documents de notebook qui peuvent contenir du code, du texte brut, des images et des graphiques.
Les alternatives à l'interface Mathematica comprennent Wolfram Workbench, un environnement de développement intégré (IDE) basé sur Eclipse qui a été introduit en 2006. Il fournit des outils de développement de code basés sur des projets pour Mathematica, y compris la gestion des révisions, le débogage, le profilage et les tests.
Il existe également un plugin pour les IDE basés sur IntelliJ IDEA pour travailler avec le code Wolfram Language qui, en plus de la coloration syntaxique, peut analyser et compléter automatiquement les variables locales et les fonctions définies.Le noyau Mathematica comprend également une ligne de commande pour le front-end.
Les autres interfaces comprennent JMath, basé sur GNU Readline et WolframScript qui exécute des programmes Mathematica autonomes (avec des arguments) à partir de la ligne de commande UNIX.
L'extension des fichiers Mathematica est .nb et .m pour les fichiers de configuration.
Mathematica est conçu pour être totalement stable et rétrocompatible avec les versions précédentes.

## Calcul intensif

Les capacités de calcul intensif ont été élargies avec l'introduction des tableaux compacts dans la version 4 (1999) et des matrices creuses (version 5, 2003), ainsi qu'avec l'adoption de la bibliothèque GNU pour l'évaluation de l'arithmétique à haute précision.
La version 5.2 (2005) a ajouté le multi-threading automatique lorsque les calculs sont effectués sur des ordinateurs multi-cœurs. Cette version comprenait des bibliothèques optimisées spécifiques au processeur. En outre, Mathematica est pris en charge par du matériel d'accélération spécialisé tiers tel que ClearSpeed.
En 2002, gridMathematica a été introduit pour permettre le parallélisme au niveau de l'utilisateur sur des clusters hétérogènes et des systèmes multiprocesseurs et en 2008, la technologie de calcul parallèle a été incluse dans toutes les licences Mathematica, y compris la prise en charge de la technologie de grille telle que Windows HPC Server 2008, Windows Server 2003 et Sun Grid.
La prise en charge du processeur graphique CUDA et OpenCL a été ajoutée en 2010.

## Extensions

Depuis la version 13, le langage Wolfram compte 6 051 fonctions et symboles intégrés.Stephen Wolfram a annoncé le lancement du Wolfram Function Repository en juin 2019 pour permettre à la communauté Wolfram de contribuer au langage Wolfram. Au moment où Stephen Wolfram a annoncé la sortie de Mathematica 13, il y avait 2 259 fonctions contribuées en tant que fonctions de ressources.
Outre le référentiel de fonctions Wolfram, il existe un référentiel de données Wolfram contenant des données calculables et un référentiel de réseaux neuronaux Wolfram pour l'apprentissage automatique.
Wolfram Mathematica est à la base du progiciel Combinatorica, qui ajoute au programme des fonctionnalités de mathématiques discrètes dans les domaines de la combinatoire et de la théorie des graphes.

## Connexions avec d'autres applications, langages de programmation et services

La communication avec d'autres applications peut se faire à l'aide d'un protocole appelé Wolfram Symbolic Transfer Protocol (WSTP). Il permet la communication entre le noyau de Mathematica et le front-end et fournit une interface générale entre le noyau et d'autres applications.
Wolfram Research distribue gratuitement un kit de développement permettant de lier des applications écrites en langage de programmation C au noyau Mathematica par le biais du WSTP en utilisant J/Link, un programme Java qui peut demander à Mathematica d'effectuer des calculs. Une fonctionnalité similaire est obtenue avec .NET /Link, mais avec des programmes .NET au lieu de programmes Java.
Les autres langages qui se connectent à Mathematica sont Haskell,AppleScript,Racket, Visual Basic, Python$^,$ et Clojure.
Mathematica prend en charge la génération et l'exécution de modèles Modelica pour la modélisation de systèmes et se connecte à Wolfram System Modeler.Des liens sont également disponibles vers de nombreux logiciels et API tiers.
Mathematica peut également capturer des données en temps réel à partir d'une variété de sourceset peut lire et écrire sur des chaînes de blocs publiques (Bitcoin, Ethereum et ARK).
Il prend en charge l'importation et l'exportation de plus de 220 formats de données, d'images, de vidéos, de sons, de conception assistée par ordinateur (CAO), de systèmes d'information géographique (SIG), de documents et de formats biomédicaux.
En 2019, la prise en charge de la compilation du code Wolfram Language vers LLVM a été ajoutée.
La version 12.3 du langage Wolfram a ajouté la prise en charge d'Arduino.

## Données calculables

Mathematica est également intégré à Wolfram Alpha, un système de questions-réponses en ligne qui fournit des données supplémentaires, dont certaines sont mises à jour en temps réel, aux utilisateurs de Mathematica avec une connexion internet. Les ensembles de données comprennent des données astronomiques, chimiques, géopolitiques, linguistiques, biomédicales, aériennes et météorologiques, ainsi que des données mathématiques (telles que les nœuds et les polyèdres)$^,$.

## Réception

En 1989, Byte a classé Mathematica parmi les lauréats de la catégorie «Distinction» des BYTE Awards, en déclarant que «c’est une autre application Macintosh révolutionnaire... vous permettant d'assimiler l'algèbre et le calcul qui semblaient impossibles à comprendre à partir d'un manuel». Mathematica a été critiqué pour son code source fermé. Wolfram Research affirme que le maintien de Mathematica en code source fermé est essentiel à son modèle d'entreprise et à la continuité du logiciel.