Macro-définitionEn programmation informatique, une macro-définition ou simplement macro est l'association d'un texte de remplacement à un identificateur, tel que l'identificateur est remplacé par le texte dans tout usage ultérieur. Le plus souvent, on permet également le passage de paramètres syntaxiques. L'usage d'une macro comme instruction est souvent appelée macro-instruction et l'opération de remplacement d'une macro-instruction par sa définition la macro-expansion. Les macros sont donc un moyen de faire de la métaprogrammation.
Covariance and contravariance (computer science)Many programming language type systems support subtyping. For instance, if the type is a subtype of , then an expression of type should be substitutable wherever an expression of type is used. Variance is how subtyping between more complex types relates to subtyping between their components. For example, how should a list of s relate to a list of s? Or how should a function that returns relate to a function that returns ? Depending on the variance of the type constructor, the subtyping relation of the simple types may be either preserved, reversed, or ignored for the respective complex types.
Moteur d'inférenceUn moteur d'inférence (du verbe « inférer » qui signifie « déduire ») est un logiciel (processus informatique) correspondant à un algorithme de simulation des raisonnements déductifs. Un moteur d'inférence permet aux systèmes experts de conduire des raisonnements logiques et de dériver des conclusions à partir d'une base de faits et d'une base de connaissances. Les moteurs d'inférence peuvent implémenter : une logique formelle d'ordre 0 (logique des propositions), d'ordre 0+, d'ordre 1 (logique des prédicats) ou d'ordre 2 avec une gestion d'hypothèses monotone ou non monotone, un chaînage avant, chaînage arrière ou mixte, une complétude déductive ou non.
Functional verificationFunctional verification is the task of verifying that the logic design conforms to specification. Functional verification attempts to answer the question "Does this proposed design do what is intended?" This is complex and takes the majority of time and effort (up to 70% of design and development time) in most large electronic system design projects. Functional verification is a part of more encompassing design verification, which, besides functional verification, considers non-functional aspects like timing, layout and power.
Cyclone (programming language)The Cyclone programming language is intended to be a safe dialect of the C language. Cyclone is designed to avoid buffer overflows and other vulnerabilities that are possible in C programs, without losing the power and convenience of C as a tool for system programming. Cyclone development was started as a joint project of AT&T Labs Research and Greg Morrisett's group at Cornell University in 2001. Version 1.0 was released on May 8, 2006. Cyclone attempts to avoid some of the common pitfalls of C, while still maintaining its look and performance.
Chaînage arrièreLe chaînage arrière ou raisonnement arrière est une méthode d'inférence qui peut être décrite (en termes profanes) comme une manière de travailler en remontant en arrière de l'objectif. Il est utilisé en intelligence artificielle, dans un système expert à base de règles ou encore dans un assistant de preuve. En théorie des jeux, son utilisation dans les sous-jeux pour trouver une solution au jeu est appelée raisonnement rétrograde.