Aktuelle Änderungen Printable View Änderungen Bearbeiten
AppLauncher > SmartPointer > SnakesAndRubies > WebApplications > SoftwareArcheology > SoftwareEntwicklung > SoftwareDevelopment > SpielzeugAusBambus > Spyce > Stack > Heap > StatementsAndExpressions > StaticVsDynamicTypingArguments > StevenLevy > StoredProcedures > StructuredQueryLanguage > SymbolicProgrammingClear TrailSymbol manipulation is like working with words and sentences.
Atoms and lists collectively are called symbolic expressions, or more succinctly, expressions.
A symbol-manipulation program uses symbolic expressions to remember and work with data and procedures, just as people use pencil, paper, and human language to remember and work with data and procedures. A symbol-manipulation program typically has procedures that recognize particular symbolic expressions, tear existing ones apart, and assemble new ones.
There are too many programming languages. Fortunately, however, only a few are for symbol manipulation, and of these Lisp is the most used. After Lisp is understood, most of the other symbol-manipulation languages are easy to learn.
The idea that programmers should expresss their ideas in familiar mathematical notation, and the computer should be the one to translate these expressions into assembly language, was a radical innovation. It made FORTRAN a powerful numerical computing language. McCarthy wanted to build an equally powerful language for symbolic computing.
Symbolic programming languages support high level programming by emphasizing on logic and abstraction: control is embedded in the language implementation model, and is transparent to the programmer. The code developed in symbolic programming languages such as Lisp and Prolog are very expressive, concise, easy to comprehend, and thus easy to maintain.
With the object-oriented programming approach to software design now widely adopted, the world seems ready for another, even more dramatic change: symbolic programming.
one could represent an entire calculation by an algebraic formula and, furthermore, one could generate new formulas by following certain rules.
In Mathematica, for example, the generalization of a formula is a tree or expression which, when written out linearly, is of the form f[e1,...,en] where each ei is itself an expression.
When you solve a differential equation using symbolic programming, you can give input just as on paper, without manual reduction to "computer friendly" form. Then you can get not only numerical results, but also closed form solutions, perhaps including parameters that can be further manipulated, that is, optimized, solved for, and so on.
Computers can manipulate algebraic formulas if they are represented by syntax trees. Expressions can be named, derivatives taken, theorems defined, expressions build, expressions analyzed and equations solved. Formula manipulation is performed by tree traversal and transformation. Memory requirements may be high.
A symbol is a visible sign of an invisible microcosm, a node in an information web. Symbols form the real stuff of a language with variety provided by differing interpretations. For instance variables, procedures, types, constants, literals, and functions are all symbols. Literals are symbolic constants and expressions, preventing "mystery" numbers. Symbols allow a programmer to re-use other's work without being concerned about implementation. This is a motive behind high-level languages in providing symbolic access to machine operations.