Free On-line Dictionary of Computing FOLDOC is a searchable dictionary of acronyms, jargon, programming languages, tools, architecture, operating systems, networking, theory, conventions, standards, mathematics, telecoms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing. Copyright 1993 by Denis Howe Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, Front- or Back-Cover Texts. A copy of the license is included in the section entitled "{GNU Free Documentation License}". Please refer to the dictionary as "The Free On-line Dictionary of Computing, http://www.foldoc.org/, Editor Denis Howe" or similar. The dictionary has been growing since 1985 and now contains over 13000 definitions totalling nearly five megabytes of text. Entries are cross-referenced to each other and to related resources elsewhere on the net. Where {LaTeX} commands for certain non-{ASCII} symbols are mentioned, they are described in their own entries. "\" is also used to represent the Greek lower-case lambda used in {lambda-calculus}. Cross-references to other entries look {like this}. Note that not all cross-references actually lead anywhere yet, but if you find one that leads to something inappropriate, please let me know. Dates after entries indicate when that entry was last updated. They do not imply that it was up-to-date at that time. You can search the latest version of the dictionary by {WWW} (URL http://www.foldoc.org/). If you find an entry that is wrong or inadequate please let me know. See {Pronunciation} for how to interpret the pronunciation given for some entries. (2000-05-18) Acknowledgements Many thanks to the hundreds of {contributors (contributors.html)}, and especially to the {Guest Editors (editors.html)}, mirror site maintainers and the maintainers of the following resources from which some entries originate: Mike Sendall's STING Software engineering glossary , 1993-10-13, Bill Kinnersley's {Language List (http://cuiwww.unige.ch/langlist)} v2.2, 1994-01-15, Mark Hopkins' catalogue of Free Compilers and Interpreters v6.4, 1994-02-28, The on-line hacker {Jargon File} v3.0.0, 1993-07-27, Internet Users' Glossary (RFC 1392, FYI 18), Jan 1993. John Cross's computer glossary, 1994-11-01. John Bayko's Great Microprocessors of the Past and Present, v4.0.0, 1994-08-18. {Electronic Commerce Dictionary}. (1997-08-01) ! {exclamation mark} " {double quote} # {hash} % {percent} , {comma} 0 {zero} 0/1 knapsack problem The {knapsack problem} restricted so that the number of each item is zero or one. (1995-03-13) 100BaseFX {Fast Ethernet} over {optical fibre}. (1998-03-23) 100BaseT Any of several {Fast Ethernet} 100 {MBps} {CSMA/CD} standards for {twisted pair} cables, including: 100BaseTx (100 Mbps over two-pair {Cat5} or better cable), 100BaseT4 (100 Mbps over four-pair {Cat3} or better cable), 100BaseT2 (in committee; 100 Mbps over two-pair Cat3 or better cable). All are standards (or planned standards) under {IEEE} {802.3}. (1997-01-07) 100BaseTX The predominant form of {Fast Ethernet}. 100BaseTX runs over two pairs of wires in {category 5} cable. (1998-06-30) 100BaseVG A 100 {MBps} {Ethernet} standard specified to run over four pairs of {category 3} {UTP} wires (known as voice grade, hence the "VG"). It is also called 100VG-AnyLAN because it was defined to carry both {Ethernet} and {token ring} {frame} types. 100BaseVG was originally proposed by {Hewlett-Packard}, ratified by the {ISO} in 1995 and practically extinct by 1998. 100BaseVG started in the IEEE 802.3u committee as {Fast Ethernet}. One faction wanted to keep {CSMA/CD} in order to keep it pure Ethernet, even though the {collision domain} problem limited the distances to one tenth that of {10baseT}. Another faction wanted to change to a polling architecture from the hub (they called it "demand priority") in order to maintain the 10baseT distances, and also to make it a {deterministic} {protocol}. The CSMA/CD crowd said, "This is 802.3 -- the Ethernet committee. If you guys want to make a different protocol, form your own committee". The IEEE 802.12 committee was thus formed and standardized 100BaseVG. The rest is history. (1998-06-30) 100VG-AnyLAN {100BaseVG} 10base2 (Or "cheapernet") The variant of {Ethernet} that uses thin {coaxial} cable (RG-58 or similar), as opposed to {10base5} cable. The "10" means 10 {Mbps}, "base" means "baseband" as opposed to {radio frequency} and "2" means a maximum single cable length of 200m. (1995-11-14) 10base5 An {Ethernet} network cabling specification operating at ten {Mbps}, "baseband" (as opposed to {radio frequency}), and with a maximum single cable length of 500 metres. This is normally carried on {RG8} cable. Compare {10base2}, {10baseT}. (2002-06-17) 10baseT A variant of {Ethernet} which allows stations to be attached via {twisted pair} cable. (1995-01-24) 120 reset /wuhn-twen'tee ree'set/ (After 120 volts, US mains voltage) To cycle power on a computer in order to reset or unjam it. Compare {Big Red Switch}, {power cycle}. [{Jargon File}] (1994-11-23) 1-2-3 {Lotus 1-2-3} 1394 {High Performance Serial Bus} 1541 {Commodore 1541} 1581 {Commodore 1581} 16450 A {UART} with a 1-byte {FIFO} buffer. Superseded by the {16550}. (2003-07-05) 16550 A version of the {16450} {UART} with a 16-byte {FIFO}. Superseded by the 16550A. (1995-01-24) 16550A A version of the {16550} {UART}. Superseded by the {16650}. (2003-07-05) 16650 A version of the {16550A} {UART} with a 32-byte {FIFO}. Superseded by the {16750C}. (2003-07-05) 16750C A {UART} with a 64-byte {FIFO}. (2003-07-05) 16 bit Using {words} containing sixteen {bits}. This adjective often refers to the number of bits used internally by a computer's {CPU}. E.g. "The {Intel 8086} is a sixteen bit processor". Its external {data bus} or {address bus} may be narrower. The term may also refer to the size of an instruction in the computer's {instruction set} or to any other item of data. See also {16-bit application}. (1996-05-13) 16-bit application Software for {MS-DOS} or {Microsoft Windows} which originally ran on the 16-bit {Intel 8088} and {80286} {microprocessors}. These used a {segmented address space} to extend the range of addresses from what is possible with just a 16-bit address. Programs with more than 64 kilobytes of code or data therefore had to waste time switching between {segments}. Furthermore, programming with segments is more involved than programming in a {flat address space}, giving rise to {warts} like {memory models} in {C} and {C++}. Compare {32-bit application}. (1996-04-06) 1802 An 8-bit {microprocessor} currently manufactured as CDP1802 by {HARRIS Semiconductor}. It has been around for ten years at least and is ideally suited for {embedded} applications. Some of its features are: 8-bit parallel organisation with bidirectional {data bus} and {multiplexed address bus}; static design -- no minimum clock frequency; bit-programmable output port; four input pins which are directly tested by branch instructions; flexible programmable I/O mode; single-phase clock, with on-chip oscillator; 16 x 16 register matrix to implement multiple {program counters}, pointers, or {registers} (1995-11-21) 1NF {database normalisation} 1TBS One True Brace Style. See {indent style}. [{Jargon File}] (1995-01-25) 1.TR.6 A {control channel protocol} for {ISDN}. It is a national {standard} in Germany but is being replaced by {Euro-ISDN}. (1995-03-27) 2 In names of translation software, infix 2 often represents the word "to" with the connotation "translate to", as in {dvi2ps} ({DVI} to {PostScript}), int2string (integer to string) and {texi2roff} ({Texinfo} to [nt]{roff}). [{Jargon File}] (1995-01-25) 20-GATE An algebraic language for the {G-20}, developed at {Carnegie} around 1965. (1995-02-27) 2780 {Binary Synchronous Transmission} 2B1D {Basic Rate Interface} 2B1Q {two-binary, one-quaternary} 2B+D {Basic Rate Interface} 2NF {database normalisation} 2.PAK An {artificial intelligence} language with {coroutine}s. ["The 2.PAK Language: Goals and Description", L.F. Melli, Proc IJCAI 1975]. (1995-01-25) 320xx A series of {microprocessors} from {National Semiconductor}. The 320xx processors have a {coprocessor} interface which allows coprocessors such as {FPU}s and {MMU}s to be attached in a chain. The 320xx was the predecessor of the {Swordfish} processor. [Details?] (1994-11-17) 3270 {IBM 3270} 32-bit application {IBM PC} software that runs in a 32-bit {flat address space}. The term {32-bit application} came about because {MS-DOS} and {Microsoft Windows} were originally written for the {Intel 8088} and {80286} {microprocessors}. These are {16 bit} microprocessors with a {segmented address space}. Programs with more than 64 kilobytes of code and/or data therefore had to switch between {segments} quite frequently. As this operation is quite time consuming in comparison to other machine operations, the application's performance may suffer. Furthermore, programming with segments is more involved than programming in a flat address space, giving rise to some complications in programming languages like "{memory models}" in {C} and {C++}. The shift from 16-bit software to 32-bit software on {IBM PC} {clones} became possible with the introduction of the {Intel 80386} microprocessor. This microprocessor and its successors support a segmented address space with 16-bit and 32 bit segments (more precisely: segments with 16- or 32-bit address offset) or a linear 32-bit address space. For compatibility reasons, however, much of the software is nevertheless written in 16-bit models. {Operating systems} like {Microsoft Windows} or {OS/2} provide the possibility to run 16-bit (segmented) programs as well as 32-bit programs. The former possibility exists for {backward compatibility} and the latter is usually meant to be used for new software development. See also {Win32s}. (1995-12-11) 3780 {Binary Synchronous Transmission} 386 {Intel 80386} 386BSD A {free software} version of the {BSD Unix} {operating system} originally derived from the generally available parts of the "{Berkeley Net Release/2}". William Jolitz played a key rôle and there have been many contributors. Many new and innovative features have been added to 386BSD since its original release in June 1992. An unofficial patchkit, available from many {anonymous FTP} archives, solves many of the problems associated with 386BSD Version 0.1. In addition, many common Unix packages have been ported. 386BSD has been superseded by {FreeBSD} and {NetBSD}. {FAQ (http://www.cis.ohio-state.edu/hypertext/faq/usenet/386bsd-faq/part1/faq.html)}. (1995-02-15) 386SPART.PAR (Or "{WIN386.SWP}") 386SPART.PAR is a {hidden file} created by {Windows 3.1} for use as {virtual memory} {swap file}. It is generally found in the {root directory}, however it may appear elsewhere (typically in the WINDOWS directory). Its size depends on how much virtual memory you have set up under (Control Panel) Enhanced under Virtual Memory. If you move or delete this file Windows will complain the next time you start it with a Swap File error. {Windows 95} uses a similar file, except it is named WIN386.SWP, and the controls for it are located under Control Panel - System - Performance tab - Virtual Memory. (1996-05-28) 386SX {Intel 80386SX} 3Com Corporation A manufacturer of {local area network} equipment. 3Com was founded in 1979. They acquired {BICC Data Networks} in 1992, {Star-Tek} in 1993, {Synernetics} in 1993, {Centrum} in 1994, {NiceCom} in 1994 {AccessWorks}, {Sonix Communications}, {Primary Access} and {Chipcom} in 1995 and {Axon} and {OnStream Networks} in 1996. They merged with {U.S. Robotics} in 1997. {Home (http://www.3com.com/)}. (1998-04-03) 3DNow! A {floating point} {SIMD} extention from {AMD}. [Extension of what? To do what?] (2001-12-23) 3DNow! Professional A {floating point} {SIMD} extention from {AMD}, compatible with {Intel}'s {SSE}, introduced with the {Athlon}-4. [Relationship to {3DNow!}?] (2001-12-23) 3DO A set of specifications created and owned by the 3DO company, which is a partnership of seven different companies. These specs are the blueprint for making a 3DO Interactive Multiplayer and are licensed to hardware and software producers. A 3DO system has an {ARM60} 32-bit {RISC} {CPU} and a graphics engine based around two custom designed graphics and animation processors. It has 2 Megabytes of {DRAM}, 1 Megabyte of {VRAM}, and a double speed {CD-ROM} drive for main storage. The {Panasonic} 3DO system can run 3DO Interactive software, play audio CDs (including support for CD+G), view {Photo-CD}s, and will eventually be able to play {Video CDs} with a special add-on {MPEG}1 {full-motion video} cartridge. Up to 8 {controllers} can be {daisy-chain}ed on the system at once. A keyboard, mouse, light gun, and other peripherals may also some day be hooked into the system, although they are not currently available (December 1993). The 3DO can display {full-motion video}, fully {texture map}ped 3d landscapes, all in 24-bit colour. {Sanyo} and {AT&T} will also release 3DO systems. Sanyo's in mid 1994 and AT&T in late 1994. There will be a 3DO add-on cartridge based on the {PowerPC} to enable the 3DO to compete with {Sony}'s {Playstation} console and {Sega}'s {Saturn} console, both of which have a higher specification than the original 3DO. The add-on is commonly known as the M2 or Bulldog. It should hit the shops by Christmas 1995 and will (allegedly) do a million flat shaded polygons per second. {3DO Home (http://www.3do.com/)}. {Usenet} newsgroup: {news:rec.games.video.3do}. (1994-12-13) 3GL {third generation language} 3NF {database normalisation} 3Station The archetypal {diskless workstation}, developed by {Bob Metcalfe} at {3Com} and first available in 1986/1987. The 3Station/2E had a 10 {MHz} {80286} {processor}, 1 {MB} of {RAM} (expandable to 5 MB), {VGA} compatible graphics with 256 {KB} of {video RAM}, and integrated {AUI}/{BNC} network {transceivers} for {LAN} access. The product used a single {printed-circuit board} with four custom {ASICs}. It had no {floppy disk drive} or {hard disk}, it was booted from a {server} and stored all {end-user} {files} there. 3Com advertised "significant cost savings" due to the 3Station's ease of installation and low maintenance (this would now be referred to under the banner of "{TCO}"). The 3Station cost somewhere between an {IBM PC} {clone} and an IBM PC of the day. It was not commercially successful. (2000-07-05) 3-tier {three-tier} 404 Someone who's clueless. From the {World-Wide Web} message "404, URL Not Found" meaning that the document you've tried to access can't be located. "Don't bother asking him...he's 404, man". 404 is one of the standard response codes of the {telnet} {protocol} on which the web's {HTTP} is based. The first 4 indicates a client error such as a mistyped URL. The middle 0 refers to a general syntax error. The last 4 just indicates the specific error in the group of 40x, which also includes 400: Bad Request, 401: Unauthorized, etc. (2000-03-18) 4.2BSD {Berkeley Software Distribution} 431A The type of plug which fits a standard "type 600" {British Telecom} telephone socket. (1995-01-25) 4510 A {65CE02} with two {6526}s. Used in the {Commodore 65}. (1996-04-06) 473L Query An English-like {query language} for the US Air Force {473L} system. [Sammet 1969, p. 665]. ["Headquarters USAF Command and Control System Query Language", Info Sys Sci, Proc 2nd Congress, Spartan Books 1965, pp.57-76]. (1994-10-31) 486 {Intel 486} 486SX {Intel 486SX} 4GL {fourth generation language} 4NF {database normalisation} 51forth A subroutine-{threaded} {Forth} for the {8051} by Scott Gehmlich. It comes with source and documentation. {(ftp://smis-novell-1.massey.ac.nz/giovanni/51forth.zip)}. (1993-04-03) 56 kbps (56 kilobits per second) The data capacity of a normal single channel digital telephone channel in North America. The figure is derived from the {bandwidth} of 4 kHz allocated for such a channel and the 16-bit encoding (4000 times 16 = 64000) used to change {analogue} signals to digital, minus the 8000 bit/s used for signalling and supervision. At the end of 1997 there were two rival {modem} designs capable of this rate: {k56flex} and {US Robotics}' {X2}. In February 1998 the {ITU} proposed a 56kbps standard called {V.90}, which is expected to be formally approved during September 1998. (1998-09-15) 56k line A digital connection (possibly a {leased line}, possibly switched) capable of carrying {56 kbps}. Compare {DS0}. (2000-07-16) 586 What {Intel}'s {Pentium} was not called. 5ESS Switch The class 5 electronic switching system sold by {Lucent Technologies}. The 5ESS Switch is the digital {central office} {circuit switching} system many communication {service providers} use. (2001-07-12) 5NF {database normalisation} 5th Glove A {data glove} and flexor strip kit (5th Glove DFK) sold by {Fifth Dimension Technologies} for $495 ($345 for the left-handed version, $45 for each extra flexor strip). The DFK provides a data glove, a flexon strip (with an elbow or knee-joint sensor), an interface card, cables, and KineMusica software. The package uses flexible optical-bending sensing to track hand and arm movement. The glove can be used with 5DT's ultrasonic tracking system, the 5DT Head and Hand tracker ($245), which can track movement from up to two metres away from the unit's transmitter. (1998-02-06) 6.001 /siks dub*l oh wun/, /dub*l oh wun/ or rarely /siks dub*l oh fun/ {MIT}'s introductory computer class for majors, known for its intensity. Developed by {Gerald Sussman} and {Hal Abelson}, the course is taught in {Scheme} and introduces {recursion}, {higher-order function}s, {object-oriented programming} and much more. Students who grasp the {meta}circular {interpreter} gain entry into the {Knights of the Lambda-Calculus}. 6.001 has been exported to several other colleges, sometimes successfully. The textbook, "Structure and Interpretation of Computer Programs", written with Julie Sussman is a classic that can be found on the shelves of many computer scientists, whether they took the course or not. Legendary characters from the class, problem sets, and book include the wise Alyssa P. Hacker, Ben Bitdiddle, Lem E. Tweakit and Eva Lu Ator, the careless Louis Reasoner and {Captain Abstraction}. (1994-11-22) 610 The standard type of two-wire wall socket and plug used for telephones in Australia. [Other countries? Full name?] (1997-06-26) 6309 {Hitachi 6309} 64 bit A term describing a computer architecture based around an {ALU}, {registers}, and {data bus} which are 64 {bit}s wide. 64-bit processors are quite common in 1996, e.g. {Digital} {Alpha}, versions of {Sun} {SPARC}, {MIPS}, {IBM} {AS/4000}. the {PowerPC} and {Intel} are expected to move to 64 bits at their next generation - {PPC 620} and {Intel P7}. A 64-bit {address bus} allows the processor to address 18 million {gigabytes} as opposed to the mere 4 gigabytes allowed with 32 bits. There are in 1996 already {hard disks} which can hold over 4GB. Floating point calculations can also be more accurate. A 64-bit {OS} is needed as well to take advantage of the CPU. In 1986 there are only a few 64-bit operating systems, including {OS/400}, {Digital} {Unix}, {Solaris} (partialy). A 32-bit OS can run on a 64-bit CPU. (1996-12-23) 6501 An eight-bit {microprocessor}, the first sold by {MOS Technologies}. The 6501 pin-compatible with the {Motorola 6800} and was the first member of the 650x series. It had an on-chip clock oscillator. See also {6502}. (2001-02-26) 6502 An eight-bit {microprocessor} designed by {MOS Technologies} around 1975 and made by {Rockwell}. Unlike the {Intel 8080} and its kind, the 6502 had very few {registers}. It was an 8-bit processor, with 16-bit {address bus}. Inside was one 8-bit data register ({accumulator}), two 8-bit {index registers} and an 8-bit {stack pointer} (stack was preset from address 256 to 511). It used these index and stack registers effectively, with more {addressing modes}, including a fast zero-page mode that accessed memory locations from address 0 to 255 with an 8-bit address (it didn't have to fetch a second byte for the address). Back when the 6502 was introduced, {RAM} was actually faster than {CPU}s, so it made sense to optimize for RAM access rather than increase the number of registers on a chip. The 6502 was used in the {BBC Microcomputer}, {Apple II}, {Commodore}, {Apple Computer} and {Atari} {personal computers}. {Steve Wozniak} described it as the first chip you could get for less than a hundred dollars (actually a quarter of the {6800} price). The 6502's {indirect jump} instruction, JMP (xxxx), was {broken}. If the address was hexadecimal xxFF, the processor would not access the address stored in xxFF and xxFF + 1, but rather xxFF and xx00. The {6510} did not fix this bug, nor was it fixed in any of the other {NMOS} versions of the 6502 such as the {8502}. Bill Mensch at {Western Design Center} was probably the first to fix it, in the {65C02}. The 6502 also had undocumented instructions. The {65816} is an expanded version of the 6502. There is a 6502 {assembler} by Doug Jones which supports {macros} and conditional features and can be used for linkage editing of object files. It requires {Pascal}. See also {cross-assembler}, {RTI}, {Small-C}. (2001-01-02) 650x A family of {microprocessors} from {MOS Technologies}, based on the design of the {Motorola 6800} (introduced around 1975). The family included the {6502} used in several early {personal computer}s. 6510 A successor to the {6502}. The 6510 was used in the Commodore 64C. Successors included the {8502} used in the {Commodore 128} line. (2001-01-02) 65816 An expanded version of the {6502}, with which it is compatible. It has 16-bit {index registers} and {stack pointer}, a 16-bit direct page register and a 24-bit {address bus}. Used in later models of the {Apple II}. (1994-10-31) 6800 {Motorola 6800} 68000 {Motorola 68000} 68020 {Motorola 68020} 68030 {Motorola 68030} 68040 {Motorola 68040} 68050 {Motorola 68050} 68060 {Motorola 68060} 6809 {Motorola 6809} 680x0 {Motorola 680x0} 686 {Pentium Pro} or possibly {Cyrix 6x86}. (1997-05-26) 68HC11 {Motorola 68HC11} 68LC040 {Motorola 68LC040} 6x86 {Cyrix 6x86} 754 {IEEE Floating Point Standard} 80186 {Intel 80186} 80188 {Intel 80188} 80/20 rule {eighty-twenty rule} 802.11a A radio-based {LAN} {protocol} which speaks {OFDM} at 5GHz, one of the two {wi-fi} protocols. (2003-09-02) 802.11b An {IEEE} {wireless} {local area networks} (WLAN) {standard} {protocol} which speaks {DSSS} at 2.4GHz. 802.11b is one of the two {wi-fi} protocols. It operates at 11 megabits per second (Mbps) compared with {802.11g} which operates at 54 Mbps. (2004-01-11) 802.11g An {IEEE} {wireless} {local area network} (WLAN) {standard} {protocol}, expected to be approved in June 2003. 802.11g offers wireless transmission over relatively short distances at up to 54 megabits per second (Mbps). 802.11g operates in the 2.4 GHz range and is thus compatible with {802.11b} (11 Mbps Wi-Fi). (2004-01-11) 802.2 {IEEE 802.2} 802.3 {IEEE 802.3} 80286 {Intel 80286} 8031 {Intel 8051} 80386 {Intel 80386} 8048 {Intel 8048} 80486 {Intel 486} 8051 {Intel 8051} 8052 {Intel 8051} 8080 {Intel 8080} 8086 {Intel 8086} 8088 {Intel 8088} 80x86 {Intel 80x86} 822 {RFC 822} 82430FX {Triton I} 82430HX {Triton II} 82430MX {Mobile Triton} 82430VX {Triton VX} 8.3 A common shorthand for the limits on filename length imposed by the {file system} used by {MS-DOS} and {Microsoft Windows} - at most eight characters, followed by a ".", followed by a {filename extension} of at most three characters. {Windows 95} supports long filenames by using multiple directory entries per file. The extra entries are hidden. It also automatically derives an 8.3 name for each file for {backward compatibility} so that older versions of DOS can still access the file. (1998-10-05) 8514 An {IBM} graphics {display standard} supporting a {resolution} of 1024 x 768 {pixels} with 256 colours at 43.5 Hz ({interlaced}), or 640 x 480 at 60 Hz interlaced. 8514 was introduced at the same time as {VGA} and was superseded by {XGA}. (1999-08-01) 8514-A {8514} 88000 {Motorola 88000} 88open A consortium with the aim of creating a multi-vendor open computing environment based on the {Motorola 88000} {RISC} processor family. (1995-01-26) 8-bit clean {eight-bit clean} 8N1 Common shorthand for "eight data bits, no {parity}, one {stop bit}", the most common configuration for {serial line}s, e.g. {EIA-232}. (1995-01-31) 8 queens problem {eight queens puzzle} 8 queens puzzle {eight queens puzzle} 8x86 {Intel 80x86} 90-90 Rule {Ninety-Ninety Rule} 9PAC 709 PACkage. A {report generator} for the {IBM 7090}, developed in 1959. [Sammet 1969, p.314. "IBM 7090 Prog Sys, SHARE 7090 9PAC Part I: Intro and Gen Princs", IBM J28-6166, White Plains, 1961]. (1995-02-07) :-) {emoticon} ; {semicolon} = {equals} @ {commercial at} \ {backslash} A# /A sharp/ A separable component of Version 2 of the {AXIOM*} computer algebra system. It provides a programming language with an {optimising compiler}, an {intermediate code} {interpreter}, and a library of data structures and mathematical {abstraction}s. The compiler produces {stand-alone executable} programs, {object} libraries in {native} {operating system} formats, {portable} {bytecode} libraries, {C} and {Lisp} {source code}. The A# programming language has support for {object-oriented} and {functional programming} styles. Both types and functions are {first class} values that can be manipulated with a range of flexible and composable {primitives} and user programs. The A# language design places particular emphasis on compilation for efficient {machine code} and portability. Ports have been made to various 16, 32, and 64 bit architectures: {RS/6000}, {SPARC}, {DEC Alpha}, {i386}, {i286}, {Motorola 680x0}, {S 370}; several {operating system}s: {Linux}, {AIX}, {SunOS}, {HP/UX}, {Next}, {Mach} and other {Unix} systems, {OS/2}, {DOS}, {Microsoft Windows}, {VMS} and {CMS}; {C} compilers: {Xlc}, {gcc}, {Sun}, {Borland}, {Metaware} and {MIPS} C. (1995-02-07) A-0 (Or A0) A language for the {UNIVAC I} or II, using {three-address code} instructions for solving mathematical problems. A-0 was the first language for which a {compiler} was developed. It was produced by {Grace Hopper}'s team at {Remington Rand} in 1952. Later internal versions were A-1, A-2, A-3, AT-3. AT-3 was released as {MATH-MATIC}. ["The A-2 Compiler System", Rem Rand, 1955]. [Sammet 1969, p. 12]. (1995-12-03) a1 Address 1 code. An a1 code {interpreter}, by Matthew Newhook was used to test compiler output. It requires {gcc} 2.4.2 or higher and is portable to computers with {memory segment} protection. {(ftp://ftp.cs.mun.ca/pub/a1)}. (1994-07-19) A1 security {Orange Book} A20 handler {IBM PC} memory manager software providing {HMA}. {XMM}s usually provide this functionality. Named after the 21st address line (A20), controlling the access to HMA. (1996-01-10) A-3 {ARITH-MATIC} A3D (Aureal 3-Dimensional?) A technology developed by {Aureal} that delivers sound with a three-dimensional effect through two speakers. Many modern {sound cards} and PC games now support this feature. A3D differs from the various forms of {surround sound} in that it only requires two speakers, while surround sound typically requires four or five. It is sometimes less convincing than surround sound but is supposedly better in {interactive} environments. For example, PC games in which sounds often move from one speaker to another favour A3D, while pre-recorded video favours surround sound. {Home (http://www.a3d.com/)}. (1999-01-26) a56 An {assembler} for the {Motorola} {DSP56000} and {DSP56001} {digital signal processors} by Quinn Jensen . Version 1.1 is available from an {alt.sources} archive or {(ftp://wuarchive.wustl.edu/)}. (1992-08-10) AAC {Advanced Audio Coding} AADL {Axiomatic Architecture Description Language} AAL {ATM Adaptation Layer} AAP {Association of American Publishers} AAP DTD A {DTD} for a standard {SGML} document type for scientific documents, defined by the {Association of American Publishers}. (1994-11-08) aard (Dutch for "earth") A tool to check memory use for {C++} programs, written by Steve Reiss (who names his programs after living systems). Aard tracks the state of each byte of memory in the {heap} and the {stack}. The state can be one of Undefined, Uninitialised, Free or Set. The program can detect invalid transitions (i.e. attempting to set or use undefined or free storage or attempting to access uninitialised storage). In addition, the program keeps track of heap use through {malloc} and {free} and at the end of the run reports memory blocks that were not freed and that are not accessible (i.e. {memory leaks}). The tools works using a spliced-in {shared library} on {SPARCs} running {C++} 3.0.1 under {SunOS} 4.X. {(ftp://wilma.cs.brown.edu/pub/aard.tar.Z)}. (1998-03-03) AARP {Apple Address Resolution Protocol} AARP probe packets {AARP} {packets} sent out on a nonextended {AppleTalk} network to discover whether a randomly selected node ID is being used by any node. If not, the sending node uses the node ID. If so, it chooses a different ID and sends more AARP probe packets. (1997-05-03) AAUI {Apple Attachment Unit Interface} A&B A {bit signaling procedure} used in most {T1} transmission facilities where one bit from every sixth frame of each of 24 T1 {subchannels} is used for carrying {supervisory signaling}. [What does it stand for? Is this the same as "{bit robbing}"?] (1997-05-05) abbrev /*-breev'/, /*-brev'/ Common abbreviation for "abbreviation". (1995-02-27) Abbreviated Test Language for Avionics Systems (ATLAS) A Mil-spec language for automatic testing of avionics equipment. ATLAS replaced {Gaelic} and several other test languages. ["IEEE Standard ATLAS Test Language", IEEE Std 416-1976]. (2000-04-03) ABC 1. {Atanasoff-Berry Computer}. 2. An {imperative} language and programming environment from {CWI}, Netherlands. It is interactive, structured, high-level, and easy to learn and use. It is a general-purpose language which you might use instead of {BASIC}, {Pascal} or {AWK}. It is not a systems-programming language but is good for teaching or prototyping. ABC has only five data types that can easily be combined; {strong typing}, yet without declarations; data limited only by memory; refinements to support top-down programming; nesting by indentation. Programs are typically around a quarter the size of the equivalent {Pascal} or {C} program, and more readable. ABC includes a programming environment with {syntax-directed} editing, {suggestion}s, {persistent variables} and multiple workspaces and {infinite precision} arithmetic. An example function words to collect the set of all words in a document: HOW TO RETURN words document: PUT {} IN collection FOR line in document: FOR word IN split line: IF word not.in collection: INSERT word IN collection RETURN collection {Interpreter}/{compiler}, version 1.04.01, by Leo Geurts, Lambert Meertens, Steven Pemberton . ABC has been ported to {Unix}, {MS-DOS}, {Atari}, {Macintosh}. {Home (http://www.cwi.nl/cwi/projects/abc.html)}. {FTP eu.net (ftp://ftp.eu.net/programming/languages/abc)}, {FTP nluug.nl (ftp://ftp.nluug.nl/programming/languages/abc)}, {FTP uunet (ftp://ftp.uu.net/languages/abc)}. Mailing list: . E-mail: . ["The ABC Programmer's Handbook" by Leo Geurts, Lambert Meertens and Steven Pemberton, published by Prentice-Hall (ISBN 0-13-000027-2)]. ["An Alternative Simple Language and Environment for PCs" by Steven Pemberton, IEEE Software, Vol. 4, No. 1, January 1987, pp. 56-64.] (1995-02-09) 2. Argument, Basic value, C?. An {abstract machine} for implementation of {functional languages} and its intermediate code. [P. Koopman, "Functional Programs as Executable Specifications", 1990]. (1995-02-09) ABC ALGOL An extension of {ALGOL 60} with arbitrary data structures and user-defined operators, for {symbolic mathematics}. ["ABC ALGOL, A Portable Language for Formula Manipulation Systems", R.P. van de Riet, Amsterdam Math Centrum 1973]. (1994-10-28) ABCL/1 An Object-Based Concurrent Language. The language for the {ABCL} {MIMD} system, written by Akinori Yonezawa of Department of Information Science, {Tokyo University} in 1986. ABCL/1 uses {asynchronous} {message passing} to {object}s. It requires {Common Lisp}. Implementations in {KCL} and {Symbolics Lisp} are available from the author. {(ftp://camille.is.s.u-tokyo.ac.jp/)}. E-mail: . ["ABCL: An Object-Oriented Concurrent System", A. Yonezawa ed, MIT Press 1990]. (1990-05-23). (1995-02-09) ABCL/c+ A {concurrent} {object-oriented} language, an extension of {ABCL/1} based on {C}. ["An Implementation of An Operating System Kernel using Concurrent Object Oriented Language ABCL/c+", N. Doi et al in ECOOP '88, S. Gjessing et al eds, LNCS 322, Springer 1988]. (1994-11-08) ABCL/R A {reflective} subset of {ABCL/1}, written in ABCL/1 by Yonezawa of {Tokyo Institute of Technology} in 1988. {(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr)}. ["Reflection in an Object-Oriented Concurrent Language", T. Watanabe et al, SIGPLAN Notices 23(11):306-315 (Nov 1988)]. (1994-11-08) ABCL/R2 An {object-oriented}, {concurrent}, {reflective} language based on {Hybrid Group Architecture}. ABCL/R2 was produced by , , , , at the {Tokyo Institute of Technology} in 1992. As a reflective language, an ABCL/R2 program can dynamically control its own behaviour, such as {scheduling} policy, from within a user-program. This system has almost all functions of {ABCL/1} and is written in {Common Lisp}. {(ftp://camille.is.s.u-tokyo.ac.jp/pub/abclr2/)}. (1993-01-28) abduction The process of {inference} to the best explanation. "Abduction" is sometimes used to mean just the generation of hypotheses to explain observations or conclusionsm, but the former definition is more common both in philosophy and computing. The {semantics} and the implementation of abduction cannot be reduced to those for {deduction}, as explanation cannot be reduced to implication. Applications include fault diagnosis, plan formation and {default reasoning}. {Negation as failure} in {logic programming} can both be given an abductive interpretation and also can be used to implement abduction. The abductive semantics of negation as failure leads naturally to an {argumentation}-theoretic interpretation of default reasoning in general. [Better explanation? Example?] ["Abductive Inference", John R. Josephson ]. (2000-12-07) ABEND /o'bend/, /*-bend'/ ABnormal END. Abnormal termination (of {software}); {crash}; {lossage}. Derives from an error message on the {IBM 360}; used jokingly by hackers but seriously mainly by {code grinder}s. Usually capitalised, but may appear as "abend". Hackers will try to persuade you that ABEND is called "abend" because it is what system operators do to the computer late on Friday when they want to call it a day, and hence is from the German "Abend" = "Evening". [{Jargon File}] (1994-11-08) ABI {Application Binary Interface} ABLE A simple language for accountants. ["ABLE, The Accounting Language, Programming and Reference Manual," Evansville Data Proc Center, Evansville, IN, Mar 1975]. [Listed in SIGPLAN Notices 13(11):56 (Nov 1978)]. (1994-11-08) ABM {Asynchronous Balanced Mode} ABNF {Augmented Backus-Naur Form} abort To terminate a program or {process} abnormally and usually suddenly, with or without {diagnostic} information. "My program aborted", "I aborted the transmission". The noun form in computing is "abort", not "abortion", e.g. "We've had three aborts over the last two days". If a {Unix} {kernel} aborts it is known as a {panic}. (1997-01-07) ABP 1. {Alternating bit protocol}. 2. {Microsoft} {Address Book Provider}. (2001-02-11) ABR {automatic baud rate detection} abscissa The horizontal or x coordinate on an (x, y) graph; the input of a function against which the output is plotted. The vertical or y coordinate is the "{ordinate}". See {Cartesian coordinates}. (1997-07-08) ABSET An early {declarative language} from the {University of Aberdeen}. ["ABSET: A Programming Language Based on Sets", E.W. Elcock et al, Mach Intell 4, Edinburgh U Press, 1969, pp.467-492]. (1994-11-08) absolute path A {path} relative to the {root directory}. Its first character must be the {pathname separator}. (1996-11-21) absolute pathname A {pathname} relative to the {root directory}. (1996-11-21) abstract class In {object-oriented programming}, a {class} designed only as a parent from which sub-classes may be derived, but which is not itself suitable for instantiation. Often used to "abstract out" incomplete sets of features which may then be shared by a group of sibling sub-classes which add different variations of the missing pieces. (1994-11-08) abstract data type (ADT) A kind of {data abstraction} where a type's internal form is hidden behind a set of {access functions}. Values of the type are created and inspected only by calls to the access functions. This allows the implementation of the type to be changed without requiring any changes outside the {module} in which it is defined. {Objects} and ADTs are both forms of data abstraction, but objects are not ADTs. Objects use procedural abstraction (methods), not type abstraction. A classic example of an ADT is a {stack} data type for which functions might be provided to create an empty stack, to {push} values onto a stack and to {pop} values from a stack. {Reynolds paper (http://www.cis.upenn.edu/~gunter/publications/documents/taoop94.html)}. {Cook paper "OOP vs ADTs" (http://www.wcook.org/papers/OOPvsADT/CookOOPvsADT90.pdf)}. (2003-07-03) abstract interpretation A partial execution of a program which gains information about its {semantics} (e.g. control structure, flow of information) without performing all the calculations. Abstract interpretation is typically used by compilers to analyse programs in order to decide whether certain optimisations or transformations are applicable. The objects manipulated by the program (typically values and functions) are represented by points in some {domain}. Each abstract domain point represents some set of real ("{concrete}") values. For example, we may take the abstract points "+", "0" and "-" to represent positive, zero and negative numbers and then define an abstract version of the multiplication operator, *#, which operates on abstract values: *# | + 0 - ---|------ + | + 0 - 0 | 0 0 0 - | - 0 + An interpretation is "safe" if the result of the abstract operation is a safe approximation to the abstraction of the concrete result. The meaning of "a safe approximation" depends on how we are using the results of the analysis. If, in our example, we assume that smaller values are safer then the "safety condition" for our interpretation (#) is a# *# b# <= (a * b)# where a# is the abstract version of a etc. In general an interpretation is characterised by the {domain}s used to represent the basic types and the abstract values it assigns to constants (where the constants of a language include primitive functions such as *). The interpretation of constructed types (such as user defined functions, {sum type}s and {product type}s) and expressions can be derived systematically from these basic domains and values. A common use of {abstract interpretation} is {strictness analysis}. See also {standard interpretation}. (1994-11-08) abstraction 1. Generalisation; ignoring or hiding details to capture some kind of commonality between different instances. Examples are {abstract data types} (the representation details are hidden), {abstract syntax} (the details of the {concrete syntax} are ignored), {abstract interpretation} (details are ignored to analyse specific properties). 2. Parameterisation, making something a function of something else. Examples are {lambda abstractions} (making a term into a function of some variable), {higher-order functions} (parameters are functions), {bracket abstraction} (making a term into a function of a variable). Opposite of {concretisation}. (1998-06-04) abstract machine 1. A processor design which is not intended to be implemented as {hardware}, but which is the notional executor of a particular {intermediate language} (abstract machine language) used in a {compiler} or {interpreter}. An abstract machine has an {instruction set}, a {register set} and a model of memory. It may provide instructions which are closer to the language being compiled than any physical computer or it may be used to make the language implementation easier to {port} to other {platform}s. A {virtual machine} is an abstract machine for which an {interpreter} exists. Examples: {ABC}, {Abstract Machine Notation}, {ALF}, {CAML}, {F-code}, {FP/M}, {Hermes}, {LOWL}, {Christmas}, {SDL}, {S-K reduction machine}, {SECD}, {Tbl}, {Tcode}, {TL0}, {WAM}. 2. A procedure for executing a set of instructions in some formal language, possibly also taking in input data and producing output. Such abstract machines are not intended to be constructed as {hardware} but are used in thought experiments about {computability}. Examples: {Finite State Machine}, {Turing Machine}. (1995-03-13) Abstract Machine Notation (AMN) A language for specifying {abstract machines} in the {B-Method}, based on the mathematical theory of {Generalised Substitutions}. (1995-03-13) abstract syntax A representation of data (typically either a message passing over a communications link or a program being compiled) which is independent of machine-oriented structures and encodings and also of the physical representation of the data (called "{concrete syntax}" in the case of compilation or "{transfer syntax}" in communications). A {compiler}'s internal representation of a program will typically be specified by an abstract syntax in terms of categories such as "statement", "expression" and "identifier". This is independent of the source syntax ({concrete syntax}) of the language being compiled (though it will often be very similar). A {parse tree} is similar to an abstract syntax tree but it will typically also contain features such as parentheses which are syntactically significant but which are implicit in the structure of the {abstract syntax tree}. (1998-05-26) Abstract Syntax Notation 1 (ASN.1, X.208, X.680) An {ISO}/{ITU-T} {standard} for transmitting structured {data} on {networks}, originally defined in 1984 as part of {CCITT X.409} '84. ASN.1 moved to its own standard, X.208, in 1998 due to wide applicability. The substantially revised 1995 version is covered by the X.680 series. ASN.1 defines the {abstract syntax} of {information} but does not restrict the way the information is encoded. Various ASN.1 encoding rules provide the {transfer syntax} (a {concrete} representation) of the data values whose {abstract syntax} is described in ASN.1. The standard ASN.1 encoding rules include {BER} (Basic Encoding Rules - X.209), {CER} (Canonical Encoding Rules), {DER} (Distinguished Encoding Rules), and {PER} (Packed Encoding Rules). ASN.1 together with specific ASN.1 encoding rules facilitates the exchange of structured data especially between {application programs} over networks by describing data structures in a way that is independent of machine architecture and implementation language. {OSI} {Application layer} {protocols} such as {X.400} {MHS} {electronic mail}, {X.500} directory services and {SNMP} use ASN.1 to describe the {PDU}s they exchange. Documents describing the ASN.1 notations: {ITU-T} Rec. X.680, {ISO} 8824-1; {ITU-T} Rec. X.681, {ISO} 8824-2; {ITU-T} Rec. X.682, {ISO} 8824-3; {ITU-T} Rec. X.683, {ISO} 8824-4 Documents describing the ASN.1 encoding rules: {ITU-T} Rec. X.690, {ISO} 8825-1; {ITU-T} Rec. X.691, {ISO} 8825-2. [M. Sample et al, "Implementing Efficient Encoders and Decoders for Network Data Representations", IEEE Infocom 93 Proc, v.3, pp. 1143-1153, Mar 1993. Available from Logica, UK]. See also {snacc}. (2000-10-20) abstract syntax tree (AST) A data structure representing something which has been parsed, often used as a {compiler} or {interpreter}'s internal representation of a program while it is being optimised and from which {code generation} is performed. The range of all possible such structures is described by the {abstract syntax}. (1994-11-08) Abstract-Type and Scheme-Definition Language (ASDL) A language developed as part of {Esprit} project {GRASPIN}, as a basis for generating {language-based editors} and environments. It combines an {object-oriented} type system, syntax-directed translation schemes and a target-language interface. ["ASDL - An Object-Oriented Specification Language for Syntax-Directed Environments", M.L. Christ-Neumann et al, European Software Eng Conf, Strasbourg, Sept 1987, pp.77-85]. (1996-02-19) Abstract Windowing Toolkit {Abstract Window Toolkit} Abstract Window Toolkit (AWT) {Java}'s {platform}-independent {windowing}, graphics, and user-interface {toolkit}. The AWT is part of the {Java Foundation Classes} (JFC) - the standard {API} for providing a {graphical user interface} (GUI) for a Java program. Compare: {SWING}. ["Java in a Nutshell", O'Reilly]. {Home (http://java.sun.com/products/jdk/awt/)}. (2000-07-26) ABSYS An early {declarative language} from the {University of Aberdeen} which anticipated a number of features of Prolog. ["ABSYS: An Incremental Compiler for Assertions", J.M. Foster et al, Mach Intell 4, Edinburgh U Press, 1969, pp. 423-429]. (1994-11-08) AC2