Friday, April 07, 2006

Syntax

According to Wikipedia:

[A particular] meaning of the term syntax has been evolved in the field of computer science, especially in the subfield of programming languages, where the set of allowed reserved words and their parameters and the correct word order in the expression is called the syntax of language. This application of the word can apply to natural languages, as well, as through Latin's inflectional case endings.

In computer languages, syntax can be extremely rigid, as in the case of most assembler languages, or less rigid, as in languages that make use of "keyword" parameters that can be stated in any order. The syntax of expressions can be specified with parse trees. The analysis of programming language syntax usually entails the transformation of a linear sequence of tokens (a token is akin to an individual word or punctuation mark in a natural language) into a hierarchical syntax tree (abstract syntax trees are one convenient form of syntax tree).

Semantics

According to Wikipedia:

In the main, semantics (from the Greek and in greek letters "σημαντικός" or in latin letters semantikós, or "significant meaning," derived from sema, sign) is the study of meaning, in some sense of that term. It should not be confused with the general Semantics of Alfred Korzybski, a somewhat different discipline. Semantics is often opposed to syntax, in which case semantics pertains to what something means, while syntax pertains to the formal structure/patterns in which something is expressed (for example written or spoken).

Semantics is distinguished from ontology (study of existence) in being about the use of a word more than the nature of the entity referenced by the word. This is reflected in the argument, "That's only semantics," when someone tries to draw conclusions about what is true about the world based on what is true about a word.

Scalar

According to Wikipedia:

In mathematics, physics, and computing, a scalar is a quantity usually characterized by a single numeric value or not involving the concept of direction. The term is often used in contrast to entities that are "composites" of many values, like vector, matrix, tensor, sequence, etc.. The first recorded usage of the term was by W. R. Hamilton in 1846.
...
In computing, a scalar is a variable or field that can hold only one value at a time; as opposed to composite variables like array, list, record, etc.. In some contexts, a scalar value may be understood to be numeric. A scalar data type is the type of a scalar variable. For example, char, int, float, and double are the most common scalar data types in the C programming language.

Tuesday, March 28, 2006

Orthogonal

This summary abstracted from a more complete definition in Wikipedia:

In mathematics, orthogonal is synonymous with perpendicular when used as a simple adjective that is not part of any longer phrase with a standard definition. It means at right angles. It comes from the Greek orthos, meaning "straight", used by Euclid to mean right; and gonia, meaning angle. Two streets that cross each other at a right angle are orthogonal to one another.
...
The word normal is sometimes also used in place of orthogonal. However, normal can also refer to vectors of unit length. In particular, orthonormal refers to a collection of vectors that are both orthogonal and of unit length. So the orthogonal usage of the term normal is often avoided.
...
In computer science, an instruction set is said to be orthogonal if any instruction can use any register in any addressing mode. This terminology results from considering an instruction as a vector whose components are the instruction fields. One field identifies the registers to be operated upon, and another specifies the addressing mode. An orthogonal instruction set uniquely encodes all combinations of registers and addressing modes.

Orthogonality is a system design property which enables the making of complex designs feasible and compact. The aim of an orthogonal design is to guarantee that operations within one of its components neither create nor propagate side-effects to other components. For example a car has orthogonal components and controls, e.g. accelerating the vehicle does not influence anything else but the components involved in the acceleration. On the other hand, a car with non-orthogonal design might have, for example, the acceleration influencing the radio tuning or the display of time. Consequently, this usage is seen to be derived from the use of orthogonal in mathematics; one may project a vector onto a subspace by projecting it onto each member of a set of basis vectors separately and adding the projections if and only if the basis vectors are mutually orthogonal.

Orthogonality guarantees that modifying the technical effect produced by a component of a system neither creates nor propagates side effects to other components of the system. The emergent behaviour of a system consisting of components should be controlled strictly by formal definitions of its logic and not by side effects resulting from poor integration, i.e. non-orthogonal design of modules and interfaces. Orthogonality reduces the test and development time, because it's easier to verify designs that neither cause side effects nor depend on them.

Thursday, March 10, 2005

Ontology

According to T.R. Gruber in "A Translation Approach to Portable Ontology Specifications":

An ontology is a formal, explicit specification of a shared conceptualization. 'Conceptualization' refers to an abstract model of phenomena in the world by having identified the relevant concepts of those phenomena. 'Explicit' means that the type of concepts used, and the constraints on their use are explicitly defined. 'Formal' refers to the fact that the ontology should be machine readable. 'Shared' reflects that ontology should capture consensual knowledge accepted by the communities.

