From 7a1af5825afb1ea7f282608bac259507a1a398e3 Mon Sep 17 00:00:00 2001 From: Joe Robinson Date: Sun, 21 Sep 2014 01:08:15 +0100 Subject: Added FOLDOC dictionary parsing for technical words --- bladictionary.py | 62 +- dictionaries/foldoc.txt | 182001 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 182058 insertions(+), 5 deletions(-) create mode 100644 dictionaries/foldoc.txt diff --git a/bladictionary.py b/bladictionary.py index e7038b7..c3e135a 100755 --- a/bladictionary.py +++ b/bladictionary.py @@ -7,7 +7,7 @@ import optparse from lxml import etree import sqlite3 -VERSION = "2.1.8b" +VERSION = "2.1.10b" class Definition(object): #ID is relative to the word type, eg noun 1, noun 2, verb 1, verb 2, not to the entire list @@ -151,8 +151,8 @@ def parse_args(): parser.add_option( "-c", "--channel", action = "store", help = "The IRC channel of the request") options, args = parser.parse_args( args ) - types = ["n", "noun", "v", "verb", "adj", "adjective", "adv", "adverb"] - dicts = ["wn", "wordnet", "oed", "db"] + types = ["n", "noun", "v", "verb", "adj", "adjective", "adv", "adverb", "tech"] + dicts = ["wn", "wordnet", "oed", "db", "foldoc"] word = "" word_type = "" @@ -296,6 +296,55 @@ def get_sql(word): return items +def parse_foldoc(word, refer = False): + + file = open("dictionaries/foldoc.txt") + word_line = "" + word_len = len(word.split(" ")) + found = False + count_blank = 0 + items = [] + #If it's been referred from another definition, include the new word + if refer: + definition = word + ". " + else: + definition = "" + + for line in file: + line = line.strip() + word_parts = line.split(" ") + word_part = "" + if not found: + #Read the appropriate number of words depending on how many were specified + for part in word_parts[0:word_len]: + word_part += part + " " + word_part = word_part.strip() + + #Ignore case + if word_part.lower() == word.lower(): + found = True + + #Foldoc definitions are split over multiple lines, so keep reading once we've found it + else: + + if len(line) == 0: + count_blank += 1 + if count_blank == 1: + continue + else: + break + if line[0] == "{" and line[-1] == "}": + parse_foldoc(line.strip("{} "), True) + for part in word_parts: + definition += part.strip("{").replace("}", "") + " " + + if not found: + return + else: + item = Definition(word, 0, "foldoc", "tech", definition, [], [], []) + items.append(item) + return items + def main(): @@ -312,9 +361,12 @@ def main(): xml = get_xml(word, word_dict) if xml is None: - return + print "Error finding definitions for " + word + sys.exit( 1 ) items = parse_xml(xml) + elif word_dict == "foldoc" or word_type == "tech": + items = parse_foldoc(word) else: if word_dict is None or word_dict == "": word_dict = "db" @@ -336,7 +388,7 @@ def main(): else: max_length = 460 - types = ["n", "v", "adj", "adv"] + types = ["n", "v", "adj", "adv", "tech"] type_id = 0 all_types = word_type is "" diff --git a/dictionaries/foldoc.txt b/dictionaries/foldoc.txt new file mode 100644 index 0000000..101d139 --- /dev/null +++ b/dictionaries/foldoc.txt @@ -0,0 +1,182001 @@ +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 1985 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://foldoc.org/, Editor Denis Howe" or + similar. Please make the URL both text (for humans) and a + hyperlink (for Google). + + The dictionary has been growing since 1985 and now contains + nearly 15,000 definitions in over 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 (feedback.html)}. 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 on the + {WWW} at URL http://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. + + {More about FOLDOC (about.html)}. + + (2007-07-25) + +Acknowledgements + + Many thanks to the thousands of {contributors + (contributors.html)} and especially to the Guest Editors, 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://people.ku.edu/~nkinners/LangList/Extras/langlist.htm)} + 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}. + + (2014-09-11) + +Missing definition + + First, this is an (English language) + __computing__ dictionary. It includes lots of terms from + related fields such as mathematics and electronics, but if + you're looking for (or want to submit) words from other + subjects or general English words or other languages, try + {(http://wikipedia.org/)}, {(http://onelook.com/)}, + {(http://yourdictionary.com/)} or + {(http://reference.allrefer.com/)}. + + If you've already searched the dictionary for a computing term + and it's not here then please __don't tell me__. There are, + and always will be, a great many missing terms, no dictionary + is ever complete. I use my limited time to process the + corrections and definitions people have submitted and to add + the {most frequently requested missing terms (missing.html)}. + + Try one of the sources mentioned above or + {(http://techweb.com/encyclopedia/)}, + {(http://whatis.techtarget.com/)} or + {(http://google.com/)}. + + See {the Help page (help.html)} for more about missing definitions + and bad cross-references. + + (2014-09-20) + +! + + {exclamation mark} + +" + + {double quote} + +# + + {hash} + +$ + + {dollar} + +$1 + + The first {positional parameter} in {shell} + programming and related languages. Occurrences of $1 are + replaced by the first {actual argument} provided by the user + when the {shell script} is run. $2 is replaced by the second + argument, and so on up to $9. + + You may have arrived at this entry by following a {URL} like + "http://foldoc.org?$1", which is actually a {template} used to + generate pointers to FOLDOC definitions by replacing "$1" with + the term to be defined, e.g. in a {wiki} {interwiki map}. + + (2006-09-10) + +% + + {percent} + +' + + {single quote} + ++ + + {plus} + +, + + {comma} + +/ + + {oblique stroke} + +0 + + {zero} + +0/1 knapsack problem + + The {knapsack problem} restricted so that the + number of each item is zero or one. + + (1995-03-13) + +1 + + {one} + +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 standardised 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} + +16000 + + {National Semiconductor 16000} + +16450 + + A {UART} with a one-byte {FIFO} buffer. The 16450 + is a higher speed, fixed version of the {8250}. It was + superseded by the {16550}. + + The 16450 was used for the {IBM PC AT} and {PS/2} but will not + work in a {IBM PC XT}. + + (2004-03-21) + +16550 + + A version of the {16450} {UART} with a 16-byte + {FIFO}. Superseded by the 16550A. + + This chip might not operate correctly with all software. + + The 16C550 is a {CMOS} version. + + (2004-03-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}. + + The 16C750 is a {CMOS} version. + + [Is there a 16750 (with no "C" on the end)?] + + (2004-03-24) + +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) + +16C550 + + {16550} + +16C750 + + {16750C} + +16C850 + + A version of the {16450} {UART} in {CMOS} with + 128-{byte} {FIFO}. + + (2004-03-24) + +1802 + + An 8-bit {microprocessor} 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 rate}; 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) + +192.168.1.1 + + The default {IP address} used to connect to many + brands of {router} to set them up. It can be used from a {web + browser} in the {URL} {(http://192.168.1.1)}. This URL, and + the necessary default login details, are often printed on the + router. The same address may also be accessible via a + {telnet} {command line interface}. + + This is a {private address} that is only visible when + connected directly to the router, i.e. it will not be routed + by other network hardware. + + {i19216811.com (http://www.i19216811.com/)}. + + (2012-09-20) + +1NF + + {database normalisation} + +1TBS + + {indent style} + +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 + {coroutines}. + + ["The 2.PAK Language: Goals and Description", L.F. Melli, Proc + IJCAI 1975]. + + (1995-01-25) + +32000 + + {National Semiconductor 32000} + +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 + + (Or "jolix /joh'liks/) A {free software} + {port} originally derived from the generally available parts + of the "{Berkeley Net Release/2}" to the {Intel} {i386} + architecture by William Jolitz and friends. The name Jolix is + used to differentiate it from {BSDI}'s port based on the same + source tape, which is called {BSD/386}. + + Many new and innovative features were added to 386BSD + following 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}, {NetBSD} and {OpenBSD}. + + {FAQ + (http://cis.ohio-state.edu/hypertext/faq/usenet/386bsd-faq/part1/faq.html)}. + + [{Jargon File}] + + (2006-06-08) + +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. + + {(http://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-CDs}, + 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://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 {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) + +4.3BSD + + {Berkeley Software Distribution} + +4510 + + A {65CE02} with two {6526} IO controllers. + + 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} + +486DX + + {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 + + {Number 5 Electronic Switching System} + +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 functions}, + {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 were quite common in 1996, e.g. {Digital} + {Alpha}, versions of {Sun} {SPARC}, {MIPS}, {IBM} {AS/4000}. + the {PowerPC} and {Intel} were 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 were 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 1996 there were 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. + + (2004-05-12) + +6501 + + An eight-bit {microprocessor}, the first sold by + {MOS Technology}. 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 + Technology} 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 optimise 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 computers}. + +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) + +6526 + + {MOS Technology 6526} + +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} + +6to4 + + A {protocol} for transitioning from {IPv4} to + {IPv6}. Networks may use 6to4 (or other transitioning protocols) + until they support native {dual-stack}. + + Because 6to4 is a form of {tunnelling}, it requires + {encapsulation} by a {protocol converter}. This can cause + performance problems due to increased {latency} and decreased + {MTU} sizes, as described in {RFC 6343 + (http://tools.ietf.org/html/rfc6343)}. + + {RFC 3056 (http://tools.ietf.org/html/rfc3056)}. + + (2012-12-24) + +6x86 + + {Cyrix 6x86} + +754 + + {IEEE Floating Point Standard} + +80186 + + {Intel 80186} + +80188 + + {Intel 80188} + +80/20 rule + + {eighty-twenty rule} + +802.1 + + {IEEE 802.1} + +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} + +8250 + + A {UART} that can operate at a maximum of 9600 {baud}. + + The 8250 is used in {IBM PC XT} computers. It works in an + {IBM PC AT} under {DOS} but generates unwanted {interrupts} + when used at 9600 {baud}. The {IBM PC} {BIOS} has a bug fix + for this chip. + + (2004-03-21) + +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) + +8450 + + A {serial IO chip} with a one-{byte} {FIFO}. The + 8450 was introduced with the {Intel 8080}. + + (2004-03-21) + +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 + lines}, 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} + +< + + {less than} + += + + {equals} + +> + + {greater than} + +? + + {question mark} + +?? + + A {Perl} quote-like {operator} used to delimit a + {regular expression} (RE) like "?FOO?" that matches FOO at + most once. The normal "/FOO/" form of regular expression will + match FOO any number of times. The "??" operator will match + again after a call to the "reset" operator. + + The operator is usually referred to as "??" but, taken + literally, an empty RE like this (or "//") actually means to + re-use the last successfully matched regular expression or, if + there was none, the empty pattern (which will always match). + + {Unix manual page}: perlop(1). + + (2009-05-28) + +@ + + {commercial at} + +\ + + {backslash} + +\{@} + + A rare {emoticon} supposed to represent a rose. + + (2013-06-26) + +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 {abstractions}. 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 + systems}: {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. + + {(http://a3d.com/)}. + + (1999-01-26) + +A4C + + {Authentication, Authorization, Accounting, Auditing and Charging} + +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, {suggestions}, {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}. + + {(http://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 {objects}. 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 grinders}. 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) + +AberMUD + + The first popular {open source} {MUD}. The first + version of AberMUD, named after Aberystwyth, UK, was written + in {B} by Alan Cox, Richard Acott, Jim Finnis, and Leon + Thrane, at University of Wales, Aberystwyth for an old + {Honeywell} {mainframe} and opened in 1987. The gameplay was + heavily influenced by {MUD1}, written by Roy Trubshaw and + Richard Bartle, which Alan Cox had played at the University of + Essex. In late 1988, Alan Cox ported AberMUD to {C} so it + could run under {UNIX} on Southampton University's Maths + machines. This version was named AberMUD2. Various other + versions followed. + + (2008-11-24) + +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}. + +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 + + A description of a concept that leaves out some + information or details in order to simplify it in some useful + way. + + Abstraction is a powerful technique that is applied in many + areas of computing and elsewhere. For example: {abstract + class}, {data abstraction}, {abstract interpretation}, + {abstract syntax}, {Hardware Abstraction Layer}. + + (2009-12-09) + +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://cis.upenn.edu/~gunter/publications/documents/taoop94.html)}. + + {Cook paper "OOP vs ADTs" + (http://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 {domains} + 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 types} + and {product types}) 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 {platforms}. + + 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 form of representation of data that is + independent of machine-oriented structures and encodings and + also of the physical representation of the data. Abstract + syntax is used to give a high-level description of programs + being compiled or messages passing over a communications link. + + A {compiler}'s internal representation of a program will + typically be an {abstract syntax tree}. The abstract syntax + specifies the tree's structure is specified 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 1988 + 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}. + + (2005-07-03) + +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]. + + {(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 + +