WOLFRAM

Notes pour les experts en langages de programmation

Origines

Wolfram Language est avant tout une évolution du langage symbolique développé pour Mathematica pendant plus de trois décennies. Mais c'est bien plus que cela, puisqu'il ajoute les connaissances, la représentation des connaissances et les capacités du langage naturel de Wolfram|Alpha, ainsi qu'un nouveau mécanisme de déploiement symbolique créé avec Wolfram Cloud.

Bases théoriques

Dès le début, Wolfram Language a été conçu comme un langage général pour le calcul, basé sur des idées fondamentales concernant les systèmes symboliques.

La première application qui fait fureur : les maths

Les concepts de Wolfram Language ont été appliqués pour la première fois au domaine très exigeant du calcul mathématique dans Mathematica, avec un succès remarquable pendant plus de trois décennies.

Des millions d'utilisateurs avant même son lancement

Dans les versions antérieures de Mathematica, Wolfram Language compte des millions d'utilisateurs depuis trois décennies, parmi eux on dénombre les plus grands chercheurs du monde, d'innombrables étudiants et d'autres personnes.

Transcendez le matériel informatique

Depuis ses origines, Wolfram Language a été construit pour respecter les principes, sans être affecté par les limitations du matériel informatique de l'époque (tout est symbolique et de précision infinie, etc.).

Le concept de programmation dans les notebooks

Introduit dans Mathematica il y a plus de trente ans, Wolfram Language vous permet de programmer dans des documents notebook interactifs qui combinent l'exécution du code avec une sortie et une mise en page de qualité éditoriale.

Découvrez l'importance de la programmation symbolique

Structures de données, fragments de code, graphiques, documents, interfaces... Au cours des trois décennies d'incubation, Wolfram Language a découvert de plus en plus de façons d'appliquer la programmation symbolique.

Wolfram|Alpha : l'intégration du monde réel

Wolfram|Alpha a rendu calculables de vastes connaissances du monde réel, de sorte qu'elles ont pu être intégrées dans Wolfram Language pour que le langage ne parle pas seulement de constructions formelles, mais aussi du monde réel.

Des milliards de lignes de code

Des milliards de lignes de code en Wolfram Language se trouvent dans les systèmes logiciels du monde entier, dont des dizaines de millions dans Wolfram|Alpha et dans Wolfram Language lui-même.

Un langage pour l'éternité

Wolfram Language est assez clair et a été en mesure de maintenir sa compatibilité depuis ses origines les plus lointaines dans la version 1.0 de Mathematica datant de 1988.

En avance sur son temps depuis trois décennies

Wolfram Language est à l'origine de nombreuses nouvelles idées de programmation, dont certaines ont influencé les langages développés au cours des trois dernières décennies, mais dont beaucoup ne subsistent que dans Wolfram Language.

Conformité des mots à la mode

Wolfram Language est à la fois nouveau et connu : doté d'une longue histoire, mais rempli de nouvelles idées. Il possède beaucoup d'attributs qui correspondent bien aux mots à la mode des langages de programmation modernes, ainsi que de nombreux attributs qui ne sont pas familiers à d'autres langages de programmation.

Wolfram Language est...

(entre autres)

basé sur la connaissance

(Notre propre mot à la mode) L'un des principes fondamentaux de Wolfram Language est d'intégrer des connaissances approfondies sur les algorithmes et sur le monde.

symbolique

Dans Wolfram Language, tout est une expression symbolique (y compris le code, les données, les images, les documents, les interfaces, les programmes, etc.).

interactif

Le code Wolfram Language peut être exécuté de manière interactive sous la forme d'un dialogue REPL basé sur des documents entre l'utilisateur et le système.

fonctionnel

Grâce à son caractère symbolique, Wolfram Language prend en charge une forme étendue de programmation fonctionnelle basée sur des transformations généralisées.

de haut niveau

Grâce à son caractère basé sur la connaissance et à son principe d'automatisation maximale, Wolfram Language pourrait bien être le langage de plus haut niveau au monde.

déclaratif

Wolfram Language incorpore une forme extrême du concept déclaratif, avec des superfonctions hautement automatisées pour accomplir des objectifs de haut niveau spécifiés.

« inclus avec beaucoup de choses »

Il s'agit plutôt d'un « tas de choses inclus » : Wolfram Language dispose d'un vaste ensemble cohérent d'algorithmes et de connaissances intégrés, qui sont tous conçus pour être immédiatement interopérables.

homoiconique

En raison de son caractère symbolique, la relation code-données est fondamentale en Wolfram Language.

orienté vers les motifs

La recherche sophistiquée de motifs dans les expressions symboliques est une caractéristique essentielle de Wolfram Language.

métaprogrammable

Grâce à son caractère symbolique, Wolfram Language peut immédiatement manipuler le code, non seulement avec des macros, mais aussi avec toute la puissance du langage.

concis

Avec toutes ses fonctionnalités intégrées et ses primitives soigneusement choisies, les programmes de Wolfram Language sont généralement très courts par rapport à ce qu'ils accomplissent.

basé sur des expressions

En Wolfram Language tout (données, code, etc.) est représenté comme une expression symbolique sous forme d'arbre contenant une valeur.

réflexif

Le caractère symbolique de Wolfram Language lui permet d'avoir une introspection complète.

polymorphe

La spécification des fonctions à l'aide de la recherche de motifs permet à Wolfram Language d'exprimer immédiatement un comportement profondément polymorphe.

