Langage contextuelEn informatique théorique, et spécialement en théorie des langages, un langage contextuel (en anglais context-sensitive language) est un langage formel engendré par une grammaire contextuelle. C'est un langage de type 1 dans la hiérarchie de Chomsky. Les langages contextuels sont les langages reconnus par les automates linéairement bornés, c'est-à-dire les machines de Turing dont la mémoire de travail est linéairement bornée en fonction de la taille de l'entrée.
Grammaire contextuelleUne grammaire contextuelle est une grammaire formelle dans laquelle les substitutions d'un symbole non terminal sont soumises à la présence d'un contexte gauche et d'un contexte droit. Elles sont plus générales que les grammaires algébriques. Les langages formels engendrés par les grammaires contextuelles sont les langages contextuels. Ils sont reconnus par les automates linéairement bornés. Les grammaires contextuelles ont été décrites par Noam Chomsky. Ce sont les grammaires de type 1 dans la hiérarchie de Chomsky.
Ad hoc polymorphismIn programming languages, ad hoc polymorphism is a kind of polymorphism in which polymorphic functions can be applied to arguments of different types, because a polymorphic function can denote a number of distinct and potentially heterogeneous implementations depending on the type of argument(s) to which it is applied. When applied to object-oriented or procedural concepts, it is also known as function overloading or operator overloading.
Array programmingIn computer science, array programming refers to solutions that allow the application of operations to an entire set of values at once. Such solutions are commonly used in scientific and engineering settings. Modern programming languages that support array programming (also known as vector or multidimensional languages) have been engineered specifically to generalize operations on scalars to apply transparently to vectors, matrices, and higher-dimensional arrays.
DataflowIn computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture, data flow relates to stream processing or reactive programming. Dataflow computing is a software paradigm based on the idea of representing computations as a directed graph, where nodes are computations and data flow along the edges. Dataflow can also be called stream processing or reactive programming. There have been multiple data-flow/stream processing languages of various forms (see Stream processing).
Analyse numériqueL’analyse numérique est une discipline à l'interface des mathématiques et de l'informatique. Elle s’intéresse tant aux fondements qu’à la mise en pratique des méthodes permettant de résoudre, par des calculs purement numériques, des problèmes d’analyse mathématique. Plus formellement, l’analyse numérique est l’étude des algorithmes permettant de résoudre numériquement par discrétisation les problèmes de mathématiques continues (distinguées des mathématiques discrètes).
Graphe de flot de contrôleEn informatique, un graphe de flot de contrôle (abrégé en GFC, control flow graph ou CFG en anglais) est une représentation sous forme de graphe de tous les chemins qui peuvent être suivis par un programme durant son exécution. Dans un GFC, les sommets du graphe représentent un bloc de base, c'est-à-dire un bout de code d'un seul tenant sans sauts ni cibles de sauts. Les cibles de sauts marquent le début d'un bloc de base, tandis que les sauts en marquent la fin. Les arcs représentent les sauts dans le flot de contrôle.
Vecteur (structure de données)En informatique, un vecteur désigne un conteneur d'éléments ordonnés et accessibles par des indices, dont la taille est dynamique : elle est mise à jour automatiquement lors d'ajouts ou de suppressions d'éléments. On retrouve les vecteurs dans de nombreux langages de programmation, notamment le C++ et le Java. Ils sont alors inclus dans des bibliothèques et l'utilisateur n'a pas besoin d'en programmer un. En langage objet, la classe vecteur est généralement polymorphe, c'est-à-dire qu'il est possible de l'utiliser avec n'importe quel type d'objet.
Fonction elliptique de JacobiEn mathématiques, les fonctions elliptiques de Jacobi sont des fonctions elliptiques d'une grande importance historique. Introduites par Carl Gustav Jakob Jacobi vers 1830, elles ont des applications directes, par exemple dans l'équation du pendule. Elles présentent aussi des analogies avec les fonctions trigonométriques, qui sont mises en valeur par le choix des notations sn et cn, qui rappellent sin et cos. Si les fonctions elliptiques thêta de Weierstrass semblent mieux adaptées aux considérations théoriques, les problèmes physiques pratiques font plus appel aux fonctions de Jacobi.
Polymorphisme génétiqueLe polymorphisme génétique (du grec « poly » plusieurs et « morphê » forme) est la coexistence de plusieurs allèles pour un gène ou locus donné, dans une population animale, végétale, fongique, bactérienne. Il explique qu'une espèce présente des individus aux caractères phénotypiques différents (appelés morphotypes) au sein d'une même population. C'est un des éléments, intraspécifique, de la diversité génétique qui est considéré comme facilitant l'adaptation des populations à leur environnement plus ou moins changeant.
Fonction thêtaEn mathématiques, on appelle fonctions thêta certaines fonctions spéciales d'une ou de plusieurs variables complexes. Elles apparaissent dans plusieurs domaines, comme l'étude des variétés abéliennes, des espaces de modules, et les formes quadratiques. Elles ont aussi des applications à la théorie des solitons. Leurs généralisations en algèbre extérieure apparaissent dans la théorie quantique des champs, plus précisément dans la théorie des cordes et des D-branes.
Stabilité numériqueEn analyse numérique, une branche des mathématiques, la stabilité numérique est une propriété globale d’un algorithme numérique, une qualité nécessaire pour espérer obtenir des résultats ayant du sens. Une définition rigoureuse de la stabilité dépend du contexte. Elle se réfère à la propagation des erreurs au cours des étapes du calcul, à la capacité de l’algorithme de ne pas trop amplifier d’éventuels écarts, à la précision des résultats obtenus. Le concept de stabilité ne se limite pas aux erreurs d’arrondis et à leurs conséquences.