Information Technology Reference
In-Depth Information
even looking at its argument: true ;
K
=
K
. However, a lazy language still
satises a right zero law:
P
; true = true . So does a non-lazy language, unless
it allows an argument
to raise an exception or jump. In this case the aborting
function does not get the chance to start, so:
E
. Discussion of such
laws is highly relevant to the selection and design of a programming language,
as well as its implementation and optimisation. Future texts on comparative
programming languages will surely exploit the power of algebra to explain the
fundamental principles of the subject.
Fascination with the elegance and expressive power of laws was what inspired
the development of abstract algebra as a branch of modern mathematics. Since
the earliest days, mathematics has been primarily concerned with the concept
of number. Its progress has been marked by the discovery of new and surprising
varieties. Starting with positive integers, even the discovery of zero was a major
advance. Then come negative numbers, fractions, reals, and complex numbers. In
modern times, study of the foundations of mathematics has given a denotational
semantics to each of these dierent kinds of number. Natural numbers are dened
as sets, integers and fractions as pairs, and reals as sequences. Correspondingly
dierent denitions are given for the arithmetic operations that are performed on
the dierent kinds of number. In each case, algebraic laws are proved on the basis
of the denitions. In spite of the fact that the denitions are so dierent, most of
the laws turn out to be the same. It is the sharing of laws that justies the use of
the same arithmetic operator to denote operations with such radically dierent
denitions. The laws have then inspired the development of other interesting
mathematical structures, like quaternions and matrices, for which algebraically
similar operations can be dened. Algebra, among all branches of mathematics,
is the one that takes re-usability as its primary goal.
E
; true =
E
Computing Science makes progress by discovery of new patterns and pa-
radigms of programming. These are embodied in new programming languages,
and subjected to the test of trial implementation and use. The procedural
paradigm was among the earliest, and still has the widest application. Now there
is also a declarative paradigm, which already splits into two major branches, the
logical paradigm which permits backtracking, and the functional paradigm that
does not. The functional paradigm splits into lazy and non-lazy varieties. The
advent of multiprocessors and networking has introduced a new paradigm of
distributed computing, with even more variations. Some of them are based on
sharing of global random access memory, and others on explicit communication.
Communications may be ordered or unordered; they may be global or directed
along channels; and they may be synchronised or buered. In addition to no-
tations traditionally recognised in the community as programming languages,
we should consider the languages used for database queries, spreadsheets, menu
generators, and other complex interfaces that are coming into wide-spread use.
A signicant challenge for programming theory is to bring some order into this
growing range of tools, and develop an understanding to assist in the selection of
an appropriate tool for each purpose, and for using them in combination when
necessary. For purposes of classication, comparison, and combination, both de-
Search WWH ::




Custom Search