Notes aux experts en langage de programmation
Origines
Wolfram Language représente une évolution du langage symbolique développé pour Mathematica pendant plus de trois décennies. Mais il y a beaucoup plus—il ajoute de la connaissance, de la représentation de connaissance et des capacités en langage naturel de Wolfram|Alpha, aussi bien qu'un nouveau méchanisme de déploiement symbolique créé en Wolfram Cloud.
Fondements théoriques
Depuis ses débuts, Wolfram Language a été conçu comme un langage général pour le calcul, basé sur des idées fondamentales sur les systèmes symboliques.
Première application géniale : Maths
Les concepts de Wolfram Language ont été appliqués pour la première fois aux domaines très demandés de calcul mathématique dans Mathematica, avec un succès remarquable pendant plus de trois décennies.
Des millions d'utilisateurs avant même d'être lancé
Dans ses précurseurs dans Mathematica, Wolfram Language comptait déjà plus d'un million d'utilisateurs pendant trois décennies, incluant les plus grands chercheurs du monde, d'innombrables étudiants et bien autres.
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 disponible (tout est symbolique et de précision infinie, etc.).
Le concept de programmation dans les notebooks
Présenté pour la première fois en Mathematica il y a plus de trois décennies, Wolfram Language vous permet de programmer dans les documents notebook interactifs combinant l'exécution de code avec la sortie et la composition typographique de qualité éditoriale.
Apprenez l'importance de la programmation symbolique
Structures de données, fragments de code, graphiques, documents, interfaces ... Au cours de ces trois dernières décennies qu'il a été en incubation, Wolfram Language a découvert de plus en plus de moyens pour appliquer la programmation symbolique.
Wolfram|Alpha : connexion au monde réel
Wolfram|Alpha a rendu calculable une vaste connaissance du monde réel, de sorte qu'elle puisse être intégrée en Wolfram Language pour faire parler le langage non seulement sur les constructions formelles, mais aussi sur le monde réel.
Des milliards de lignes de code
Des milliards de lignes de code de ce qui est maintenant le code Wolfram Language sont à l'intérieur des systèmes de logiciels à travers le monde, avec des dizaines à l'intérieur de Wolfram|Alpha et Wolfram Language lui-même.
Un langage pour tous les temps
Wolfram Language est assez clair et a été en mesure de maintenir sa compatibilité depuis ses débuts dans la version de Mathematica 1.0 de 1988.
En avance sur son temps pour plus de trois décennies
Wolfram Language est à l'origine de nombreuses nouvelles idées de programmation. Certaines ont influencé les langages développés au cours de ces trois dernières décennies, mais beaucoup sont présentes seulement en Wolfram Language.
Conforme aux buzzword
Wolfram Language est à la fois nouveau et connu : doté d'une longue histoire, mais rempli de nouvelles idées. Il a beaucoup d'attributs qui correspondent bien aux buzzword modernes des langages de programmation communs, ainsi que de nombreux attributs qui ne sont pas familiers à d'autres langages de programmation.
Wolfram Language est...
(entre autres)
Basé dans la connaissance
(Notre propre buzzword) Comme l'un des principes fondamentaux, Wolfram Language contient une large connaissance intégrée sur les algorithmes et sur le monde.
Symbolique
En Wolfram Language, tout est symbolique incluant code, données, images, documents, interfaces, programmes, etc.
Interactif
Le code de Wolfram Language peut être exécuté de façon interactive comme un dialogue REPL à base de documents entre l'utilisateur et le système.
Fonctionnel
En raison de son caractère symbolique, Wolfram Language supporte une forme de programmation fonctionnelle étendue basée sur des transformations généralisées.
Haut niveau
Wolfram Language, avec son caractère et le principe de l'automatisation maximale basée sur la connaissance, pourrait bien être le langage de niveau plus élevé du monde.
Déclaratif
Wolfram Language incorpore une forme extrème du concept déclaratif, avec des superfonctions hautement automatisées pour l'accomplissement des objectifs spécifiques de haut niveau.
"Batteries inclues"
Il est plus comme "centrale d'énergie incluse": Wolfram Language a une vaste gamme d'algorithmes et de connaissances intégrés, tous mis en place 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é aux motifs
Le filtrage par motif sophistiqué des expressions symboliques est une caractéristique essentielle de Wolfram Language.
Métaprogrammable
En raison de son caractère symbolique, Wolfram Language peut manipuler immédiatement du code non seulement avec macros mais aussi avec une puissance complète du langage.
Concis
Avec toutes ses fonctionnalités intégrées et primitifs minutieusement choisis, les programmes en Wolfram Language sont généralement très courts par rapport à ce qu'ils accomplissent.
Basé dans les expressions
En Wolfram Language tout (données, code, etc.) est représenté comme une expression symbolique en forme d'arbre contenant une valeur.
Réflectif
Le caractère symbolique de Wolfram Language facilite une introspection complète.
Polymorphique
Spécifier des fonctions en utilisant le filtrage par motif permet à Wolfram Language d'exprimer immédiatement un comportement profondément polymorphe.
Interprété de façon dynamique
En Wolfram Language, tout est expression symbolique, et chaque expression symbolique a une tête qui définit automatiquement son comportement.
Applicatif
En Wolfram Language, les programmes peuvent être considérés comme des séquences de transformations symboliques aux expressions symboliques immuables.
Concaténatif
En raison du fait que Wolfram Language est symbolique, les programmes peuvent immédiatement être construits comme des enchaînements de parties significatives individuellement.
Compatible avec DRY
La liberté avec laquelle le code peut être factorisé dans le paradigme symbolique fonctionnel de Wolfram Language facilite la programmation de façon «ne vous répétez pas».
Activation de DSL
Le caractère symbolique de Wolfram Language facilite la création de langages spécifiques au domaine au sein du langage et beaucoup d'entre eux sont déjà intégrés (regex, graphiques, interfaces, déploiement, etc.).
Connaissance représentationnelle
Avec sa large connaissance intégrée et sa structure symbolique, Wolfram Language est idéal pour représenter la connaissance y la rendre calculable.
Sémantique
Wolfram Language contient une large représentation intégrée des entités et des constructions du monde réel.
Pour les maths
Wolfram Language a de loin du monde la plus large et la plus profonde couverture de calcul mathématique intégré.
Capable de précision arbitraire
Partout en Wolfram Language, les nombres peuvent avoir toute précision ou longueur.
Symbolique-numérique
Wolfram Language détient le support pour à la fois le calcul symbolique et numérique, et beaucoup de ses algorithmes mélangent ce deux approches.
Capable de faire des requêtes
En Wolfram Language, toutes les données sont représentées par des expressions symboliques qui permettent l'interrogation uniforme en utilisant des constructions fonctionnelles de haut niveau.
Orienté aux objets
Wolfram Language supporte une alternative symbolique puissante à la programmation traditionnelle orientée vers les objets.
Réactif
Wolfram Language implémente la programmation fonctionnelle réactive pour supporter la construction des interfaces utilisateurs dynamiques complexes déclarativement.
Envoi multiple
Le filtrage par motif symbolique de Wolfram Language permet l'envoi immédiat de tout argument d'une fonction ou toute partie d'une expression.
Expressif
La conception minutieuse et les vastes fonctionnalités intégrées de Wolfram Language facilitent l'expression des idées de calcul de façon claire dans le langage.
Lisible
La grande emphase mise sur les noms bien choisies et les structures rend le code de Wolfram hautement lisible.
Centré dans les documents
En Wolfram Language, le code n'est pas bloqué dans le texte ASCII, et peut de préférence être donné dans des notebooks riches.
Instruis
En Wolfram Language, les programmes exécutables peuvent être écrits en tant que des notebooks richement structurés.
Scriptable
Wolfram Language peut être utilisé pour écrire des commandes d'opérations externes dans un vaste éventail d'environnements et de langages.
Langage naturel
Construit sur la même technologie comme Wolfram|Alpha, Wolfram Language permet l'entrée de langage naturel, à la fois comme une partie des programmes et leurs fonctionnalités.
Compilé en JIT
Souvent, Wolfram Language utilise de manière transparente la compilation juste-à-temps pour ses propres machines virtuelles pour optimiser les performances et donner le meilleur des deux opérations interprétées et compilées.
Parallélisable
Wolfram Language a une fonctionnalité intégrée de calcul parallèle, tant pour les machines simples et pour les réseaux potentiellement hétérogènes.
Basé en cloud
Wolfram Language exécute en cloud et supporte beaucoup de formes du calcul basé en cloud aussi bien que l'exécution locale.
Orienté dans le modèle client-serviteur
L'interface interactive de Wolfram Language est faite pour communiquer via le protocole symbolique de WolframLink avec un ou plusieurs kernels de calcul.
Indépendent des plateformes
Wolfram Language est le même sur toutes les plateformes standard, locales et en cloud.
Échangeable à chaud
Puisque Wolfram Language est interprété, et aussi son déploiement symbolique, le code peut être interrogé, débogué et modifié à toute étape dans son exécution.
FFI activé
Wolfram Language a un riche support pour des interfaces de fonction étrangères à tous les niveaux.
Interopérable
Intégré à l'intérieur Wolfram Language est l'habilité d'interagir avec d'autres langages et avec ses données dans des centaines de formats.
Sécurisé
Wolfram Language n'expose pas les constructions de bas niveau tels que les pointeurs et l'allocation de mémoire, de sorte que les grandes classes de bugs soient évitées.
Persistant
Puisque tout en Wolfram Language (code, données, graphiques, interfaces, etc.) est représenté comme une expression symbolique, il peut être sérialisé de façon immédiate pour le stockage permanent.
Permet Monkey Patch
En Wolfram Language, il y a un méchanisme uniforme pour redéfinir le fonctionnement de presque tout.
Immuable
En Wolfram Language, tout est une expression symbolique qui représente sa propre valeur avec seulement des fonctions spécifiques ayant des effets secondaires de la modification des expressions "à la place."
Stable
Wolfram Language est une évolution compatible du langage dans Mathematica, qui a maintenu la rétrocompatibilité presque parfaite pendant plus de trois décennies.