According to the IAWiki Glossary of Terms:

Ontologies resemble faceted taxonomies but use richer semantic relationships among terms and attributes, as well as strict rules about how to specify terms and relationships. Because ontologies do more than just control a vocabulary, they are thought of as knowledge representation. The oft-quoted definition of ontology is the specification of one's conceptualization of a knowledge domain.

Friday, February 25, 2005

Closures

According to word iQ:

In programming languages, a closure is an abstraction representing a function, plus the lexical environment (see static scoping) in which the function was created.

Closures are typically implemented with a special data structure that contains a pointer to the function code, plus a representation of the function's lexical environment (ie, the set of available variables and their values) at the time when the closure was created.

Closures typically appear in languages that allow functions to be "first-class" values --- in other words, such languages allow functions to be passed as arguments, returned from function calls, bound to variable names, etc, just like simpler types such as strings and integers.

Dataflow

According to The Hyperdictionary:

A data flow architecture or language performs a computation when all the operands are available. Data flow is one kind of data driven architecture, the other is demand driven. It is a technique for specifying parallel computation at a fine-grain level, usually in the form of two-dimensional graphs in which instructions that are available for concurrent execution are written alongside each other while those that must be executed in sequence are written one under the other. Data dependencies between instructions are indicated by directed arcs. Instructions do not reference memory since the data dependence arcs allow data to be transmitted directly from the producing instructions to the consuming one.

According to Real Dictionary:

The order of execution in a {data driven} language is determined solely by the data dependencies. For example given the equations

1) X = A + B
2) B = 2 + 2
3) A = 3 + 4

a data-flow analysis would find that 2 and 3 must be evaluated before 1. Since there are no data dependencies betwen 2 and 3 they may be evaluated in any order including in parallel. This technique is implemented in {hardware} in some {pipelined} processors with multiple {functional units}. It allows instructions to be executed as soon as their inputs are available independent of the orginal program order.

Streams

According to The Free Dictionary:

An abstraction referring to any flow of data from a source (or sender, producer) to a single sink (or receiver, consumer). A stream usually flows through a channel of some kind, as opposed to packets which may be addressed and routed independently, possibly to multiple recipients. Streams usually require some mechanism for establishing a channel or a "connection" between the sender and receiver.

Continuations

According to Wikipedia:

"In computing, a continuation is a representation of an execution point (for example, the instruction pointer and stack frame). Many languages have constructs that allow a programmer to obtain a pointer to a continuation, and then to resume execution using the pointer at a later point in time. This technique has been used in functional programming, imperative programming, and message passing programming."

The most popular use of continuations today is in the implementation of exception handling.

Functions

According to Eric Weisstein et al at Mathworld:

A function is a relation that uniquely associates members of one set with members of another set. More formally, a function from A to B is an object f such that every a\∈A is uniquely associated with an object . A function is therefore a many-to-one (or sometimes one-to-one) relation. The set A of values at which a function is defined is called its domain, while the set B of values that the function can produce is called its range. The term "map" is synonymous with function.

Unfortunately, the term "function" is also used to refer to relations that map single points in the domain to possibly multiple points in the range. These "functions" are called multivalued functions (or multiple-valued functions), and arise prominently in the theory of complex functions, where the presence of multiple values engenders the use of so-called branch cuts.

Elementary Functions

According to Eric Weisstein et al at Mathworld:

A function built up of a finite combination of constant functions, field operations (addition, multiplication, division, and root extractions--the elementary operations)--and algebraic, exponential, and logarithmic functions and their inverses under repeated compositions (Shanks 1993, p. 145; Chow 1999). Among the simplest elementary functions are the logarithm, exponential function (including the hyperbolic functions), power function, and trigonometric functions.

Elementary Operations

According to Eric Weisstein et al at Mathworld:

One of the operations of addition, subtraction, multiplication, division, and integer (or rational) root extraction.

Algebraic Functions

According to Eric Weisstein et al at Mathworld:

A function which can be constructed using only a finite number of elementary operations together with the inverses of functions capable of being so constructed. Nonalgebraic functions are called transcendental functions.

Transcendental Functions

According to Eric Weisstein et al at Mathworld:

A function which is not an algebraic function. In other words, a function which "transcends," i.e., cannot be expressed in terms of, algebra. Examples of transcendental functions include the exponential function, the trigonometric functions, and the inverses functions of both.