interprété de façon dynamique

Dans Wolfram Language, tout est une expression symbolique, et chaque expression symbolique a une tête qui définit automatiquement son comportement.

applicatif

Dans Wolfram Language, les programmes peuvent être considérés comme l'application de séquences de transformations symboliques à des expressions symboliques immuables.

concaténatif

Wolfram Language étant symbolique, les programmes peuvent être immédiatement construits comme des concaténations de parties individuellement significatives.

compatible avec DRY

La liberté avec laquelle le code peut être factorisé dans le paradigme symbolique fonctionnel de Wolfram Language permet de programmer facilement en évitant les répétitions.

accessible avec le DSL

Le caractère symbolique de Wolfram Language permet de créer facilement des langages spécifiques à un domaine au sein du langage, et beaucoup sont déjà intégrés (regex, graphiques, interfaces, déploiement, etc.).

adapté à la représentation des connaissances

Grâce à ses vastes connaissances intégrées et à sa structure symbolique, Wolfram Language est parfaitement adapté à la représentation des connaissances et à leur calcul.

sémantique

Wolfram Language dispose d'une large représentation intégrée d'entités et de constructions du monde réel.

adapté pour les mathématiques

Wolfram Language offre de loin la couverture intégrée la plus large et la plus profonde du monde en matière de calcul mathématique.

très précis avec les virgules flottantes

Les nombres peuvent avoir n'importe quelle précision ou longueur dans Wolfram Language.

symbolique et numérique

Wolfram Language prend en charge le calcul symbolique et numérique, et de nombreux algorithmes combinent ces deux approches.

capable de faire des requêtes

Dans Wolfram Language, toutes les données sont représentées par des expressions symboliques qui permettent d'effectuer des requêtes uniformes à l'aide de constructions fonctionnelles de haut niveau.

orienté vers les objets

Wolfram Language est une alternative symbolique puissante à la programmation traditionnelle orientée vers les objets.

réactif

Wolfram Language intègre la programmation fonctionnelle réactive pour prendre en charge la construction d'interfaces utilisateur dynamiques et complexes de manière déclarative.

capable de répartition multiple

La recherche de motifs symboliques dans Wolfram Language permet de traiter immédiatement n'importe quel argument d'une fonction ou n'importe quelle partie d'une expression.

expressif

La conception soignée et les nombreuses fonctionnalités intégrées à Wolfram Language permettent d'exprimer clairement les idées de calcul dans le langage.

lisible

L'accent mis sur des noms et des structures bien choisis rend le code de Wolfram Language très lisible.

centré sur le document

Dans Wolfram Language, le code n'est pas piégé dans du texte ASCII, mais peut être présenté dans des notebooks enrichis.

instruis

Dans Wolfram Language, les programmes exécutables peuvent être écrits sous forme de notebooks très structurés.

utilisable avec des scripts

Wolfram Language peut être utilisé pour écrire des opérations externes dans une variété d'environnements et de langages.

un langage naturel

S'appuyant sur la même technologie que Wolfram|Alpha, Wolfram Language permet de saisir des données en langage naturel, à la fois dans le cadre des programmes et dans leurs fonctionnalités.

compilé en JIT

Wolfram Language utilise souvent de manière transparente la compilation juste à temps sur ses propres machines virtuelles afin d'optimiser les performances et d'offrir le meilleur de l'interprétation et de la compilation.

parallélisable

Wolfram Language intègre des fonctionnalités de calcul parallèle, à la fois pour les machines individuelles et pour les réseaux potentiellement hétérogènes.

basé dans le cloud

Wolfram Language fonctionne dans le cloud et prend en charge de nombreuses formes de calcul basé dans le cloud, ainsi que son exécution au niveau local.

orienté client et serveur

L'interface interactive de Wolfram Language est configurée pour communiquer via le protocole symbolique de transfert de Wolfram (WSTP) avec un ou plusieurs noyaux de calcul.

indépendant de la plateforme

Wolfram Language est le même sur toutes les plateformes informatiques standard, locales et dans le cloud.

échangeable à chaud

Puisque Wolfram Language est interprété et que son déploiement est symbolique, le code peut être interrogé, débogué et modifié à n'importe quel stade de son exécution.

compatible avec FFI

Wolfram Language offre une prise en charge étendue des interfaces de fonctions étrangères fonctionnant à différents niveaux.

interopérable

Wolfram Language permet d'interagir avec d'autres langages et avec des données dans des centaines de formats.

sécurisé

Wolfram Language n'expose pas les constructions de bas niveau telles que les pointeurs et l'allocation de mémoire, ce qui permet d'éviter de nombreuses catégories de bogues.

persistant

Puisque tout ce qui se trouve en Wolfram Language (code, données, graphiques, interfaces, etc.) est représenté sous la forme d'une expression symbolique, il peut être immédiatement sérialisé pour être stocké de manière persistante.

compatible avec Monkey Patch

Wolfram Language dispose d'un mécanisme uniforme pour redéfinir le fonctionnement de presque tout ce qui existe.

immuable

Dans Wolfram Language, tout est une expression symbolique qui représente sa propre valeur. Seules des fonctions spécifiques ont pour effet de modifier les expressions « sur place ».

stable

Wolfram Language est une évolution compatible du langage Mathematica, qui a maintenu une compatibilité ascendante presque parfaite pendant plus de trois décennies.