Abstraction
The process of picking out (abstracting) common features of objects and procedures.
A programmer would use abstraction, for example, to note that two functions perform
almost the same task and can be combined into a single function. Abstraction is
one of the most important techniques in software engineering and is closely related
to two other important techniques -- encapsulation and information hiding. All
three techniques are used to reduce complexity. ActiveX
A loosely defined set of technologies developed by Microsoft. ActiveX is an outgrowth
of two other Microsoft technologies called OLE (Object Linking and Embedding)
and COM (Component Object Model). As a moniker, ActiveX can be very confusing
because it applies to a whole set of COM-based technologies. Most people, however,
think only of ActiveX controls, which represent a specific way of implementing
ActiveX technologies. Algorithm
A formula or set of
steps for solving a particular problem. To be an algorithm, a set of rules must
be unambiguous and have a clear stopping point. Algorithms can be expressed in
any language, from natural languages like English or French to programming languages
like FORTRAN. We
use algorithms every day. For example, a recipe for baking a cake is an algorithm.
Most programs, with the exception of some artificial intelligence applications,
consist of algorithms. Inventing elegant algorithms -- algorithms that are simple
and require the fewest steps possible -- is one of the principal challenges in
programming. Alpha
Version An very early version of a software product that may not contain
all of the features that are planned for the final version. Typically, software
goes through two stages of testing before it is considered finished. The first
stage, called alpha testing, is often performed only by users within the organization
developing the software. The second stage, called beta testing , generally involves
a limited number of external users. Base
Address An address that serves as a reference point for other addresses.
For example, a base address could indicate the beginning of a program. The address
of every instruction in the program could then be specified by adding an offset
to the base address. For example, the address of the fifth instruction would be
the base address plus 5. Benchmark
A test used to compare performance of hardware and/or software. Many trade magazines
have developed their own benchmark tests, which they use when reviewing a class
of products. When comparing benchmark results, it is important to know exactly
what the benchmarks are designed to test. A benchmark that tests graphics speed,
for example, may be irrelevant to you if the type of graphical applications you
use are different from those used in the test. Beta
Test A test for a computer product prior to commercial release. Beta testing
is the last stage of testing, and normally involves sending the product to beta
test sites outside the company for real-world exposure. Beta testing is often
precede by a round of testing called alpha testing. Big-Endian
Refers to which bytes are most significant in multi-byte data types. In big-endian
architectures, the leftmost bytes (those with a lower address) are most significant.
In little-endian architectures, the rightmost bytes are most significant. Many
mainframe computers, particularly IBM mainframes, use a big-endian architecture.
Most modern computers, including PCs, use the little-endian system. The PowerPC
system is bi-endian because it can understand both systems. Converting
data between the two systems is sometimes referred to as the NUXI problem. Imagine
the word UNIX stored in two 2-byte words. In a Big-Endian systems, it would be
stored as UNIX. In a little-endian system, it would be stored as NUXI. The
terms big-endian and little-endian are derived from the Lilliputians of Gulliver's
Travels, whose major political issue was whether soft-boiled eggs should be opened
on the big side or the little side. Likewise, the big-/little-endian computer
debate has much more to do with political issues than technological merits. Bloatware
A sarcastic term that refers to software that has lots of features and requires
considerable disk space and RAM. As the cost of RAM and disk storage has decreased,
there has been a growing trend among software developers to disregard the size
of applications. Some people refer to this trend as creeping featuritis. If creeping
featuritis is the symptom, bloatware is the disease. Bomb
To fail. The term bomb usually refers to a program hanging or ending prematurely.
Note that bombing is usually less serious than crashing, because bombing refers
to a single program, whereas crashing refers to the entire system. The two terms,
however, are not always used consistently. The
Apple Macintosh computer actually has a bomb message that sometimes appears just
before the system crashes. BPDU
Acronym for bridge protocol data unit. BPDUs are data messages that are exchanged
across the switches within an extended LAN that uses a spanning tree protocol
topology. BPDU packets contain information on ports, addresses, priorities and
costs and ensure that the data ends up where it was intended to go. BPDU messages
are exchanged across bridges to detect loops in a network topology. The loops
are then removed by shutting down selected bridge interfaces and placing redundant
switch ports in a backup, or blocked, state. Brute
Force Refers to a programming style that does not include any shortcuts
to improve performance, but instead relies on sheer computing power to try all
possibilities until the solution to a problem is found. A classic example is the
traveling salesman problem (TSP). Suppose a salesman needs to visit 10 cities
across the country. How does one determine the order in which cities should be
visited such that the total distance traveled is minimized? The brute force solution
is simply to calculate the total distance for every possible route and then select
the shortest one. This is not particularly efficient because it is possible to
eliminate many possible routes through clever algorithms. Although
brute force programming is not particularly elegant, it does have a legitimate
place in software engineering. Since brute force methods always return the correct
result -- albeit slowly -- they are useful for testing the accuracy of faster
algorithms. In addition, sometimes a particular problem can be solved so quickly
with a brute force method that it doesn't make sense to waste time devising a
more elegant solution. Bubble
Sort A simple but popular sorting algorithm. Bubble sorting is used frequently
as a programming exercise because it is relatively easy to understand. It is not,
however, particularly efficient. Other sorting algorithms, such as A href="heap.sort.html">heap
sorts, merge sorts and quicksorts, are used more often in real applications. Bug
An error or defect in software or hardware that causes a program to malfunction.
According to folklore, the first computer bug was an actual bug. Discovered by
Lieutenant Grace Hopper in 1945 at Harvard, a moth trapped between two electrical
relays of the Mark II Aiken Relay Calculator caused the whole machine to shut
down. Bytecode
The compiled format for Java programs. Once a Java program has been converted
to bytecode, it can be transferred across a network and executed by Java Virtual
Machine (VM). Bytecode files generally have a .class extension. Chad
Confetti-like pieces of paper formed from punch cards or paper tapes. May have
been derived from the word Chadless keypunch, which did not create the confetti-like
substance; therefore, it was assumed the stuff created must then be called chad. U.S.
Navy teletype machines produced chad from paper tape since before the Korean War.
Chad was somewhat of a nuisance because it always got into sailors' hair, clothes,
and shoes. On occasion, though, they would throw chad parties for departing sailors
in which they would cover their shipmates in chad. What
seems to be jargon may in fact be considered mainstream because it's been reported
that the word chad was used (1993) in the directions for a card-based voting machine
in California. Choke
Packet A specialized packet that is used for flow control along a network.
A router detects congestion by measuring the percentage of buffers in use, line
utilization and average queue lengths. When it detects congestion, it sends choke
packets across the network to all the data sources associated with the congestion.
The sources respond by reducing the amount of data they are sending. CICS
Short for Customer
Information Control System, a TP monitor from IBM that was originally developed
to provide transaction processing for IBM mainframes. It controls the interaction
between applications and users and lets programmers develop screen displays without
detailed knowledge of the terminals being used. CICS
is also available on non-mainframe platforms including the RS/6000, AS/400 and
OS/2 -based PCs. Code
(1) A set of symbols for representing something. For example, most computers use
ASCII codes to represent characters. (2)
Written computer instructions. The term code is somewhat colloquial. For example,
a programmer might say: "I wrote a lot of code this morning" or "There's
one piece of code that doesn't work." Code
can appear in a variety of forms. The code that a programmer writes is called
source code. After it has been compiled, it is called object code. Code that is
ready to run is called executable code or machine code. Constant
In programming, a constant is a value that never changes. The other type of values
that programs use is variables, symbols that can represent different values throughout
the course of a program. Constants
are also used in spreadsheet applications to place non-changing values in cells.
In contrast, a spreadsheet formula can produce a different value each time the
spreadsheet is opened or changed. Contiguous
Immediately adjacent. For example, contiguous sectors on a disk are sectors that
come one after the other. Frequently, a file stored on disk can become fragmented,
which means that it is stored on non-contiguous sectors. Control
(1) An object in a window or dialog box. Examples of controls include push-buttons,
scroll bars, radio buttons, and pull-down menus. (2)
An OLE or ActiveX object. Cron
A Unix command for
scheduling jobs to be executed sometime in the future. A cron is normally used
to schedule a job that is executed periodically - for example, to send out a notice
every morning. It is also a daemon process, meaning that it runs continuously,
waiting for specific events to occur. Cross-Compiler
A compiler that runs on one computer but produces object code for a different
type of computer. Cross compilers are used to generate software that can run on
computers with a new architecture or on special-purpose devices that cannot host
their own compilers. Data
Type In programming, classification of a particular type of information.
It is easy for humans to distinguish between different types of data. We can usually
tell at a glance whether a number is a percentage, a time, or an amount of money.
We do this through special symbols -- %, :, and $ -- that indicate the data's
type. Similarly, a computer uses special internal codes to keep track of the different
types of data it processes. Most
programming languages require the programmer to declare the data type of every
data object, and most database systems require the user to specify the type of
each data field. The available data types vary from one programming language to
another. Debug
To find and remove errors (bugs) from a program or design.
Declare In programming, to declare is to define the name and data type
of a variable or other programming construct. Many programming languages, including
C and Pascal, require you to declare variables before using them. Delimiter
A punctuation character or group of characters that separates two names or two
pieces of data, or marks the beginning or end of a programming construct. Delimiters
are used in almost every computer application. For example, in specifying DOS
pathnames, the backslash (\) is the delimiter that separates directories and filenames.
Other common delimiters include the comma (,), semicolon (;), quotes ("),
and braces ({}). Dhrystone
Developed in 1984 by R.P. Wecker, Dhrystone is a benchmark program written in
C or Pascal (and now even in Java) that tests a system's integer performance.
The program is CPU bound, performing no I/O functions or operating system calls. Dhrystones
per second is the metric used to measure the number of times the program can run
in a second. DLL
Short for Dynamic Link Library, a library of executable functions or data that
can be used by a Windows application. Typically, a DLL provides one or more particular
functions and a program accesses the functions by creating either a static or
dynamic link to the DLL. A static link remains constant during program execution
while a dynamic link is created by the program as needed. DLLs can also contain
just data. DLL files usually end with the extension .dll,.exe., drv, or .fon. A
DLL can be used by several applications at the same time. Some DLLs are provided
with the Windows operating system and available for any Windows application. Other
DLLs are written for a particular application and are loaded with the application. Dummy
A placeholder. A dummy variable , for example, is a variable that doesn't contain
any useful data, but it does reserve space that a real variable will use later. Dump
The act of copying raw data from one place to another with little or no formatting
for readability. Usually, dump refers to copying data from main memory to a display
screen or a printer. Dumps are useful for diagnosing bugs. After a program fails,
you can study the dump and analyze the contents of memory at the time of the failure.
Dumps are usually output in a difficult-to-read form (that is, binary, octal,
or hexadecimal), so a dump will not help you unless you know exactly what to look
for. To
output an image of computer memory. Dynamic
Variable In programming, a dynamic variable is a variable whose address
is determined when the program is run. In contrast, a static variable has memory
reserved for it at compilation time. Encapsulation
(1) In programming, the process of combining elements to create a new entity.
For example, a procedure is a type of encapsulation because it combines a series
of computer instructions. Likewise, a complex data type, such as a record or class,
relies on encapsulation. Object-oriented programming languages rely heavily on
encapsulation to create high-level objects. Encapsulation is closely related to
abstraction and information hiding. (2)
In networking, same as tunneling. Exception
A condition, often an error, that causes the program or microprocessor to branch
to a different routine. The terms interrupt and exception are very close in meaning.
Both can be used to refer to either hardware or software. The only real difference
is that an exception usually indicates an error condition. Fatal
Error An error that causes a program to abort. Sometimes a fatal error returns
you to the operating system. When a fatal error occurs, you may lose whatever
data the program was currently processing. Fatal
Exception Error A type of program error that requires that the program
responsible for the error be shut down. Software applications communicate with
operating systems and other applications through layers of code. An exception
is an error alert that communicates the problem across the layers. When an error
is detected, the exception is sent through the layers of code one by one until
code is found that can handle the error. If no code has been included in any layer
of the program to handle the specific error, the exception will travel through
all the layers, create a fatal exception error, terminate the application and
may even shut down the operating system. For
example, a program may request that the operating system reserve a block of memory
for the program's use. If the operating system is unable to honor the request
- if the memory request is too large or if there is not enough available memory
- it will send a memory exception to the layer that made the request. The exception
will continue to travel through the layers until it is dealt with. If the program
does not catch the exception, because the programmer did not write code to handle
that particular exception, the exception makes its way to the top layer and the
operating system recognizes it as an unhandled exception and shuts down the program,
resulting in a fatal exception error. Well-designed software, however, handles
all exceptions. Filter
(1) A program that accepts a certain type of data as input, transforms it in some
manner, and then outputs the transformed data. For example, a program that sorts
names is a filter because it accepts the names in unsorted order, sorts them,
and then outputs the sorted names. Utilities
that allow you to import or export data are also sometimes called filters. (2)
A pattern through which data is passed. Only data that matches the pattern is
allowed to pass through the filter. (3)
In paint programs and image editors, a filter is an effect that can be applied
to a bit map. Some filters mimic conventional photographic filters, but many transform
images in unusual ways. A pointillism filter, for example, can make a digitized
photograph look like a pointillistic painting. Flag
(1) A software or hardware mark that signals a particular condition or status.
A flag is like a switch that can be either on or off. The flag is said to be set
when it is turned on. (2)
A special mark indicating that a piece of data is unusual. For example, a record
might contain an error flag to indicate that the record consists of unusual, probably
incorrect, data. To
mark an object to indicate that a particular event has occurred or that the object
marked is unusual is some way. Flow
Control (1) In communications, the process of adjusting the flow of data
from one device to another to ensure that the receiving device can handle all
of the incoming data. This is particularly important where the sending device
is capable of sending data much faster than the receiving device can receive it. There
are many flow control mechanisms. One of the most common flow control protocols
for asynchronous communication is called xon-xoff. In this case, the receiving
device sends a an xoff message to the sending device when its buffer is full.
The sending device then stops sending data. When the receiving device is ready
to receive more data, it sends an xon signal. Flow
control can be implemented in hardware or software, or a combination of both. (2)
In programming, the statements and other constructs that control the order in
which operations are executed. For example, common looping statements such as
for
next and while are known as flow control statements. Branching statements,
such as if
then are also part of a programming language's flow control mechanism. Front
End (1) For software applications, front end is the same as user interface. (2)
In client/server applications, the client part of the program is often called
the front end and the server part is called the back end. (3)
Compilers, the programs that translate source code into object code, are often
composed of two parts: a front end and a back end. The front end is responsible
for checking syntax and detecting errors, whereas the back end performs the actual
translation into object code. Functional
Specification A formal description of a software system that is used as
a blueprint for implementing the program. At minimum, a functional specification
should precisely state the purpose (e.g., the function) of the software. Depending
on the software engineering methodology used, the functional specification might
also provide implementation details, such as how the project is divided into modules
and how the different modules interact. In addition, a functional specification
often describes the software from the user's perspective -- how the user interface
appears and how a user would use the program to perform specific functions. Garbage
In, Garbage Out Often abbreviated as GIGO, this is a famous computer axiom
meaning that if invalid data is entered into a system, the resulting output will
also be invalid. Although originally applied to computer software, the axiom holds
true for all systems, including, for example, decision-making systems. Geek
Short for computer geek, an individual with a passion for computers, to the exclusion
of other normal human interests. Depending on the context, it can be used in either
a derogatory or affectionate manner. Basically, geek and nerd are synonymous. Genetic
Programming A type of programming that utilizes the same properties of
natural selection found in biological evolution. The general idea behind genetic
programming is to start with a collection of functions and randomly combine them
into programs; then run the programs and see which gives the best results; keep
the best ones (natural selection), mutate some of the others, and test the new
generation; repeat this process until a clear best program emerges. Glitch
A malfunction. Glitch is sometimes used as a synonym for bug, but more often it
refers to a hardware problem. Hack
An inelegant and usually temporary solution to a problem. To
modify a program, often in an unauthorized manner, by changing the code itself. Hacker
A slang term for a computer enthusiast, i.e., a person who enjoys learning programming
languages and computer systems and can often be considered an expert on the subject(s).
Among professional programmers, depending on how it used, the term can be either
complimentary or derogatory, although it is developing an increasingly derogatory
connotation. The pejorative sense of hacker is becoming more prominent largely
because the popular press has coopted the term to refer to individuals who gain
unauthorized access to computer systems for the purpose of stealing and corrupting
data. Hackers, themselves, maintain that the proper term for such individuals
is cracker. Hard
Coded Unchangeable. Hard-coded features are built into the hardware or
software in such a way that they cannot be modified. Hardwired
Refers to elements of a program or device that cannot be changed. Originally,
the term was used to describe functionality that was built into the circuitry
(i.e., the wires) of a device. Nowadays, however, the term is also used to describe
constants built into software. Heap
Sort A sorting algorithm that works by first organizing the data to be
sorted into a special type of binary tree called a heap. The heap itself has,
by definition, the largest value at the top of the tree, so the heap sort algorithm
must also reverse the order. A
heap sort is especially efficient for data that is already stored in a binary
tree. In most cases, however, the quick sort algorithm is more efficient. Heuristic
Programming A branch of artificial intelligence, which uses heuristics
-- common-sense rules drawn from experience -- to solve problems. This is in contrast
to algorithmic programming, which is based on mathematically provable procedures.
Heuristic programming is characterized by programs that are self-learning; they
get better with experience. Heuristic programs do not always reach the very best
result but usually produce a good result. Many expert systems use heuristic programming. High
Performance Computing A branch of computer science that concentrates on
developing supercomputers and software to run on supercomputers. A main area of
this discipline is developing parallel processing algorithms and software: programs
that can be divided into little pieces so that each piece can be executed simultaneously
by separate processors. Information
Hiding The process of hiding details of an object or function. Information
hiding is a powerful programming technique because it reduces complexity. One
of the chief mechanisms for hiding information is encapsulation -- combining elements
to create a larger entity. The programmer can then focus on the new object without
worrying about the hidden details. In a sense, the entire hierarchy of programming
languages -- from machine languages to high-level languages -- can be seen as
a form of information hiding. Information
hiding is also used to prevent programmers from changing --- intentionally or
unintentionally -- parts of a program. Intelligent
Agent Programs, used extensively on the Web, that perform tasks such as
retrieving and delivering information and automating repetitive tasks. More than
50 companies are currently developing intelligent agent software or services,
including Firefly and WiseWire. Agents
are designed to make computing easier. Currently they are used as Web browsers,
news retrieval mechanisms, and shopping assistants. By specifying certain parameters,
agents will "search" the Internet and return the results directly back
to your PC. Push
technology relies on agents to deliver pre-selected information to your desktop.
Some intelligent agents are also used as tools to track Web behavior: they can
even "watch" as your surf the Net and record how often you visit certain
sites. Later, they can be used to automatically download your favorite sites,
let you know when your favorite site has been updated, and even tailor specific
pages to suit your tastes. Interprocess
Communication A capability supported by some operating systems that allows
one process to communicate with another process. The processes can be running
on the same computer or on different computers connected through a network. IPC
enables one application to control another application, and for several applications
to share the same data without interfering with one another. IPC is required in
all multiprocessing systems, but it is not generally supported by single-process
operating systems such as DOS. OS/2 and MS-Windows support an IPC mechanism called
DDE. ISO
9000 A family of standards approved by the International Standards Organization
(ISO) that define a quality assurance program. Companies that conform to these
standards can receive ISO 9000 certification. This doesn't necessarily mean that
the company's products have a high quality; only that the company follows well-defined
procedures for ensuring quality products. Increasingly, software buyers are requiring
ISO 9000 certification from their suppliers. Iteration
A single pass through a group of instructions. Most programs contain loops of
instructions that are executed over and over again. The computer iterates through
the loop, which means that it repeatedly executes the loop. J2EE
Short for Java 2 Platform Enterprise Edition. J2EE is a platform-independent,
Java-centric environment from Sun for developing, building and deploying Web-based
enterprise applications online. The J2EE platform consists of a set of services,
APIs, and protocols that provide the functionality for developing multitiered,
Web-based applications.
JDBC Short for Java Database Connectivity, a Java API that enables
Java programs to execute SQL statements. This allows Java programs to interact
with any SQL-compliant database. Since nearly all relational database management
systems (DBMSs) support SQL, and because Java itself runs on most platforms, JDBC
makes it possible to write a single database application that can run on different
platforms and interact with different DBMSs. JDBC
is similar to ODBC, but is designed specifically for Java programs, whereas ODBC
is language-independent. JDBC
was developed by JavaSoft, a subsidiary of Sun Microsystems. JVM
Acronym for Java Virtual Machine. An abstract computing machine, or virtual machine,
JVM is a platform-independent programming language that converts Java bytecode
into machine language and executes it. Most programming languages compile source
code directly into machine code that is designed to run on a specific microprocessor
architecture or operating system, such as Windows or UNIX. A JVM -- a machine
within a machine -- mimics a real Java processor, enabling Java bytecode to be
executed as actions or operating system calls on any processor regardless of the
operating system. For example, establishing a socket connection from a workstation
to a remote machine involves an operating system call. Since different operating
systems handle sockets in different ways, the JVM translates the programming code
so that the two machines that may be on different platforms are able to connect. KLOC
Short for thousands (kilo) of lines of code. KLOC is a measure of the size of
a computer program. The size is determined by measuring the number of lines of
source code a program has. High-level languages such as C++, will compile into
more lines of machine code than an assembly language, which is a low-level language. Kludge
Pronounced klooj, a derogatory term that refers to a poor design. Like hacks,
kludges use nonstandard techniques. But, whereas a hack can connote a clever solution
to a problem, a kludge always implies that the solution is inelegant. Library
(1) A collection of files. (2)
In programming, a library is a collection of precompiled routines that a program
can use. The routines, sometimes called modules, are stored in object format.
Libraries are particularly useful for storing frequently used routines because
you do not need to explicitly link them to every program that uses them. The linker
automatically looks in libraries for routines that it does not find elsewhere.
In MS-Windows environments, library files have a .DLL extension. Line
(1) A hardware circuit connecting two devices. (2) In programming, a
single program statement. (3)
In caches, a single data entry. A cache line can contain data from one or more
addresses. Modern PC motherboards, for example, generally have an L2 cache where
each line is 32 bytes wide. Listing
A printout of text, usually a source program. Localization
The process of adapting software for a particular country or region. For example,
the software must support the character set of the local language and must be
configured to present numbers and other values in the local format. Localizing
a word processor might require adding a new spell checker that recognizes words
in the local language. Software
companies that wish to sell their software internationally must invest considerable
money and energy in localization efforts. There are also companies that specialize
in localizing software for third parties. Loop
In programming, a loop is a series of instructions that is repeated until a certain
condition is met. Each pass through the loop is called an iteration. Loops constitute
one of the most basic and powerful programming concepts. Macro
(1) A symbol, name, or key that represents a list of commands, actions, or keystrokes.
Many programs allow you to create macros so that you can enter a single character
or word to perform a whole series of actions. You
can also use macros to enter words or phrases that you use frequently. For example,
you could define a macro to contain all the keystrokes necessary to begin a letter
-- your name, address, and a code that inserts the current date. Then, whenever
you write a letter, you just press the macro key to include the letter header. In
a way, macros are like simple programs or batch files. Some applications support
sophisticated macros that even allow you to use variables and flow control structures
such as loops. (2)
In dBASE programs, a macro is a variable that points to another variable where
the data is actually stored. In most other applications, this would be called
a link. Mask
A filter that selectively includes or excludes certain values. For example, when
defining a database field, it is possible to assign a mask that indicates what
sort of value the field should hold. Values that do not conform to the mask cannot
be entered. Memory
Leak A bug in a program that prevents it from freeing up memory that it no
longer needs. As a result, the program grabs more and more memory until it finally
crashes because there is no more memory left. MPP
Short for massively parallel processing, a type of computing that uses many separate
CPUs running in parallel to execute a single program. MPP is similar to symmetric
processing (SMP), with the main difference being that in SMP systems all the CPUs
share the same memory, whereas in MPP systems, each CPU has its own memory. MPP
systems are therefore more difficult to program because the application must be
divided in such a way that all the executing segments can communicate with each
other. On the other hand, MPP don't suffer from the bottleneck problems inherent
in SMP systems when all the CPUs attempt to access the same memory at once. Mutex
(1) Short for mutual exclusion object. In computer programming, a mutex is a program
object that allows multiple program threads to share the same resource, such as
file access, but not simultaneously. When a program is started, a mutex is created
with a unique name. After this stage, any thread that needs the resource must
lock the mutex from other threads while it is using the resource. The mutex is
set to unlock when the data is no longer needed or the routine is finished. (2)
When spelled MuTeX, a package of macros for the TeX typesetting system that supports
musical notation. MuTeX was written by Andrea Steinbach and Angelika Schofer,
as a master's thesis at Rheinische Friedrich-Wilhelms University. Name
A sequence of one or more characters that uniquely identifies a file, variable,
account, or other entity. Computer systems impose various rules about naming objects.
For example, there is often a limit to the number of characters you can use, and
not all characters are allowed. Names
are sometimes called identifiers. Nesting
Embedding one object in another object of the same type. Nesting is quite common
in programming. It also occurs in applications. For example, many word processing
applications allow you to embed (nest) one document inside another. OCX
Short for OLE Custom control, an independent program module that can be accessed
by other programs in a Windows environment. OCX controls end with a .ocx extension.
OCX controls represent Microsoft's second generation of control architecture,
the first being VBX controls written in Visual Basic. Both
VBX and OCX controls have now been superseded by ActiveX controls. However, ActiveX
is backward compatible with OCX controls, which means that ActiveX containers,
such as Microsoft's Internet Explorer, can execute OCX components. Optimize
(1) In programming, to fine-tune a program so that it runs more quickly or takes
up less space. (2)
When applied to disks, the term means the same as defragment. See under fragmentation. 3)
To configure a device or application so that it performs better. Overhead
Use of computer resources for performing a specific feature. Typically, the term
is used to describe a function that is optional, or an enhancement to an existing
application. For example, maintaining an audit trail might result in 10% overhead,
meaning that the program will run 10% slower when the audit trail is turned on.
Programmers often need to weigh the overhead of new features before implementing
them. Parse
In linguistics, to divide language into small components that can be analyzed.
For example, parsing this sentence would involve dividing it into words and phrases
and identifying the type of each component (e.g., verb, adjective, or noun). Parsing
is a very important part of many computer science disciplines. For example, compilers
must parse source code to be able to translate it into object code. Likewise,
any application that processes complex commands must be able to parse the commands.
This includes virtually all end-user applications. Parsing
is often divided into lexical analysis and semantic parsing. Lexical analysis
concentrates on dividing strings into components, called tokens, based on punctuation
and other keys. Semantic parsing then attempts to determine the meaning of the
string. Parser
A program that dissects source code so that it can be translated into object code. Patch
A temporary fix to
a program bug. A patch is an actual piece of object code that is inserted into
(patched into) an executable program. Primitive
A low-level object or operation from which higher-level, more complex objects
and operations can be constructed. In graphics, primitives are basic elements,
such as lines, curves, and polygons, which you can combine to create more complex
graphical images. In programming, primitives are the basic operations supported
by the programming language. A programmer combines these primitives to create
more complex operations, which are packaged as functions, procedures, and methods. Program
An organized list of instructions that, when executed, causes the computer to
behave in a predetermined manner. Without programs, computers are useless. A
program is like a recipe. It contains a list of ingredients (called variables)
and a list of directions (called statements) that tell the computer what to do
with the variables. The variables can represent numeric data, text, or graphical
images. There
are many programming languages -- C, C++, Pascal, BASIC, FORTRAN, COBOL, and LISP
are just a few. These are all high-level languages. One can also write programs
in low-level languages called assembly languages, although this is more difficult.
Low-level languages are closer to the language used by a computer, while high-level
languages are closer to human languages. Eventually,
every program must be translated into a machine language that the computer can
understand. This translation is performed by compilers, interpreters, and assemblers. When
you buy software, you normally buy an executable version of a program. This means
that the program is already in machine language -- it has already been compiled
and assembled and is ready to execute. Programmer
(1) An individual who writes programs. (2)
A device that writes a program onto a PROM chip. Property
Characteristic of an object. In many programming languages, the term property
is used to describe attributes associated with a data structure. Refactoring
Improving the design of existing software code. Refactoring doesn't change the
observable behavior of the software; it improves its internal structure. For example,
if a programmer wants to add new functionality to a program, he may decide to
refactor the program first to simplify the addition of new functionality in order
to prevent software entropy. Regression
Testing The selective retesting of a software system that has been modified
to ensure that any bugs have been fixed and that no other previously-working functions
have failed as a result of the reparations and that newly added features have
not created problems with previous versions of the software. Also referred to
as verification testing, regression testing is initiated after a programmer has
attempted to fix a recognized problem or has added source code to a program that
may have inadvertently introduced errors. It is a quality control measure to ensure
that the newly-modified code still complies with its specified requirements and
that unmodified code has not been affected by the maintenance activity. Reverse
Engineering The process of recreating a design by analyzing a final product.
Reverse engineering is common in both hardware and software. Several companies
have succeeded in producing Intel-compatible microprocessors through reverse engineering.
Whether reverse engineering is legal or not depends on who you ask. The courts
have not yet made a definitive ruling. Runtime
Occurring while a program is executing. For example, a runtime error is an error
that occurs during program execution and a runtime library is a library of routines
that are bound to the program during execution. In contrast, compile-time refers
to events that occur while a program is being compiled. Runtime
Error An error that occurs during the execution of a program. In contrast,
compile-time errors occur while a program is being compiled. Runtime errors indicate
bugs in the program or problems that the designers had anticipated but could do
nothing about. For example, running out of memory will often cause a runtime error. Note
that runtime errors differ from bombs or crashes in that you can often recover
gracefully from a runtime error. Scalable
(1) A popular buzzword that refers to how well a hardware or software system can
adapt to increased demands. For example, a scalable network system would be one
that can start with just a few nodes but can easily expand to thousands of nodes.
Scalability can be a very important feature because it means that you can invest
in a system with confidence you won't outgrow it. (2)
Refers to anything whose size can be changed. For example, a font is said to be
scalable if it can be represented in different sizes. Script
Another term for macro or batch file, a script is a list of commands that can
be executed without user interaction. A script language is a simple programming
language with which you can write scripts. Apple
Computer uses the term script to refer to programs written in its HyperCard or
AppleScript language. SDK
Short for software development kit, a programming package that enables a programmer
to develop applications for a specific platform. Typically an SDK includes one
or more APIs, programming tools, and documentation. Semantics
In linguistics, the study of meanings. In computer science, the term is frequently
used to differentiate the meaning of an instruction from its format. The format,
which covers the spelling of language components and the rules controlling how
components are combined, is called the language's syntax. For example, if you
misspell a command, it is a syntax error. If, on the other hand, you enter a legal
command that does not make any sense in the current context, it is a semantic
error. Semaphore
A hardware or software flag. In multitasking systems, a semaphore is a variable
with a value that indicates the status of a common resource. Its used to lock
the resource that is being used. A process needing the resource checks the semaphore
to determine the resource's status and then decides how to proceed. Simulation
The process of imitating a real phenomenon with a set of mathematical formulas.
Advanced computer programs can simulate weather conditions, chemical reactions,
atomic reactions, even biological processes. In theory, any phenomena that can
be reduced to mathematical data and equations can be simulated on a computer.
In practice, however, simulation is extremely difficult because most natural phenomena
are subject to an almost infinite number of influences. One of the tricks to developing
useful simulations, therefore, is to determine which are the most important factors. In
addition to imitating processes to see how they behave under different conditions,
simulations are also used to test new theories. After creating a theory of causal
relationships, the theorist can codify the relationships in the form of a computer
program. If the program then behaves in the same way as the real process, there
is a good chance that the proposed relationships are correct. Socket
(1) In UNIX and some other operating systems, a software object that connects
an application to a network protocol. In UNIX, for example, a program can send
and receive TCP/IP messages by opening a socket and reading and writing data to
and from the socket. This simplifies program development because the programmer
need only worry about manipulating the socket and can rely on the operating system
to actually transport messages across the network correctly. Note that a socket
in this sense is completely soft - it's a software object, not a physical component. (2)
A receptacle into which a plug can be inserted. (3)
A receptacle for a microprocessor or other hardware component. Software
Engineer A software engineer is a licensed professional engineer who is schooled
and skilled in the application of engineering discipline to the creation of software.
A software engineer is often confused with a programmer, but the two are vastly
different disciplines. While a programmer creates the codes that make a program
run, a software engineer creates the designs the programmer implements. By law
no person may use the title "engineer" (of any type) unless the person
holds a professional engineering license from a state licensing board and are
in good standing. A software engineer is also held accountable to a specific code
of ethics. Software
Engineering The computer science discipline concerned with developing
large applications. Software engineering covers not only the technical aspects
of building software systems, but also management issues, such as directing programming
teams, scheduling, and budgeting. Software
Entropy The tendency for software, over time, to become difficult and
costly to maintain. A software system that undergoes continuous change, such as
having new functionality added to its original design, will eventually become
more complex and can become disorganized as it grows, losing its original design
structure. In theory, it may be better to redesign the software in order to support
the changes rather than building on the existing program, but redesigning the
software is more work because redesigning the existing software will introduce
new bugs and problems. Stateless
Having no information about what occurred previously. Most modern applications
maintain state, which means that they remember what you were doing last time you
ran the application, and they remember all your configuration settings. This is
extremely useful because it means you can mold the application to your working
habits. The
World Wide Web, on the other hand, is intrinsically stateless because each request
for a new Web page is processed without any knowledge of previous pages requested.
This is one of the chief drawbacks to the HTTP protocol. Because maintaining state
is extremely useful, programmers have developed a number of techniques to add
state to the World Wide Web. These include server APIs, such as NSAPI and ISAPI,
and the use of cookies. STP
Acronym for Spanning Tree Protocol. STP, a link management protocol, is part of
the IEEE 802.1 standard for media access control bridges. Using the spanning tree
algorithm, STP provides path redundancy while preventing undesirable loops in
a network that are created by multiple active paths between stations. Loops occur
when there are alternate routes between hosts. To establish path redundancy, STP
creates a tree that spans all of the switches in an extended network, forcing
redundant paths into a standby, or blocked, state. STP allows only one active
path at a time between any two network devices (this prevents the loops) but establishes
the redundant links as a backup if the initial link should fail. If STP costs
change, or if one network segment in the STP becomes unreachable, the spanning
tree algorithm reconfigures the spanning tree topology and reestablishes the link
by activating the standby path. Without spanning tree in place, it is possible
that both connections may be simultaneously live, which could result in an endless
loop of traffic on the LAN. Systems
Analyst A programmer or consultant who designs and manages the development
of business applications. Typically, systems analysts are more involved in design
issues than in day-to-day coding. However, systems analyst is a somewhat arbitrary
title, so different companies define the role differently. Systems
Integrator An individual or company that specializes in building complete
computer systems by putting together components from different vendors. Unlike
software developers, systems integrators typically do not produce any original
code. Instead they enable a company to use off-the-shelf hardware and software
packages to meet the company's computing needs. Time-Out
An interrupt signal generated by a program or device that has waited a certain
length of time for some input but has not received it. Many programs perform time-outs
so that the program does not sit idle waiting for input that may never come. For
example, automatic bank-teller machines perform a time-out if you do not enter
your password quickly enough. Tweak
To make small changes that fine-tune a piece of software or hardware. Tweaking
sometimes refers to changing the values of underlying variables slightly to make
the results of a program coincide with desired results. In this case, tweaking
is not always a good thing since it undermines the integrity of the program. Two-Tier
Refers to client/server architectures in which the user interface runs on the
client and the database is stored on the server. The actual application logic
can run on either the client or the server. A newer client/server architecture,
called a three-tier architecture introduces a middle tier for the application
logic. VBX
Short for Visual Basic custom control, a reusable software component designed
for use in many different applications. While VBXs can be used in other environments,
they were initially created for developing Windows applications with Visual Basic.
An application developer can use a number of selected VBXs to quickly develop
an application. While similar to objects, VBXs do not have two of the properties
(inheritance and polymorphism) required by true object-oriented systems. Many
different companies offer specialized VBXs for tasks such as controlling instruments
or image handling. However, VBXs are being superseded by ActiveX controls, which
are more flexible. Virtual
Machine A self-contained operating environment that behaves as if it is a
separate computer. For example, Java applets run in a Java virtual machine (VM)
that has no access to the host operating system. White
Box Testing Also known as glass box, structural, clear box and open box
testing. A software testing technique whereby explicit knowledge of the internal
workings of the item being tested are used to select the test data. Unlike black
box testing, white box testing uses specific knowledge of programming code to
examine outputs. The test is accurate only if the tester knows what the program
is supposed to do. He or she can then see if the program diverges from its intended
goal. White box testing does not account for errors caused by omission, and all
visible code must also be readable. For
a complete software examination, both white box and black box tests are required. Word
(1) In word processing, any group of characters separated by spaces or punctuation
on both sides. Whether it is a real word or not is unimportant to the word processor. (2)
In programming, the natural data size of a computer. The size of a word varies
from one computer to another, depending on the CPU. For computers with a 16-bit
CPU, a word is 16 bits (2 bytes). On large mainframes, a word can be as long as
64 bits (8 bytes). Some
computers and programming languages distinguish between shortwords and longwords.
A shortword is usually 2 bytes long, while a longword is 4 bytes. 3)
When capitalized, short for Microsoft Word. Zombie
A computer that has been implanted with a daemon that puts it under the control
of a malicious hacker without the knowledge of the computer owner. Zombies are
used by malicious hackers to launch DoS attacks. The hacker sends commands to
the zombie through an open port. On command, the zombie computer sends an enormous
amount of packets of useless information to a targeted Web site in order to clog
the site's routers and keep legitimate users from gaining access to the site.
The traffic sent to the Web site is confusing and therefore the computer receiving
the data spends time and resources trying to understand the influx of data that
has been transmitted by the zombies. Compared to programs such as viruses or worms
that can eradicate or steal information, zombies are relatively benign as they
temporarily cripple Web sites by flooding them with information and do not compromise
the site's data. Such prominent sites as Yahoo!, Amazon and CNN.com were brought
down in 2000 by zombie DoS attacks. |