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, telecomms, electronics, institutions, companies, projects, products, history, in fact anything to do with computing. This dictionary is Copyright Denis Howe 1993, 1996. Permission is granted to make and distribute verbatim copies of this dictionary or modified versions or translations into another language, provided that every such copy or derived work carries the above copyright notice and is distributed under terms identical to these. Individual definitions from this dictionary may be used without restriction provided no more than twenty are used in any one work. Please refer to the dictionary as "The Free On-line Dictionary of Computing, http://wombat.doc.ic.ac.uk/, Editor Denis Howe " or similar. The dictionary started in 1985 and now contains 8611 definitions totalling 3.5 megabytes. Entries are cross-referenced to each other and to related resources elsewhere on the net. It services around 10000 queries per day. 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 created, updated or first date-stamped. 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://wombat.doc.ic.ac.uk/). If you find an entry that is wrong or inadequate please let me know. See {Acknowledgements} for sources and contributors. See {Pronunciation} for how to interpret the pronunciation given for some entries. Denis Howe +44 (171) 606 7080 x8161 (27 Jun 1996) Acknowledgements Thanks to the maintainers of the following resources from which some entries originate: Mike Sendall's STING Software engineering glossary , 13 Oct 1993, Bill Kinnersley's {Language List (http://cuiwww.unige.ch/langlist)} v2.2, 15 Jan 1994, Mark Hopkins' catalogue of Free Compilers and Interpreters v6.4, 28 Feb 1994, The on-line hacker Jargon File v3.0.0, 27 Jul 1993, Internet Users' Glossary (RFC 1392, FYI 18), Jan 1993. John Cross's computer glossary, 01 Nov 1994. John Bayko's Great Microprocessors of the Past and Present, v4.0.0, 18 Aug 1994. {Electronic Commerce Dictionary}. Thanks to the guest editors: Maryellen Alley, Clifford Q. Brodie, Nancy Bacon Brown, David Citron, Andrew Crawford, Matthew Fitzgerald, Mark Gamble, Paige Gramling, Andrew Gray, Mary Lynn Hyman, Richard Jefferis, Gábor J.Tóth, David Lomas, Gareth McCaughan, Ajith_Narayanan, Julian Orbach, Jon Osterlund, Jim Palik, John Perry, Jeness Ruhanen, Simeon J. Simoff, Jasjit Singh, John Stumbles, Walid Taha, Paul Wolsink, Brigit van Loggem. Thanks to the following contributors for information used in some entries: Bernard Aboba, Richard Adams, Tom Adams, Rakesh "Rocky" Agrawal, Hasimoto Akihiro, Matt Aldridge, Ian Alexander, John Alexander, Kamal Ali, Martti Alkio, Bud Allen, Christian Allred, Kurt Ament, Beth Anderson, Greg Anderson, Kim Anderson, Robin Anson, Matthew Appler, Dale Archibald, Ron Arendas, Philippe Argouarch, John Arnold, Stephen L. Arnold, Kevin Austin, Mounir Azouzi, Gareth Babb, Dan Baca, Paul Bailey, John Bair, Leemon Baird, Robert Barger, Jan Bates, John Bayko, Paul Bedworth, Edward Behan, Stephen Behnfeldt, Kevin Belanger, Susan Bellomo, Gordon Benett, Steve Bennett, Randolph Bentson, Emery Berger, Andre Berloth, Pierre Bernier, Dave Berry, Tobias Besch, Paul Bethe, Paolo Bevilacqua, Pete Bevin, Paul K. Bickmore, Bob Bishop, Chris Blackmore, Gerard Blokdijk, Andre Boe, Terje Boe, Peter Boersma, Lee Bolin, Hagen Bollen, Marco Bonetti, Curtis G. Booth, Vareck Bostrom, Richard Botting, Jim Bottrell, Jonathan Bowen, Les Boyce, David Boyle, John Braden, Sergio M. Brant, Klaus Breuer, Peter T. Breuer, Marc Brewerton, Keith Briggs, Preston Briggs, Stewart Brodie, Duane Bronson, Donald Brown, Penny Brown, Ron Brown, Guus Brugman, Jason Brunette, Julian Bunn, Sean M. Burke, Geoffrey Burn, Mike Bursell, Mike Butts, James Byrne, Andy Caldwell, Michael Callaham, Carol Callery, Andy Cannon, Rob Carroll, Terry Carroll, Gene Carson, Paul Caspi, Steve Cavrak, C.A. Ceotto, Cesar Cepeda, Freddy Ceuppens, Standwood Ho Chae, Glen 'Tex' Chalemin, Jim Chan, Ben Chi, Richard Chou, Don Del Cimmuto, Keith Clarke, Thomas M. Cleland, Peter Clout, Roy Coates, Jason Cohen, Roger Cohen, Geoff Collyer, Tim Comber, Ken Comer, Ann Comey, Paul Connolly, Ken Conrow, Thomas Conway, David Cooke, Alan Coopersmith, Alan Cox, Melissa Cox, Lee Cremeans, Conor Cronin, John Cross, Robert P. Cross, Jerry Croteau, Pam Crouch, Frank da Cruz, Andre Csillaghy, Chris Cudahy, Jussara Carneiro da Cunha, Greg Dainard, Charlie Daly, Axel Daneels, Don Daniels, Ian Davidson, Tony Davie, Bruce Davis, Michael Davis, Phillip Dean, John DeHoog, Alan DeKok, steve demers, Johannes Dengler, Jody Detzel, Robert Dewar, Jonathan Dick, Jed Donnelley, Jeffrey T. Donville, Tim Down, Mao Du, Bob DuCharme, Bill Dugan, Don Dugdale, Tomas Dumcius, John Eastlund, Cynthia Edwards, Barend Jan van Eijk, Isam Elamin, Bobby Elliott, Dave Ellis, Gwilym Ellis, J. Lee Ellis, Lisa Engel, Richard Etner, Dave Evans, Karl Ewald, Ty Fairchild, Jonathan Fanelli, John Farrell, Feyzi Fatehi, Susannah Faulhaber, Han Fei, Pete Fenelon, Jianhong Feng, Brian Fennell, Rolf Ferner, Mik Ferran, Joe Ferrara, Dave Fetrow, Daniel Finster, Mark Fisher, Simon Floyd, Wolfgang Flury, Bill Foote, Chuck Forsberg, F. Andre Fortune, Ray Foss, Chuck Foster, Pierre-Yves Foucou, Martin Fouts, Jeremy Frank, Tom Frank, Michael Froomkin, Ivan G. Fuchs, Paul Gardner-Stephen, Cole Gauger, Marc Geelen, Jaco Geldenhuys, Shai Geva, Bob Gibson, David de Gil, Mike Godin, Brian Goggins, Harry Gordon, Matt Gordon, Ralph Grabowski, Robert D. Graham, Gary Gray, Angela Greene, Gavin Gregson, Walt Grizzle, Greg Gruber, Darren Guest, Alistair J. Gunn, kathe gust, Ben Hale, Doug Hall, Thomas Hallgren, Michael S. Hanna, Jan C. Hardenbergh, Matt Harmon, Robin Harmon, Ben Harris, Guy Harris, Brian Harvey, Ted Haynes, benedict heal, Mike Heck, Oliver Heidelbach, Juhani Heino, Stefan Heinzmann, Tom Held, Patrick Helms, Rick Herman, Don Herold, Mark Hershberger, Dan Hildebrand, Garrett Hildebrand, Tad Hogg, Eddie Hold, Felix Holderied, Elkie Holland, C. Michael Holloway, Brad Holve, Peter Holzleitner, Ding Hongtsing, Mark Hopkins, Hans Hopman, Ray Hosler, Robert Howard, James Howell, Hortense Howell-Barber, Dave Hudson, Chris Hughes, Immo Huneke, David Hurlbert, Mihai Iliescu, Gábor J.Tóth, Dick Jackson, Andrew Jackson-Smale, David Jacobs, Fred James, Jonas Jarnestrom, Richard Jefferis, Sarita Jha, Glyn Johnson, Michael Sadler Johnson, Richard Jones, Simon Peyton Jones, Isak Jonsson, Pribush Gregory Alexander Jr., Ron Johnson Jr., Walter Strycharz Jr., William J. Leary Jr., Jean-Marc Jugant, Andreas Kähäri, Sudarshan Kadambi, Dennis Kane, Bob Kanefsky, Barry Karas, Barry Karsh, Val Kartchner, Larry Katz, Martin Katz, Aditya Kaul, Jason Kay, Ali Kazemi, Robert M. Keller, Steve Kellett, Magnus Kempe, Andrew Kennedy, Dave Kennedy, Ivan Kent, Marco Kesseler, Johannes Keukelaar, Amir "Duggy" Khan, Martin Kiff, Gyudong Kim, Steve Kimberley, Matz Kindahl, M. A. Kingsley, Bill Kinnersley, Daniel Klein, David Knopf, Larry Kollar, Klaus Krause, Tom Krotchko, Bruce Kula, Doc Kuster, Heidi Lackmann, Dan Langille, Norm Larsen, Nick Lawrence, Hun-Jae Lee, Rick Lehtinen, Felix von Leitner, Luc Leonard, Gene Leone, Hank Leukart, Alex Li, Kai Lindegren, Steve Lionel, James Lippard, David Lloyd-Jones, Oscar Ortega Lobo, Jeff Loeb, Hans van de Looy, Wulf Losee, Manolis Lourakis, Dave Love, P.K. Love, Ben Lovegrove, David Lowe, Alex Lubashevsky, J. Luis, Wayne Lux, Scott MacComb, Angus MacDonald, Hamish MacEwan, Gordon Macphail, Donald MacQueen, Bill Maloy, Bruno Mamer, James Mankin, Urs Marcassoli, Bill Marcum, George Marengo, Dave Marshall, Paul Martin, Carlos Martinez, Daniel G Martinez, David Mastbaum, Jean-Pol Matheys, John Mawer, Neil Mayes, Neil F. Mayes, Douglas J. McCann, Dwight McCann, Gareth McCaughan, Robert McDermid, Jacob M McDonald, Minerva McFarland, Rory McGreal, Stuart McIntyre, Paul McJones, Russell McOrmond, Brian Meekings, Lambert Meertens, Miguel Menasche, Nick Merriam, David Messner, Bertrand Meyer, Judith A. Meyer, Joan Michaeli, David Michelson, Ronan Miles, Paul Miller, Robert T. Miller, Davin Milun, Keith Mitchell, Vic Moberg, Ed de Moel, Christian Mogensen, Mukund Mohan, Jitty Molenaar, Phil Molyneux, Henry Moreno, Cassandra Morris, R. Morrisette, Cyril Moulard, Loyd W. Mowry, David Muir, Carmen Mulberry, bobbi murphy, Tim Musgrove, Timothy A. Musgrove, David Myers, Andrew Nelson, Russell Nelson, Jonas Nilsson, Allan Noordvyk, Bernd Nurnberger, Mikael Nystrom, John O'Brien, Mike O'Connor, Jarlath O'Neil-Dunne, Tom O'Neill, Alf Ohlsson, Don Olivier, Ernest Ong, Petrus Oomen, Julian Orbach, Joe Orost, Alfredo Ortiz, Jon Osterlund, James Ots, Massimiliano Pagani, Paolo Palazzi, Michael J. Paluka, Jim Park, Ray Parrish, Erling Paulsen, Larry Paulson, F. Payre, Ella M. Beale Peacock, Bruno Peeters, Chris Pepper, Nuno Sidonio Andrade Pereira, Heikki Pernu, John Perry, Luca Pesce, Sergey Petrov, Frank Petzold, Bryan Pfaffenberger, David Phillips, Kim Phillips, Duncan Pierce, Bruno Pignard, Mike Pinkston, Boisy G. Pitre, Robert Plankers, Walt Pohl, Barry Pollack, Fox Wai-Leung Poon, Nick Porter, Jon Postel, Barry Pottinger, Matt Power, Chris Prall, Samuel Pratt, Rick Preen, Steve Prior, Jeroen Proveniers, Dale Prull, Jas'n Quartarone, Steve Radnov, Matti Ralph, Tim Rauenbusch, Chris Ray, Simon Read, Patrik Reali, Julie Reese, J Chris Regan, Steve Reid, Matt Reilly, Rick Reischl, Mark "E." Rekai, Liam Relihan, Iain Rennie, Adam Rice, Jean Richardson, Chris Rijk, D.S. Ritter, Aron Roberts, Jim Roby, Matt Rodgers, Keith Rogers, Robert Rolnik, David Rosen, Jon Ross, Simon Rowell, Michael Roza, Michael Rudzki, Mark Ryan, Chris Sacksteder, George Sagen, Peter Sakalaukus, Ken Sall, Alan Sandell, Arsenio Santos, Tony Sarno, S. Sasi, Tristan Savatier, Joost van der Schaaf, Ted Schill, Kai Schlichting, Bernhard Schraeder, Andrew Scott, Bob Scott, Lee Scott, Mike Sendall, Gihan Seneviratne, Tina Shadforth, Dan Shearer, Peter Shenkin, Buddy Shipley, Makoto Shojima, Anli Shundi, Rick Sidwell, Omar Siliceo, George Silver, Mark Simmons, Colin Simpson, Michael Singer, Benjamin C. W. Sittler, Daniel C. Skinner, Carol Small, Tim Small, Don Smith, Jason Smith, Mike Smith, Joel Snyder, Vance Socci, Craig L. Solomon, Daniel B. Sorge, Shelly Spearing, Marcus Speh, Neil Spellings, Ellen Spertus, Jed Spink, Deirdre C. Stam, Eva-Maria Stephan, Larry Stewart, Anthony Stieber, Timothy Stockman, Timothy P. Stockman, Larry Stone, Carrie Story, Lisa S. Strite, Dan Strobeck, Thomas Stroehla, Walter Strycharz, Bill Studabaker, Tom Suhrstedt, Steve Sumioka, Scott Sumner, Dean F. Sutherland, Jeff Sutherland, Callum Sword, Gyula Szalay, Daniel Tabor, Tucker Taft, Walid Taha, Tapio Tallgren, Daren Tanner, Graham Tappenden, Paul Tarau, Alex Tashayod, Peter Tattam, Paul Taylor, Sheila Taylor, Blaise Thiercelin, L Thioudellet, Walt Thode, Dan Thompson, Keith Thompson, Brian Thomson, Wayne Throop, Kenneth Topp, Richard Trammell, Stephen Trier, Alvin Trusty, Jeff Trzeciak, Torsten Trzewik, Jim Tucker, Thierry Turletti, Margaret Turner, Mike Turniansky, Link Tyson, Frederic Udina, G. Vallinayagam, Reg Vance, Alex Vasilesco, David Vasilevsky, Dave Vasko, Larry Virden, Marc Visser, Herbert van Vliet, Charles Voge, Wynn Wagner, Mark Wainwright, Steve Wall, Joan Walsh, Xiaoyang Sean Wang, Michael L. Webb, Milt Webb, Wu Wen, Leon West, Glen Whitney, Colin Whyles, Josef Wichmann, Vanessa Wilburn, Roger Wilkerson, Stephen Wilkinson, David Wille, Michael Williams, Warren Williams, Jesci Wilson, Kevin Wind, Matthias Winkler, Bruce Wolfe, Benjamin Wong, M.C. Wong, Samson Wong, Christopher Yoder, Ivo Zaenen, Joe Zeff, Johan Zeylon, Dave Ziemann, Mark Zurbuchen " {double quote} % {percent} , {comma} 0 {zero} 0/1 knapsack problem The {knapsack problem} restricted so that the number of each item is zero or one. (13 Mar 1995) 10base2 (Or "cheapernet") The variant of {Ethernet} that uses thin {coaxial} cable (RG-58 or similar), as opposed to "full spec" {10base5} yellow cable. The "10" means 10Mbits/sec, "base" means "baseband" as opposed to RF, and "2" means a maximum single cable length of 200m. (14 Nov 1995) 10base5 The original "full spec" variant of {Ethernet}, using a thick {coaxial} cable ("yellow cable"). The "10" means 10Mbits/sec, "base" means "baseband" as opposed to RF, and "5" means a maximum single cable length of 500m. Compare {10base2}, {10baseT}. (11 Nov 1995) 10BaseT A variant of {Ethernet} which allows stations to be attached via {twisted pair} cable. (24 Jan 1995) 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}. (23 Nov 1994) 1-2-3 {Lotus 1-2-3} 1394 {High Performance Serial Bus} 1541 {Commodore 1541} 16550 A version of the 16450 {UART} with a 16-byte {FIFO} buffer. Now revised to the 16550A. (24 Jan 1995) 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}. (13 May 1996) 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}. (06 Apr 1996) 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} (21 Nov 1995) 1TBS One True Brace Style. See {indent style}. (25 Jan 1995) 1.TR.6 A {control channel protocol} for {ISDN}. It is a national {standard} in Germany but is being replaced by {Euro-ISDN}. (27 Mar 1995) 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}). (25 Jan 1995) 20-GATE An algebraic language for the {G-20}, developed at {Carnegie} around 1965. (27 Feb 1995) 2B1Q {two-binary, one-quaternary} 2.PAK An {artificial intelligence} language with {coroutine}s. ["The 2.PAK Language: Goals and Description", L.F. Melli, Proc IJCAI 1975]. (25 Jan 1995) 320xx A series of {microprocessor}s 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?] (17 Nov 1994) 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 system}s 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}. (11 Dec 1995) 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)}. (15 Feb 1995) 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. (28 May 1996) 3Com A manufacturer of {local area network} equipment. They merged with {Convergent Technologies} in March 1986 to become {Convergent} Inc. (25 Jan 1995) 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 CD}s with a special add-on {MPEG}1 {full-motion video} cartridge. Up to 8 {controller}s 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 3-D 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. {(http://www.3do.com/)} {Usenet} newsgroup: {news:rec.games.video.3do}. (13 Dec 1994) 3GL {third generation language} 3Station The archtypal {diskless workstation}, developed by Bob Metcalfe at {3Com}. [Features? Dates?] (27 Mar 1995) 4.2BSD See {Berkeley System Distribution}. 431A The type of plug which fits a standard "type 600" {British Telecom} telephone socket. (25 Jan 1995) 4510 A {65CE02} with two {6526}s. Used in the {Commodore 65}. (06 Apr 1996) 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]. (31 Oct 1994) 486 {Intel 486} 486SX {Intel 486SX} 4GL {fourth generation language} 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)} (03 Apr 1993) 56k line A digital connection ({leased line}) capable of carrying 56000 bits-per-second. (18 Dec 1995) 586 What {Intel}'s {Pentium} was not called. 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 meters away from the unit's transmitter. 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}. (22 Nov 1994) 6309 {Hitachi 6309} 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 {register}s. It was an 8 bit processor, with 16 bit {address bus}. Inside was one 8 bit data register ({accumulator}), two 8 bit {index register}s 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 mode}s, 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). The 6502 also had undocumented instructions. 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 computer}s. {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 {65816} is an expanded version of the 6502. There is a 6502 {assembler} by Doug Jones which supports {macro}s and conditional features and can be used for linkage editing of object files. It requires {Pascal}. See also {cross-assembler}, {RTI}, {Small-C}. (31 Oct 1994) 650x A family of {microprocessor}s 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 An enhanced version of the {6502}. The 6510 was used in the {Commodore 64}. [More details?] (29 Oct 1995) 65816 An expanded version of the {6502}, with which it is compatible. It has 16 bit {index register}s and {stack pointer}, a 16-bit direct page register and a 24-bit {address bus}. Used in later models of the {Apple II}. (31 Oct 1994) 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} 68HC11 {Motorola 68HC11} 80186 {Intel 80186} or compatible. 80188 {Intel 80188} or compatible. 802.2 {IEEE 802.2} 802.3 {IEEE 802.3} 80286 {Intel 80286} or compatible. 8031 See {as31}. 80386 {Intel 80386} or compatible. 80486 {Intel 486} or compatible. 8051 See {CAS 8051 Assembler}, {as31}, {51forth}. [What is an 8051?] (26 Jan 1995) 8080 {Intel 8080} 8086 {Intel 8086} 8088 {Intel 8088} 80x86 {Intel 80x86} or compatible. 822 {RFC 822} 82430FX {Triton I} 82430HX {Triton II} 82430MX {Mobile Triton} 82430VX {Triton VX} 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. (26 Jan 1995) 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. {RS-232}. (31 Jan 1995) 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]. (07 Feb 1995) :-) See {emoticon}. ; {semicolon}. = {equals}. @ {commercial at} 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 {primitive}s 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. (07 Feb 1995) 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]. (03 Dec 1995) 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)} (19 Jul 1994) 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. (10 Jan 1996) a56 An {assembler} for the {Motorola} {DSP56000} and {DSP56001} {digital signal processor}s by Quinn Jensen . Version 1.1 is available from an {alt.sources} archive or {(ftp://wuarchive.wustl.edu/)}. (10 Aug 1992) 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}. (08 Nov 1994) aard A tool to check memory use for {C++} programs. It 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 leak}s). The tools works using a spliced-in {shared library} on {SPARC}s running {C++} 3.0.1 under {SunOS} 4.X. {(ftp://wilma.cs.brown.edu/pub/aard.tar.Z)} E-mail: Steve Reiss . [Why "aard"?] (13 Oct 1994) abbrev /*-breev'/, /*-brev'/ Common abbreviation for "abbreviation". (27 Feb 1995) ABC 1. 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 variable}s 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.] (09 Feb 1995) 2. Argument, Basic value, C?. An {abstract machine} for implementation of {functional language}s and its intermediate code. [P. Koopman, "Functional Programs as Executable Specifications", 1990]. (09 Feb 1995) 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]. (28 Oct 1994) 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]. (23 May 1990). (09 Feb 1995) 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]. (08 Nov 1994) 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)]. (08 Nov 1994) 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/)} (28 Jan 1993) abduction The generation of hypotheses to explain observations or conclusions. Applications include fault diagnosis, plan formation and {default reasoning}. Both the {semantics} and the implementation of abduction can be reduced to those for {deduction}. {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?] (08 Nov 1994) 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". (08 Nov 1994) 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)]. (08 Nov 1994) ABP A {datalink layer} protocol. [What does it stand for?] (15 Jun 1996) ABR {automatic baud rate detection} abscissa The x-coordinate on an (x,y) graph; the input of a function against which the output is plotted. y is the "{ordinate}". (15 Jun 1996) 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]. (08 Nov 1994) 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. (08 Nov 1994) abstract data type (ADT) A type whose internal form is hidden behind a set of {access function}s. Objects 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. Abstract data types are central to {object-oriented programming} where every {class} is an ADT. 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. (22 Feb 1995) 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}. (08 Nov 1994) abstraction 1. Generalisation, ignoring or hiding details. Examples are {abstract data type}s (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 abstraction}s (making a term into a function of some variable), {higher-order function}s (parameters are functions), {bracket abstraction} (making a term into a function of a variable). Opposite of {concretisation}. (08 Nov 1994) 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}. (13 Mar 1995) Abstract Machine Notation (AMN) A language for specifying {Abstract Machine}s in the {B-Method}, based on the mathematical theory of {Generalised Substitution}s. (13 Mar 1995) abstract syntax 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". The syntax is abstract in two senses: it is independent of machine-oriented structures and encodings and also 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}. (08 Nov 1994) Abstract Syntax Notation 1 (ASN.1) An {ISO}/{ITU-T} {standard} language for the description of data, defined in 1988. {ITU} TS X.208, {ISO} 8824. {Basic Encoding Rules} (BER) provide a universal (contiguous) {concrete} representation of the data values whose {abstract syntax} is described in ASN.1. ASN.1 and BER facilitate the exchange of structured data between {application program}s over networks by describing data structures in a way that is independent of machine architecture and implementation language. {OSI} {Application layer} {protocol}s such as {X.400} {MHS} {electronic mail}, {X.500} directory services and {SNMP} use ASN.1 to describe the {PDU}s they exchange. ASN.1 is used by the {National Center for Biotechnology Information}. [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}. (30 Nov 1994) 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}. (08 Nov 1994) Abstract-Type and Scheme-Definition Language (ASDL) A language developed as part of {Esprit} project {GRASPIN}, as a basis for generating {language-based editor}s 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]. (19 Feb 1996) Abstract Windowing Toolkit (AWT) {Java}'s {platform}-independent {windowing}, graphics, and user-interface {toolkit}. ["Java in a Nutshell", O'Reilly]. [On-line documentation?] (23 Apr 1996) 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]. (08 Nov 1994) ACA {Application Control Architecture} accelerator Additional hardware to perform some function faster than is possible in software running on the normal {CPU}. Examples include {graphics accelerator}s and {floating-point accelerator}s. (08 Nov 1994) Accent A very high level interpreted language from {CaseWare} Inc. with strings and tables. It is {strongly typed} and has remote function calls. (08 Nov 1994) accept {Berkeley} {Unix} networking {socket} library routine to satisfy a connection request from a remote {host}. A specified socket on the local host (which must be capable of accepting the connection) is connected to the requesting socket on the remote host. The remote socket's socket address is returned. Unix manual pages: accept(3x), connect(3x). (08 Nov 1994) Acceptable Use Policy (AUP) Rules applied by many {transit network}s which restrict the use to which the network may be put. A well known example is {NSFNet} which does not allow commercial use. Enforcement of AUPs varies with the network. (08 Nov 1994) acceptance testing Formal testing conducted to determine whether a system satisfies its acceptance criteria and thus whether the customer should accept the system. (10 May 1996) Access 1. An English-like query language used in the {Pick} {operating system}. 2. {Microsoft Access}. (08 Nov 1994) Access Control List (ACL) A list of the services available on a {server}, each with a list of the {host}s permitted to use the service. (08 Nov 1994) access time The average time interval between a storage peripheral (usually a disk drive or memory) receiving a request to read or write a certain location and returning the value read or completing the write. In order for a disk drive to start to read or write a given location a read/write head must be positioned radially over the right track and rotationally over the start of the right sector. Radial motion is known as "seeking" and it is this which causes most of the intermittent noise heard during disk activity. There is usually one head for each disk surface and all heads move together. The set of locations which are accessible with the heads in a given radial position are known as a "{cylinder}". The "{seek time}" is the time to move the heads to a different cylinder. The disk is constantly rotating (except for some {floppy disk} drives where the motor is switched off between accesses to reduce wear and power consumption) so positioning the heads over the right sector is simply a matter of waiting until it arrives under the head. With a single set of heads this "{rotational latency}" will be on average half a revolution but some big drives have multiple sets of heads spaced at equal angles around the disk. If seeking and rotation are independent, access time is seek time + rotational latency. When accessing multiple tracks sequentially, data is sometimes arranged so that by the time the seek from one track to the next has finished, the disk has rotated just enough to begin accessing the next track. See also {sector interleave}. (08 Nov 1994) ACCLAIM A European Union {ESPRIT} {Basic Research Action}. [What's it about?] (08 Nov 1994) ACCU {Association of C and C++ Users} accumulator In a {central processing unit}, a {register} in which intermediate results are stored. Without an accumulator, it would be necessary to write intermediate results to {main memory} and read them back. Access to main memory is slower than access to the accumulator which usually has direct paths to and from the arithmetic and logic unit (ALU). Modern CPUs usually have many registers, all or many of which can be used as accumulators. For this reason, the term "accumulator" is somewhat archaic. Use of it as a synonym for "register" is a fairly reliable indication that the user has been around for quite a while and/or that the architecture under discussion is quite old. The term in full is almost never used of microprocessor registers, for example, though symbolic names for arithmetic registers beginning in "A" derive from historical use of the term "accumulator" (and not, actually, from "arithmetic"). Confusingly, though, an "A" register name prefix may also stand for "address", as for example on the {Motorola} {680x0} family. 2. A register, memory location or variable being used for arithmetic or logic (as opposed to addressing or a loop index), especially one being used to accumulate a sum or count of many items. This use is in context of a particular routine or stretch of code. "The FOOBAZ routine uses A3 as an accumulator." (02 Mar 1995) ACE 1. {Advanced Computing Environment}. 2. {Adaptive Communication Environment}. ACIS Andy, Charles, Ian's System. A {geometric engine} that most {CAD} packages now use. ACIS uses a sophisticated {object-oriented} approach for modelling, the data is stored in {boundary representation}. Acis is owned by {Spatial Technologies}. [How does this differ from "solid modelling"?]. (21 Mar 1996) ACK /ak/ The {mnemonic} for the ACKnowledge character, {ASCII} code 6. (24 Jun 1996) ACL 1. {Access Control List}. 2. {Association for Computational Linguistics}. 3. A Coroutine Language. A {Pascal}-based implementation of {coroutine}s. ["Coroutines", C.D. Marlin, LNCS 95, Springer 1980]. (08 Nov 1994) ACM {Association for Computing Machinery} ACME /ak'mee/ 1. A Company that Makes Everything. The {canonical} imaginary business. Possibly also derived from the word "acme" meaning "highest point". 2. A program for {MS-DOS}. [What does it do?] (08 Nov 1994) ACOM An early system on the {IBM 705}. [Listed in CACM 2(5):16 (May 1959)]. (08 Nov 1994) Acorn Archimedes See {Archimedes}. Acorn Computer Group A holding company for {Acorn Computers} Limited, Acorn Australia, Acorn New Zealand, Acorn GmbH and {Online Media}. Acorn Computer Group owns 43% of {Advanced RISC Machines} Ltd. (08 Nov 1994) Acorn Computers Ltd. A UK computer manufacturer, part of the {Acorn Computer Group} plc. Acorn was founded 5th December 1978, on a kitchen table in a back room. Their first creation was an electronic slot machine. After the {Acorn System 1}, 2 and 3, Acorn launched the first commercial {microcomputer} - the {ATOM} in March 1980. In April 1981, Acorn won a contract from the {BBC} to provide the {PROTON}. In January 1982 Acorn launched the {BBC Microcomputer} System. Seven out of ten microcomputers bought for UK schools were BBC Micros. The Acorn Computer Group went public on the Unlisted Securities Market in September 1983. In April 1984 Acorn won the Queen's Award for Technology for the BBC Micro and in September 1985 {Olivetti} took a controlling interest in Acorn. The {Master} 128 Series computers were launched in January 1986 and the BBC {Domesday} System in November 1986. In 1983 Acorn began to design the Acorn RISC Machine (ARM), the first low-cost, high volume {RISC} processor chip (later renamed the {Advanced RISC Machine}). In June 1987 they launched the {Archimedes} range - the first 32-bit {RISC} based {microcomputer}s - which sold for under UKP 1000. In February 1989 the R140 was launched. This was the first {Unix} {workstation} under UKP 4000. In May 1989 the A3000 (the new {BBC Microcomputer}) was launched. In 1990 Acorn formed {Advanced RISC Machines} Ltd. (ARM) in partnership with {Apple Computer} Inc. and {VLSI} to develop the ARM processor. Acorn has continued to develop {RISC} based products. With 1992 revenues of 48.2 million pounds, Acorn Computers is the premier supplier of {information technology} products to UK education and has been the leading provider of 32-bit RISC based {personal computers} since 1987. Acorn works with industry partners, users and software developers to provide products for the education, consumer, publishing and international markets. {Usenet} newsgroups: {news:comp.sys.acorn}, {news:comp.sys.acorn.announce}, {news:comp.sys.acorn.tech}, {news:comp.binaries.acorn}, {news:comp.sources.acorn}, {news:comp.sys.acorn.advocacy}, {news:comp.sys.acorn.games}. {Acorn's FTP server (ftp://ftp.acorn.co.uk/)} E-mail: . {HENSA software archive (http://micros.hensa.ac.uk/micros/arch.html)}. {Richard Birkby's Acorn page (http://www.csv.warwick.ac.uk/~phudv/)}. {RiscMan's Acorn page (http://www.geko.com.au/riscman/)}. {Acorn On The Net (http://www.stir.ac.uk/~rhh01/Main.html)}. {"The Jungle" by Simon Truss (http://www.csc.liv.ac.uk/users/u1smt/u1smt.html)}. (31 Oct 1994) Acorn RISC Machine The original name of the {Advanced RISC Machine}. (07 Mar 1995) ACOS A {BBS} language for {PRODOS 8} on {Apple II}. {Macos} is a hacked version of ACOS. (08 Nov 1994) acoustic coupler A box containing a microphone and a loudspeaker, into which a telephone handset can be inserted in order to connect a {modem} to the telephone line. It is preferable to avoid this by providing a direct electrical connection between the modem and the telephone line, thus avoiding conversion to and from audio. This is not always possible and was actually illegal in the United Kingdom before {British Telecom} was privatised - the General Post Office did not allow subscribers to connect their own equipment to the telephone line. (08 Nov 1994) ACP Algebra of Communicating Processes. Compare {CCS}. ["Algebra of Communicating Processes with Abstraction", J.A. Bergstra & J.W. Klop, Theor Comp Sci 37(1):77-121 (1985)]. (08 Nov 1994) Acrobat A product from {Adobe Systems}, for manipulating documents stored in {Portable Document Format}. Acrobat provides a {platform}-independent means of creating, viewing, and printing documents. {Acropolis: the magazine of Acrobat publishing (http://www.acropolis.com/acropolis)}. (21 Apr 1995) acronym An identifier formed from some of the letters (often the initials) of a phrase and used as an abbreviation. {This dictionary} contains a great many acronyms; see the contents page for a list. See also {TLA}. (15 Mar 1995) ACSE {Association Control Service Element} ACT {Annual Change Traffic} ACT++ A {concurrent} extension of {C++} based on {actor}s. ["ACT++: Building a Concurrent C++ With Actors", D.G. Kafura TR89-18, VPI, 1989]. (08 Nov 1994) Act1 An {actor} language descended from {Plasma}. ["Concurrent Object Oriented Programming in Act1", H. Lieberman in Object Oriented Concurrent Programming, A. Yonezawa et al eds, MIT Press 1987]. (08 Nov 1994) Act2 An {actor} language. ["Issues in the Design of Act2", D. Theriault, TR728, MIT AI Lab, June 1983]. (08 Nov 1994) Act3 A high-level {actor} language by {Carl Hewitt}. A descendant of {Act2} which provides support for automatic generation of {customer}s and for {delegation} and {inheritance}. ["Linguistic Support of Receptionists for Shared Resources", C. Hewitt et al in Seminar on Concurrency, S.D. Brookes et al eds, LNCS 197, Springer 1985, pp. 330-359]. (08 Nov 1994) Actalk A {Smalltalk}-based {actor} language developed by J-P Briot in 1989. ["Actalk: A Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment", J-P. Briot, Proc ECOOP '89, pp. 109-129]. (08 Nov 1994) Actis An approach to integrated {CASE} by {Apollo}. (08 Nov 1994) activation record (Or "data frame", "stack frame") A data structure containing the variables belonging to one particular {scope} (e.g. a procedure body), as well as links to other activation records. Activation records are usually created (on the {stack}) on entry to a block and destroyed on exit. If a procedure or function may be returned as a result, stored in a variable and used in an outer scope then its activation record must be stored in a {heap} so that its variables still exist when it is used. Variables in the current {scope} are accessed via the {frame pointer} which points to the current activation record. Variables in an outer scope are accessed by following chains of links between activation records. There are two kinds of link - the {static link} and the {dynamic link}. (07 Mar 1995) active DBMS A conventional or passive {DBMS} combined with a means of event detection and condition monitoring. Event handling is often rule-based, as with an {expert system}. (08 Nov 1994) Active Language I An early interactive mathematics system for the {XDS 930} at the {University of California at Berkeley}. ["Active Language I", R. de Vogelaere in Interactive Systems for Experimental Applied Mathematics, A-P 1968]. (08 Nov 1994) active matrix display A type of {liquid crystal display} where each display element (each {pixel}) includes an active component such as a {transistor} to maintain its state between scans. Contrast {passive matrix display}. (09 Dec 1995) Active Monitor A process in an {IBM} {token ring} network which ensures a token is present on the ring, removes circulating frames with unknown or invalid destinations, and performs introductions between machines on the ring. (18 Jun 1996) active object An {object} that encompasses its own {thread of control}. [What does this mean?] (08 Nov 1994) ActiveX {Microsoft}'s answer to {Java}. ActiveX is a stripped down implementation of {OLE} designed to run over slow {Internet} links. [Details? URL?] (09 Apr 1996) ACT ONE A specification language. ["An Algebraic Specification Language with Two Levels of Semantics", H. Ehrig et al, Tech U Berlin 83-03 Feb 1983]. (08 Nov 1994) Actor An {object-oriented} language for {Microsoft Windows} written by Charles Duff of the {Whitewater Group} ca. 1986. It has {Pascal}/{C}-like {syntax}. Uses a {token-threaded} {interpreter}. {Early binding} is an option. ["Actor Does More than Windows", E.R. Tello, Dr Dobb's J 13(1):114-125 (Jan 1988)]. (08 Nov 1994) actor 1. In {object-oriented} programming, an {object} which exists as a {concurrent} process. 2. In {Chorus}, the unit of resource allocation. (08 Nov 1994) Actors A model for {concurrency} by {Carl Hewitt}. Actors are autonomous and concurrent {object}s which execute asynchronously. The Actor model provides flexible mechanisms for building parallel and distributed software systems. ["Laws for Communicating Parallel Processes", C. Hewitt et al, IFIP 77, pp. 987-992, N-H 1977]. ["ACTORS: A Model of Concurrent Computation in Distributed Systems", Gul A. Agha , Cambridge Press, MA, 1986]. (12 Jun 1995) Actra A {multi-processor} {exemplar}-based {Smalltalk}. [LaLonde et al, OOPSLA '86]. (08 Nov 1994) Actus {Pascal} with parallel extensions, similar to the earlier {Glypnir}. It has parallel constants and {index set}s. Descendants include {Parallel Pascal}, {Vector C} and {CMU}'s language {PIE}. ["A Language for Array and Vector Processors," R.H. Perrott, ACM TOPLAS 1(2):177-195 (Oct 1979)]. (08 Nov 1994) AD {Administrative Domain} Ada (After {Ada Lovelace}) A {Pascal}-descended language, designed by Jean Ichbiah's team at {CII Honeywell} in 1979, made mandatory for Department of Defense software projects by the Pentagon. The original language was standardised as "Ada 83", the latest is "{Ada 95}". Ada is a large, complex, {block-structured} language aimed primarily at {embedded} applications. It has facilities for {real-time} response, {concurrency}, hardware access and reliable run-time error handling. In support of large-scale {software engineering}, it emphasises {strong typing}, {data abstraction} and {encapsulation}. The type system uses {name equivalence} and includes both {subtype}s and {derived type}s. Both fixed and {floating-point} numerical types are supported. {Control flow} is fully bracketed: if-then-elsif-end if, case-is-when-end case, loop-exit-end loop, goto. Subprogram parameters are in, out, or inout. Variables imported from other packages may be hidden or directly visible. Operators may be {overloaded} and so may {enumeration} literals. There are user-defined {exception}s and {exception handler}s. An Ada program consists of a set of packages encapsulating data objects and their related operations. A package has a separately compilable body and interface. Ada permits {generic package}s and subroutines, possibly parametrised. Ada programming places a heavy emphasis on {multitasking}. Tasks are synchronised by the {rendezvous}, in which a task waits for one of its subroutines to be executed by another. The conditional entry makes it possible for a task to test whether an entry is ready. The selective wait waits for either of two entries or waits for a limited time. Ada is often criticised, especially for its size and complexity, and this is attributed to its having been designed by committee. In fact, both Ada 83 and Ada 95 were designed by small design teams to be internally consistent and tightly integrated. By contrast, two possible competitors, {Fortran 90} and {C++} have both become products designed by large and disparate volunteer committees. See also {Ada/Ed}, {Toy/Ada}. {Home of the Brave Ada Programmers (http://lglwww.epfl.ch/Ada/)}. {Ada FAQs (http://lglwww.epfl.ch/Ada/FAQ/)} (hypertext), {text only (ftp://lglftp.epfl.ch/pub/Ada/FAQ)}. {(http://wuarchive.wustl.edu/languages/ada/)}, {(ftp://ajpo.sei.cmu.edu/)}, {(ftp://stars.rosslyn.unisys.com/pub/ACE_8.0)}. E-mail: . {Usenet} newsgroup: {news:comp.lang.ada}. {An Ada grammar (ftp://primost.cs.wisc.edu/)} including a lex scanner and yacc parser is available. E-mail: , . Another {yacc} {grammar} and {parser} for {Ada} by Herman Fischer is {here (ftp://wsmr-simtel20.army.mil/PD2:GRAM2.SRC)}. An {LR parser} and {pretty-printer} for {Ada} from NASA is available from the {Ada Software Repository}. Michael Feldman referred to this package in comp.compilers, he also has a yacc grammar for ada. {Adamakegen} generates {makefile}s for {Ada} programs. ["Reference Manual for the Ada Programming Language", ANSI/MIL STD 1815A, US DoD (Jan 1983)]. Earlier draft versions appeared in July 1980 and July 1982. ISO 1987. (23 Jan 1995) Ada++ An {object-oriented} extension to {Ada}, implemented as an Ada {preprocessor}. Obsoleted by {Ada 95} which includes object-oriented features. (19 Sep 1995) Ada 83 The original {Ada}, as opposed to {Ada 95}. (13 Mar 1995) Ada 95 A revision and extension of {Ada} (Ada 83) begun in 1988 and completed in 1 Dec 1994 by a team lead by Tucker Taft of {Intermetrics}. The printed standard was expected to be available around 15 Feb 1995. Additions include {object-orientation} ({tagged type}s, {abstract type}s and {class-wide type}s), hierarchical libraries and synchronisation with shared data (protected types) similar to {Orca}. It lacks {multiple inheritance} but supports the construction of multiple inheritance type hierarchies through the use of {generic}s and {type composition}. {GNAT} aims to be a free implementation of Ada 95. You can get the standard from the {Ada Joint Program Office (ftp://ajpo.sei.cmu.edu/public/)}, {Ada Information Clearinghouse (ftp://sw-eng.falls-church.va.us/public/)}. E-mail: Chris Anderson (Ada 95 Project Manager). ["Introducing Ada 9X", J.G.P. Barnes, Feb 1993]. (19 Jan 1995) Ada 9X The working title for {Ada 95} before its adoption as an {ISO} {standard}. (19 Jan 1995) ADABAS A {relational database} system by {Software AG}. While it was initially designed for large {IBM} {mainframe} systems (e.g. {S/370} in the late 1970s), it has been ported to numerous other {platform}s over the last few years such as several flavors of {Unix} including {AIX}. ADABAS stores its data in tables (and is thus "relational") but also uses some non-relational techniques, such as {multiple value}s and {periodic group}s. (30 Oct 1995) Ada/Ed An {interpreter}, editor and run-time environment for {Ada}, intended as a teaching tool. It does not have the capacity, performance or robustness of commercial Ada compilers. Ada/Ed was developed at {New York University} as part of a long-range project in language definition and software prototyping. AdaEd runs on {Unix}, {MS-DOS}, {Atari ST} and {Amiga}. Version 1.11.0a+. It handles nearly all of {Ada 83} and was last validated with version 1.7 of the {ACVC} tests. Being an interpreter, it does not implement most {representation clause}s and thus does not support systems programming close to the machine level. A later version is known as {GW-Ada}. E-mail: Michael Feldman . {(ftp://ftp.wustl.edu/amiga/languages/ada)}, {(ftp://cnam.cnam.fr/pub/Ada/Ada-Ed)}. {For Amiga (ftp://cs.nyu.edu/pub/adaed)}. {RISC OS (ftp://micros.hensa.ac.uk/micros/arch/riscos/c/c052)} (E-mail: ). (18 Aug 1994) Adaline Name given by Widrow to {adaptive linear neuron}s, that is {neuron}s (see {McCulloch-Pitts}) which learn using the {Widrow-Huff Delta Rule}. See also {Madaline}. (14 Mar 1995) Ada Lovelace (1811-1852) The daughter of Lord Byron, who became the world's first programmer while cooperating with {Charles Babbage} on the design of his mechanical computing engines in the mid-1800s. The language {Ada} was named after her. (20 Sep 1995) ADAM {A Data Management system} Adamakegen A program that generates {makefile}s for {Ada} programs. Adamakegen was written by Owen O'Malley . It requires {Icon} and runs under {Verdix} and {SunAda}. The current version is 2.6.3. {(ftp://spare.ics.uci.edu/ftp/pub/arcadia/)} (02 Mar 1993) ADAMO A data management system written at CERN based on the {Entity-Relationship model}. (14 Mar 1995) Ada-O An {Ada} subset developed at the {University of Karlsruhe} in 1979, used for {compiler} {bootstrapping}. It lacks {overloading}, {derived type}s, {real number}s, tasks and {generic}s. ["Revised Ada-O Reference Manual", G. Persch et al, U Karlsruhe, Inst fur Infor II, Bericht Nr 9/81]. (14 Feb 1995) Adaplan A {functional database} language based upon {Backus}' {FP} language. [Erwig&Lipeck, Proc. DBPL-3, 1991]. (07 May 1995) Adaplex An extension of {Ada} for {functional database}s. ["Adaplex: Rationale and Reference Manual 2nd ed", J.M. Smith et al, Computer Corp America, Cambridge MA, 1983]. (14 Feb 1995) ADAPT A subset of {APT}. [Sammet 1969, p. 606]. (14 Feb 1995) Adaptable User Interface A toolkit from {Oracle} allowing applications to be written portably for different windowing systems. It provides one call level interface along with a resource manager and editor across a range of "standard" {GUI}s, including {Macintosh}, {Microsoft Windows} and the {X Window System}. (16 Mar 1995) adaptive answering A feature which allows a {faxmodem} to answer the telephone and decide whether the incoming call is a fax or data call. Most {Class 1} faxmodems do this. The {U.S. Robotics} Class 1 implementation however seems not to do it, it must be set to answer as either one or the other. (16 Mar 1995) Adaptive Communication Environment A {C++} wrapper library for communications from the {University of California at Irvine}. (16 Mar 1995) adaptive learning (Or "{Hebbian} learning") Learning where a system programs itself by adjusting weights or strengths until it produces the desired output. (16 Mar 1995) Adaptive Simulated Annealing (ASA) A language interface to a {neural net} simulator(?) by Lester Ingber . Version 1.53. {(ftp://ftp.caltech.edu/pub/ingber/)} Mailing list: . (14 Nov 1993) Adaptor Automatic DAta Parallelism TranslatOR. A source to source transformation tool that transforms {data parallel} programs written in {Fortran 77} with {array} extensions, parallel loops, and layout directives to parallel programs with explicit {message passing}. ADAPTOR generates {Fortran 77} host and node programs with message passing. The new generated source codes have to be compiled by the compiler of the parallel computer. Version 1.0 runs on {CM-5}, {iPCS/860}, {Meiko CS1}/CS2, {KSR 1}, {SGI}, {Alliant} or a network of {Sun}s or {RS/6000}s. {(ftp://ftp.gmd.de/gmd/adaptor/adp_1.0.tar.Z)}. E-mail: Thomas Brandes . (01 Jun 1993) Ada Semantic Interface Specification (ASIS) An intermediate representation for {Ada}. E-mail: . See also {Diana}. (15 Feb 1995) Ada Software Repository {(http://wuarchive.wustl.edu/languages/ada/asr/)} (06 Jan 1995) AD/Cycle Application Development cycle. A set of {SAA}-compatible {IBM}-sponsored products for program development, running on workstations accessing a central repository on a {mainframe}. The stages cover requirements, analysis and design, production of the application, building and testing and maintenance. Technologies used include code generators and {knowledge based system}s as well as languages and debuggers. (24 Oct 1994) ADD 1 TO COBOL GIVING COBOL (From COBOL's equivalent syntax to C's C++) A tongue-in-cheek suggestion by Bruce Clement for an {object-oriented} {COBOL}. [SIGPLAN Notices 27(4):90-91 (Apr 1992)]. (17 Mar 1995) ADDD A Depository of Development Documents. A {public domain} Software Engineering Environment from {GMD} developed as part of the {STONE} project. (03 Feb 1995) additive A function f : X -> Y is additive if for all Z <= X f (lub Z) = lub { f z : z in Z } (f "preserves {lub}s"). All additive functions defined over {cpo}s are {continuous}. ("<=" is written in {LaTeX} as {\subseteq}, "lub" as \sqcup ). (03 Feb 1995) address 1. {e-mail address}. 2. {Internet address}. 3. {MAC address}. 4. An unsigned integer used to select one fundamental element of storage, usually known as a "word" from a computer's main memory or other storage device. The {CPU} outputs addresses on its {address bus} which may be connected to an {address decoder}, {cache controller}, {memory management unit} and other devices. (17 Mar 1995) address bus The connections between the {CPU} and memory which carry the {address} from/to which the CPU wishes to read or write. The number of bits of address bus determines the maximum size of memory which the processor can access. See also {data bus}. (22 Mar 1995) addressing mode 1. One of a set of methods for specifying the {operand}(s) for a {machine code} instruction. Different processors vary greatly in the number of addressing modes they provide. The more complex modes described below can usually be replaced with a short sequence of instructions using only simpler modes. The most common modes are "register" - the operand is stored in a specified {register}; "absolute" - the operand is stored at a specified memory address; and "{immediate}" - the operand is contained within the instruction. Most processors also have {indirect addressing} modes, e.g. "register indirect", "memory indirect" where the specified register or memory location does not contain the operand but contains its address, known as the "{effective address}". For an absolute addressing mode, the effective address is contained within the instruction. Indirect addressing modes often have options for pre- or post- increment or decrement, meaning that the register or memory location containing the {effective address} is incremented or decremented by some amount (either fixed or also specified in the instruction), either before or after the instruction is executed. These are very useful for {stack}s and for accessing blocks of data. Other variations form the effective address by adding together one or more registers and one or more constants which may themselves be direct or indirect. Such complex addressing modes are designed to support access to multidimensional arrays and arrays of data structures. The addressing mode may be "implicit" - the location of the operand is obvious from the particular instruction. This would be the case for an instruction that modified a particular control register in the CPU or, in a {stack} based processor where operands are always on the top of the stack. 2. In {IBM} {System 370}/{XA} the addressing mode bit controls the size of the {effective address} generated. When this bit is zero, the CPU is in the 24-bit addressing mode, and 24-bit instruction and operand effective addresses are generated. When this bit is one, the CPU is in the 31-bit addressing mode, and 31-bit instruction and operand effective addresses are generated. ["IBM System/370 Extended Architecture Principles of Operation", Chapter 5., 'Address Generation', BiModal Addressing]. (30 Mar 1995) address mask (Or "subnet mask") A {bit mask} used to identify which bits in an {IP address} correspond to the {network address} and {subnet} portions of the address. This mask is often referred to as the subnet mask because the network portion of the address can be determined by the {class} inherent in an IP address. The address mask has ones in positions corresponding to the network and subnet numbers and zeros in the host number positions. (21 Mar 1996) address resolution Conversion of an {Internet address} into the corresponding physical address ({Ethernet address}). This is usually done using {Address Resolution Protocol}. The {resolver} is a library routine and a set of processes which converts {hostnames} into {Internet addresses}, though this process in not usually referred to as {resolution}. See {DNS}. (09 Apr 1996) Address Resolution Protocol (ARP) A method for finding a {host}'s {Ethernet address} from its {Internet address}. The sender broadcasts an ARP {packet} containing the {Internet address} of another host and waits for it (or some other host) to send back its Ethernet address. Each host maintains a {cache} of address translations to reduce delay and loading. ARP allows the Internet address to be independent of the Ethernet address but it only works if all hosts support it. ARP is defined in {RFC} 826. The alternative for hosts that do not do ARP is {constant mapping}. See also {proxy ARP}, {reverse ARP}. (20 Mar 1995) address space 1. The range of addresses which a processor can access. This usually depends on the width of the processor's {address bus} and address {register}s. Address space may refer to either {physical address} or {virtual address}. 2. The range of {physical address}es or {virtual address}es allocated to a process. (12 May 1995) ADELE A language for specification of {attribute grammar}s, used by the {MUG2} {compiler compiler}. ["An Overview of the Attribute Definition Language ADELE", H. Ganziger in GI3, Fachesprach "Compiler-Compiler", W. Henhapl ed, Munchen Mar 1982, pp.22-53]. (23 Jan 1995) ADES An early system on the {IBM 704}. Version: ADES II. [Listed in CACM 2(5):16 (May 1959)]. (20 Mar 1995) ad hoc Contrived purely for the purpose in hand rather than planned carefully in advance. E.g. "We didn't know what to do about the sausage rolls, so we set up an ad-hoc committee". (25 Mar 1995) ad-hockery /ad-hok'*r-ee/ (Purdue) 1. Gratuitous assumptions made inside certain programs, especially {expert system}s, which lead to the appearance of semi-intelligent behaviour but are in fact entirely arbitrary. For example, {fuzzy-matching} of input tokens that might be typing errors against a symbol table can make it look as though a program knows how to spell. 2. Special-case code to cope with some awkward input that would otherwise cause a program to fail, presuming normal inputs are dealt with in some cleaner and more regular way. Also called "ad-hackery", "ad-hocity" (/ad-hos'*-tee/), "ad-crockery". See also {ELIZA effect}. (05 Jan 1995) ad-hoc polymorphism {overloading} Aditi The Aditi Deductive Database System. A multi-user {deductive database} system from the Machine Intelligence Project at the {University of Melbourne}. It supports base {relation}s defined by {fact}s (relations in the sense of {relational database}s) and {derived relation}s defined by {rule}s that specify how to compute new information from old information. Both base relations and the rules defining derived relations are stored on disk and are accessed as required during query evaluation. The rules defining derived relations are expressed in a {Prolog}-like language, which is also used for expressing queries. Aditi supports the full structured data capability of Prolog. Base relations can store arbitrarily nested terms, for example arbitrary length lists, and rules can directly manipulate such terms. Base relations can be indexed with {B-tree}s or multi-level signature files. Users can access the system through a {Motif}-based query and database administration tool, or through a command line interface. There is also in interface that allows {NU-Prolog} programs to access Aditi in a transparent manner. Proper {transaction processing} is not supported in this release. The beta release runs on {SPARC}/{SunOS4}.1.2 and {MIPS}/{Irix}4.0. E-mail: . (17 Dec 1992) ADL 1. {Adventure Definition Language}. 2. {Ada} Development Language. R.A. Lees, 1989. 3. {API} Definition Language. A project for Automatic Interface Test Generation. (17 Nov 1995) AdLog A language which adds a {Prolog} layer to {Ada}. ["AdLog, An Ada Components Set to Add Logic to Ada", G. Pitette, Proc Ada-Europe Intl Conf Munich, June 1988]. (21 Mar 1995) ADM A picture {query language}, extension of {Sequel2}. ["An Image-Oriented Database System", Y. Takao et al, in Database Techniques for Pictorial Applications, A. Blaser ed, pp. 527-538]. (21 Mar 1995) ADMD {Administration Management Domain} admin {system administrator} Administration Management Domain (ADMD) An {X.400} {message handling system} {public service carrier}. (18 Jun 1996) Administrative Domain (AD) A collection of {host}s and {router}s, and the interconnecting network(s), managed by a single administrative authority. (24 Nov 1994) Adobe {Adobe Systems, Inc.} Adobe Systems, Inc. A California {font} foundry and {software} house. Adobe created the {PostScript} {page description language} and wrote the {Blue Book}, {Green Book}, {Red Book} and {White Book} on it. They also developed {PDF}. {Home (http://www.adobe.com/)} E-mail: . Address: Silicon Valley, California, USA. (01 Mar 1995) Adobe Type Manager (ATM) Software that produces {PostScript} {outline font}s on screen and paper. There are version s that run under {Microsoft Windows} and on the {Macintosh}. [What font features does it support?] (01 Feb 1995) ADPCM Adaptive digital pulse code modulation. A {compression} technique used on the {Sony} minidisk. (02 Nov 1994) ADS An {expert system}. ADSL {Asymmetric Digital Subscriber Loop} ADSP {AppleTalk Data Stream Protocol} ADSU {ATM Data Service Unit} ADT {abstract data type} Advanced Computing Environment (ACE) A consortium to agree on an {open} architecture based on the {MIPS R4000} chip. A computer architecture ARCS will be defined, on which either {OS/2} or {Open Desktop} can be run. (03 Feb 1995) Advanced Interactive eXecutive (AIX) {IBM}'s version of {Unix}, taken as the basis for the {OSF} {standard}. {Usenet} newsgroup: {news:comp.sys.unix.aix}. (24 Nov 1994) Advanced Micro Devices, Inc. (AMD) The fifth-largest, US manufacturer of {integrated circuit}s, founded in 1969. AMD focuses on the personal and networked computation and communications market. They produce {microprocessor}s, {embedded processor}s and related peripherals, memories, {programmable logic device}s, circuits for telecommunications and networking applications. AMD has 12000 employees in the USA and elsewhere and manufacturing facilities in Austin, Texas; Aizu-Wakamatsu, Japan; Bangkok, Thailand; Penang, Malaysia; and Singapore. AMD made the {AMD 2900} series of {bit-slice} {TTL} components and make clones of the {Intel 80386} and {Intel 486} {microprocessor}s. {Home (http://www.amd.com/)} Address: Sunnyvale, CA, USA. (27 Feb 1995) Advanced Network Systems Architecture (ANSA) A "{software bus}" based on a model for distributed systems developed as an {ESPRIT} project. {Home (http://www.ansa.co.uk/)} (01 Apr 1996) Advanced Peer-to-Peer Networking (APPN) IBM data communications support that routes data in a network between two or more {APPC} systems that need not be adjacent. (03 Feb 1995) Advanced Power Management (APM) A feature of some displays, usually but not always, on {laptops}, which powers-down and/or shuts down the display after a preset period of inactivity to conserve electrical power. Monitors with this capability are usually refered to as "green monitors", meaning environmentally friendly. (09 Jul 1996) Advanced Program-to-Program Communications (APPC) An implementation of the {IBM} {SNA}/{SDLC} {LU6.2} {protocol} that allows interconnected systems to communicate and share the processing of programs. (03 Feb 1995) Advanced Research Projects Agency (ARPA) An agency of the US Department of Defense responsible for the development of new technology for use by the military. ARPA was its original name, then it was known as DARPA (for Defense) and now it is ARPA again. It was responsible for funding development of {ARPANET} (which grew into the {Internet}), the {Berkeley} version of {Unix} and {TCP/IP}. {Home (http://www.arpa.mil/)} [When was it renamed?] (18 Jan 1995) Advanced Research Projects Agency Network (ARPANET) A pioneering longhaul {wide area network} funded by {ARPA}. It became operational in 1968 and served as the basis for early networking research, as well as a central {backbone} during the development of the {Internet}. The ARPANET consisted of individual {packet switching} computers interconnected by {leased line}s. {Protocol}s used include {FTP} and {telnet}. It has now been replaced by {NSFnet}. [1968 or 1969?] (17 Nov 1994) Advanced RISC Computing Specification (ARC) The baseline hardware requirements for an {ACE}-compatible system. (16 Jan 1995) Advanced RISC Machine (ARM, Originally {Acorn} RISC Machine). A series of low-cost, power-efficient 32-bit {RISC} {microprocessor}s for embedded control, computing, {digital signal processing}, {games}, consumer {multimedia} and portable applications. It was the first commercial RISC microprocessor (or was the {MIPS R2000}?) and is currently licensed for production by Asahi Kasei Microsystems, {Cirrus Logic}, {GEC Plessey Semiconductors}, {Samsung}, {Sharp}, {Texas Instruments} and {VLSI Technology}. The ARM has a small and highly {orthogonal} instruction set, as befits a RISC processor. Every instruction includes a four-bit code which specifies a condition (of the processor status register) which must be satisfied for the instruction to be executed. Unconditional execution is specified with a condition "true". Instructions are split into load and store which access memory and arithmetic and logic instructions which work on registers (two source and one destination). The ARM has 27 registers of which 16 are accessible in any particular mode. R15 is the {program counter} and processor status byte, the other registers are general purpose except that R14 holds the return address after a subroutine call and R13 is conventionally used as a {stack pointer}. There are four processor modes: user, interrupt (with a private copy of R13 and R14), fast interrupt (private copies of R8 to R14) and supervisor (private copies of R13 and R14). The {ALU} includes a 32-bit {barrel-shifter} allowing, e.g., a single-cycle shift and add. The first processor, the ARM1 was a prototype which was never released. The ARM2 was originally called the Acorn RISC Machine. It was designed by {Acorn Computers} Ltd. and used in the {Archimedes}, their successor to the {BBC Micro} and {BBC Master} series which were based on the eight-bit {6502} {microprocessor}. It was clocked at 8 MHz giving an average performance of 4 - 4.7 MIPS. Development of the ARM family was then continued by a new company, {Advanced RISC Machines} Ltd. The {ARM3} added a {fully-associative} on-chip {cache} and some support for multiprocessing. This was followed by the {ARM600} chip which was an {ARM6} processor core with 4 kilobyte 64-way {set-associative} {cache}, {MMU} based on MEMC2, {write buffer} (8 words?) and {coprocessor} interface. The {ARM7} processor core uses half the power of the {ARM6} and takes around half the {die} size. In a full processor design ({ARM700} chip) it should provide 50% to 100% more performance. In July 1994 {VLSI Technology} Inc. released the {ARM710} processor chip. {Thumb} is an implementation with reduced code size requirements, intended for {embedded} applications. An {ARM800} chip is also planned. {AT&T}, {IBM}, {Panasonic}, {Apple Coputer}, {Matsushita} and {Sanyo} either rely on, or manufacture, ARM 32-bit processor chips. {Usenet} newsgroup: {news:comp.sys.arm}. (02 Dec 1994) Advanced RISC Machines Ltd. (ARM) A company formed in 1990 by {Acorn Computers} Ltd., {Apple Computer} Inc. and {VLSI Technology} to market and develop the {Advanced RISC Machine} {microprocessor} family, originally designed by Acorn. ARM Ltd. also designs and licenses peripheral chips and supplies supporting software and hardware tools. In April 1993, Nippon Investment and Finance, a Daiwa Securities company, became ARM's fourth investor. In May 1994 Samsung became the sixth large company to have a licence to use the ARM processor core. The success of ARM Ltd. and the strategy to widen the availability of RISC technology has resulted in its chips now being used in a range of products including the {Apple Newton}. As measured by an independent authority, more ARM processors were shipped than {SPARC} chips in 1993. ARM has also sold three times more chips than the {PowerPC} consortium. {Home (http://www.systemv.com/armltd/index.html)} E-mail: armltd.co.uk. Address: Advanced RISC Machines Ltd. Fulbourn Road, Cherry Hinton, Cambridge CB1 4JN, UK. Telephone: +44 (1223) 400 400. Fax: +44 (1223) 400 410. (03 Nov 1994) Advanced Software Environment (ASE) An {object-oriented} {application support system} from {Nixdorf}. (12 Sep 1995) Advanced Technology Attachment (ATA) {ANSI}'s official name for the {disk drive} interface {standard} commonly known as {Integrated Drive Electronics} (IDE). (21 Mar 1996) ADVENT /ad'vent/ The prototypical computer {Adventure} game, first implemented by Will Crowther for a {CDC} computer (probably the 6600?) as an attempt at computer-refereed fantasy gaming. ADVENT was ported to the {PDP-10}, and expanded to the 350-point {Classic} puzzle-oriented version, by Don Woods of the {Stanford Artificial Intelligence Laboratory} (SAIL). The game is now better known as Adventure, but the {TOPS-10} {operating system} permitted only six-letter filenames. All the versions since are based on the SAIL port. David Long of the {University of Chicago} Graduate School of Business Computing Facility (which had two of the four {DEC20}s on campus in the late 1970s and early 1980s) was responsible for expanding the cave in a number of ways, and pushing the point count up to 500, then 501 points. Most of his work was in the data files, but he made some changes to the {parser} as well. This game defined the terse, dryly humorous style now expected in text adventure games, and popularised several tag lines that have become fixtures of hacker-speak: "A huge green fierce snake bars the way!" "I see no X here" (for some noun X). "You are in a maze of twisty little passages, all alike." "You are in a little maze of twisty passages, all different." The "magic words" {xyzzy} and {plugh} also derive from this game. Crowther, by the way, participated in the exploration of the Mammoth & Flint Ridge cave system; it actually *has* a "Colossal Cave" and a "Bedquilt" as in the game, and the "Y2" that also turns up is cavers' jargon for a map reference to a secondary entrance. See also {vadding}. [Was the original written in FORTRAN?] (01 Apr 1996) Adventure Definition Language (ADL) An {adventure} game language {interpreter} designed by Ross Cunniff and Tim Brengle in 1987. ADL is semi-{object-oriented} with {Lisp}-like {syntax} and is a superset of {DDL}. It is available for {Unix}, {MS-DOS}, {Amiga} and {Acorn} {Archimedes}. {(ftp://ftp.uu.net/usenet/comp.sources.games/volume2)}, {(ftp://ftp.wustl.edu/systems/amiga/fish/fish/f0/ff091)}. (20 Mar 1995) ADVSYS An {adventure} game language designed by David Betz in 1986. ADVSYS is {object-oriented} and {Lisp}-like. {(ftp://ftp.uu.net/usenet/comp.sources.games/volume2)} (20 Mar 1995) AE Application Executive. An {embeddable language}, written as a {C} {interpreter} by Brian Bliss . AE is compiled with an {application} and thus exists in the same process and address space. It includes a {dbx} {symbol table} scanner to access compiled variables and routines, or you can enter them manually by providing a type/name declaration and the address. When the {interpreter} is invoked, source code fragments are read from the input stream (or a string), parsed, and evaluated immediately. The user can call compiled functions in addition to a few {built-in} intrinsics, declare new data types and data objects, etc. Different input streams can be evaluated in parallel on {Alliant} computers. AE has been ported to {SunOS} (cc or {gcc}), {Alliant FX} and {Cray YMP} (soon). {(ftp://sp2.csrd.uiuc.edu/pub/at.tar.Z)} {(ftp://sp2.csrd.uiuc.edu/pub/bliss/ae.tex.Z)}. (21 Apr 1992) AED {Automated Engineering Design} Aegis A {CASE} tool for project change management, from the {GNU} project. (27 Mar 1995) Aeolus A {concurrent} language with {atomic transaction}s. ["Rationale for the Design of Aeolus", C. Wilkes et al, Proc IEEE 1986 Intl Conf Comp Lang, IEEE 1986, pp.107-122]. (27 Mar 1995) AEP {Application Environment Profile} aeroplane rule "Complexity increases the possibility of failure; a twin-engine aeroplane has twice as many engine problems as a single-engine aeroplane." By analogy, in both software and electronics, the rule that simplicity increases robustness. It is correspondingly argued that the right way to build reliable systems is to put all your eggs in one basket, after making sure that you've built a really *good* basket. See also {KISS Principle}. (04 Apr 1995) AES {Application environment specification} AESOP An Evolutionary System for On-line Programming. An early interactive query system on the {IBM 1800} using a {light pen}. ["AESOP: A Final Report: A Prototype Interactive Information Control System", J.K. Summers et al, in Information System Science and Technology, D. Walker ed, 1967]. [Sammet 1969, p. 703]. (04 Apr 1995) AFAC An early system on the {IBM 704}. [Listed in CACM 2(5):16 (May 1959)]. (04 Apr 1995) AFAIK as far as I know. affine transformation A {linear transformation} followed by a {translation}. Given a {matrix} M and a {vector} v, A(x) = Mx + v is a typical affine transformation. (10 Apr 1995) AFIPS {American Federation of Information Processing Societies} AFJ {April Fool's Joke} AFK away from keyboard. See {talk mode}. aflex A {Lex}-like {scanner generator} that produce {Ada} output from IRUS (Irvine Research Unit in Software). aflex comes with {ayacc}. Version 1.2a. Mailing list: . {(ftp://liege.ics.uci.edu/pub/irus/aflex-ayacc_1.2a.tar.Z)} (06 Jan 1993) AFNOR Association Francaise pour la Normalisation. The French national {standard}s institute, a member of {ISO}. (14 Dec 1994) AFP {Appletalk Filing Protocol} AFS {Andrew File System} AFUU {Association Française des Utilisateurs d'Unix} agent In the {client-server} model, the part of the system that performs information preparation and exchange on behalf of a {client} or {server}. Especially in the phrase "intelligent agent" it implies some kind of automatic process which can communicate with other agents to perform some collective task on behalf of one or more humans. (09 Apr 1995) aggregate type A data {type} composed of multiple elements. An aggregate can be homogeneous (all elements have the same type) e.g. an {array}, a list in a {functional language}, a string of characters, a file; or it can be heterogeneous (elements can have different types) e.g. a {structure}. In most languages aggregates can contain elements which are themselves aggregates. e.g. a list of lists. See also {union}. (23 Mar 1996) aggregation A composition technique for building a new {object} from one or more existing objects that support some or all of the new object's required interfaces. (07 Jan 1996) AGL Atelier de Genie Logiciel. French for {IPSE}. AGM Theory for Belief Revision (After the initials of the authors who established the field - Alchourron, Makinson and Gardenfors). A method of {belief revision} giving minimal properties a revision process should have. [Reference?] (20 Mar 1995) AGORA A distributed {object-oriented language}. A Hardware Programming Language (AHPL) A {register}-level language by Hill and Peterson, some of whose operators resemble {APL}. HPSIM2 is a function-level simulator, available from Engrg Expt Sta, {University of Arizona}. ["Digital Systems: Hardware Organization and Design", F. Hill et al, Wiley 1987]. (26 Jan 1995) AHDL {Analog Hardware Design Language} AHPL {A Hardware Programming Language} AI {artificial intelligence} AIA {Application Integration Architecture} AI-complete /A-I k*m-pleet'/ (MIT, Stanford: by analogy with "{NP-complete}") A term used to describe problems or subproblems in {artificial intelligence}, to indicate that the solution presupposes a solution to the "strong AI problem" (that is, the synthesis of a human-level intelligence). A problem that is AI-complete is, in other words, just too hard. See also {gedanken}. (12 Apr 1995) AID Algebraic Interpretive Dialogue. A version of {Joss} II for the {PDP-10}. ["AID (Algebraic Interpretive Dialogue)", DEC manual, 1968]. (12 Apr 1995) AIDA 1. A {functional} dialect of {Dictionary APL} by M. Gfeller. ["APL Arrays and Their Editor", M. Gfeller, SIGPLAN Notices 21(6):18-27 (June 1986) and SIGAPL Conf Proc]. 2. An intermediate representation language for Ada developed at the {University of Karlsruhe} in 1980. AIDA was merged with {TCOL.Ada} to form {Diana}. ["AIDA Introduction and User Manual", M. Dausmann et al, U Karlsruhe, Inst fur Inform II, TR Nr 38/80]. ["AIDA Reference Manual", ibid, TR Nr 39/80, Nov 1980]. (12 Apr 1995) AIDS /aydz/ A* Infected Disk Syndrome ("A*" is a {glob} pattern that matches, but is not limited to, {Apple Computer}), this condition is quite often the result of practicing unsafe {SEX}. See {virus}, {worm}, {Trojan horse}, {virgin}. (13 Apr 1995) AIDX /aydkz/ A derogatory term for {IBM}'s perverted version of {Unix}, AIX, especially for the AIX 3.? used in the {IBM RS/6000} series (some hackers think it is funnier just to pronounce "AIX" as "aches"). A victim of the dreaded "hybridism" disease, this attempt to combine the two main currents of the Unix stream ({BSD} and {USG Unix}) became a monstrosity to haunt system administrators' dreams. For example, if new accounts are created while many users are logged on, the load average jumps quickly over 20 due to silly implementation of the user databases. For a quite similar disease, compare {HP-SUX}. Also, compare {Macintrash} {Nominal Semidestructor}, {Open DeathTrap}, {ScumOS}, {sun-stools}. (13 Apr 1995) AIFF {Audio IFF} AI koan /A-I koh'an/ One of a series of pastiches of Zen teaching riddles created by {Danny Hillis} at the {MIT AI Lab} around various major figures of the Lab's culture. See also {ha ha only serious}, {mu}. In reading these, it is at least useful to know that {Marvin Minsky}, {Gerald Sussman}, and Drescher are {AI} researchers of note, that {Tom Knight} was one of the {Lisp machine}'s principal designers, and that {David Moon} wrote much of Lisp Machine Lisp. * * * A novice was trying to fix a broken Lisp machine by turning the power off and on. Knight, seeing what the student was doing, spoke sternly: "You cannot fix a machine by just power-cycling it with no understanding of what is going wrong." Knight turned the machine off and on. The machine worked. * * * One day a student came to Moon and said: "I understand how to make a better garbage collector. We must keep a reference count of the pointers to each cons." Moon patiently told the student the following story: "One day a student came to Moon and said: `I understand how to make a better garbage collector... [Pure reference-count garbage collectors have problems with circular structures that point to themselves.] * * * In the days when Sussman was a novice, Minsky once came to him as he sat hacking at the PDP-6. "What are you doing?", asked Minsky. "I am training a randomly wired neural net to play Tic-Tac-Toe", Sussman replied. "Why is the net wired randomly?", asked Minsky. "I do not want it to have any preconceptions of how to play", Sussman said. Minsky then shut his eyes. "Why do you close your eyes?", Sussman asked his teacher. "So that the room will be empty." At that moment, Sussman was enlightened. * * * A disciple of another sect once came to Drescher as he was eating his morning meal. "I would like to give you this personality test", said the outsider, "because I want you to be happy." Drescher took the paper that was offered him and put it into the toaster, saying: "I wish the toaster to be happy, too." (08 Feb 1995) AIMACO {AIr MAterial COmmand compiler} Aimnet An {Internet} {access provider} for individuals and corporations. They provide {dial-up}, {SLIP}, {PPP} and {shell account}s as well as {ISDN}. {Home (http://www.aimnet.com/)} Address: Cupertino, CA 95014, USA. Telephone: +1 (408) 253 0900 (08 Feb 1995) AIr MAterial COmmand compiler (AIMACO) A modification of {FLOW-MATIC}. AIMACO was supplanted by {COBOL}. [Sammet 1969, p. 378]. (20 Feb 1995) AIX {Advanced Interactive eXecutive} AKC {Ascending Kleene Chain} AKCL {Austin Kyoto Common Lisp} AKL {Andorra Kernel Language} AL 1. Assembly Language. A language for industrial {robot}s developed at {Stanford University} in the 1970s. ["The AL Language for an Intelligent Robot", T. Binford in Langages et Methods de Programation des Robots Industriels, pp. 73-88, IRIA Press 1979]. ["AL User's Manual", M.S. Mujtaba et al, Stanford AI Lab, Memo AIM-323 (Jan 1979)]. 2. {artificial life}. (24 Nov 1994) Aladdin Systems The developers of the {stuffit} file archiving and {compression} utility for the {Macintosh}. (01 Mar 1995) ALADIN 1. {A Language for Attributed Definitions}. 2. An interactive mathematics system for the {IBM 360}. ["A Conversational System for Engineering Assistance: ALADIN", Y. Siret, Proc Second Symp Symb Algebraic Math, ACM Mar 1971]. (13 Apr 1995) ALAM A language for {symbolic mathematics}, especially General Relativity. See also {CLAM}. ["ALAM Programmer's Manual", Ray D'Inverno, 1970]. (28 Oct 1994) A-language An early {ALGOL}-like {surface syntax} for {Lisp}. ["An Auxiliary Language for More Natural Expression--The A-language", W. Henneman in The Programming Language LISP, E.C. Berkeley et al eds, MIT Press 1964, pp.239- 248]. (28 Oct 1994) A Language for Attributed Definitions (ALADIN) A language for formal specification of {attributed grammar}s. ALADIN is the input language for the {GAG} compiler generator. It is {applicative} and {strongly typed}. ["GAG: A Practical Compiler Generator", Uwe Kastens et al, LNCS 141, Springer 1982]. (14 Apr 1995) Alan Kay The leader of the Software Concepts Group at {Xerox} {Palo Alto Research Centre} which developed {Smalltalk}, the pioneering {object-oriented programming} system, in 1972. (24 Nov 1994) Alan M. Turing {Alan Turing} Alan Turing Alan M. Turing, 22/3? June 1912 - 7 June 1954. A British mathematician, inventor of the {Turing Machine}. Turing also proposed the {Turing test}. Turing's work was fundamental in the theoretical foundations of computer science. Turing studied at {King's College London} and was a graduate student at {Princeton University} from 1936 to 1938. While at Princeton Turing published "On Computable Numbers", a paper in which he conceived an {abstract machine}, now called a {Turing Machine}. Turing returned to England in 1938 and during World War II, he worked in the British Foreign Office. He masterminded operations at {Bletchley Park}, UK which were highly successful in cracking the Nazis "Enigma" codes during World War II. Some of his early advances in computer design were inspired by the need to perform many repetitive symbolic manipulations quickly. Before the building of the {Colossus} computer this work was done by a roomful of women. In 1945 he joined the {National Physical Laboratory} in London and worked on the design and construction of a large computer, named {Automatic Computing Engine} (ACE). In 1949 Turing became deputy director of the Computing Laboratory at Manchester where the {Manchester Automatic Digital Machine}, the worlds largest memory computer, was being built. He also worked on theories of {artificial intelligence}, and on the application of mathematical theory to biological forms. In 1952 he published the first part of his theoretical study of morphogenesis, the development of pattern and form in living organisms. Turing was gay, and died rather young, not for the reason that's common today, but under mysterious circumstances. He was arrested for violation of British homosexuality statutes in 1952. He died of potassium cyanide poisoning while conducting electrolysis experiments. An inquest concluded that it was self-administered but it is now thought by some to have been an accident. There is an excellent biography of Turing by Andrew Hodges, subtitled "The Enigma of Intelligence" and a play based on it called "Breaking the Code". There was also a popular summary of his work in Douglas Hofstadter's book "Gödel, Escher, Bach". (10 May 1995) A-law The {ITU-T} {standard} for {nonuniform quantising logarithmic compression}. [Equation?] (21 Feb 1995) ALC 1. {Assembly Language Compiler}. 2. {Airline Line Control}. Alcool-90 An {object-oriented} extension of {ML} with run-time {overloading} and a type-based notion of {module}s, {functor}s and {inheritance}. It is built on {CAML Light}. {(ftp://ftp.inria.fr/lang/alcool)} E-mail: . (18 Apr 1995) ALCOR A subset of {ALGOL}. [Sammet 1969, p. 180]. (18 Apr 1995) Aldat A {database} language, based on {extended algebra}. [Listed by M.P. Atkinson & J.W. Schmidt in a tutorial in Zurich, 1989]. (19 Apr 1995) ALDES ALgorithm DEScription. ["The Algorithm Description Language ALDES", R.G.K. Loos, SIGSAM Bull 14(1):15-39 (Jan 1976)]. (19 Apr 1995) ALDiSP Applicative Language for Digital Signal Processing. A {functional language} with special features for {real-time} I/O and numerical processing, developed at the {Technical University of Berlin} in 1989. ["An Applicative Real-Time Language for DSP - Programming Supporting Asynchronous Data-Flow Concepts", M. Freericks in Microprocessing and Microprogramming 32, N-H 1991]. (19 Apr 1995) ALEC A Language with an Extensible Compiler. A language Implemented using {RCC} on an {ICL 1906A}. ["ALEC - A User Extensible Scientific Programming Language", R.B.E. Napper et al, Computer J 19(1):25-31]. (19 Apr 1995) ALEF A programming language from {Bell Labs}. ALEF boasts few new ideas but is instead a careful synthesis of ideas from other languages. The result is a practical general purpose programming language which is rapidly displacing {C} as their main implementation language. Both {shared variable}s and {message passing} are supported through language constructs. A {window system}, {user interface}, {operating system} network code, {news reader}, {mailer} and variety of other tools in {Plan 9} are now implemented using ALEF. ALEPH 1. A Language Encouraging Program Hierarchy. Ca. 1975. ["On the Design of ALEPH", D. Grune, CWI, Netherlands 1986]. 2. A system for formal {semantics} written by Peter Henderson ca. 1970. [CACM 15(11):967-973 (Nov 1972)]. (15 Dec 1994) Aleph ["Aleph: A language for typesetting", Luigi Semenzato and Edward Wang in Proceedings of Electronic Publishing, 1992 Ed. Vanoirbeek & Coray Cambridge University Press 1992]. (15 Dec 1994) aleph 0 The {cardinality} of the first {infinite} {ordinal}, {omega} (the number of {natural number}s). Aleph 1 is the cardinality of the smallest {ordinal} whose cardinality is greater than aleph 0, and so on up to aleph omega and beyond. These are all kinds of {infinity}. The {Axiom of Choice} (AC) implies that every set can be {well-ordered}, so every {infinite} {cardinality} is an aleph; but in the absence of AC there may be sets that can't be well-ordered (don't posses a {bijection} with any {ordinal}) and therefore have cardinality which is not an aleph. These sets don't in some way sit between two alephs; they just float around in an annoying way, and can't be compared to the alephs at all. No {ordinal} possesses a {surjection} onto such a set, but it doesn't surject onto any sufficiently large ordinal either. (29 Mar 1995) Alex 1. A {polymorphic} language being developed by Stephen Crawley of Defence Science & Tech Org, Australia. Alex has {abstract data type}s, {type inference} and {inheritance}. 2. An {ISWIM}-like language with {exception handling}. ["An Exception Handling Construct for Functional Languages", M. Brez et al, in Proc ESOP88, LNCS 300, Springer 1988]. 3. A {scanner generator}. {Alexis} is its input language. ["Alex: A Simple and Efficient Scanner Generator", H. Mossenbock, SIGPLAN Notices 21(5), May 1986]. (15 Dec 1994) Alexis Alex Input Specification. The input language for the {scanner generator} {Alex}. (23 Apr 1995) ALF {Algebraic Logic Functional language} Alfl A lazy function language. A {weakly typed}, {lazy} {functional language} developed by Paul Hudak of Yale in 1983. Alfl is implemented as a {Scheme} {preprocessor} for the {Orbit} compiler, by transforming laziness into {force}-and-{delay}. ["Alfl Reference Manual and Programmer's Guide", P. Hudak, YALEU/DCS/RR322, Yale U, Oct 1984]. See also {ParAlfl}. (24 Apr 1995) algebra Any formal mathematical system consisting of a set of objects and operations on those objects. Examples are numerical algebra, set algebra and matrix algebra. (24 Jan 1995) ALGEBRAIC An early system on {MIT}'s {Whirlwind}. [CACM 2(5):16 (May 1959)]. (24 Jan 1995) algebraic In {domain theory}, a {complete partial order} is algebraic if every element is the {least upper bound} of some {chain} of {compact} elements. If the set of compact elements is {countable} it is called {omega-algebraic}. [Significance?] (25 Apr 1995) algebraic data type (Or "sum of products type") In {functional programming}, new types can be defined, each of which has one or more {constructor}s. Such a type is known as an algebraic data type. E.g. in {Haskell} we can define a new type, "Tree": data Tree = Empty | Leaf Int | Node Tree Tree with constructors "Empty", "Leaf" and "Node". The constructors can be used much like functions in that they can be (partially) applied to arguments of the appropriate type. For example, the Leaf constructor has the functional type Int -> Tree. A constructor application cannot be reduced (evaluated) like a function application though since it is already in {normal form}. Functions which operate on algebraic data types can be defined using {pattern matching}: depth :: Tree -> Int depth Empty = 0 depth (Leaf n) = 1 depth (Node l r) = 1 + max (depth l) (depth r) The most common algebraic data type is the list which has constructors Nil and Cons, written in Haskell using the special syntax "[]" for Nil and infix ":" for Cons. Special cases of algebraic types are {product type}s (only one constructor) and {enumeration type}s (many constructors with no arguments). Algebraic types are one kind of {constructed type} (i.e. a type formed by combining other types). An algebraic data type may also be an {abstract data type} (ADT) if it is exported from a {module} without its constructors. Objects of such a type can only be manipulated using functions defined in the same {module} as the type itself. In {set theory} the equivalent of an algebraic data type is a {discriminated union} - a set whose elements consist of a tag (equivalent to a constructor) and an object of a type corresponding to the tag (equivalent to the constructor arguments). (23 Nov 1994) Algebraic Logic Functional language (ALF) A language by Rudolf Opalla which combines {functional programming} and {logic programming} techniques. ALF is based on {Horn clause} logic with equality which consists of {predicate}s and Horn clauses for {logic programming}, and functions and equations for {functional programming}. Any functional expression can be used in a {goal} literal and arbitrary predicates can occur in conditions of equations. ALF uses {narrowing} and {rewriting}. ALF includes a compiler to {Warren Abstract Machine} code and {run-time support}. {(ftp://ftp.germany.eu.net/pub/programming/languages/LogicFunctional)} ["The Implementation of the Functional-Logic Language ALF", M. Hanus and A. Schwab]. (08 Oct 1992) Algebraic Manipulation Package (AMP) A {symbolic mathematics} program written in {Modula-2}, seen on {CompuServe}. (19 Oct 1994) Algebraic Specification Language 1. (ASL) ["Structured Algebraic Specifications: A Kernel Language", M. Wirsing, Theor Comput Sci 42, pp.123-249, Elsevier 1986]. 2. (ASF) A language for equational specification of {abstract data types}. ["Algebraic Specification", J.A. Bergstra et al, A-W 1989]. (13 Dec 1995) ALGOL See {ALGOL 60}. ALGOL 58 An early version of {ALGOL 60}, originally known as "{IAL}". [Details? Relationship to ALGOL 60?] (01 May 1995) ALGOL 60 ALGOrithmic Language 1960. A portable language for scientific computations. ALGOL 60 was small and elegant. It was block-structured, nested, {recursive}, and {free form}. It was also the first language to be described in {BNF}. There were three {lexical} representations: hardware, reference, and publication. The only structured data types were {array}s, but they were permitted to have lower bounds and could be dynamic. It also had {conditional expression}s; it introduced :=; if-then-else; very general "for" loops; switch declaration (an array of statement labels generalising {FORTRAN}'s {computed goto}). Parameters were {call-by-name} and {call-by-value}. It had static local "own" variables. It lacked user-defined types, character manipulation and standard I/O. See also {EULER}, {ALGOL 58}, {ALGOL 68}, {Foogol}. ["Report on the Algorithmic Language ALGOL 60", Peter Naur ed., CACM 3(5):299-314 (May 1960)]. (25 Jan 1995) ALGOL 60 Modified ["A Supplement to the ALGOL 60 Revised Report", R.M. DeMorgan et al, Computer J 19(4):364]. [SIGPLAN Notices 12(1) 1977]. An erratum in [Computer J 21(3):282 (Aug 1978)] applies to both. (25 Jan 1995) ALGOL 60 Revised (Or "Revised ALGOL 60") A revision of {Algol 60} which still lacked {standard I/O}. ["Revised Report on the Algorithmic Language ALGOL 60", Peter Naur ed, CACM 6(1):1-17 (Jan 1963)]. [Sammet 1969, p.773]. (25 Jan 1995) ALGOL 68 An extensive revision of {ALGOL 60} by Adriaan van Wijngaarden et al. ALGOL 68 was discussed from 1963 by Working Group 2.1 of {IFIP}. It's definition was accepted in December 1968. ALGOL 68 was complex, and posed difficulties for both implementors and users. It featured {structural equivalence}; automatic type conversion ("{cooercion}") including {dereferencing}; {flexible array}s; generalised loops (for-from-by-to-while-do-od), if-then-elif-fi, an integer case statement with an 'out' clause; {skip} and {goto} statements; blocks; procedures; user-defined operators; {procedure parameter}s; {concurrent} execution (cobegin/coend); {semaphore}s; generators "heap" and "loc" for {dynamic allocation}. It had no {abstract data type}s or {separate compilation}. (01 May 1995) ALGOL 68C A variant of {ALGOL 68} developed by S. Bourne and Mike Guy of Cambridge University in 1975 and used as the implementation language for the {CHAOS} OS for the {CAP} {capability} computer. It was ported to the {IBM 360}, {VAX}/{VMS}, and several other platforms. (02 May 1995) ALGOL 68-R A restriction of {ALGOL 68} permitting {one-pass compilation}, developed at the Royal Signals Radar Establishment, Malvern, Worcester, UK in April 1970. Identifiers, modes and operators must be declared before use. There is no automatic proceduring and no concurrency. It was implemented in {ALGOL 60} under {GEORGE 3} on an {ICL 1907F}. ["ALGOL 68-R, Its Implementation and Use", I.F. Currie et al, Proc IFIP Congress 1971, N-H 1971, pp. 360-363]. (03 May 1995) ALGOL 68 Revised A significant simplification of {ALGOL 68}. ["Revised Report on the Algorithmic Language ALGOL 68," A. Van Wijngaarden et al, Acta Informatica 5:1-236 (1975), also Springer 1976, and SIGPLAN Notices 12(5):1-70 (May 1977)]. (03 May 1995) ALGOL 68RS An extension of {ALGOL 68} supporting {function closure}s by the Royal Signals Radar Establishment, Malvern UK. It has been ported to {Multics} and {VAX}/{VMS}. (04 May 1995) ALGOL 68S A subset of {ALGOL 68} allowing simpler compilation, intended mainly for numerical computation. It was rewritten in {BLISS} for the {PDP-11}, and later in {Pascal}. It is available as {shareware} from Charles Lindsey . Version 2.3 runs on {Sun3} under {SunOS} 4.x and {Atari} under {GEMDOS} (or potentially other computers supported by the {Amsterdam Compiler Kit}). ["A Sublanguage of ALGOL 68", P.G. Hibbard, SIGPLAN Notices 12(5) (May 1977)]. (04 May 1995) ALGOL C A variant of {ALGOL 60} developed by Clive Feather of Cambridge University ca. 1981. ALGOL C added {structure}s and {exception} handling. It was designed for beginners and students. (24 Nov 1994) ALGOL D ["A Proposal for Definitions in ALGOL", B.A. Galler et al, CACM 10:204-219 (1967)]. ALGOL N A successor to {ALGOL 60} proposed by Yoneda. (24 Nov 1994) ALGOL W A derivative of {ALGOL 60}. It introduced {double precision}, {complex number}s, bit strings and dynamic data structures. It is parsed entirely by {operator precedence} and used the {call-by-value-result} calling convention. ["A Contribution to the Development of Algol", N. Wirth, CACM 9(6):413-431 (June 1966)]. ["ALGOL W Implementation", H. Bauer et al, TR CS98, Stanford U, 1968]. (24 Nov 1994) ALGOL X A proposed successor to {ALGOL 60}, a "short-term solution to existing difficulties". The three designs proposed were by {Wirth}, Seegmuller and van Wijngaarden. [Sammet 1969, p. 194]. (07 May 1995) ALGOL Y A proposed successor to {ALGOL 60}, a "radical reconstruction". Originally a language that could manipulate its own programs at {run-time}, it became a collection of features that were not accepted for {ALGOL X}. (09 May 1995) algorithm A detailed sequence of actions to perform to accomplish some task. Named after an Iranian mathematician, Al-Khawarizmi. Technically, an algorithm must reach a result after a {finite} number of steps, thus ruling out {brute force} search methods for certain problems, though some might claim that brute force search was also a valid (generic) algorithm. The term is also used loosely for any sequence of actions (which may or may not terminate). (06 Apr 1996) Algorithmic Model A method of estimating software cost using mathematical {algorithms} based on the parameters which are considered to be the major cost drivers. These estimate of effort or cost are based primarily on the size of the software or {Delivered Source Instructions} (DSI)s, and other productivity factors known as {Cost Driver Attributes}. See also {Parametric Model}. (28 May 1996) Algorithmic Processor Description Language (APDL) An {ALGOL 60}-like language for describing computer design, for teh {CDC G-21}. ["The Description, Simulation, and Automatic Implementation of Digital Computer Processors", J.A. Darringer, Ph.D Thesis EE Dept, CMU May 1969]. (26 Nov 1995) Algorithmic Test Case Generation A computational method for identifying test cases from data, logical relationships, or other software requirements information. (10 May 1996) ALGY An early language for {symbolic mathematics}. [Sammet 1969, p. 520]. (12 Apr 1995) ALIAS ALgorIthmic ASsembly language. Machine oriented language, a variant of BLISS. Implemented in BCPL for the PDP9. ["ALIAS", H.E. Barreveld, Int Rep, Math Dept, Delft U Tech, Netherlands (1973)]. alias A name, usually short and easy to remember and type, that is translated into another name or string, usually long and difficult to remember or type. Most {command interpreter}s (e.g. {Unix}'s {csh}) allow the user to define aliases for commands, e.g. "alias l ls -al". These are loaded into memory when the interpreter starts and are expanded without needing to refer to any file. {Hostname}s may also have aliases which are other names for the same {Internet address}. E.g. in the {Unix} {hosts} database (/etc/hosts or {NIS} map) the first field on a line is the {Internet address}, the next is the official hostname (the "{canonical} name" or "{CNAME}") and any others are aliases. Hostname aliases often indicate that the host with that alias provides a particular network service such as {archie}, {finger}, {FTP}, or {World-Wide Web}. The assignment of services to hosts can then be changed simply by moving an alias (e.g. www.doc.ic.ac.uk) from one {Internet address} to another, without the clients needing to be aware of the change. (21 Feb 1995) aliasing bug (Or "{stale pointer bug}") A class of subtle programming errors that can arise in code that does {dynamic allocation}, especially via {malloc} or equivalent. If several pointers address (are "aliases for") a given hunk of storage, it may happen that the storage is freed or reallocated (and thus moved) through one alias and then referenced through another, which may lead to subtle (and possibly intermittent) lossage depending on the state and the allocation history of the malloc {arena}. This bug can be avoided by never creating aliases for allocated memory, or by use of a {higher-level language}, such as {Lisp}, which employs a {garbage collector}. Though this term is nowadays associated with {C} programming, it was already in use in a very similar sense in the {ALGOL 60} and {FORTRAN} communities in the 1960s. See also {precedence lossage}, {smash the stack}, {fandango on core}, {memory leak}, {memory smash}, {overrun screw}, {spam}. (09 May 1995) Alice A parallel {graph rewriting} computer developed by {Imperial College}, {University of Edinburgh} and {ICL}. (19 Jan 1995) alife {artificial life} A-Life {artificial life} ALJABR An implementation of {MACSYMA} for the {Macintosh} by {Fort Pond Research}. E-mail: . (21 Feb 1995) all-elbows Said of a {TSR} (terminate-and-stay-resident) {mess-dos} program, such as the N pop-up calendar and calculator utilities that circulate on {BBS} systems: unsociable. Used to describe a program that {rude}ly steals the resources that it needs without considering that other TSRs may also be resident. One particularly common form of rudeness is lock-up due to programs fighting over the keyboard interrupt. (21 Feb 1995) ALLIANCE A complete set of CAD tools for teaching Digital CMOS VLSI Design in Universities. It includes VHDL compiler and simulator, logic synthesis tools, automatic place and route. ALLIANCE is the result of a ten years effort at University Pierre et Marie Curie (PARIS VI, France). Version 1.1 compiler, simulator, tools and environment, documentation {(ftp://ftp-masi.ibp.fr/pub/cao-vlsi/alliance)} ports: Sun4, also not well supported: Mips/Ultrix, 386/SystemV Mailing list: . E-mail: . (16 Feb 1993) ALLOY A language by Thanasis Mitsolides which combines {functional programming}, {object-oriented programming} and {logic programming} ideas, and is suitable for {massively parallel} systems. Evaluating modes support serial or parallel execution, {eager evaluation} or {lazy evaluation}, {nondeterminism} or multiple solutions etc. ALLOY is simple as it only requires 29 primitives in all (half of which are for {object oriented programming} support). It runs on {SPARC}, {(ftp://cs.nyu.edu/pub/local/alloy/)} ["The Design and Implementation of ALLOY, a Parallel Higher Level Programming Language", Thanasis Mitsolides , PhD Thesis NYU 1990]. (11 Jun 1991) ALM {Assembly Language} for {Multics}. The language on the {GE645}. Critical portions of the {Multics} {kernel} were written in ALM. (24 Nov 1994) Aloha (A Hawaiian greeting) A system of {contention resolution} devised at The {University of Hawaii}. {Packet}s are {broadcast} when ready, the sender listens to see if they collide and if so re-transmits after a random time. {Slotted Aloha} constrains packets to start at the beginning of a time slot. Basic Aloha is appropriate to long propagation time nets (e.g. satellite). For shorter propagation times, {carrier sense} {protocol}s are possible. (10 Dec 1995) Aloha Net (From the Hawaiian greeting) One of the first functioning networks in the USA, conceived and implimented at the {University of Hawaii} campus at Manoa. Its purpose was to link the University {mainframe} computer to client computers located on outer islands at University campuses. Put in place in the early 1970s, it was dubed the Aloha Net. {Key punch} cards were fed through a reader, and sent over the commercial phone lines. (10 Dec 1995) Alonzo Church A twentieth century mathematician and logician, and one of the founders of computer science. Church invented the {lambda-calculus} and posited a version of the {Church-Turing thesis}. (25 Mar 1995) ALP A list-processing extension of {Mercury Autocode}. ["ALP, An Autocode List-Processing Language", D.C. Cooper et al, Computer J 5:28-31 (1962)]. (24 Jan 1995) ALPAK A subroutine package used by {ALTRAN}. ["The ALPAK System for Nonnumerical Algebra on a Digital Computer", W.S. Brown, Bell Sys Tech J 42:2081 (1963)]. [Sammet 1969, p. 502]. (10 May 1995) ALPHA (Or "Input") An extension of {ALGOL 60} for the {M-20} computer developed by A.P. Ershov at Novosibirsk in 1961. ALPHA includes {matrix} operations, {slice}s, and complex arithmetic. ["The Alpha Automatic Programming System", A.P. Ershov ed., A-P 1971]. (10 May 1995) Alpha 1. A {compiler generator} written by Andreas Koschinsky and described in his thesis at the {Technische Universitaet Berlin}. Alpha takes an {attribute grammar} and uses {Bison} and {Flex} to generate a {parser}, a {scanner} and an {ASE evaluator} (Jazayeri and Walter). The documentation is in german. (16 Feb 1993) 2. {DEC Alpha}. (10 May 1995) Alpha AXP 21164 A 1 {GIPS} version of the {DEC Alpha} processor. The first commercially available sequential 1 GIPS processor. Announced 7 Sep 1994. {(http://www.digital.com/info/semiconductor/dsc-21164.html)} (10 May 1995) alpha/beta pruning An optimisation of the {minimax} algorithm for choosing the next move in a two-player game. The position after each move by me or you is assigned a value. The larger this value, the better the position is for me. Thus, I will choose moves with maximum value and you will choose moves with minimum value (for me). If it is my move and I have already found one move M with value alpha then I am only interested in other moves with value greater than alpha. I now consider another of my possible moves, M', to which you could reply with a move with value beta. I know that you would only make a different reply if it had a value less than beta. If beta is already less than alpha then M' is definitely worth less than M so I can reject it without considering any other replies you might make. The same reasoning applies when considering my replies to your reply. An alpha cutoff is when your reply gives a lower value than the current maximum (alpha) and a beta cutoff is when my reply to your reply gives a higher value than the current minimum value of your reply (beta). In short, if you've found one possible move, you need not consider another move which your opponent can force to be worse than the first one. alpha conversion In {lambda-calculus} and {reduction}, the renaming of a {formal parameter} in a {lambda abstraction}. This does not change the meaning of the abstraction. For example: \ x . x+1 <--> \ y . y+1 If the {actual argument} to a lambda abstraction contains instances of the abstraction's formal parameter then it is necessary to rename the parameter before applying the abstraction to avoid {name capture}. (10 May 1995) alpha particle See {bit rot}. Alphard (Named after the brightest star in Hydra) A {Pascal}-like language developed by Wulf, Shaw and London of {CMU} in 1974. Alphard supports {data abstraction} using the 'form', which combines a specification and an implementation. ["Abstraction and Verification in Alphard: Defining and Specifying Iteration and Generators", Mary Shaw, CACM 20(8):553-563 (Aug 1977)]. (10 May 1995) alpha testing Testing of software at the developer's site by the customer. The next stage is {beta testing}. (10 May 1996) ALPS 1. An early interpreted {algebraic language} for the {Bendix G15} by Richard V. Andree of the {University of Oklahoma}. ALPS is said to have preceded and influenced development of {BASIC}. 2. A parallel {logic language}. ["Synchronization and Scheduling in ALPS Objects", P. Vishnubhotia, Proc 8th Intl Conf Distrib Com Sys, IEEE 1988, pp. 256-264]. (24 Nov 1994) alt /awlt/ 1. The alt shift key on many keyboards, including the {IBM PC}. On some keyboards and {operating system}s, (but not the IBM PC) the alt key sets bit 7 of the character generated. See {bucky bits}. 2. The "{clover}" or "Command" key on a {Macintosh}; use of this term usually reveals that the speaker hacked PCs before coming to the Mac (see also {feature key}). Some Mac hackers, confusingly, reserve "alt" for the Option key (and it is so labelled on some Mac II keyboards). 3. (Obsolete {PDP-10}; often "ALT") An alternate name for the {ASCII} ESC character (Escape, ASCII 27), after the keycap labelling on some older terminals; also "altmode" (/awlt'mohd/). This character was almost never pronounced "escape" on an {ITS} system, in {TECO} or under {TOPS-10}, always alt, as in "Type alt alt to end a TECO command" or "alt-U onto the system" (for "log onto the [ITS] system"). This usage probably arose because alt is easier to say. (23 May 1995) ALTAC An extended {FORTRAN II} for the {Philco 2000}, built on {TAC}. [Sammet 1969, p.146]. (16 Mar 1995) Altair 9000 A {microcomputer}, sometimes referred as the first the world's first microcomputer. It was developed in the USA in the 1970s by {Forrest Mimms} and his colleagues. [Forrest M. Mimms, article in "Computers and Electronics", (formerly "Popular Electronics") mid 1980s]. [Where? Features?] (14 Mar 1995) Alta Vista A {World-Wide Web} site provided by {Digital} which features a very fast Web and {Usenet} {search engine}. As of April 1996 its word index is 33GB in size. AltaVista is currently (June 1996) the largest Web index, with 30 million pages from 225000 servers, and three million articles from 14000 {Usenet} news groups. It is accessed over 12 million times per weekday. {Home (http://www.altavista.digital.com/)}. (10 Jun 1996) alt bit /awlt bit/ alternate bit. See {meta bit}. altmode {alt} ALTRAN A {FORTRAN} extension for {rational algebra} developed by W.S. Brown of {Bell Labs} ca. 1968. ["The ALTRAN System for Rational Function Manipulation - A Survey", A.D. Hall, CACM 14(8):517-521 (Aug 1971)]. (01 Jun 1995) alt.sources A {Usenet} newsgroup for posting program {source code}. {Archive (ftp://wuarchive.wustl.edu/usenet/alt.sources/)} (18 Oct 1995) ALU 1. {Arithmetic and Logic Unit}. 2. {Association of Lisp Users}. Aluminum Book ({MIT)} "Common LISP: The Language", by Guy L. Steele Jr. (Digital Press, first edition 1984, second edition 1990). Note that due to a technical screwup some printings of the second edition are actually of a colour the author describes succinctly as "yucky green". See also {book titles}. (28 Feb 1995) Alvey A funding programme for collaborative research in the UK. (01 Jun 1995) AM {Amplitude Modulation} A Manufacturing Language (AML) A {high-level language} developed by {IBM} in the 1980s for industrial {robot}s. ["AML: A Manufacturing Language", R.H. Taylor et al, Inst J Robot Res 1(3):19-43]. (25 Sep 1995) Amber 1. A {functional programming} language which adds {CSP}-like {concurrency}, {multiple inheritance} and {persistence} to {ML} and generalises its type system. It is similar to {Galileo}. Programs must be written in two type faces, roman and italics! It has both {static type}s and {dynamic type}s. There is an implementation for {Macintosh}. ["Amber", L. Cardelli, TR Bell Labs 1984]. 2. An {object-oriented} distributed language based on a subset of {C++}, developed at {Washington University} in the late 1980s. (08 Dec 1994) AMBIT Algebraic Manipulation by Identity Translation (also claimed: "Acronym May Be Ignored Totally"). An early {pattern-matching} language, developed by C. Christensen of Massachusetts Computer Assocs in 1964, aimed at algebraic manipulation. [Sammet 1969, pp. 454-457]. (08 Dec 1994) AMBIT/G {AMBIT} for graphs. ["An Example of the Manipulation of Directed Graphs in the AMBIT/G Programming Language", C. Christensen, in Interactive Systems for Experimental Applied Mathematics, M. Klerer et al, eds, Academic Press 1968, pp. 423-435]. (08 Dec 1994) AMBIT/L {AMBIT} for lists. A variant of AMBIT supporting list handling and {pattern matching} rules based on two-dimensional diagrams. ["An Introduction to AMBIT/L, A Diagrammatic Language for List Processing", Carlos Christensen, Proc 2nd ACM Symp Symb and Alg Manip (Mar 1971)]. (08 Dec 1994) AMBIT/S {AMBIT} for strings. AMBUSH A language for {linear programming} problems in a materials processing/transportation network. ["AMBUSH - An Advanced Model Builder for Linear Programming", T.R. White et al, National Petroleum Refiners Assoc Comp Conf (Nov 1971)]. (19 Jun 1995) AMD 1. {Advanced Micro Devices}. 2. According to Don Olivier , his system manager came in to work one morningn to find his IBM system down with a message on the console that said "AMD failure". After he and the service rep had puzzled over documentation for an hour or so they called headquarters and eventually learned that it the failure was in the cooling system: an AMD is an "air movement device", IBM for "fan". (16 Jan 1995) AMD 29000 A {RISC} {microprocessor} descended from the {Berkley RISC} design. Like the {SPARC} design that was introduced shortly afterwards, the 29000 has a large {register set} split into local and global sets. But though it was introduced before the SPARC, it has a more elegant method of register management. The 29000 has 64 global registers, in comparison to the SPARC's eight. In addition, the 29000 allows variable sized windows allocated from the 128 register stack {cache}. The current window or stack frame is indicated by a stack pointer, a pointer to the caller's frame is stored in the current frame, like in an ordinary stack (directly supporting stack languages like {C}, a {CISC}-like philosophy). Spills and fills occur only at the ends of the cache, and registers are saved/loaded from the memory stack. This allows variable window sizes, from 1 to 128 registers. This flexibility, plus the large set of global registers, makes {register allocation} easier than in SPARC. There is no special {condition code register} - any general register is used instead, allowing several condition codes to be retained, though this sometimes makes code more complex. An {instruction prefetch} buffer (using burst mode) ensures a steady instruction stream. Branches to another stream can cause a delay, so the first four new instructions are cached - next time a cached branch (up to sixteen) is taken, the cache supplies instructions during the initial memory access delay. Registers aren't saved during interrupts, allowing the interrupt routine to determine whether the overhead is worthwhile. In addition, a form of register access control is provided. All registers can be protected, in blocks of 4, from access. These features make the 29000 useful for embedded applications, which is where most of these processors are used, allowing it the claim to be "the most popular RISC processor". The 29000 also includes an {MMU} and support for the {AMD 29027} {FPU}. (19 Jun 1995) AMD 29027 The {FPU} for the {AMD 29000}. (16 Jan 1995) Amdahl 1. {Amdahl Corporation}. 2. {Gene Amdahl}. Amdahl Corporation A US computer manufacturer. Amdahl is a major supplier of large {mainframe}s, {UNIX} and {Open Systems} software and servers, data storage subsystems, data communications products, applications development software, and a variety of educational and consulting services. Amdahl products are sold in more than 30 countries for use in both open systems and {IBM} plug-compatible mainframe computing environments. Quarterly sales $397M, profits $13M (Aug 1994). {Home (http://www.amdahl.com/)} (23 May 1995) Amdahl's Law (Named after {Gene Amdahl}) If F is the fraction of a calucation that is sequential, and (1-F) is the fraction that can be parallelised, then the maximum {speedup} that can be achieved by using P processors is 1/(F+(1-F)/P). (23 May 1995) AMD Am2901 A 4-bit {bit-slice} processor from {Advanced Micro Devices}. It featured sixteen 4-bit {register}s and a 4-bit {ALU} and operation signals to allow carry/borrow or shift operations and such to operate across any number of other 2901s. An {address sequencer} (such as the {2910}) could provide control signals with the use of custom {microcode} in {ROM}. (16 Nov 1994) AMD Am2903 A {bit-slice} prcessor from {Advanced Micro Devices} which featured hardware multiply. (16 Nov 1994) AMD Am2910 An {address sequencer} from {Advanced Micro Devices}. (16 Nov 1994) American National Standards Institute (ANSI) The United States government body responsible for approving US {standard}s in many areas, including computers and communications. ANSI is a member of {ISO}. ANSI sells ANSI and ISO (international) standards. Address: New York, NY 10036, USA. Sales: 1430 Broadway, NY NY 10018. Telephone: +1 (212) 642 4900. (31 Jan 1995) American Society of Mechanical Engineers (ASME) A group involved in {CAD} standardisation. (21 Apr 1995) American Standard Code for Information Interchange (ASCII) The predominant {character set} encoding of present-day computers. The modern version uses 7 bits for each character, whereas most earlier codes (including an early version of ASCII) used fewer. This change allowed the inclusion of lowercase letters - a major {win} - but it did not provide for accented letters or any other letterforms not used in English (such as the German sharp-S or the ae-ligature which is a letter in, for example, Norwegian). It could be worse, though. It could be much worse. See {EBCDIC} to understand how. Computers are much pickier and less flexible about spelling than humans; thus, hackers need to be very precise when talking about characters, and have developed a considerable amount of verbal shorthand for them. Every character has one or more names - some formal, some concise, some silly. Individual characters are listed in this dictionary with alternative names from revision 2.3 of the {Usenet} ASCII pronunciation guide in rough order of popularity, including their official {ITU-T} names and the particularly silly names introduced by {INTERCAL}. See {V} {ampersand}, {asterisk}, {backquote}, {backslash}, {caret}, {colon}, {comma}, {commercial at}, {control-C}, {dollar}, {dot}, {double quote}, {equals}, {exclamation mark}, {greater than}, {hash}, {left bracket}, {left parenthesis}, {less than}, {minus}, {parentheses}, {percent}, {plus}, {question mark}, {right brace}, {right brace}, {right bracket}, {right parenthesis}, {semicolon}, {single quote}, {slash}, {space}, {tilde}, {underscore}, {vertical bar}, {zero}. The pronunciation of "#" as "pound" is common in the US but a bad idea; {Commonwealth Hackish} has its own, rather more apposite use of "pound sign" (confusingly, on British keyboards the pound graphic happens to replace "#"; thus Britishers sometimes call "#" on a US-ASCII keyboard "pound", compounding the American error). The US usage derives from an old-fashioned commercial practice of using a "#" suffix to tag pound weights on bills of lading. The character is usually pronounced "hash" outside the US The "swung dash" or "approximation" sign is not quite the same as {tilde} in typeset material but the ASCII tilde serves for both (compare {angle bracket}s). Some other common usages cause odd overlaps. The "#", "$", ">", and "&" characters, for example, are all pronounced "hex" in different communities because various assemblers use them as a prefix tag for hexadecimal constants (in particular, "#" in many assembler-programming cultures, "$" in the {6502} world, ">" at {Texas Instruments}, and "&" on the {BBC Micro}, {Acorn Archimedes}, {Sinclair}, and some {Zilog Z80} machines). See also {splat}. The inability of ASCII text to correctly represent any of the world's other major languages makes the designers' choice of 7 bits look more and more like a serious {misfeature} as the use of international networks continues to increase (see {software rot}). Hardware and software from the US still tends to embody the assumption that ASCII is the universal character set and that characters have 7 bits; this is a a major irritant to people who want to use a character set suited to their own languages. Perversely, though, efforts to solve this problem by proliferating sets of {national characters} produce an evolutionary pressure to use a *smaller* subset common to all those in use. Software is described as "{eight-bit clean}" if it correctly handles characters sets which use all eight bits. {ASCII character table} See also {Yu-Shiang Whole Fish}. (06 Mar 1995) America On-Line, Inc. (AOL) A US on-line service provider based in Vienna, Virginia, USA. AOL claims to be the largest and fastest growing provider of on-line services in the world, with the most active subscriber base. AOL offers its three million subscribers {electronic mail}, interactive newspapers and magazines, conferencing, software libraries, computing support, and on-line classes. In October 1994 AOL made {Internet} {FTP} available to its members and in May 1995, full Internet access including {World-Wide Web}. AOL's main competitors are {Prodigy} and {Compuserve}. {Home (http://www.aol.com/)} {(ftp://ftp.aol.com/)} (26 Aug 1995) Amiga A range of home computers sold by {Commodore Business Machines}. Good for {games}, {video processing} and {multimedia}. One notable feature is a hardware {blitter} for speeding up graphics operations on whole areas of the screen. The {integrated circuit} containing the blitter, {DMA} channel allocation, {RAM} {refresh} was known as "The Copper". Another graphics {co-processor}, responsible for effects timed to the real-time position of the video scan, such as midscreen {palette} changes, {sprite multiplying}, and {resoloution} changes, was known as the "Agnus". Different versions (in order) were: "Agnus" (could only address 512K of {video RAM}), "Fat Agnus" (in a {PLCC} package, could access 1MB of video RAM), "Super Agnus" (slightly upgraded Fat Agnus), and "Obese Agnus" (or "SuperFat Agnus"). Agnus and Fat Agnus came in {PAL} and {NTSC} versions, the other two came in one version, jumper selectable for PAL or NTSC. Other chips were "Gary" ({I/O}, addressing, {glue logic}), "Paula" ({floppy disk}, {serial ports}, 4-channel 8-bit {DMA} sampled audio), "Denise" (outputs binary video data (3*4 bits) to the Vidiot), the "Vidiot" (A hybrid that combines and amplifies the 12 bit video data from Denise into {RGB} to the {monitor}), "Amber" (A "flicker fixer", used in the A3000 and Commodore display enhancer for the A2000), "Buster" (The bus controller for the ZorroII/III bus), "Ramsey" (The {RAM} controller), "DMAC" (The DMA controller chip for the WD33C93 {SCSI controller} used in the A3000 and on the A2091/A2092 SCSI controller card for the A2000; and to control the {CD-ROM} in the {CDTV}). There were several Amiga chipsets: the "Old Chipset" (OCS), the "Enhanced Chipset" (ECS), and AGA. OCS included Paula, Gary, Denise, and Agnus. ECS had the same Paula, Gary, Agnus (could address 2MB of VRAM), Super Denise (upgraded to support Agnus so that a few new {screen modes} were available). With the introduction of the {Amiga A600} Gary was replaced with "Gayle" (though the chipset was still called ECS). Gayle provided a number of improvments but the main one was support for the A600's {PCMCIA} port. The AGA chipset had Agnus with twice the speed and a 24-bit pallette, maximum displayable: 8 bits (256 colours), although the famous "{HAM}" (Hold And Modify) trick allows pictures of 256,000 colours to be displayed. AGA's Paula and Gayle were unchanged but AGA Denise supported AGA Agnus's new screen modes. Unfortunately, even AGA Paula did not support High Density floppy disk drives. In order to use a high density disk drive Amiga HD floppy drives spin at half the rotational speed thus halving the data rate to Paula. Also the 8 bit mode was very slow, and hence not used much. {Amiga Web Directory (http://www.cucug.org/amiga.html)} Newsgroups: {news:comp.binaries.amiga}, {news:comp.sources.amiga}, {news:comp.sys.amiga}, {news:comp.sys.amiga.advocacy}, {news:comp.sys.amiga.announce}, {news:comp.sys.amiga.applications}, {news:comp.sys.amiga.audio}, {news:comp.sys.amiga.datacomm}, {news:comp.sys.amiga.emulations}, {news:comp.sys.amiga.games}, {news:comp.sys.amiga.graphics}, {news:comp.sys.amiga.hardware}, {news:comp.sys.amiga.introduction}, {news:comp.sys.amiga.marketplace}, {news:comp.sys.amiga.misc}, {news:comp.sys.amiga.multimedia}, {news:comp.sys.amiga.programmer}, {news:comp.sys.amiga.reviews}, {news:comp.sys.amiga.tech}, {news:comp.sys.amiga.telecomm}, {news:comp.Unix.amiga}. {Germany (ftp://ftp.uni-kl.de/)}, {Germany (ftp://ftp.uni-erlangen.de/)}, {Germany (ftp://ftp.cs.tu-berlin.de/)}, {Germany (ftp://ftp.th-darmstadt.de/)}, {Germany (ftp://ftp.uni-paderborn.de/)}, {Germany (ftp://ftp.uni-oldenburg.de/)}, {Sweden (ftp://ftp.luth.se/)}, {Switzerland (ftp://ftp.eunet.ch/)}, {Switzerland (ftp://litamiga.epfl.ch/)}, {Australia (ftp://splat.aarnet.edu.au/)}, {UK (ftp://src.doc.ic.ac.uk/)}, {Montana, USA (ftp://ftp.wustl.edu/)}, {Texas, USA (ftp://ftp.etsu.edu/)}, {California, USA (ftp://ftp.cdrom.com/)}, {Iowa, USA (ftp://ftp.isca.uiowa.edu/)}, {Hawaii, USA (ftp://ftp.hawaii.edu/)}. Look for directory aminet, amiga or fish under pub. See {Amoeba}, {bomb}, {gronk}, {guru meditation}, {sidecar}, {slap on the side}, {Vulcan nerve pinch}. (08 Mar 1996) Amiga E An {Amiga} {E} {compiler} by Wouter van Oortmerssen . Amiga E is very fast - 20000 lines/minute on a 7 Mhz Amiga. It allows inline {assembly code} and has an integrated {linker}. It has a large set of integrated functions, a {module} concept with 2.04 includes as modules a flexible type system, quoted expressions, immediate and typed lists, low level {polymorphism} and {exception} handling. It is written in assembly code and E. Version 2.1b {(ftp://ftp.wustl.edu/pub/aminet/dev/e/AmigaE21b.lha)}. {(ftp://amiga.physik.unizh.ch/amiga/dev/lang/AmigaE21b.lha)}. Mailing list: . {Usenet} newsgroup: {news:comp.sys.amiga.programmer} (sometimes). (01 Mar 1993) AML {A Manufacturing Language}. (27 Sep 1995) AML/E AML Entry. A simple version of {AML}, implemented on the {IBM PC}, with a graphic display of the robot position. (03 Oct 1995) Amoeba 1. A distributed {operating system} developed by {Andrew Tanenbaum} and others at {Amsterdam}. 2. A derogatory term for {Commodore}'s {Amiga} {personal computer}. (31 Oct 1995) AMP {Algebraic Manipulation Package} amper {ampersand}. ampersand "&" {ASCII} character 38. Common names: {ITU-T}: ampersand; amper; and. Rare: address (from {C}); reference (from C++); andpersand; bitand; background (from {sh}); pretzel; amp. {INTERCAL} called this "ampersand"; what could be sillier? (06 Mar 1995) AMPL Along with {mpl}, the intrinsic parallel languages for {MasPar}'s computers. They are parallel variants of {C}. Ampl is actually now a {gcc} port. ["AMPL: Design, Implementation and Evaluation of a Multiprocessing Language", R. Dannenberg, CMU 1981]. ["Loglan Implementation of the AMPL Message Passing System", J. Milewski SIGPLAN Notices 19(9):21-29 (Sept 1984)]. [Are these the same language?] (01 Nov 1995) AMPLE A {FORTH}-like language for programming the 500/5000 series of add-on music synthesisers for the {BBC Microcomputer}. AMPLE was produced by Hybrid Technologies, Cambridge, England in the mid 1980s. Many AMPLE programs were published in Acorn User magazine. (01 Nov 1995) Amplitude Modulation (AM) A method of encoding data by varying the {amplitude} of a constant frequency {carrier}. (18 Jun 1996) amp off (Purdue) To run in {background}. From the {Unix} {shell} "&" (ampersand) operator. (14 Nov 1995) AMPPL-II Associative Memory Parallel Processing Language. A language from the early 1970s. (14 Nov 1995) AMS {Andrew Message System} AMTRAN {Automatic Mathematical TRANslation} Amulet An implementation or the {Advanced RISC Machine} processor architecture using the {micropipeline} design style. In April 1994 the Amulet group in the Computer Science department of {Manchester University} took delivery of the AMULET1 {microprocessor}. This was their first large scale asynchronous circuit and the world's first implementation of a commercial microprocessor architecture (ARM) in {asynchronous logic}. Work was begun at the end of 1990 and the design despatched for fabrication in February 1993. The primary intent was to demonstrate that an asynchronous microprocessor can consume less power than a synchronous design. The design incorporates a number of concurrent units which cooperate to give instruction level compatibility with the existing synchronous part. These include an Address unit, which autonomously generates instruction fetch requests and interleaves ({nondeterministic}ally) data requests from the Execution unit; a {Register} file which sources operands, queues write destinations and handles data dependencies; an Execution unit which includes a multiplier, a shifter and an ALU with data-dependent delay; a Data interface which performs byte extraction and alignment and includes an {instruction prefetch} buffer, and a control path which performs instruction decode. These units only synchronise to exchange data. The design demonstrates that all the usual problems of processor design can be solved in this asynchronous framework: backwards instruction set compatibility, interrupts and exact exceptions for memory faults are all covered. It also demonstrates some unusual behaviour, for instance {nondeterministic} prefetch depth beyond a branch instruction (though the instructions which actually get executed are, of course, deterministic). There are some unusual problems for compiler optimization, as the metric which must be used to compare alternative code sequences is continuous rather than discrete, and the {nondeterminism} in external behaviour must also be taken into account. The chip was designed using a mixture of custom {datapath} and compiled control logic elements, as was the synchronous ARM. The fabrication technology is the same as that used for one version of the synchronous part, reducing the number of variables when comparing the two parts. Two silicon implementations have been received and preliminary measurements have been taken from these. The first is a 0.7um process and has achieved about 28 kDhrystones running the standard {benchmark} programme. The other is a 1 um implementation and achieves about 20 kDhrystones. For the faster of the parts this is equivalent to a synchronous {ARM6} clocked at around 20MHz; in the case of AMULET1 it is likely that this speed is limited by the memory system cycle time (just over 50ns) rather than the processor chip itself. A fair comparison of devices at the same geometries gives the AMULET1 performance as about 70% of that of an {ARM6} running at 20MHz. Its power consumption is very similar to that of the ARM6; the AMULET1 therefore delivers about 80 MIPS/W (compared with around 120 from a 20MHz ARM6). Multiplication is several times faster on the AMULET1 owing to the inclusion of a specialised asynchronous multiplier. This performance is reasonable considering that the AMULET1 is a first generation part, whereas the synchronous ARM has undergone several design iterations. AMULET2 (currently under development) is expected to be three times faster than AMULET1 - 120k {dhrystone}s and use less power. The {macrocell} size (without {pad ring}) is 5.5 mm by 4.5 mm on a 1 micron {CMOS} process, which is about twice the area of the synchronous part. Some of the increase can be attributed to the more sophisticated organization of the new part: it has a deeper {pipeline} than the clocked version and it supports multiple outstanding memory requests; there is also specialised circuitry to increase the multiplication speed. Although there is undoubtedly some overhead attributable to the asynchronous control logic, we estimate this to be closer to 20% than to the 100% suggested by the direct comparison. AMULET1 is code compatible with {ARM6} and is so is capable of running existing binaries without modification. The implementation also includes features such as interrupts and memory aborts. The work was part of a broad {ESPRIT} funded investigation into low-power technologies within the European {Open Microprocessor systems Initiative} (OMI) programme, where there is interest in low-power techniques both for portable equipment and (in the longer term) to alleviate the problems of the increasingly high dissipation of high-performance chips. This initial investigation into the role {asynchronous logic} might play has now demonstrated that asynchronous techniques can be applied to problems of the scale of a complete {microprocessor}. {Home (http://www.cs.man.ac.uk/amulet)} (08 Dec 1994) analog American spelling of {analogue}. (14 Nov 1995) Analog Hardware Design Language (AHDL) A language under development by the US Air Force. [Electronic Times or Electronic Engineering Design?]. (09 Apr 1995) analogue Used to describe a continuously variable signal, as opposed to a discrete or "digital" one, or a circuit designed to handle such signals. Analogue circuits are much harder to design and analyse than digital ones because the designer must take into account effects such as the gain, linearity and power handling of components, the resistance, capacitance and inductance of PCB tracks, wires and connectors, interference between signals, power supply stability and more. A digital circuit design, especially for high switching speeds, must also take these factors into account if it is to work reliably, but they are usually less critical because most digital components will function correctly within a range of parameters whereas such variations will corrupt the outputs of an analogue circuit. See also {analogue computer}. (14 Nov 1995) analogue computer A machine or electronic circuit designed to work on numerical data represented by some physical quantity (e.g. rotation or displacement) or electrical quantity (e.g. voltage or charge) which varies continuously, in contrast to {digital} signals which are either 0 or 1. For example, the turning of a wheel or changes in voltage can be used as input. Analogue computers are said to operate in {real time} and are used for research in design where many different shapes and speeds can be tried out quickly. A computer model of a car suspension allows the designer to see the effects of changing size, stiffness and damping. (01 May 1995) Analogy Model A method of estimating the cost of a proposed software project by extrapolating from the costs and schedules of similar completed projects. (28 May 1996) anchor (Or "span", "region", "button", "extent") An area within the content of a {hypertext} {node} which is the source or destination of a {link}. The anchor may be the whole of the node content. Typically, clicking with the {mouse} on an anchor area causes the link to be followed and the anchor at the opposite end of the link to be displayed. Anchors are highlighted in some way (either always, or when the mouse is over them), or they may be marked by a special symbol. (02 Mar 1995) ANCP An early system on the {Datatron} 200 series. [Listed in CACM 2(5):16 (May 1959)]. (15 Nov 1995) ANDF {Architecture Neutral Distribution Format} Andorra-I A language with the {OR-parallelism} of {Aurora} plus the {AND-parallelism} of {Parlog}. ["Andorra-I: A Parallel Prolog System that Transparently Exploits both And- and Or-Parallelism", V.S Costa et al, SIGPLAN Notices 26(7):83-93 (July 1991)]. (24 Nov 1995) Andorra Kernel Language (AKL) The successor to {KAP} by S. Janson . A prototype implementation is available from the author. ["Programming Paradigms of the Andorra Kernel Language", S. Janson et al in Logic Programming: Proc 1991 Intl Symp, MIT Press 1991]. (24 Nov 1994) Andorra-Prolog ["Andorra-Prolog: An Integration of Prolog and Committed Choice Languages", S. Haridi et al, Intl Conf Fifth Gen Comp Sys 1988, ICOT 1988]. (24 Nov 1995) Andrei Markov 1856-1922. The Russian mathematician, after who {Markov chain}s were named. {Biography (http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Markov.html)}. (06 Oct 1995) Andrew File System (AFS) The distributed file system of the {Andrew Project}, adopted by the {OSF} as part of their {Distributed Computing Environment}. (24 Nov 1994) Andrew Message System A {multimedia} interface to {electronic mail} and {bulletin board}s, developed as part of the {Andrew Project}. (24 Nov 1994) Andrew Project A distributed system project for support of educational and research computing at {Carnegie Mellon University}. {Home FTP (ftp://emsworth.andrew.cmu.edu)} {Usenet} newsgroup: {news:comp.soft-sys.andrew}. [Why Andrew?] (25 Oct 1995) Andrew S. Tanenbaum {Andrew Tanenbaum} Andrew Tanenbaum Professor Andrew S. Tanenbaum (1941-) of the {Vrije Universiteit, Amsterdam} in Holland. Tanenbaum is famous for his work and books on computer architecture, {operating systems}, and {networks}. He wrote the textbook "Computer Networks", Second Edition, Prentice-Hall, 1981, which describes the {International Standards Organisation}, {Open Systems Interconnection} (ISO-OSI) network model. E-mail: Andrew Tanenbaum . See {Amoeba}, {Mac-1}, {Mic-1}, {Mic-2}, {Micro Assembly Language}, {Minix}, {MicroProgramming Language}, {standard}. (23 Apr 1996) Andrew Toolkit A {portable} {user interface} toolkit developed as part of the {Andrew project}, running on the {X Window System} and distributed with {X11R5}. (24 Nov 1995) Angel A single {address space}, {micro-kernel} {operating system} for {multiprocessor} computers, developed at {Imperial College} and {City University}, London. [Ariel Burton] (24 Nov 1995) angle bracket Either of the characters "<" (less-than, {ASCII} 60) and ">" (greater-than, ASCII 62). Typographers in the {Real World} use angle brackets which are either taller and slimmer (the {ISO} "{Bra}" and "{Ket}" characters), or significantly smaller (single or double guillemets) than the less-than and greater-than signs. See {broket}. (24 Nov 1995) angry fruit salad A bad visual-interface design that uses too many colours. (This term derives, of course, from the bizarre day-glo colours found in canned fruit salad). Too often one sees similar effects from interface designers using colour window systems such as {X}; there is a tendency to create displays that are flashy and attention-getting but uncomfortable for long-term use. (24 Nov 1995) ANI {Automatic Number Identification} animation The creation of artificial moving images. {Usenet} newsgroup: {news:comp.graphics.animation}. {FAQ (ftp://src.doc.ic.ac.uk/usenet/news-info/comp.graphics.animation)}. (24 Nov 1995) Animus ["Constraint-Based Animation: The Implementation of Temporal Constraints in the Animus System", R. Duisberg, PhD Thesis U Washington 1986]. (24 Nov 1995) ANL {Argonne National Laboratory} Anna {ANNotated Ada}. (24 Nov 1995) annealing See {simulated annealing}. annotate To add an {annotation}. ANNotated Ada (Anna) A {specification} language developed at {Stanford University} ca. 1980 for formally specifying {Ada} programs. It has a Specification Analyzer and a Consistency Checking System. It adds semantic {assertions} in the form of Ada comments. {(ftp://anna.stanford.edu/pub/anna/)} ["ANNA - A Language for Annotating Ada Programs", David Luckham et al, Springer 1987]. (01 Nov 1994) annotation 1. Extra information associated with a particular point in a document or program. May be added either by a {compiler} or by the programmer. Annotations are not usually essential to the correct function of the program but give hints to improve performance. 2. A new commentary {node} linked to an existing node. If readers, as well as authors, can annotate nodes, then they can immediately provide feedback if the information is misleading, out of date or plain wrong. (26 Nov 1995) annoybot /*-noy-bot/ An {IRC} {robot}. (26 Nov 1995) Annual Change Traffic (ACT) The fraction of the software product's {source code} which changes during a year, either through addition or modification. The ACT is used to determine the product size in order to estimate software maintenance effort. (29 May 1996) anonymous FTP An interactive service provided by many {Internet} {host}s allowing any user to transfer documents, files, programs, and other archived data using {File Transfer Protocol}. The user logs in using the special user name "ftp" or "anonymous" and his {e-mail address} as password. He then has access to a special directory hierarchy containing the publically accessible files, typically in a subdirectory called "pub". This is usually a separate area from files used by local users. A reference like ftp: euagate.eua.ericsson.se /pub/eua/erlang/info means that files are available by anonymous FTP from the host called euagate.eua.ericsson.se in the directory (or file) /pub/eua/erlang/info. Sometimes the {hostname} will be followed by an {Internet address} in parentheses. The directory will usually be given as a path relative to the anonymous FTP login directory. A reference to a file available by FTP may also be in the form of a {URL} starting "ftp:". See also {Archie}, {archive site}, {EFS}, {FTP by mail}, {World-Wide Web}. (26 Nov 1995) ANSA {Advanced Network Systems Architecture}. (26 Nov 1995) ANSI {American National Standards Institute} ANSI C (American National Standards Institute C) A revision of {C}, adding {function prototype}s, {structure passing}, {structure assignment} and standardised library functions. {ANSI} X3.159-1989. {(ftp://princeton.edu/pub/lcc/)} {cgram} is a {grammar} for ANSI C, written in {Scheme}. {unproto} is a program for removing function prototypes to translate ANSI C to standard C. (26 Nov 1995) ANSI Minimal BASIC ANS X3.60-1978. [Details?] (29 Nov 1995) ANSI/SPARC Architecture A layered model of {database} architecture comprising a {physical schema}, a {conceptual schema}, and user {views}. [Reference?] (26 Nov 1995) ANSI Z39.50 Information Retrieval Service Definition and Protocol Specification for Library Applications. This {standard}, used by {WAIS}, specifies an {OSI} {application layer} service to allow an application on one computer to query a {database} on another. (26 Nov 1995) anti-aliasing A technique used on a {gray-scale} or colour {bitmap display} to make diagonal edges appear smoother by setting {pixel}s to intermediate colours near the edge according to where the edge crosses them. The most common example is where black characters are to be displayed on a white background. Without anti-aliasing, the diagonal edges of, say an upper case "A" character appear as a jagged edges or "staircases" which may be noticable on a low {resolution} display. If the display is capable of showing intermediate greys then anti-aliasing can be applied. This colours a pixel black if it is completely within the black area, or white if it is complete white, or an intermediate shade of gray determined by the proportions of the pixel which overlap the black and white areas. (18 Apr 1995) antichain A subset S of a {partially ordered set} P is an antichain if, for all x, y in S, x <= y => x = y I.e. no two different elements are related. ("<=" is written in {LaTeX} as {\subseteq}). (03 Feb 1995) antisymmetric A {relation} R is antisymmetric if, for all x and y, x R y and y R x => x == y. I.e. no two different elements are mutually related. {Partial order}s and {total order}s are antisymmetric. If R is also {symmetric} (x R y => y R x) then x R y => x == y. I.e. different elements are not related. (18 Apr 1995) anti-virus software Programs to detect and remove computer {virus}es. (14 Mar 1995) ANTLR ANother Tool for Language Recognition. The {parser generator} in the {Purdue Compiler-Construction Tool Set}. (26 Oct 1995) ANU {Australian National University} ANU ML An implementation of {SML} by the {Australian National University} for {Motorola 68020}, {Vax} and {Pyramid}. (26 Nov 1995) anytime algorithm An {algorithm} that returns the best answer possible even if it is not allowed to run to completion, and may improve on the answer if it is allowed to run longer. For example, a program displaying an image downloaded over a slow link could display it top to bottom, but an anytime program would show a low-resolution (fuzzy or grainy) picture immediately, then gradually sharpen it as more details are downloaded. Another example is an {iterative deepening} search. (26 Nov 1995) AOCE {Apple Open Collaboration Environment} AOL {America On-Line} AOS 1. /aws/ (East Coast), /ay-os/ (West Coast) A {PDP-10} instruction that took any memory location and added 1 to it. AOS meant "Add One and do not Skip". Why, you may ask, does the "S" stand for "do not Skip" rather than for "Skip"? Ah, here was a beloved piece of PDP-10 folklore. There were eight such instructions: AOSE added 1 and then skipped the next instruction if the result was Equal to zero; AOSG added 1 and then skipped if the result was Greater than 0; AOSN added 1 and then skipped if the result was Not 0; AOSA added 1 and then skipped Always; and so on. Just plain AOS didn't say when to skip, so it never skipped. For similar reasons, AOJ meant "Add One and do not Jump". Even more bizarre, SKIP meant "do not SKIP"! If you wanted to skip the next instruction, you had to say "SKIPA". Likewise, JUMP meant "do not JUMP"; the unconditional form was JUMPA. However, hackers never did this. By some quirk of the 10's design, the {JRST} (Jump and ReSTore flag with no flag specified) was actually faster and so was invariably used. Such were the perverse mysteries of assembler programming. 2. /A-O-S/ or /A-os/ A {Multics}-derived {operating system} supported at one time by {Data General}. A spoof of the standard AOS system administrator's manual ("How to Load and Generate your AOS System") was created, issued a part number, and circulated as photocopy folklore; it was called "How to Goad and Levitate your CHAOS System". 3. Algebraic Operating System, in reference to those calculators which use infix instead of postfix (reverse Polish) notation. (26 Nov 1995) APA {Application Portability Architecture} APAL Array Processor Assembly Language. The {assembly language} for the {DAP} parallel computer. (28 Nov 1994) APAREL A PArse REquest Language. A {PL/I} extension to provide {BNF} {parsing} routines, for {IBM 360}. ["APAREL: A Parse Request Language", R.W. Balzer et al, CACM 12(11) (Nov 1969)]. (26 Nov 1995) APC {Association for Progressive Communications} APDL {Algorithmic Processor Description Language} apE A graphics package from the Ohio Supercomputer Centre. (29 Nov 1995) API {Application Program Interface} APL {A Programming Language} APL2 An {APL} extension with nested {array}s from {IBM}. ["APL2 Programming: Language Reference", IBM Aug 1984. Order No. SH20-9227-0]. (29 Nov 1995) APLGOL An {APL} variant with {ALGOL}-like control structure, from {Hewlett-Packard}(?). (29 Nov 1995) APLWEB A {Web} to {APL} and {Web} to {TeX} translator by Dr. Christoph von Basum . {(ftp://watserv1.uwaterloo.ca/languages/apl/aplweb/)} (27 Dec 1992) APM {Advanced Power Management} Apollo Computer A company making {workstations}, now a division of {Hewlett-Packard}. (29 Nov 1995) app {application program}. (29 Nov 1995) APPC {Advanced Program-to-Program Communications} AppKit A set of objects used by the {application builder} for the {NEXTSTEP} environment. (13 Mar 1995) APPLE A revision of {APL} for the {Illiac IV}. (28 Apr 1995) Apple Computer, Inc. Manufacturers of the {Macintosh} range of {personal computer}s as well as the earlier {Apple I}, {Apple II} and {Lisa}. Founded on 1 April 1976 by {Steve Jobs} and {Steve Wozniak}. Apples were among the first {microcomputer}s. They originally used the {6502} processor and are still being made (August 1994), now using the {65816}. The {Apple II} line, which includes the {Apple I}, is the longest existing line of microcomputers. Quarterly sales $2150M, profits $138M (Aug 1994). {Home (http://www.apple.com/)}. (16 Jun 1996) Apple II An 8-bit {personal computer} with a {6502} processor, from {Apple Computer}. It was invented by {Steve Wozniak} and was very popular from about 1980 until the first several years of {MS-DOS} {IBM PC}s. (12 Jan 1995) Apple Macintosh {Macintosh} Apple Newton A {Personal Digital Assistant} produced by {Apple Computer}. The Newton provides a clever, {user-friendly} interface and relies solely on pen-based input. Eagerly anticipated, the Newton was supposed to use handwriting recognition software to "learn" the users handwriting and provide reliable {character recognition}. An example of the Newton's handwriting recognition is {Tablespoons (http://www-personal.engin.umich.edu/~jxm/tablespoons.html)}. (22 Nov 1994) Apple Open Collaboration Environment (AOCE) Software for {electronic mail} and directory services. (08 Mar 1995) AppleScript An {object-oriented} {shell} language for the {Macintosh}, approximately a superset of {HyperTalk}. (10 Dec 1995) Applesoft BASIC A version of {BASIC} for {Apple} computers. (10 Dec 1995) applet A program written in {Java} which can be distributed as an attachment in a {World-Wide Web} document and executed either by Sun's {HotJava} {browser} or {Netscape Navigator} version 2.0. Compare {Plug-in}. (25 May 1996) Appletalk A proprietary {local area network} {protocol} developed by {Apple Computer, Inc.} for communication between Apple products (e.g. {Macintosh}) and other computers. This protocol is independent of the {network layer} on which it runs. Current implementations exist for {Localtalk}, a 235 kilobyte per second local area network and {Ethertalk}, a 10 megabyte per second local area network. (08 Mar 1995) AppleTalk Data Stream Protocol (ADSP) A {protocol} which provides a simple transport method for data accross a network. (18 Jun 1996) application 1. {application program}. 2. {function application}. Application Binary Interface (ABI) The interface by which an {application program} gains access to {operating system} and other services. It should be possible to run the same compiled {binary} applications on any system with the right ABI. Examples are {88open}'s {Binary Compatibility Standard}, the {PowerOpen Environment} and {Windows sockets}. (08 Nov 1994) Application Control Architecture (ACA) {DEC}'s implementation of {ORB}. (08 Nov 1994) Application environment specification (AES) A set of specifications from {OSF} for programming and {user interface}s, aimed at providing a consistent application environment on different hardware. It includes "O/S" for the {operating system} (user commands and program interfaces), "U/E" for the User Environment ({Motif}), and "N/S" for Network services. (07 Dec 1994) Application Integration Architecture (AIA) {DEC}'s "open standards" specifications. application layer The top layer of the {ISO} {seven layer model}. This layer handles issues like {network transparency}, resource allocation and problem partitioning. The application layer is concerned with the user's view of the network (e.g. formatting {electronic mail} messages). The {presentation layer} provides the application layer with a familiar local representation of data independent of the format used on the network. (28 Nov 1994) Application Portability Architecture (APA) {DEC}'s plan for portable applications software. (28 Nov 1994) application program (Or "application", "app") A complete, self-contained program that performs a specific function directly for the user. This is in contrast to system software such as the {operating system} {kernel}, {server} processes and libraries which exists to support application programs. Editors, {spreadsheet}s, and text formatters are common examples of applications. Network applications include clients such as those for {FTP}, {electronic mail} and {telnet}. The term is used fairly loosely, for instance, some might say that a client and server together form a distributed application, others might argue that editors and compilers were not applications but tools for building applications. One distinction between an application program and the operating system is that applications always run in "user mode" (or "non-privileged mode"), while operating systems and related utilities may run in "supervisor mode" (or "privileged mode"). The term may also be used to distinguish programs which communicate via a {graphical user interface} from those which are executed from the {command line}. (28 Nov 1994) Application Program Interface (API, or "application programming interface") The interface (calling conventions) by which an {application program} accesses {operating system} and other services. An API is defined at {source code} level and provides a level of {abstraction} between the application and the {kernel} (or other privileged utilities) to ensure the {portability} of the code. An API can also provide an interface between a {high level language} and lower level utilities and services which were written without consideration for the {calling convention}s supported by compiled languages. In this case, the API's main task may be the translation of parameter lists from one format to another and the interpretation of {call-by-value} and {call-by-reference} arguments in one or both directions. (15 Feb 1995) Application Programming Interface {Application Program Interface} Application Protocol Data Unit (APDU) A {packet} of data exchanged between two {application} programs across a {network}. This is the highest level view of communication in the {OSI} {seven layer model} and a single packet exchanged at this level may actually be transmitted as several packets at a lower layer as well as having extra information (headers) added for {routing} etc. (19 Dec 1995) Application Service Element (ASE) Software in the {presentation layer} of the {OSI} {seven layer model} which provides an abstracted interface layer to service {application protocol data units} (APDU). Because {application}s and {network}s vary, ASEs are split into common services and specific services. Examples of services provided by the {common application service element} (CASE) include remote operations (ROSE) and {database} concurrency control and recovery (CCR). The {specific application service element} (SASE) provides more specialised services. (19 Dec 1995) application software {application programs} Application-Specific Integrated Circuit (ASIC) An {integrated circuit} designed to perform a particular function by defining the interconnection of a set of basic circuit building blocks drawn from a library provided by the circuit manufacturer. (15 Feb 1995) Applications Programming Interface {Application Programming Interface} Application Visualisation System (AVS) A portable, modular, {Unix}-based graphics package supported by a consortium of vendors including {Convex}, {DEC}, {IBM}, {HP}, {SET Technologies}, {Stardent} and {WaveTracer}. (28 Nov 1994) applicative language A {functional language}. Sometimes used loosely for any {declarative language} though {logic programming} languages are declarative but not applicative. (24 Dec 1995) applicative order reduction An {evaluation strategy} under which an expression is evaluated by repeatedly evaluating its leftmost innermost {redex}. This means that a function's arguments are evaluated before the function is applied. This method will not terminate if a function is given a non-terminating expression as an argument even if the function is not {strict} in that argument. Also known as {call-by-value} since the values of arguments are passed rather than their names. This is the evaluation strategy used by {ML}, {Scheme}, {Hope} and most {procedural language}s such as {C} and {Pascal}. See also {normal order reduction}, {parallel reduction}. (25 Jan 1995) APPLOG A language which unifies {logic programming} and {functional programming}. ["The APPLOG Language", S. Cohen in Logic Programming, deGroot et al eds, P-H 1986, pp.39-276]. (25 Jan 1995) APPN {Advanced Peer-to-Peer Networking} April Fool's Joke (AFJ) Elaborate April Fool's hoaxes are a long-established tradition on {Usenet} and {Internet}; see {kremvax} for an example. In fact, April Fool's Day is the *only* seasonal holiday marked by customary observances on the hacker networks. (25 Jan 1995) A Programming Language (APL) A language designed originally by Ken Iverson at {Harvard University} in 1957-1960 as a notation for the concise expression of mathematical {algorithm}s. It went unnamed (or just called {Iverson's Language}) and unimplemented for many years. Finally a subset, APL\360, was implemented in 1964. APL is an {interactive} {array-oriented} language with many innovative features. It was originally written using a non-standard {character set} but now can use {ISO8485}. It is {dynamically typed} with {dynamic scope}. APL introduced several functional forms but is not {purely functional}. {Dijkstra} got the size of it when he said that APL was a language designed to perfection - in the wrong direction. {IBM} once adopted APL - can one be ruder? Versions: APL\360, APL SV, VS APL, Sharp APL, Sharp APL/PC, APL*PLUS, APL*PLUS/PC, APL*PLUS/PC II, MCM APL, Honeyapple, and DEC APL. See also {Kamin's interpreters}. {APLWEB} translates {WEB} to {APL}. ["A Programming Language", Kenneth E. Iverson, Wiley, 1962]. (29 Nov 1995) APSE {Ada Programming Support Environment} APT 1. {Automatically Programmed Tools}. 2. {Audio Processing Technology}. (15 Jan 1996) APX III An early system on the {Datatron 200} series. [Listed in CACM 2(5):16 (May 1959)]. (04 May 1995) AQL A picture {query language}, extension of {APL}. ["AQL: A Relational Database Management System and Its Geographical Applications", F. Antonacci et al, in Database Techniques for Pictorial Applications, A. Blaser ed, pp. 569-599]. (04 May 1995) arbitrary precision calculator An arbitrary precision {C}-like calculator. {Interpreter} version 1.26.4 by David I. Bell . Ported to {Linux}. {(ftp://ftp.uu.net/pub/calc)} (15 Jun 1993) ARC (Previously ARCS) {Advanced RISC Computing Specification}. (28 Dec 1995) Arcade A {BBS} for the {Acorn} {Archimedes}. Also has links with {Demon Internet}. Telephone: +44 (181) 654 2212 (24hrs, most speeds). (08 Nov 1994) ArchBSD 4.4 {BSD-Lite} for the {Acorn} {Archimedes}. (08 Nov 1994) archie A system to automatically gather, index and serve information on the {Internet}. The initial implementation of archie by {McGill University} School of Computer Science provided an indexed directory of filenames from all {anonymous FTP} archives on the Internet. Later versions provide other collections of information. See also {archive site}, {Gopher}, {Prospero}, {Wide Area Information Servers}. (28 Dec 1995) Archimedes A family of {microcomputer}s produced by {Acorn Computers}, Cambridge, UK. The Archimedes, launched in June 1987, was the first {RISC} based {personal computer} (predating {Apple Computer}'s {Power Mac} by some seven years). It uses the {Advanced RISC Machine} (ARM) processor and includes Acorn's {multitasking} {operating system} and {graphical user interface}, {RISC OS} on {ROM}, along with an interpreter for Acorn's enhanced {BASIC}, {BASIC V}. The Archimedes was designed as the successor to Acorn's sucessful {BBC Microcomputer} series and includes some backward compatibility and a {6502} {emulator}. Several utilities are included free on disk such as a text editor, paint and draw programs. Software emulators are also available for the {IBM PC} as well as add-on {Intel} processor cards. There have been several series of Archimedes: A300, A400, A3000, A5000, A4000 and {RISC PC}. There is a {Usenet} {FAQ} {here (ftp://rtfm.mit.edu/pub/usenet/news.answers/acorn/)} and a list of {archive site}s for the Archimedes {here (http://www.cs.vu.nl/~gerben/acorn/acorn-archives.txt)}. The main archive is {HENSA}, accessible via {(ftp://micros.hensa.ac.uk/)} and {Gopher (gopher://micros.hensa.ac.uk/11/%2bgopher/%2bmicros/%2barch/%2briscos)} and another is in {Stuttgart (ftp://ftp.uni-stuttgart.de/pub/systems/acorn)}. {Acorn also run an FTP server (ftp://ftp.acorn.co.uk/)}. See also {Crisis Software}, {Warm Silence Software}. (01 Nov 1994) architecture Design, the way components fit together. The term is used particularly of processors, both individual and in general. "The {ARM} has a really clean architecture". It may also be used of any complex system, e.g. "software architecture", "network architecture". (02 May 1995) Architecture Neutral Distribution Format (ANDF) An emerging {OSF} {standard} for software distribution. Programs are compiled into ANDF before distribution and executables are produced from it for the local target system. This allows software to be developed and distributed in a single version then installed on a variety of hardware. See also {UNCOL}. Mailing list: . ["Architecture Neutral Distribution Format: A White Paper", Open Software Foundation, Nov 1990]. (20 Oct 1995) archive site (Or "FTP site", "FTP archive") An {Internet} {host} where program source, documents, {e-mail} or {news} messages are stored for public access via {anonymous FTP}, {Gopher}, {World-Wide Web} or other document distribution system. There may be several archive sites for e.g. a {Usenet} {newsgroup} though one may be recognised as the main one. Some well-known archive sites include {Imperial College, UK (ftp://src.doc.ic.ac.uk/)}, {UUNET, USA (ftp://ftp.uu.net/)}. See also {archie}, {GNU archive site}, {mirror}. (16 Jan 1995) ARCnet A {network} developed by {DataPoint}. Originally {proprietary}, by the late 1980s it was no longer proprietary and had about as large a marketshare as {Ethernet} among small businesses. It was almost as fast and was considerably cheaper at the time. (16 Jan 1995) ARCS See {ARC}. Arctic A {real-time} {functional language}, used for music synthesis. ["Arctic: A Functional Language for Real-Time Control", R.B. Dannenberg, Conf Record 1984 ACM Symp on LISP and Functional Prog, ACM]. (16 Jan 1995) arena The area of memory attached to a {Unix} process by the {brk} and {sbrk} {system call}s and used by {malloc} as dynamic storage. So named from a "malloc: corrupt arena" message emitted when some early versions detected an impossible value in the free block list. See {overrun screw}, {aliasing bug}, {memory leak}, {memory smash}, {smash the stack}. (28 Dec 1995) ARES A pictorial {query language}. ["A Query Manipulation System for Image Data Retrieval", T. Ichikawa et al, Proc IEEE Workshop Picture Data Description and Management, Aug 1980, pp.61-67]. (10 Oct 1995) arev {Advanced Revelation}. AREXX {REXX} for the {Amiga}. {ARexxGuide (http://www.halcyon.com/robin/www/arexxguide/main.html)} (06 Feb 1996) arg {argument}. argument ("arg" or parameter) A value or reference passed to a {function}, {procedure}, {subroutine}, command, or program, by the caller. For example, in the function: square(x) = x * x x is the {formal argument} and in the call y = square(3+3) 3+3 is the {actual argument}. This will execute the function square with x having the value 6. There are many different conventions for passing arguments to functions and procedures including {call-by-value}, {call-by-name}, {call-by-need}. These affect whether the value of the argument is computed by the caller or the callee (the function) and whether the callee can modify the value of the argument as seen by the caller (if it is a variable). Arguments to a program are usually given after the command name, separated by spaces, e.g.: cat myfile yourfile hisfile Here "cat" is the command and "myfile", "yourfile", and "hisfile" are the arguments. (24 Jan 1995) Argus A successor to {CLU}, from LCS {MIT}. Argus supports distributed programming through {guardians} (like {monitors}, but can be created dynamically) and {atomic actions} (indivisible activity). It also has {cobegin} and coend. ["Argus Reference Manual", B. Liskov et al., TR-400, MIT/LCS, 1987]. ["Guardians and Actions: Linguistic Support for Robust, Distributed Programs", B. Liskov et al, TOPLAS 5(3):381-404 (1983)]. (28 Dec 1995) Ariel An {array}-oriented language for the {CDC 6400}. ["Ariel Reference Manual", P. Devel, TR 22, CC UC Berkeley, Apr 1968]. ["A New Survey of the Ariel Programming Language", P. Deuel, TR 4, Ariel Consortium, UC Berkeley, June 1972]. [Deuel or Devel?] (29 Dec 1995) ARITH-MATIC An alternate name for {A-3}. Arithmetic and Logic Unit (ALU or "mill") The part of the {central processing unit} which performs operations such as addition, subtraction and multiplication of integers and {bit-wise} {AND}, {OR}, {NOT}, {XOR} and other {Boolean} operations. The CPU's instruction decode logic determines which particular operation the ALU should perform, the source the {operand}s and the destination of the result. The width in {bit}s of the words which the ALU handles is usually the same as that quoted for the processor as a whole whereas its external busses may be narrower. {Floating-point} operations are usually done be a separate "{floating-point unit}". Some processors use the ALU for address calculations (e.g. incrementing the {program counter}), others have separate logic for this. (24 Mar 1995) Arjuna An {object-oriented programming} system developed by a team led by Professor Santosh Shrivastava at the {University of Newcastle}, implemented entirely in {C++}. Arjuna provides a set of tools for the construction of {fault-tolerant} {distributed} applications. It exploits features found in most object-oriented languages (such as {inheritance}) and only requires a limited set of system capabilities commonly found in conventional {operating system}s. Arjuna provides the programmer with {class}es that implement {atomic transaction}s, {object level recovery}, {concurrency} control and {persistence}. The system is portable, modular and flexible; the system software has been available to users via ftp since 1992. {Home (http://arjuna.ncl.ac.uk/)} E-mail: . (06 Mar 1995) ARL {ASSET Reuse Library} ARM 1. {Advanced RISC Machine}. Originally {Acorn} RISC Machine. 2. {Advanced RISC Machines} Ltd. 3. ["The Annotated C++ Reference Manual", Margaret A. Ellis and Bjarne Stroustroup, Addison-Wesley, 1990]. (12 Jan 1995) ARM610 A 32-bit {RISC} {microprocessor} based on the {ARM6} processor core designed by {Advanced RISC Machines} Ltd. The ARM610 is the successor to the {ARM3} processor and is produced by {VLSI Technology Inc}. It consumes 500mW at 33MHz with a 5V supply. (29 Dec 1995) ARM7 A {RISC} {microprocessor} architecture from {Advanced RISC Machines} Ltd. (ARM). Building upon the {ARM6} family, the goal of the ARM7 design was to offer higher levels of raw compute performance at even lower levels of power consumption. The ARM7 architecture is now (Dec 1994) the most powerful low voltage {RISC} processor available on the market. The ARM7 offers several architectural extensions which address specific market needs, encompassing fast multiply and innovative embedded {ICE} support. Software development tools are available. The ARM7 architecture is made up of a core CPU plus a range of system peripherals which can be added to a CPU core to give a complete system on a chip, e.g. 4K or 8K {cache}, {Memory Management Unit}, {Write Buffer}, {coprocessor} interface, {ICEbreaker} embedded {ICE} support and {JTAG} {boundary scan}. The {ARM710} {microprocessor} is built around the ARM7 core. {(http://www.systemv.com/armltd/arm7.html)} (05 Jan 1995) ARM710 A 32-bit {RISC} {microprocessor} based on the {ARM7} processor core designed by {Advanced RISC Machines} Ltd. The A710 is the successor to the {ARM610} processor. It was released in July 1994 by {VLSI Technology Inc}. The ARM710 can run at 40MHz (fastest sample 55MHz) disipating 500mW with a 5V supply or 25MHz with 3.3V supply. It has an 8 kilobyte on-chip {cache}, {memory management unit} and {write buffer}. The ARM700 and ARM710 processors represent a significant improvement over the {ARM610} processors. They have a higher maximum clock speed and a number of architectural improvements such as double the size of internal cache, this means that more of any process can be executed internally without accessing the (relatively) slow external memory. Other improvements are an improved {write buffer} and an enlarged {Translation Lookaside Buffer} in the {MMU}. All of these improvements increase the performance of the system and deliver more real performance than a simple comparison of clock speeds would indicate. The ARM710 has been optimised for integer performance. The FPA11 {floating point} coprocessor has a peak throughput of up to 5 {MFLOPS} and achieves an average throughput in excess of 3 MFLOPS for a range of calculations. (21 Apr 1995) ARM7500 An {ARM7} core with I/O and {VIDC20} all on one {integrated circuit}. (23 Sep 1994) ARM8 A {RISC} {microprocessor} {core} designed by {Advanced RISC Machines} Ltd. with 50000 {transistor}s. The design of the ARM8 is not yet public but it is not {superscalar}. The ARM8 will form the core of the {ARM800} {microprocessor} {integrated circuit}. (03 Mar 1995) ARM800 A {microprocessor} based on the {ARM8} processor core designed by {Advanced RISC Machines} Ltd. Planned features include a 60-100Mhz {clock rate}; 0.35-0.4 micron silicon fabrication; an improvement on the {ARM7}'s 1.4 cycle/instruction; a 16 Kbyte {cache}. Some estimates were 100 MIPS and 120 Kdhrystones at 70Mhz (twice the {ARM700}). Samples of the ARM800 are expected to be available in late 1995. It may run on a voltage below 3.3V. {Digital Semiconductor}'s Hudson fab is 0.35 micron and they have announced a licensing deal for the ARM architecture (see {StrongARM}). (07 Feb 1995) ARM Ltd {Advanced RISC Machines Ltd.} ARMM {Automated Retroactive Minimal Moderation} armor-plated {bulletproof} ARP {Address Resolution Protocol} ARPA {Advanced Research Projects Agency} ARPANET {Advanced Research Projects Agency Network} ARQ {Automatic Repeat Request} array 1. A collection of identically typed data items distinguished by their indices (or "subscripts"). The number of dimensions an array can have depends on the language but is usually unlimited. A single ordinary variable (a "{scalar}") could be considered as a zero-dimensional array. A one-dimensional array is also known as a "{vector}". A reference to an array element is written something like A[i,j,k] where A is the array name and i, j and k are the indices. The {C} language is peculiar in that each index is written in separate brackets, e.g. A[i][j][k]. This expresses the fact that, in C, an N-dimensional array is actually a vector, each of whose elements is an N-1 dimensional array. Elements of an array are usually stored contiguously. Languages differ as to whether the leftmost or rightmost index varies most rapidly, i.e. whether each row is stored contiguously or each column (for a 2D array). Arrays are appropriate for storing data which must be accessed in an unpredictable order, in contrast to lists which are best when accessed sequentially. See also {associative array}. 2. A {processor array}, not to be confused with an {array processor}. (25 Jan 1995) Array Theory A theory developed by Trenchard More Jr. and used as the basis for the {NIAL} language. Papers are available from the IBM Cambridge Scientific Center, Cambridge MA. (25 Jan 1995) ART A {real-time} {functional language}. It timestamps each data value when it was created. ["Applicative Real-Time Programming", M. Broy, PROC IFIP 1983, N-H]. (15 Jan 1996) Artemis microkernel A {microkernel} currently under development by Dave Hudson , scheduled for release under {GPL} in May 1995. It is targetted at {embedded} applications on {Intel 80386}, {Intel 486} and {Pentium} based systems. (29 Mar 1995) Artifex A {CASE} environment from {ARTIS} of Turin for the development of large {event-driven} distributed systems. It has code-generation and rapid prototyping features. (24 Jan 1996) artificial intelligence (AI) The subfield of computer science concerned with the concepts and methods of {symbolic inference} by computer and symbolic {knowledge representation} for use in making inferences. AI can be seen as an attempt to model aspects of human thought on computers. It is also sometimes defined as trying to solve by computer any problem that a human can solve faster. Examples of AI problems are {computer vision} (building a system that can understand images as well as a human) and {natural language processing} (building a system that can understand and speak a human language as well as a human). These may appear to be modular, but all attempts so far (1993) to solve them have foundered on the amount of context information and "intelligence" they seem to require. See also {AI-complete}, {neural network}, {genetic programming}, {fuzzy computing}, {artificial life}. {ACM SIGART (http://sigart.acm.org/)}. {U Cal Davis (http://phobos.cs.ucdavis.edu:8001)}. {CMU Artificial Intelligence Repository (http://www.cs.cmu.edu/Web/Groups/AI/html/repository.html)}. (29 Oct 1995) Artificial Intelligence Lab {MIT AI Lab} Artificial Life (a-life) The study of synthetic systems which behave like natural living systems in some way. Artificial Life complements the traditional biological sciences concerned with the analysis of living organisms by attempting to create lifelike behaviours within computers and other artificial media. Artificial Life can contribute to theoretical biology by modelling forms of life other than those which exist in nature. It has applications in environmental and financial modelling and network communications. There are some interesting implementations of artificial life using strangely shaped blocks. A video, probably by the company Artificial Creatures who build insect-like robots in Cambridge, MA (USA), has several mechanical implementations of artificial life forms. See also {evolutionary computing}, {life}. [Christopher G. Langton (Ed.), "Artificial Life", Proceedings Volume VI, Santa Fe Institute Studies in the Sciences of Complexity. Addison-Wesley, 1989]. {Mark Smucker's Page (http://www.cs.wisc.edu/~smucker/gp-list.html)} {Santa Fe Institute (http://alife.santafe.edu/)} {The Avida Group (http://www.krl.caltech.edu/avida/Avida.html)} (21 Feb 1995) artificial neural network (ANN) A man-made {neural network} as opposed to a biological one (a brain). (28 Nov 1994) Artisoft, Inc. A company, known for the {LANtastic} range of networking products. Originally providers of easy-to-use, proprietary, {peer-to-peer} network hardware and software for small installations, Artisoft now also sells {Ethernet} and {Novell}-compatible hardware and software. {Home (http://www.artisoft.com/)} Telephone: +1 (800) 809 1257. Address: Tucson, Arizona, USA; Phoenix, Arizona, USA. (24 Apr 1995) ARTSPEAK An early simple language for {plotter} graphics. ["The Art of Programming, ARTSPEAK", Henry Mullish, Courant Inst (Nov 1974)]. (21 Feb 1995) AS {Autonomous System} as31 An {8031}/{8051} {assembler} which produces a variety of object output formats. Assembler, {yacc} parser and documentation, version 1 by Ken Stauffer . Theo Deraadt wrote {S-record} output routines. Ported to {Sun 3}, {Sun 4}, {SunOS 4.0}, {Tandy 6000}, {Xenix}. {Washington (ftp://wuarchive.wustl.edu/usenet/comp.sources.misc/volume10/asm.8051.Z)}, {UUNET (ftp://ftp.uu.net/usenet/comp.sources.misc/volume10/asm.8051.Z)}. (26 Jan 1990) AS400 Normally written "{AS/400}". AS/400 An {IBM} {minicomputer} for small business and departmental users. It was still in production in January 1995. Features include a menu-driven interface, {multi-user} support, terminals that are (in the grand {IBM} tradition) incompatible with anything else including the {IBM 3270} series, and an extensive library-based {operating system}. Programming languages include {RPG}, {assembly language}, {C}, {COBOL}, {SQL}, {BASIC}, and {REXX}. Several {CASE} tools are available: {Synon}, {AS/SET}, {Lansa}. Mailing list: (list), (subscription requests). [Release date? Still made?] (21 Feb 1995) ASA {Adaptive Simulated Annealing} asbestos Used as a modifier to anything intended to protect one from {flame}s; also in other highly {flame}-suggestive usages. E.g., {asbestos longjohns}, {asbestos cork award}. (06 Feb 1996) asbestos cork award Once, long ago at {MIT}, there was a {flamer} so consistently obnoxious that another hacker designed, had made, and distributed posters announcing that said flamer had been nominated for the "asbestos cork award". (Any reader in doubt as to the intended application of the cork should consult the etymology under {flame}.) Since then, it is agreed that only a select few have risen to the heights of bombast required to earn this dubious dignity - but there is no agreement on *which* few. (06 Feb 1996) asbestos longjohns Notional garments donned by {Usenet} posters just before emitting a remark they expect will elicit {flamage}. This is the most common of the {asbestos} coinages. Also "asbestos underwear", "asbestos overcoat", etc. ASCII {American Standard Code for Information Interchange} ASCII art The fine art of drawing diagrams using the {ASCII} character set (mainly "|-/\+"). Also known as "character graphics" or "ASCII graphics"; see also {boxology}. Here is a serious example: o----)||(--+--|<----+ +---------o + D O L )||( | | | C U A I )||( +-->|-+ | +-\/\/-+--o - T C N )||( | | | | P E )||( +-->|-+--)---+--)|--+-o U )||( | | | GND T o----)||(--+--|<----+----------+ A power supply consisting of a full wave rectifier circuit feeding a capacitor input filter circuit Figure 1. And here are some very silly examples: |\/\/\/| ____/| ___ |\_/| ___ | | \ o.O| ACK! / \_ |` '| _/ \ | | =(_)= THPHTH! / \/ \/ \ | (o)(o) U / \ C _) (__) \/\/\/\ _____ /\/\/\/ | ,___| (oo) \/ \/ | / \/-------\ U (__) /____\ || | \ /---V `v'- oo ) / \ ||---W|| * * |--| || |`. |_/\ //-o-\\ ____---=======---____ ====___\ /.. ..\ /___==== Klingons rule OK! // ---\__O__/--- \\ \_\ /_/ _____ __...---'-----`---...__ _=============================== ,----------------._/' `---..._______...---' (_______________||_) . . ,--' / /.---' `/ '--------_- - - - - _/ `--------' Figure 2. There is an important subgenre of ASCII art that puns on the standard character names in the fashion of a rebus. +--------------------------------------------------------+ | ^^^^^^^^^^^^ | | ^^^^^^^^^^^ ^^^^^^^^^ | | ^^^^^^^^^^^^^ ^^^^^^^^^^^^^ | | ^^^^^^^ B ^^^^^^^^^ | | ^^^^^^^^^ ^^^ ^^^^^^^^^^^^^^ | +--------------------------------------------------------+ "A Bee in the Carrot Patch" Figure 3. Within humorous ASCII art, there is, for some reason, an entire flourishing subgenre of pictures of silly cows. One is shown in Figure 2; here are three more: (__) (__) (__) (\/) ($$) (**) /-------\/ /-------\/ /-------\/ / | 666 || / |=====|| / | || * ||----|| * ||----|| * ||----|| ~~ ~~ ~~ ~~ ~~ ~~ Satanic cow This cow is a Yuppie Cow in love Figure 4. {(http://gagme.wwa.com/~boba/scarecrow.html)} (06 Feb 1996) ASCIIbetical order /as'kee-be'-t*-kl or'dr/ Used to indicate that data is sorted in {ASCII} collated order rather than alphabetical order. (27 Mar 1995) ASCII character table The following list gives the {octal}, decimal and {hexadecimal} {ASCII} codes for each character along with its printed representation and common name(s). Oct Dec Hex Name 000 0 0x00 NUL 001 1 0x01 SOH 002 2 0x02 STX 003 3 0x03 ETX, Control-C 004 4 0x04 EOT 005 5 0x05 ENQ 006 6 0x06 ACK 007 7 0x07 BEL 010 8 0x08 BS, backspace 011 9 0x09 HT, tab 012 10 0x0a LF, line feed, newline 013 11 0x0b VT 014 12 0x0c FF, form feed, NP 015 13 0x0d CR, carriage return 016 14 0x0e SO 017 15 0x0f SI 020 16 0x10 DLE 021 17 0x11 DC1, XON, Control-Q 022 18 0x12 DC2 023 19 0x13 DC3, XOFF, Control-S 024 20 0x14 DC4 025 21 0x15 NAK 026 22 0x16 SYN 027 23 0x17 ETB 030 24 0x18 CAN 031 25 0x19 EM 032 26 0x1a SUB 033 27 0x1b ESC, escape 034 28 0x1c FS 035 29 0x1d GS 036 30 0x1e RS 037 31 0x1f US 040 32 0x20 space 041 33 0x21 !, exclamation mark 042 34 0x22 ", double quote 043 35 0x23 #, hash 044 36 0x24 $, dollar 045 37 0x25 %, percent 046 38 0x26 &, ampersand 047 39 0x27 ', quote 050 40 0x28 (, open parenthesis 051 41 0x29 ), close parenthesis 052 42 0x2a *, asterix 053 43 0x2b +, plus 054 44 0x2c ,, comma 055 45 0x2d -, minus 056 46 0x2e ., full stop 057 47 0x2f /, oblique stroke 060 48 0x30 0 061 49 0x31 1 062 50 0x32 2 063 51 0x33 3 064 52 0x34 4 065 53 0x35 5 066 54 0x36 6 067 55 0x37 7 070 56 0x38 8 071 57 0x39 9 072 58 0x3a :, colon 073 59 0x3b ;, semicolon 074 60 0x3c <, less than 075 61 0x3d =, equals 076 62 0x3e >, greater than 077 63 0x3f ?, question mark 0100 64 0x40 @, commercial at 0101 65 0x41 A 0102 66 0x42 B 0103 67 0x43 C 0104 68 0x44 D 0105 69 0x45 E 0106 70 0x46 F 0107 71 0x47 G 0110 72 0x48 H 0111 73 0x49 I 0112 74 0x4a J 0113 75 0x4b K 0114 76 0x4c L 0115 77 0x4d M 0116 78 0x4e N 0117 79 0x4f O 0120 80 0x50 P 0121 81 0x51 Q 0122 82 0x52 R 0123 83 0x53 S 0124 84 0x54 T 0125 85 0x55 U 0126 86 0x56 V 0127 87 0x57 W 0130 88 0x58 X 0131 89 0x59 Y 0132 90 0x5a Z 0133 91 0x5b [, open square baracket 0134 92 0x5c \, backslash 0135 93 0x5d ], close square bracket 0136 94 0x5e ^, caret 0137 95 0x5f _, underscore 0140 96 0x60 `, backquote 0141 97 0x61 a 0142 98 0x62 b 0143 99 0x63 c 0144 100 0x64 d 0145 101 0x65 e 0146 102 0x66 f 0147 103 0x67 g 0150 104 0x68 h 0151 105 0x69 i 0152 106 0x6a j 0153 107 0x6b k 0154 108 0x6c l 0155 109 0x6d m 0156 110 0x6e n 0157 111 0x6f o 0160 112 0x70 p 0161 113 0x71 q 0162 114 0x72 r 0163 115 0x73 s 0164 116 0x74 t 0165 117 0x75 u 0166 118 0x76 v 0167 119 0x77 w 0170 120 0x78 x 0171 121 0x79 y 0172 122 0x7a z 0173 123 0x7b {, open curly bracket 0174 124 0x7c |, vertical bar 0175 125 0x7d }, close curly bracket 0176 126 0x7e ~, tilde 0177 127 0x7f delete See {NUL}, {SOH}, {STX}, {ETX}, {ETX}, {EOT}, {ENQ}, {ACK}, {BEL}, {BS}, {HT}, {line feed}, {VT}, {FF}, {CR}, {SO}, {SI}, {DLE}, {XON}, {DC1}, {DC2}, {DC3}, {DC4}, {NAK}, {SYN}, {ETB}, {CAN}, {EM}, {SUB}, {ESC}, {FS}, {GS}, {RS}, {US}, {space}, {exclamation mark}, {double quote}, {hash}, {dollar}, {percent}, {ampersand}, {quote}, {open parenthesis}, {close parenthesis}, {asterix}, {plus}, {comma}, {minus}, {full stop}, {oblique stroke}, {colon}, {semicolon}, {less than}, {equals}, {greater than}, {question mark}, {commercial at}, {open square baracket}, {backslash}, {close square bracket}, {caret}, {underscore}, {backquote}, {open curly bracket}, {vertical bar}, {close curly bracket}, {tilde}, {delete}. (24 Jun 1996) ASDIMPL {ASDO IMPlementation Language} ASDL {Abstract-Type and Scheme-Definition Language} ASDO IMPlementation Language (ASDIMPL) A {C}-like language, run on {Burroughs}' {mainframes} in the early 1980s, and {cross-compile}d to {x86}-based {embedded processor}s. (06 Feb 1996) ASE 1. {Advanced Software Environment}. 2. {Application Service Element}. (19 Feb 1996) A* search A graph search algorithm. A* is guaranteed to find a minimal solution path before any other solution paths, if a solution exists, in other words, it is an "admissible" search algorithm. Each path is assigned a value based on the cost of the path (e.g. its length) and an (under)estimate of the cost of completing the path, i.e. the cost of a path from the end of the current path to a solution. (31 Mar 1995) ASF {Algebraic Specification Language} ash A {Bourne Shell} clone by Kenneth Almquist. It works pretty well. For running scripts, it is sometimes better and sometimes worse than {Bash}. Ash runs under {386BSD}, {NetBSD} or {FreeBSD} and {Linux}. {FTP Linux version (ftp://ftp.win.tue.nl/pub/linux/ports/ash-linux-0.1.tar.gz)}. (20 Jul 1995) Ashmedai A {symbolic mathematics} package by Michael Levine that influenced {SMP} and {FORM}. There are versions for the {Univac 1108} and {VAX}/{VMS}. (21 Mar 1995) Ashton-Tate Corporation The original developer and vendor of the {dBASE} {relational database} and application development tool. In the early 1990s it was taken over by {Borland} corporation. [Dates? Address?] (09 Mar 1996) ASIC {Application-Specific Integrated Circuit} A Simulation Process-Oriented Language (ASPOL) An {ALGOL}-like language for computer {simulation}. ["Process and Event Control in ASPOL", M.H. MacDougall, Proc Symp on Simulation of Computer Systems, NBS (Aug 1975)]. (25 Mar 1996) ASIS 1. {Application Software Installation Server}. At {CERN}. 2. {Ada Semantic Interface Specification}. ASK {Amplitude Shift Keying} ASL {Algebraic Specification Language} ASL+ An {algebraic specification language} by David Aspinall of the {University of Edinburgh}. ASL+ has rules for proving the satisfaction of specifications. It can also be viewed as a {type theory} with {subtyping}, featuring {contravariant refinement} for Pi-abstracted specifications and a notion of {stratified equality} for {higher-order} objects. (14 Sep 1994) ASM The {filename extension} for {assembly language} source files on {CP/M} computers and others. (21 Apr 1995) ASME {American Society of Mechanical Engineers} ASN {Autonomous System Number} ASN.1 {Abstract Syntax Notation 1} ASP A {query language}(?). [Sammet 1969, p.702]. (25 Mar 1996) ASPECT An {IPSE} developed by an {Alvey} project, using {Z} to specify the {object-management system} and tool interface. (25 Mar 1996) ASpecT Algebraic specification of {abstract data types}. A {strict} {functional language} that compiles to {C}. Versions are available for {Sun}, {Ultrix}, {NeXT}, {Macintosh}, {OS/2} 2.0, {Linux}, {RS/6000}, {Atari}, {Amiga}. {(ftp://wowbagger.uni-bremen.de/pub/programming/languages)} (25 Mar 1996) aspect ratio The ratio of width to height of a {pixel} or a display screen. Square pixels (1:1) are considered preferable but displays are usually about 5:4. (30 Nov 1994) ASPEN A {toy language} for teaching {compiler} construction. ["ASPEN Language Specifications", T.R. Wilcox, SIGPLAN Notices 12(11):70-87 (Nov 1977)]. (30 Nov 1994) ASPIK A multiple-style specification language. ["Algebraic Specifications in an Integrated Software Development and Verification System", A. Voss, Diss, U Kaiserslautern, 1985]. (30 Nov 1994) Aspirin A {freeware} language from {MITRE Corp} for the description of {neural network}s. A compiler, bpmake, is included. Aspirin is designed for use with the {MIGRAINES} interface. {Version: 6.0 (ftp://ftp.cognet.ucla.edu/alexis/)} (08 Mar 1995) ASPLE A {toy language}. ["A Sampler of Formal Definitions", M. Marcotty et al, Computing Surveys 8(2):191-276 (Feb 1976)]. (08 Feb 1995) ASPOL {A Simulation Process-Oriented Language} ASQC {American Society for Quality Control} ASR {Automatic Send Receive} assembler A program which converts {assembly language} into {machine code}. (25 Mar 1996) ASSEMBLY An early system on the {IBM 702}. [Listed in CACM 2(5):16 May 1959]. (27 Jun 1996) assembly code {assembly language} assembly language (Or "assembly code") A symbolic representation of the {machine language} of a specific computer. Assembly language is converted to {machine code} by an {assembler}. Programming in assembly language is slow and error-prone but is the only way to squeeze every last bit of performance out of the hardware. See also {second generation language}. (23 Jan 1995)?? Assembly Language Compiler (ALC) An alternative name for {IBM 360} {assembly language}. Compare {BAL}. (04 Jan 1995) ASSET Asset Source for Software Engineering Technology. A programme to promote software {reuse} by the US {DoD}. See also {ASSET Reuse Library}. assigned numbers The {RFC} {STD 2} documenting the currently assigned values from several series of numbers used in network protocol implementations. This RFC is updated periodically and, in any case, current information can be obtained from the {Internet Assigned Numbers Authority} (IANA). If you are developing a protocol or application that will require the use of a link, socket, port, protocol, etc., you should contact the IANA to receive a number assignment. assignment Storing the value of an expression in a variable. Assignment is not allowed in {functional language}s, where an identifier always has the same value. See also {referential transparency}, {single assignment}, {zero assignment}. Association Control Service Element (ACSE) The {OSI} method for establishing a call between two applications. ACSE checks the identities and contexts of the application entities, and could apply an authentication security check. (18 Jun 1996) Association for Computational Linguistics (ACL) The international scientific and professional society for people working on problems involving {natural language} and computation. Membership includes the ACL quarterly journal, "Computational Linguistics", reduced registration at most ACL-sponsored conferences, discounts on ACL-sponsored publications, and participation in ACL Special Interest Groups. The ACL is in its 31st year; there are more than 2,000 members worldwide. E-mail: . (ACL) {Home (http://www.cs.columbia.edu/~acl/)}. (17 Jan 1995) Association for Computing Machinery (ACM) Founded in 1947, the Association for Computing Machinery is the largest and oldest international scientific and educational computer society in the industry today. Organised only a year after the unveiling of {ENIAC}, the first general purpose electronic computer, ACM was established by mathematicians and electrical engineers to advance the science and application of information technology. John Mauchly, co-inventor of the ENIAC, was one of ACM's founders. Since its inception ACM has provided its members and the world of computer science a forum for the sharing of knowledge on developments and achievements necessary to the fruitful interchange of ideas. ACM's vitality stems from its 90,000 members. These educators, researchers, practitioners, managers, and engineers, all with significant interest in Information Technology, drive the Association's major programs and services - publications, special interest groups, chapters, conferences, awards, and special activities. The ACM Press has developed a comprehensive array of publications. These include its journals, its book series, conference proceedings, CD/ROM, Hypertext and Video products, and specialized publications such as curricula recommendations and self-assessment procedures. See also {Communications of the ACM}. {Home (http://info.acm.org/)} Association for Progressive Communications (APC) A world-wide organisation of like-minded computer networks providing a global communications network dedicated to the free and balanced flow of information. APC's partner organisations, including The Institute for Global Communications (San Francisco), Alternex (Brazil), Nicarao (Nicaragua) and GlasNet (Russia), serve people working toward goals that include the prevention of warfare, elimination of militarism and poverty, protection of the environment, human rights, social and economic justice, participatory democracy, nonviolent conflict resolution, and the promotion of sustainable development. {(ftp://igc.apc.org/)} E-mail: . (29 Mar 1995) Association for SIMULA Users See {SIMULA}. Address: Royal Institute of Technology, S-100 44 Stockholm, Sweden. [Details?] (29 Mar 1995) Association Française des Utilisateurs d'Unix (et des systèmes ouverts, AFUU) French Association of {Unix} Users. {Home (http://www.afuu.fr/)}. (07 Jun 1996) Association of American Publishers (AAP) A body engaged in standardisation efforts in document preparation. Association of C and C++ Users (ACCU) The Association of C and C++ Users is a community of people with an interest in the {C} family of programming languages: {K&R C}, {ANSI C} and {C++}. The community includes professional programmers, the suppliers of compilers, and those who are just interested in the languages. ACCU members are using C and C++ on a wide range of platforms - {Unix}, {MS-DOS}, {OS/2}, {CP/M} - home computers, {IBM PC}s, {workstation}s and {super-computer}s. Although the organisation is based in the UK, the membership is worldwide. There are members in the US, mainland Europe, Russia, the Middle East and Australia. E-mail: , , (Academic Liaison Officer). Address: The Membership Secretary, 64 Southfield Road, Oxford OX4 1PA , United Kingdom. (03 Mar 1995) Association of Lisp Users {Home (http://www.cs.rochester.edu/u/miller/alu.html)} [Summary?] (16 Apr 1995) associative array An {array} where the indices are not just integers but may be arbitrary strings. {awk} and its descendants (e.g. {perl}) have associative arrays which are implemented using {hash table}s. (16 Feb 1995) associative memory {content addressable memory} ASTAP Advanced STatistical Analysis Program. Analysing electronic circuits and other networks. ["Advanced Statistical Analysis Program (ASTAP) Program Reference Manual", SH-20-1118, IBM, 1973]. asterisk * Common: star; {INTERCAL}: {splat}; {ITU-T}: asterisk. Rare: wildcard; gear; dingle; mult; spider; aster; times; twinkle; glob (see {glob}); {Nathan Hale}. (06 Mar 1995) Astral Based on {Pascal}, never implemented. ["ASTRAL: A Structured and Unified Approach to Database Design and Manipulation", T. Amble et al, in Proc of the Database Architecture Conf, Venice, June 1979]. AST Research Computer manufacturer. Quarterly sales $409M, profits $14M (Aug 1994). asymmetrical modulation A scheme to maximise use of a communications line by giving a larger share of the {bandwidth} to the {modem} which is transmitting the most information. [Better explanation?] (04 Apr 1995) Asymmetric Digital Subscriber Loop (ADSL) A digital telecommunications {protocol} that tranmsits 6 megabits per second over standard phone lines. [Encoding?] (16 Mar 1995) asynchronous Not synchronised by a shared signal such as {clock} or {semaphore}, proceeding independently. Opposite: {synchronous}. 1. A {process} in a {multitasking} system whose execution can proceed independently, "in the {background}". Other processes may be started before the asynchronous process has finished. 2. A communications system in which data transmission may start at any time and is indicated by a {start bit}, e.g. {RS-232}. A data {byte} (or other element defined by the {protocol}) ends with a {stop bit}. A continuous marking condition (identical to stop bits but not quantized in time), is then maintained until data resumes. (08 Dec 1995) asynchronous logic A {data-driven} circuit design technique where, instead of the components sharing a common clock and exchanging data on clock edges, data is passed on as soon as it is available. This removes the need to distribute a common clock signal throughout the circuit with acceptable {clock skew}. It also helps to reduce power dissipation in {CMOS} circuits because gates only switch when they are doing useful work rather than on every clock edge. There are many kinds of asynchronous logic. Data signals may use either "dual rail encoding" or "data bundling". Each dual rail encoded {Boolean} is implemented as two wires. This allows the value and the timing information to be communicated for each data bit. Bundled data has one wire for each data bit and another for timing. Level sensitive circuits typically represent a logic one by a high voltage and a logic zero by a low voltage whereas transition signalling uses a change in the signal level to convey information. A speed independent design is tolerant to variations in gate speeds but not to propagation delays in wires; a delay insensitive circuit is tolerant to variations in wire delays as well. The purest form of circuit is delay-insensitive and uses dual-rail encoding with transition signalling. A transition on one wire indicates the arrival of a zero, a transition on the other the arrival of a one. The levels on the wires are of no significance. Such an approach enables the design of fully delay-insensitive circuits and automatic layout as the delays introduced by the layout compiler can't affect the functionality (only the performance). Level sensitive designs can use simpler, stateless logic gates but require a "return to zero" phase in each transition. {(http://www.cs.man.ac.uk/amulet/async/)} (18 Jan 1995) Asynchronous Transfer Mode (ATM, or "fast packet") A method for the dynamic allocation of {bandwidth} using a fixed-size {packet} (called a cell). {ATM Forum (http://www.atmforum.com/)} {ATM Forum acronyms (http://www.atmforum.com/atmforum/acronym_index.html)}. {Indiana acronyms (http://cell-relay.indiana.edu/cell-relay/FAQ/ATM-Acronyms.html)}. (01 Apr 1996) asyncronous Misspelling of "{asynchronous}". AT {IBM PC AT} at {commercial at} AT-3 Original name of {MATH-MATIC}. [Sammet 1969, p.135]. ATA {Advanced Technology Attachment} ATAPI The {API} used on the {IBM PC AT} for accessing {CD-ROM}s. (06 Aug 1995) Atari A range of 16 and 32 bit {microcomputer}s. Notable for having a built-in {MIDI} interface. At present (Feb 1994) it includes the Atari 520ST, 1040ST, Mega ST, STe, STacy, Mega STe, TT, and Falcon. There are also emulators for the Apple {Macintosh} and IBM PC/XT/AT available. {Usenet} newsgroups: {news:comp.binaries.atari.st}, {news:comp.sys.atari.st.tech}, {news:comp.sources.atari.st}. {Michigan U (ftp://atari.archive.umich.edu)} [141.211.164.8], {UK (ftp://micros.hensa.ac.uk/)}, {Germany (ftp://ftp.Germany.EU.net)} [192.76.144.75], {Netherlands (ftp://ftp.cs.ruu.nl/)} [131.211.80.17], {UK (ftp://src.doc.ic.ac.uk/computing/systems/atari/umich)}. AtFS Attributed File System: the basis of the Shape_VC toolkit. Cooperative work within projects is supported by a status model controlling visibility of version objects, locking, and "long transactions" for synchronizing concurrent updates. The concept of object attributes provides a basis for storing management information with versions and passing this information between individual tools. This mechanism is useful for building integrated environments from a set of unrelated tools. Athena Project Athena: a distributed system project for support of educational and research computing at MIT. Much of the software developed is now in wider use, especially the X Window System Atherton Atherton Technology developed the Software BackPlane CASE framework. Their Atherton Tool Integration Services were the basis for the ATIS standard. ATIS A Tools Integration Standard ATK The Andrew Toolkit ATLAS Abbreviated Test Language for Avionics Systems. MIL-spec language for automatic testing of avionics equipment. Replaced/upgraded Gaelic and several other test languages. "IEEE Standard ATLAS Test Language", IEEE Std 416-1976. Atlas Autocode Autocode for the {Ferranti} {Atlas}, which may have been the first commercial computer with {hardware-paged} {virtual memory}. Whereas other {autocode}s were basically symbolic {assembly language}s, Atlas Autocode was high-level and {block-structured}, resembling a cross between {FORTRAN} and {ALGOL 60}. It had {call-by value}, loops, declarations, complex numbers, pointers, {heap} and {stack} storage generators, {dynamic array}s and extensible {syntax}. ATM 1. {Asynchronous Transfer Mode}. 2. Automatic Teller Machine. A cash dispenser. 3. At the moment. 4. {Adobe Type Manager}. (04 Dec 1995) ATOLL Acceptance, Test Or Launch Language. Language used for automating the checkout and launch of Saturn rockets. ["SLCC ATOLL User's Manual", IBM 70-F11-0001, Huntsville AL Dec 1970]. atomic [Greek "atomos", indivisible] Indivisible; cannot be split up. For example, an instruction may be said to do several things "atomically", i.e. all the things are done immediately, and there is no chance of the instruction being half-completed or of another being interspersed. Used especially to convey that an operation cannot be interrupted. An atomic data type has no internal structure visible to the program. It can be represented by a flat domain (all elements are equally defined). Machine integers and {Boolean}s are two examples. An atomic {database} transaction is one which is guaranteed to complete successfully or not at all. If an error prevents a partially-performed transaction from proceeding to completion, it must be "backed out'" to prevent the database being left in an inconsistent state. A Tools Integration Standard (ATIS) An {object-oriented} interface to a set of services that allows the saving, accessing and managing of information in a common repository. Developed by {Atherton Technology} and {DEC}, based on an extended version of the {Software BackPlane}, now proposed as an industry standard. (25 Oct 1994) ATS {Attribute Translation System} at sign {commercial at} AT&T American Telephone and Telegraph Inc. One of the largest US telecommunications providers. Also noted for being the birthplace of the {Unix} {operating system} and the {C} and {C++} programming languages. AT&T was incorporated in 1885, but traces its lineage to Alexander Graham Bell and his invention of the telephone in 1876. As parent company of the former {Bell System}, AT&T's primary mission was to provide telephone service to virtually everyone in the United States. In its first 50 years, AT&T established subsidiaries and allied companies in more than a dozen other countries. It sold these interests in 1925 and focused on achieving its mission in the United States. It did, however, continue to provide international long distance service. The Bell System was dissolved at the end of 1983 with AT&T's divestiture of the Bell telephone companies. Today, AT&T operates worldwide in competitive, high-technology markets, with only its long distance services remaining under government regulation. With 2.4 million registered shareowners, AT&T's is the most widely held stock in America. See also {3DO}, {Advanced RISC Machine}, {Berkeley System Distribution}, {Bell Laboratories}, {Concurrent C}, {Death Star}, {dinosaurs mating}, {InterNIC}, {System V}, {Nawk}, {Open Look}, {rc}, {S}, {Standard ML of New Jersey}, {Unix International}, {Unix conspiracy}, {USG Unix}, {Unix System Laboratories}. {Home (http://www.att.com/)}. {Research (http://www.research.att.com/)}. [Would someone write a story around those "see also"s?] (07 Dec 1994) attoparsec About an inch. "atto-" is the standard SI prefix for multiplication by 10^(-18). A parsec (parallax-second) is 3.26 light-years; an attoparsec is thus 3.26 * 10^(-18) light years, or about 3.1 cm (thus, 1 attoparsec/{microfortnight} equals about 1 inch/sec). This unit is reported to be in use (though probably not very seriously) among hackers in the UK. See {micro-}. Attribute Translation System (ATS) A {BNF}-based {parser generator} from the {University of Saskatchewan}(?). It generates table-driven {LL1} {parser}s with full {insert-only error recovery}. It also has full left-attribute semantic handling, which is a dream compared to using {YACC}'s parser actions. E-mail: Dave Bocking ? (29 Nov 1988) au 1. The two character {country code} for Australia used in {Internet} {hostname}s. 2. A {filename extension} for audio data. (15 Feb 1995) aubergine A secret term used to refer to computers in the presence of computerphobic third parties. (24 Jan 1995) audio Sound. Computers (and audio compact discs and digital audio tape) handle sound by storing a sequence of discrete samples. The continuous sound waveform from the original source is sampled tens of thousands of times a second. Each sample represents the intensity of the sound pressure wave at that instant. Apart from the sampling frequency, the other parameter is the digital encoding of each sample including the number of bits used. The encoding may be linear, logarithmic or {mu-law}. Sound is one component of {multimedia}. See also {Audio IFF}. {Usenet} newsgroups: alt.binaries.sounds.*. A {FAQ} on audio file formats is available. {Part 1 (ftp://ftp.cwi.nl/pub/audio/AudioFormats.part1)}, {Part 2 (ftp://ftp.cwi.nl/pub/audio/AudioFormats.part2)}. audiographics {Audiographic Teleconferencing} audiographic teleconferencing (Or "electronic whiteboarding", "screen sharing") A form of {teleconferencing} in {real time} using both an {audio} and a data connection. The computer screen is shared by more than one site, and used as an electronic blackboard, overhead projector or still video projector. Some systems allow for sharing software also. (06 Oct 1995) Audio IFF (AIFF) A format developed by {Apple Computer} Inc. for storing high-quality sampled {audio} and musical instrument information. It is also used by {SGI} and several professional audio packages. (10 Oct 1994) Audio Processing Technology (APT) A company that produces {codecs} based on {predictive analysis} rather than {frequency coding}. (15 Jan 1996) AUI {Adaptable User Interface} from {Oracle}. A'UM A {stream}-based, {concurrent}, {logic}, {object-oriented} language by K. Yoshida and T. Chikayama , built on top of {KL1}. ["A'UM - A Stream-based Concurrent Logic Object-Oriented Language", K. Yoshida et al, Proc 3rd Intl Conf Fifth Gen Comp Sys, Springer 1988, pp. 638-649]. AUP {acceptable use policy} Aurora ["The Aurora Or-Parallel Prolog System", E. Lusk et al, Proc 3rd Intl Conf on Fifth Generation Comp Systems, pp. 819-830, ICOT, A-W 1988]. Austin Kyoto Common Lisp (AKCL) A collection of ports, bug fixes, and performance improvements to {KCL} by William Schelter , , University of Texas. Version 1-615 includes ports to {Decstation} 3100, {HP9000}/300, {i386}/{Sys V}, {IBM-PS2}/{AIX}, {IBM-RT}/{AIX}, {SGI}, {Sun-3}/{Sunos} 3 or 4, {Sun-4}, {Sequent Symmetry}, {IBM370}/{AIX}, {VAX}/{BSD VAX}/{Ultrix}, {NeXT}. {(ftp://rascal.ics.utexas.edu/pub/akcl-1-609.tar.Z)} (29 Apr 1992) authentication The verification of the identity of a person or process. In a communication system, authentication verifies that messages really come from their stated source, like the signature on a (paper) letter. authoring Creating a {hypertext} or {hypermedia} document. (07 Nov 1994) autobaud {automatic baud rate detection} autobogotiphobia /aw'toh-boh-got`*-foh'bee-*/ See {bogotify}. AutoCAD A {CAD} {software} package for mechanical engineering marketed by {Autodesk}, Inc. (09 Nov 1994) Autocode 1. The name given to the {assembly language} accepted by {AUTOCODER}. 2. A generic term for symbolic {assembly language}. Versions of Autocode were developed for {Ferranti} {Atlas}, {Titan}, {Mercury} and {Pegasus} and {IBM 702} and {IBM 705}. AUTOCODER Possibly the first primitive {compiler}. It was written by Alick E. Glennie in 1952. It translated symbolic statements into {machine language} for the {Manchester Mark I} computer. Autocoding later came to be a generic term for {assembly language} programming. (07 Nov 1994) Autodesk, Inc. The distributors of the {AutoCAD} {CAD} package. Address: Sausalito, CA, USA. (09 Nov 1994) AUTOEXEC.BAT The {batch file} containing commands, loaded by {MS-DOS} after running {CONFIG.SYS}. AUTOEXEC.BAT contains normal DOS commands and can be used for additional system configuration such as setting paths and variables, configuring network connections and running {application program}s. (18 Mar 1995) AUTOGRAF A system for describing {bar chart}s. ["User's Manual for AUTOGRAF", Cambridge Computer Assoc (Dec 1972)]. AUTOGRP AUTOmated GRouPing system. An interactive statistical analysis system, an extension of {CML}. ["AUTOGRP: An Interactive Computer System for the Analysis of Health Care Data", R.E. Mills et al, Medical Care 14(7) (Jul 1976)]. (07 Nov 1994) Auto Idle A facility provided by some {Intel} {clock doubled} {microprocessor}s where the internal clock can be slowed to the external {clock rate} while the processor is waiting for data from memory, returning to full speed as soon as the data arrives. See also {System Management Mode}. (09 Nov 1994) Autolisp A dialect of {Lisp} used by the {Autocad} {CAD} package from {Autodesk}. (09 Nov 1994) automagically /aw-toh-maj'i-klee/ or /aw-toh-maj'i-k*l-ee/ Automatically, but in a way that, for some reason (typically because it is too complicated, or too ugly, or perhaps even too trivial), the speaker doesn't feel like explaining to you. See {magic}. "The C-INTERCAL compiler generates C, then automagically invokes {cc} to produce an executable." automata {automaton} automata theory {automaton} Automated Engineering Design (AED) (Or "ALGOL Extended for Design") A systems language for the {IBM 7090} and {IBM 360} developed at {MIT} System Laboratory ca. 1965 by a team led by Douglas T. Ross (now at {Softech}). AED is an extension of {ALGOL 60} with {record}s ("plexes"), pointers, and {dynamic allocation}. {DYNAMO II} was written in AED, as was the first {BCPL} {compiler}. Versions: AED-0, AED-1, AED-JR. ["The Automated Engineering Design (AED) Approach to Generalized Computer-Aided Design", D.T. Ross, Proc ACM 22nd Natl Conf, 1967]. [Sammet 1969 and 1978]. (26 Mar 1995) Automated Retroactive Minimal Moderation (ARMM) A {Usenet} robot created by Dick Depew of Munroe Falls, Ohio. ARMM was intended to automatically cancel posts from anonymous-posting sites. Unfortunately, the robot's recogniser for anonymous postings triggered on its own automatically-generated control messages! Transformed by this stroke of programming ineptitude into a monster of Frankensteinian proportions, it broke loose on the night of March 31, 1993 and proceeded to {spam} {news:news.admin.policy} with a recursive explosion of over 200 messages. ARMM's bug produced a recursive {cascade} of messages each of which mechanically added text to the ID and Subject and some other headers of its parent. This produced a flood of messages in which each header took up several screens and each message ID and subject line got longer and longer and longer. Reactions varied from amusement to outrage. The pathological messages crashed at least one mail system, and upset people paying line charges for their {Usenet} feeds. One poster described the ARMM debacle as "instant {Usenet} history" (also establishing the term {despew}), and it has since been widely cited as a cautionary example of the havoc the combination of good intentions and incompetence can wreak on a network. Compare {Great Worm}; {sorcerer's apprentice mode}. See also {software laser}, {network meltdown}. (08 Jan 1996) automated testing Software testing assisted with software tools that require no operator input, analysis, or evaluation. (10 May 1996) AUTOMATH Eindhoven, Netherlands. A very high level language for writing proofs. "The Mathematical Language AUTOMATH, Its Usage and Some of its Extensions", N.G. deBruijn, in Symp on Automatic Demonstration, LNM 125, Springer 1970. Automatically Programmed Tools (APT) A language for numerically controlled machine tools. Versions: APT II (IBM 704, 1958), APT III (IBM 7090, 1961). ["APT Part Programming", McGraw-Hill]. [Sammet 1969, p. 605]. (04 May 1995) automatic baud rate detection (ABR, autobaud) A process by which a receiving device determines the speed, code level, and stop bits of incoming data by examing the first character, ususally a preselected sign-on charater. ABR allows the receiving device to accept data from a variety of transmitting devices operating at different speeds without needing to establish data rates in advance. (18 Jun 1996) Automatic Mathematical TRANslation (AMTRAN) A system developed by NASA Huntsville in 1966 for {IBM 1620}, based on the {Culler-Fried} System. It required a special terminal. ["AMTRAN: An Interactive Computing System", J. Reinfelds, Proc FJCC 37:537- 542, AFIPS (Fall 1970)]. (14 Nov 1995) Automatic Number Identification (ANI) A service that tells the recipient of a telephone call the telephone number of the person making the call. This number can be passed to other computer equipment to automatically retieve associated information about the caller, i.e. account status, billing records, etc. (18 Jun 1996) Automatic Repeat Request (ARQ) A {modem} error control {protocol} in which the receiver asks the transmitter to resend corrupted data. (14 Nov 1995) Automatic Send Receive (ASR) Part of a designation for a hard-copy {terminal}, manufactured by {Teletype Corporation}, which could be commanded remotely to send the contents of its {paper tape} reader. The ASR-33 was the most common {minicomputer} terminal in the early 1970s. (23 Nov 1995) automation Automatic, as opposed to human, operation or control of a process, equipment or a system; or the techniques and equipment used to achieve this. Most often applied to computer (or at least electronic) control of a manufacturing process. See also {design automation}, {office automation}, {manularity}, {Manufacturers Automation Protocol}, {PEARL}, {QBE}. (21 Oct 1994) Automatische Rechenplanfertigung A programming language published in 1952 by Heinz Rutishauser (1918-70). automaton (Plural automata) A machine, {robot}, or formal system designed to follow a precise sequence of instructions. Automata theory, the invention and study of automata, includes the study of the capabilities and limitations of computing processes, the manner in which systems receive input, process it, and produce output, and the relationships between behavioral theories and the operation and use of automated devices. See also {cellular automaton}, {finite state machine}. (23 Apr 1996) Automatrix, Inc. The company which produced {CAM-PC}. Address: Ballston Spa, NY, USA. {Home (http://www.automatrix.com/)} (21 Apr 1995) Autonomous System (AS) A collection of {router}s under a single administrative authority using a common {Interior Gateway Protocol} for routing packets. Autonomous System Number (ASN) Used for {routing} on {Internet}. See {Autonomous System}. Autopass ["Autopass: An Automatic Programming System for Computer-Controlled Mechanical Assembly", L.I. Lieberman et al, IBM J Res Dev 21(4):321-333 (1979)]. autoprojector A self-applicable {partial evaluator}. AUTO-PROMPT Numerical control language from IBM for 3-D milling. [Sammet 1969, p.606]. Autostat ["Autostat: A Language for Statistical Programming", A.S. Douglas et al, Computer J 3:61 (1960)]. autostereogram The original name for a {SIRDS}. Avalon/C++ 1986. Fault-tolerant distributed systems, influenced by {Argus}. A concurrent extension of {C++} with servers and transactions. "Camelot and Avalon: A Distributed Transaction Facility", J.L. Eppinger et al, Morgan Kaufmann 1990. Avalon/Common LISP Prototype only. "Reliable Distributed Computing with Avalon/Common LISP", S.M. Clamen et al, CMU-CS-89-186 and Proc Intl Conf on Computer Languages, Mar 1990. avatar [CMU, Tektronix] {root}, {superuser}. There are quite a few {Unix} computers on which the name of the superuser account is "avatar" rather than "root". This quirk was originated by a {CMU} hacker who disliked the term "superuser", and was propagated through an ex-CMU hacker at {Tektronix}. Avon A {dataflow} language. ["AVON: A Dataflow Language", A. Deb, ICS 87, Second Intl Conf on Supercomputing, v.3, pp.9-19 (ISI 1987)]. (28 Nov 1994) AVS {Application Visualisation System} awk 1. (Named from the authors' initials) An interpreted language included with many versions of {Unix} for massaging text data developed by Alfred Aho, Peter Weinberger, and Brian Kernighan in 1978. It is characterised by {C}-like syntax, declaration-free variables, {associative array}s, and field-oriented text processing. There is a {GNU} version called {gawk} and other varients including {bawk}, {mawk}, {nawk}, {tawk}. {Perl} was inspired in part by awk but is much more powerful. See Unix man page: awk(1). {netlib WWW (http://plan9.att.com/netlib/research/index.html)}. {netlib FTP (ftp://netlib.att.com/netlib/research/)}. ["The AWK Programming Language" A. Aho, B. Kernighan, P. Weinberger, A-W 1988]. 2. An expression which is awkward to manipulate through normal {regexp} facilities (for example, one containing a {newline}). (06 Oct 1995) AWT {Abstract Windowing Toolkit} aXe A {text editor} for the {X Window System}. [Features? FTP?] (06 Apr 1996) AXIOM A commercially available subset of {Scratchpad}, from {IBM}. ["Axiom - The Scientific Computing System", R. Jenks et al, Springer 1992]. (21 Feb 1995) axiom A {well-formed formula} which is taken to be true without proof in the construction of a {theory}. (31 Mar 1995) AXIOM* A {symbolic mathematics} system. {A#} is one component of AXIOM*. Version: 2. (21 Feb 1995) Axiomatic Architecture Description Language ["AADL: A Net-Based Specification Method for Computer Architecture Design", W. Damm et al in Languages for Parallel Architectures, J.W. deBakker ed, Wiley 1989]. (07 Feb 1995) axiomatic semantics A set of assertions about properties of a system and how they are effected by program execution. The axiomatic semantics of a program could include pre- and post-conditions for operations. In particular if you view the program as a state transformer (or collection of state transformers), the axiomatic semantics is a set of invariants on the state which the state transformer satisfies. E.g. for a function with the type: sort_list :: [T] -> [T] we might give the precondition that the argument of the function is a list, and a postcondition that the return value is a list that is sorted. One interesting use of axiomatic semantics is to have a language that has a {finitely computable} sublanguage that is used for specifying pre and post conditions, and then have the compiler prove that the program will satisfy those conditions. See also {operational semantics}, {denotational semantics}. (09 Nov 1995) Axiom of Choice (AC, or "Choice") An {axiom} of {set theory}: If X is a set, and S is the union of all the elements of X, then there exists a function f:X -> S such that for all non-empty x in X, f(x) is an element of x. In other words, we can always choose an element from each set in a set of sets, simultaneously. Function f is a "choice function" for X - for each x in X, it chooses an element of x. Most people's reaction to AC is: "But of course that's true! From each set, just take the element that's biggest, stupidest, closest to the North Pole, or whatever". Indeed, for any {finite} set of sets, we can simply consider each set in turn and pick an arbitrary element in some such way. We can also construct a choice function for most simple {infinite set}s of sets if they are generated in some regular way. However, there are some infinite sets for which the construction or specification of such a choice function would never end because we would have to consider an infinite number of separate cases. For example, if we express the {real number} line R as the union of many "copies" of the {rational number}s, Q, namely Q, Q+a, Q+b, and infinitely (in fact uncountably) many more, where a, b, etc. are {irrational number}s no two of which differ by a rational, and Q+a == {q+a : q in Q} we cannot pick an element of each of these "copies" without AC. An example of the use of AC is the theorem which states that the {countable} union of countable sets is countable. I.e. if X is countable and every element of X is countable (including the possibility that they're finite), then the sumset of X is countable. This requires AC to be true in general. Even if one accepts the axiom, it doesn't tell you how to construct a choice function, only that one exists. Most mathematicians are quite happy to use AC if they need it, but those who are careful will, at least, draw attention to the fact that they have used it. There is something a little odd about Choice, and it has some alarming consequences, so results which actually "need" it are somehow a bit suspicious, e.g. the {Banach-Tarski paradox}. On the other side, consider {Russell's Attic}. AC is not a {theorem} of {Zermelo Fränkel set theory} (ZF). Gödel and Paul Cohen proved that AC is independent of ZF, i.e. if ZF is consistent, then so are ZFC (ZF with AC) and ZF(~C) (ZF with the negation of AC). This means that we cannot use ZF to prove or disprove AC. (12 Apr 1995) Axiom of Comprehension An {axiom schema} of {set theory} which states: if P(x) is a {property} then {x : P} is a set. I.e. all the things with some property form a set. Acceptance of this axiom leads to {Russell's Paradox} which is why {Zermelo set theory} replaces it with a restricted form. (31 Mar 1995) AXLE An early string processing language. Program consists of an assertion table which specifies patterns, and an imperative table which specifies replacements. "AXLE: An Axiomatic Language for String Transformations", K. Cohen et al, CACM 8(11):657-661 (Nov 1965). ayacc A {Yacc}-like {parser generator} from the {Irvine Research Unit in Software} written in {Ada} that produce {Ada} output. Comes with {aflex}. Version 1.2a. {(ftp://liege.ics.uci.edu/pub/irus/aflex-ayacc_1.2a.tar.Z)} Mailing list: . (06 Jan 1993) AYT Are you there? (09 Mar 1996) B 1. A systems language written by {Ken Thompson} in 1970 for {Unix} on the {PDP-11}. B was derived from {BCPL} and was very similar to it except for {syntax}. B was the predecessor of {C}. It was used as the systems language on {Honeywell}'s {GCOS-3}. ["The Programming Language B", S.C. Johnson & B.W. Kernighan, CS TR 8, Bell Labs (Jan 1973)]. (07 Nov 1994) 2. A simple interactive programming language by Lambert Meertens and Steven Pemberton. B was the predecessor of {ABC}. {(ftp://ftp.uni-kl.de/pub/languages/B.tar.Z)} ["Draft Proposal for the B Language", Lambert Meertens, CWI, Amsterdam, 1981]. 3. A specification language by Jean-Raymond Abrial of {B Core UK}, Magdalen Centre, Oxford Science Park, Oxford OX4 4GA. B is related to {Z} and supports development of {C} code from specifications. B has been used in major {safety-critical system} specifications in Europe, and is currently attracting increasing interest in industry. It has robust, commercially available tool support for specification, design, proof and code generation. E-mail: . (24 Apr 1995) B-0 Original name of {FLOW-MATIC} from {Remington Rand}. Used on the {UNIVAC} I or II about 1958. b4 before. See {talk mode}. Babbage The structured {assembly language} for the {General Electric Company} 4xxx range of computers and their {OS4000} {operating system}. It is strictly an assembler in that the generated code is relatively predictable but it can be written in a sufficiently structured manner, with indentation, control statements, function and procedure calls, to make the resultant source easy to read and manage. Even with this visible structure however, it is important to remember that the assembly of the statement is done left to right. The British {videotext} system, {Prestel} is programmed in Babbage. [1980's article in Datamation]. babbling error An {Ethernet} node attempting to transmit more than 1518 data bytes. [What's significant about 1518?] BABEL 1. A subset of {ALGOL 60}, with many {ALGOL W} extensions. ["BABEL, A New Programming Language", R.S. Scowen, Natl Phys Lab UK, Report CCU7, 1969]. 2. Mentioned in The Psychology of Computer Programming, G.M. Weinberg, Van Nostrand 1971, p.241. 3. A language based on {higher-order function}s and {first-order logic}. ["Graph-Based Implementation of a Functional Logic Language", H. Kuchen et al, Proc ESOP 90, LNCS 432, Springer 1990, pp.271-290]. ["Logic Programming with Functions and Predicates: The Language BABEL", Moreno-Navarro et al, J Logic Prog 12(3) (Feb 1992)]. (28 Nov 1994) BABT {British Approval Boards for Telecommunications} BABYLON A development environment for {expert system}s. It includes {frame}s, {constraint}s, a {prolog}-like logic formalism, and a description language for diagnostic applications. It requires {Common Lisp}. {(ftp://ftp.gmd.de/gmd/ai-research/Software/)} (08 Feb 1995) BACAIC Boeing Airplane Company Algebraic Interpreter Coding system. A pre-{FORTRAN} system on the {IBM 701} and {IBM 650}. (08 Feb 1995) Bachman A proposed a style of {Entity-Relationship model} which differs from Chen's. (08 Feb 1995) Backbone The top level in a hierarchical network. Stub and transit networks which connect to the same backbone are guaranteed to be interconnected. backbone cabal A group of large-site administrators who pushed through the {Great Renaming} and reined in the chaos of {Usenet} during most of the 1980s. The cabal {mailing list} disbanded in late 1988 after a bitter internal catfight. (28 Nov 1994) backbone site A key {Usenet}, {electronic mail} and/or {Internet} site; one that processes a large amount of third-party traffic, especially if it is the home site of any of the regional coordinators for the {Usenet} maps. Notable backbone sites as of early 1993 include {uunet} and the mail machines at {Rutgers University}, UC Berkeley, {DEC}'s Western Research Laboratories, {Ohio State University} and the {University of Texas}. Compare {rib site}, {leaf site}. (28 Nov 1994) back door (Or "{trap door}", "{wormhole}"). A hole in the security of a system deliberately left in place by designers or maintainers. The motivation for such holes is not always sinister; some {operating system}s, for example, come out of the box with privileged accounts intended for use by field service technicians or the vendor's maintenance programmers. See also {iron box}, {cracker}, {worm}, {logic bomb}. Historically, back doors have often lurked in systems longer than anyone expected or planned, and a few have become widely known. The infamous {RTM} worm of late 1988, for example, used a back door in the {BSD} Unix "sendmail(8)" utility. {Ken Thompson}'s 1983 Turing Award lecture to the {ACM} revealed the existence of a back door in early {Unix} versions that may have qualified as the most fiendishly clever security hack of all time. The C compiler contained code that would recognise when the "login" command was being recompiled and insert some code recognizing a password chosen by Thompson, giving him entry to the system whether or not an account had been created for him. Normally such a back door could be removed by removing it from the source code for the compiler and recompiling the compiler. But to recompile the compiler, you have to *use* the compiler - so Thompson also arranged that the compiler would *recognise when it was compiling a version of itself*, and insert into the recompiled compiler the code to insert into the recompiled "login" the code to allow Thompson entry - and, of course, the code to recognise itself and do the whole thing again the next time around! And having done this once, he was then able to recompile the compiler from the original sources; the hack perpetuated itself invisibly, leaving the back door in place and active but with no trace in the sources. The talk that revealed this truly moby hack was published as ["Reflections on Trusting Trust", "Communications of the ACM 27", 8 (August 1984), pp. 761--763]. (25 Apr 1995) back-end Any software performing either the final stage in a process, or a task not apparent to the user. A common usage is in a {compiler}: "The compiler's back-end generates code and performs optimisations specific to the machine's {architecture}". The term can also be used in the context of {network} applications: "The back-end of the system handles {socket} protocols". Contrast {front end}. (09 Apr 1996) backgammon See {bignum}, {moby}, {pseudoprime}. background 1. A task running in the background (a background task) is detached from the terminal where it was started (and often running at a lower priority); opposite of {foreground}. This means that the task's input and output must be from/to files (or other processes). Nowadays this term is primarily associated with {Unix}, but it appears to have been first used in this sense on {OS/360}. Compare {amp off}, {batch}, {slopsucker}. 2. For a human to do a task "in the background" is to do it whenever {foreground} matters are not claiming your undivided attention, and "to background" something means to relegate it to a lower priority. "For now, we'll just print a list of nodes and links; I'm working on the graph-printing problem in the background." Note that this implies ongoing activity but at a reduced level or in spare time, in contrast to mainstream "back burner" (which connotes benign neglect until some future resumption of activity). Some people prefer to use the term for processing that they have queued up for their unconscious minds (often a fruitful tack to take upon encountering an obstacle in creative work). (28 May 1996) backing store Character storage in memory or on disk, as opposed to displayed or printed characters. This distinction is important where the visual ordering of characters differs from the order in which they are stored, e.g. bidirectional or non-spacing layout. In a {Unicode} encoding, text is stored in sequential order in the backing store. Logical or backing store order corresponds to the order in which text is typed on the keyboard (after corrections such as insertions, deletions, and overtyping). A text rendering process converts Unicode text in the backing store to readable text. ["The Unicode Standard: Worldwide Character Encoding", Version 1.0, Vol. 1. Addison-Wesley, 1991]. (28 May 1996) back link A {link} in one direction implied by the existence of an explicit link in the other direction. (28 May 1996) backoff A {host} which has experienced a {collision} on a {network} waits for a amount of time before attempting to retransmit. A random backoff minimises the probability that the same nodes will collide again, even if they are using the same backoff algorithm. Increasing the backoff period after each collision also helps to prevent repeated collisions, especially when the network is heavily loaded. An example algorithm is {binary exponential backoff}. (28 May 1996) back-propagation (Or "backpropagation") A learning {algorithm} for modifying a {feed-forward} {neural network} which minimises a continuous "{error function}" or "{objective function}." Back-propagation is a "{gradient descent}" method of training in that it uses gradient information to modify the network weights to decrease the value of the error function on subsequent tests of the inputs. Other gradient-based methods from {numerical analysis} can be used to train networks more efficiently. Back-propagation makes use of a mathematical trick when the network is simulated on a digital computer, yielding in just two traversals of the network (once forward, and once back) both the difference between the desired and actual output, and the derivatives of this difference with respect to the connection weights. backquote "`" {ASCII} code 96. Common names: left quote; left single quote; open quote; {ITU-T}: grave accent; grave. Rare: backprime; {INTERCAL}: backspark; unapostrophe; birk; blugle; back tick; back glitch; push; {ITU-T}: opening single quotation mark; quasiquote. (17 Nov 1995) backslash "\" {ASCII} code 92. Common names: escape (from C/Unix); reverse slash; slosh; backslant; backwhack. Rare: bash; {ITU-T}: reverse slant; reversed virgule; {INTERCAL}: backslat. (17 Nov 1995) backtracking A scheme for solving a series of sub-problems each of which may have multiple possible solutions and where the solution chosen for one sub-problem may affect the possible solutions of later sub-problems. To solve the overall problem, we find a solution to the first sub-problem and then attempt to recursively solve the other sub-problems based on this first solution. If we cannot, or we want all possible solutions, we backtrack and try the next possible solution to the first sub-problem and so on. Backtracking terminates when there are no more solutions to the first sub-problem. This is the algorithm used by {logic programming} languages such as {Prolog} to find all possible ways of proving a {goal}. An optimisation known as "{intelligent backtracking}" keeps track of the dependencies between sub-problems and only re-solves those which depend on an earlier solution which has changed. Backtracking is one {algorithm} which can be used to implement {nondeterminism}. It is effectively a {depth-first search} of a {problem space}. (13 Apr 1995) backup A spare copy of a file, filesystem or other resource for use in the event of failure or loss of the original. The term is most commonly used to refer to a copy of all the files on a computer's disks which is made periodically and kept on {magnetic tape} or other removable medium (also called a "dump"). This essential precaution is often neglected by new computer users until the first time they experience a {disk crash} or accidentally delete the only copy of the file they have been working on for the last six months. Ideally the backup copies should be kept at a different site or in a fire safe since, though your hardware may be insured against fire, the data on it is almost certainly not insured and not easily replaced. See also Unix manual page: dump(1), {incremental backup}. (03 Feb 1996) Backus-Naur Form (BNF) A formal {meta-syntax} used to express context-free grammars. Backus Normal Form was renamed Backus-Naur Form at the suggestion of {Donald Knuth}. BNF is one of the most commonly used metasyntactic notations for specifying the {syntax} of programming languages, command sets, and the like. It is widely used for language descriptions but seldom documented anywhere (how do you document a metasyntax?), so that it must usually be learned by osmosis. Consider this BNF for a US postal address: ::= ::= | "." ::= [] | ::= [] ::= "," This translates into English as: "A postal-address consists of a name-part, followed by a street-address part, followed by a zip-code part. A personal-part consists of either a first name or an initial followed by a dot. A name-part consists of either: a personal-part followed by a last name followed by an optional "jr-part" (Jr., Sr., or dynastic number) and end-of-line, or a personal part followed by a name part (this rule illustrates the use of recursion in BNFs, covering the case of people who use multiple first and middle names and/or initials). A street address consists of an optional apartment specifier, followed by a street number, followed by a street name. A zip-part consists of a town-name, followed by a comma, followed by a state code, followed by a ZIP-code followed by an end-of-line." Note that many things (such as the format of a personal-part, apartment specifier, or ZIP-code) are left unspecified. These lexical details are presumed to be obvious from context or specified somewhere nearby. There are many variants and extensions of BNF, possibly containing some or all of the {regexp} wildcards such as "*" or "+". {EBNF} is a common one. In fact the example above isn't the pure form invented for the {ALGOL 60} report. "[]" was introduced a few years later in {IBM}'s {PL/I} definition but is now universally recognised. (16 Dec 1994) Backus Normal Form (BNF) Renamed to {Backus-Naur Form}. backward analysis An analysis to determine properties of the inputs of a program from properties or context of the outputs. E.g. if the output of this function is needed then this argument is needed. Compare {forward analysis}. backward chaining In backward chaining one attempts to prove a goal by recursively braking down a goal into sub-goals and trying to prove these until facts are reached. Facts are goals with no sub-goals which are therefore always true. See also {forward chaining}, {Prolog}. backward combatability /bak'w*rd k*m-bat'*-bil'*-tee/ ["backward compatibility"] A property of hardware or software revisions in which previous {protocol}s, formats, layouts, etc. are irrevocably discarded in favour of "new and improved" protocols, formats and layouts, leaving the previous ones not merely deprecated but actively defeated. (Too often, the old and new versions cannot definitively be distinguished, such that lingering instances of the previous ones yield crashes or other infelicitous effects, as opposed to a simple "version mismatch" message.) A backwards compatible change, on the other hand, allows old versions to coexist without crashes or error messages, but too many major changes incorporating elaborate backwards compatibility processing can lead to extreme {software bloat}. See also {flag day}. BAD /B-A-D/ [IBM: acronym, "Broken As Designed"] Said of a program that is {bogus} because of bad design and misfeatures rather than because of bugginess. See {working as designed}. Bad command or file name The error message printed by {MS DOS} when it can't find a program or command to execute due to a typing error, incorrect PATH variable, or misplaced or missing executable. (07 Apr 1996) Bad Thing (From the 1930 Sellar & Yeatman parody "1066 And All That") Something that can't possibly result in improvement of the subject. This term is always capitalised, as in "Replacing all of the 9600-baud modems with bicycle couriers would be a Bad Thing". Opposite: {Good Thing}. British correspondents confirm that {Bad Thing} and {Good Thing} (and probably therefore {Right Thing} and {Wrong Thing}) come from the book referenced in the etymology, which discusses rulers who were Good Kings but Bad Things. This has apparently created a mainstream idiom on the British side of the pond. bag on the side An extension to an established hack that is supposed to add some functionality to the original. Usually derogatory, implying that the original was being overextended and should have been thrown away, and the new product is ugly, inelegant, or bloated. Also "to hang a bag on the side [of]". "C++? That's just a bag on the side of C." "They want me to hang a bag on the side of the accounting system." BAL {Basic Assembly Language} balanced computing Matching computer tools to job activities so that the computer system structure parallels the organisation structure and work functions. Both {personal computers} and employees operate in a decentralised environment with monitoring of achievement of management objectives from centralised corporate systems. {(http://www.moultonco.com/balanced.htm)} (15 Apr 1996) balanced tree (B-tree) An optimisation of a {binary tree} which aims to keep equal numbers of items on each side of each node so as to minimise the maximum path from the root to any {leaf node}. As items are inserted and deleted, the B-tree is restructured to keep the nodes balanced and the search paths uniform. Such an {algorithm} is appropriate where the overheads of the reorganisation on update are outweighed by the benefits of faster search. A B+-tree (as used by {IBM}'s {VSAM}) is a B-tree where the leaves are also linked sequentially, thus allowing both fast random access and sequential access to data. (15 Apr 1996) BALGOL {ALGOL} on {Burroughs 220}. [Sammet 1969, p. 174]. (15 Apr 1996) BALITAC Early system on IBM 650. Listed in CACM 2(5):16 (May 1959). BALM Block And List Manipulation. Harrison, 1970. Extensible language with LISP-like features and ALGOL-like syntax, for CDC 6600. "The Balm Programming Language", Malcolm Harrison, Courant Inst (May 1973). bamf /bamf/ 1. [Old X-Men comics] Notional sound made by a person or object teleporting in or out of the hearer's vicinity. Often used in {virtual reality} (especially {MUD}) electronic {fora} when a character wishes to make a dramatic entrance or exit. 2. The sound of magical transformation, used in virtual reality {fora}. Banach-Tarski paradox It is possible to cut a solid ball into finitely many pieces (actually about half a dozen), and then put the pieces together again to get two solid balls, each the same size as the original. This {paradox} is a consequence of the {Axiom of Choice}. (29 Mar 1995) banana label The labels often used on the sides of {macrotape} reels, so called because they are shaped roughly like blunt-ended bananas. This term, like macrotapes themselves, is still current but visibly headed for obsolescence. banana problem (From the story of the little girl who said "I know how to spell "banana", but I don't know when to stop"). Not knowing where or when to bring a production to a close (compare {fencepost error}). One may say "there is a banana problem" of an algorithm with poorly defined or incorrect termination conditions, or in discussing the evolution of a design that may be succumbing to featuritis (see also {creeping elegance}, {creeping featuritis}). See item 176 under {HAKMEM}, which describes a banana problem in a {Dissociated Press} implementation. Also, see {one-banana problem} for a superficially similar but unrelated usage. (31 Jan 1995) bandwidth 1. The difference in Hertz (Hz) between the highest and lowest frequencies of a transmission channel. 2. The amount of data that can be sent through a given communications circuit per second. 3. On {Usenet}, a measure of network capacity that is often wasted by people complaining about how items posted by others are a waste of bandwidth. (28 Nov 1994) bang 1. A common spoken name for "!" (ASCII 33), especially when used in pronouncing a {bang path} in spoken hackish. In {elder days} this was considered a {CMU}ish usage, with {MIT} and {Stanford} hackers preferring {excl} or {shriek}; but the spread of {Unix} has carried "bang" with it (especially via the term {bang path}) and it is now certainly the most common spoken name for "!". Note that it is used exclusively for non-emphatic written "!"; one would not say "Congratulations bang" (except possibly for humorous purposes), but if one wanted to specify the exact characters "foo!" one would speak "Eff oh oh bang". See {pling}, {shriek}, {ASCII}. 2. An exclamation signifying roughly "I have achieved enlightenment!", or "The dynamite has cleared out my brain!" Often used to acknowledge that one has perpetrated a {thinko} immediately after one has been called on it. (31 Jan 1995) bang on (Or "pound on"). To stress-test a piece of hardware or software: "I banged on the new version of the simulator all day yesterday and it didn't crash once. I guess it is ready for release." bang path An old-style {UUCP} {electronic-mail address} naming a sequence of hosts through which a message must pass to get from some assumed-reachable location to the addressee (a "{source route}"). So called because each {hop} is signified by a {bang} sign (exclamation mark). Thus, for example, the path ...!bigsite!foovax!barbox!me directs people to route their mail to computer bigsite (presumably a well-known location accessible to everybody) and from there through the computer foovax to the account of user me on barbox. Before {autorouting mailer}s became commonplace, people often published compound bang addresses using the { } convention (see {glob}) to give paths from *several* big computers, in the hope that one's correspondent might be able to get mail to one of them reliably. e.g. ...!{seismo, ut-sally, ihnp4}!rice!beta!gamma!me Bang paths of 8 to 10 hops were not uncommon in 1981. Late-night dial-up UUCP links would cause week-long transmission times. Bang paths were often selected by both transmission time and reliability, as messages would often get lost. (16 Mar 1995) banner 1. The title page added to printouts by most {print spoolers}. Typically includes user or account ID information in very large character-graphics capitals. Also called a "burst page", because it indicates where to burst (tear apart) fanfold paper to separate one user's printout from the next. 2. A similar printout generated (typically on multiple pages of fan-fold paper) from user-specified text, e.g. by a program such as {Unix}'s "banner". 3. On interactive software, a first screen containing a logo and/or author credits and/or a {copyright} notice. (28 Nov 1994) Banyan A personal computer networking company, best known for its "{Vines}" {local area network}ing products. Address: Westborough MA, USA. (01 Mar 1995) [Is it also a network topology?] BAP 1. An early system used on the {IBM 701}. [Listed in CACM 2(5):16 (May 1959)]. (28 Nov 1994) 2. {Brain Aid Prolog}. (07 Mar 1995) bar 1. /bar/ The second {metasyntactic variable}, after {foo} and before {baz}. E.g. "Suppose function FOO calls functions BAR..." 2. Often appended to {foo} to produce {foobar}. (07 Mar 1995) bar code A horizontal strip of vertical bars of varying widths, groups (pairs?) of which represent symbols (decimal digits?) referred to as "characters". Each symbol typically contains a leading "quiet" zone, start character, data character(s) including an optional check character, stop character and a trailing quiet zone. The quiet zone could be white, red or yellow if viewed by a red scanner. Bar code readers usually use visable red light with a wavelength between 632.8 and 680 nanometers. [Details of code?] (23 Nov 1994) bare metal 1. New computer hardware, unadorned with such snares and delusions as an {operating system}, an {HLL}, or even {assembler}. Commonly used in the phrase "programming on the bare metal", which refers to the arduous work of {bit bashing} needed to create these basic tools for a new computer. Real bare-metal programming involves things like building {boot PROM}s and {BIOS} chips, implementing basic {monitor}s used to test {device driver}s, and writing the assemblers that will be used to write the compiler back ends that will give the new computer a real development environment. 2. "Programming on the bare metal" is also used to describe a style of {hand-hacking} that relies on bit-level peculiarities of a particular hardware design, especially tricks for speed and space optimisation that rely on crocks such as overlapping instructions (or, as in the famous case described in {The Story of Mel}, interleaving of opcodes on a magnetic drum to minimise fetch delays due to the device's rotational latency). This sort of thing has become less common as the relative costs of programming time and computer resources have changed, but is still found in heavily constrained environments such as industrial embedded systems, and in the code of hackers who just can't let go of that low-level control. See {Real Programmer}. In the world of personal computing, bare metal programming is often considered a {Good Thing}, or at least a necessary evil (because these computers have often been sufficiently slow and poorly designed to make it necessary; see {ill-behaved}). There, the term usually refers to bypassing the BIOS or OS interface and writing the application to directly access device registers and computer addresses. "To get 19.2 kilobaud on the serial port, you need to get down to the bare metal." People who can do this sort of thing well are held in high regard. barf /barf/ [mainstream slang for "vomit"] 1. Term of disgust. This is the closest hackish equivalent of the Val\-speak "gag me with a spoon". (Like, euwww!) See {bletch}. 2. To say "Barf!" or emit some similar expression of disgust. "I showed him my latest hack and he barfed" means only that he complained about it, not that he literally vomited. 3. To fail to work because of unacceptable input, perhaps with a suitable error message, perhaps not. Examples: "The division operation barfs if you try to divide by 0." (That is, the division operation checks for an attempt to divide by zero, and if one is encountered it causes the operation to fail in some unspecified, but generally obvious, manner.) "The text editor barfs if you try to read in a new file before writing out the old one". See {choke}, {gag}. In Commonwealth Hackish, "barf" is generally replaced by "puke" or "vom". {barf} is sometimes also used as a {metasyntactic variable}, like {foo} or {bar}. (26 Feb 1996) barfmail Multiple {bounce messages} accumulating to the level of serious annoyance, or worse. The sort of thing that happens when an inter-network {mail gateway} goes down or misbehaves. (05 Jan 1996) barfulation /bar`fyoo-lay'sh*n/ Variation of {barf} used around the Stanford area. An exclamation, expressing disgust. On seeing some particularly bad code one might exclaim, "Barfulation! Who wrote this, Quux?" barfulous /bar'fyoo-l*s/ (Or "barfucious", /bar-fyoo-sh*s/) Said of something that would make anyone barf, if only for aesthetic reasons. (22 Feb 1995) barney In Commonwealth hackish, "barney" is to {fred} as {bar} is to {foo}. That is, people who commonly use "fred" as their first {metasyntactic variable} will often use "barney" second. The reference is, of course, to Fred Flintstone and Barney Rubble in the Flintstones cartoons. (28 Nov 1994) Baroque An early {logic programming} language written by Boyer and Moore in 1972. ["Computational Logic: Structure Sharing and Proof of program Properties", J. Moore, DCL Memo 67, U Edinburgh 1974]. (22 Feb 1995) baroque Feature-encrusted; complex; gaudy; verging on excessive. Said of hardware or (especially) software designs, this has many of the connotations of {elephantine} or monstrosity but is less extreme and not pejorative in itself. "{Metafont} even has features to introduce random variations to its letterform output. Now *that* is baroque!" See also {rococo}. (22 Feb 1995) barrel shifter A hardware device that can shift or rotate a data word by any number of bits in a single operation. It is implemented like a {multiplexor}, each output can be connected to any input depending on the shift distance. (28 Mar 1995) base {radix}. base 64 A file format using 64 {ASCII} characters to encode the six-bit {binary data} values 0-63. To convert data to base 64, the first byte is placed in the most significant eight bits of a 24-bit buffer, the next in the middle eight, and the third in the least significant eight bits. If there a fewer than three bytes to encode, the corresponding buffer bits will be zero. The buffer is then used, six bits at a time, most significant first, as indices into the string "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" and the indicated character output. If there were only one or two input bytes, the output is padded with two or one "=" characters respectively. This prevents extra bits being added to the reconstructed data. The process then repeats on the remaining input data. Base 64 is used when transmitting binary data through text-only media such as {electronic mail}, though {uuencode} is more common. (21 Mar 1995) baseband A transmission medium through which digital signals are sent without frequency shifting. In general, only one communication channel is available at any given time. {Ethernet} is an example of a baseband network. See also {broadband}. (22 Feb 1995) baseline See {released version}. Base Technology The company which developed and distributes {Liana}. E-mail: Jack Krupansky <70642.2662@compuserve.com> (owner). Address: 1120 Avenue of the Americas, 4th Floor, New York, NY 10036, USA. Telephone: +1 (212) 626 6630. Fax: +1 (212) 626 6632. (09 Mar 1995) bash Bourne Again SHell. {GNU}'s {command interpreter} for {Unix}. Bash is a {Posix}-compatible {shell} with full {Bourne shell} syntax, and some {C shell} commands built in. The Bourne Again Shell supports {Emacs}-style command-line editing, job control, functions, and on-line help. Written by Brian Fox . The latest version is 1.14.1. It includes a {yacc} parser, the interpreter and documentation. {(ftp://prep.ai.mit.edu/bash-1.14.1.tar.gz)} or from a {GNU archive site}. E-mail: . {Usenet} newsgroup: {news:gnu.bash.bug}. (15 Jul 1994) BASIC Beginner's All-purpose Symbolic Instruction Code. A simple language designed by John G. Kemeny and Thomas E. Kurtz at Dartmouth College in 1963. It first ran on an {IBM 704} on 01 May 1964. It was designed for quick and easy programming by students and beginners. BASIC exists in many dialects, and is popular on {microcomputer}s with sound and graphics support. Most micro versions are interactive and interpreted, but the original Dartmouth BASIC was compiled. BASIC was originally designed for Dartmouth's experimental {time-sharing} system and has since become the leading cause of brain-damage in proto-hackers. This is another case (like {Pascal}) of the cascading lossage that happens when a language deliberately designed as an educational toy gets taken too seriously. A novice can write short BASIC programs (on the order of 10--20 lines) very easily; writing anything longer is (a) very painful, and (b) encourages bad habits that will make it harder to use more powerful languages well. This wouldn't be so bad if historical accidents hadn't made BASIC so common on low-end micros. As it is, it ruins thousands of potential wizards a year. Originally, all references to code, both {GOTO} and GOSUB (subroutine call) referred to the destination by its line number. This allowed for very simple editing in the days before {text editor}s were considered an essential tool on every computer. Just typing the line number deleted the line and to edit a line you just typed the new line with the same number. Programs were typically numbered in steps of ten to allow for insertions. Later versions, such as {BASIC V}, allow {GOTO}-less {structured programming} with named procedures and functions, IF-THEN-ELSE-ENDIF constructs and {WHILE} loops etc. Early BASICs had no graphic operations execpt with graphic characters. In the 1970s BASIC {interpreter}s became standard features in {mainframe}s and {minicomputer}s. Some versions included matrix operations as language primitives. A {public domain} {interpreter} for a mixture of {DEC}'s {MU-Basic} and {Microsoft Basic} is {here (ftp://oak.oakland.edu/pub/Unix-c/languages/basic/basic.tar-z)}. A {yacc} {parser} and {interpreter} were in the comp.sources.unix archives volume 2. Mailing list: . See also {ANSI Minimal BASIC}, {bournebasic}, {bwBASIC}, {ubasic}. (15 Mar 1995) Basic Assembly Language (BAL) What most people called {IBM 360} {assembly language}. See {ALC}. (13 Apr 1995) BASIC AUTOCODER Early system on IBM 7070. Listed in CACM 2(5):16 (May 1959). Basic COBOL Subset of COBOL from COBOL-60 standards. Sammet 1969, p.339. Basic Encoding Rules (BER) Standard rules for encoding data units described in {Abstract Syntax Notation 1} (ASN.1). The BER provide a universal (contiguous) representation of data values. They are sometimes incorrectly lumped under the term ASN.1, which properly refers only to the {abstract syntax} description language, not the encoding technique. Huw Rogers described BER as "a triumph of bloated theory over clean implementation". He also criticises it is designed around bitstreams with arbitrary boundaries between data which can only be determined at a high level. (28 Nov 1994) Basic FORTRAN Subset of FORTRAN. Sammet 1969, p.150. Basic Input/Output System (BIOS) The part of the {operating system} of the {IBM PC} that provides the lowest level interface to peripheral devices. The BIOS is stored in {ROM} in every IBM PC. In order to provide acceptable performance (e.g. for screen display), software vendors directly access the routines in the BIOS, rather than using the higher level operating system calls. Thus, the BIOS in the compatible computer must be 100% compatible with the IBM BIOS. As if that wasn't bad enough, many {application program}s bypass even the BIOS and address the screen hardware directly just as the BIOS does. Consequently, register level compatibility is required in the compatible's display electronics, which means that it must provide the same storage locations and identification as the original IBM hardware. Basic JOVIAL A subset of {JOVIAL} written ca. 1965. [Sammet 1969, p.529]. (19 Apr 1995) Basic Rate Interface (BRI) A kind of {Integrated Services Digital Network} channel consisting of two 64 Kbit per second "bearer" (B) channels for user-data transfer plus a 16 kbps "delta" (D) channel for control and signaling information. A BRI provides a total data rate of 144 kilobits per second. The B channels are used for voice or data, and the D channel is used for signaling and/or {X.25} {packet} networking. BRI is the kind of ISDN interface most likely to be found in residential service. (28 Nov 1994) BASIC V The version of the {Basic} programming language which comes on {ROM} in {Acorn}'s {RISC} computers: the {Archimedes} range and the {Risc PC}. It features REPEAT and WHILE loops, multi-line IF statements, procedures and functions, local variables, error handling, {system call}s and a built-in {assembler}. (05 Jan 1995) Bastard Operator From Hell (BOFH) A rogue network operator character invented by Simon Travaglia , regularly featured in "Computing"/"Datamation"(?) magazine. {Home (http://prime-mover.cc.waikato.ac.nz/Bastard.html)} (21 Mar 1996) batch A term descibing a system that takes a set (a "batch") of commands or jobs, executes them and returns the results, all without human intervention. This contrasts with an {interactive} system where the user's commands and the computer's responses are interleaved during a single run. A batch system typically takes its commands from a disk file (or a set of {punched card}s in the old days) and returns the results to a file (or prints them). Often there is a queue of jobs which the system processes as resources become available. Hackers use this somewhat more loosely than the traditional technical definitions justify; in particular, switches on a normally interactive program that prepare it to receive non-interactive command input are often referred to as "batch mode" switches. A "batch file" is a series of instructions written to be handed to an interactive program running in batch mode. (19 Jan 1995) batch file (Or script) A text file containing {operating system} commands which are executed automatically by the {command line interpreter}. In {Unix}, this is called a "{shell script}" since it is the Unix {shell} which includes the {command line interpreter}. Batch files can be used as a simple way to combine existing commands into new commands. {autoexec.bat} is the best known example of an {MS-DOS} batch file. (07 Jan 1996) bathtub curve Common term for the curve (resembling an end-to-end section of one of those claw-footed antique bathtubs) that describes the expected failure rate of electronics with time: initially high, dropping to near 0 for most of the system's lifetime, then rising again as it "tires out". See also {burn-in period}, {infant mortality}. baud /bawd/ The maximum information-carrying capacity of a communication channel in symbols (state-transitions or level-transitions) per second. This coincides with bits per second only for two-level modulation with no {framing} or {stop bit}s. A symbol is a unique state of the communication channel, distinguishable by the receiver from all other possible states. For example, it may be one of two voltage levels on a wire for a direct digital connection or it might be the phase or frequency of a carrier. The term "baud" was originally a unit of telegraph signalling speed, set at one morse code dot per second. It was proposed at the International Telegraph Conference of 1927, and named after J.M.E. Baudot (1845-1903), the French engineer who constructed the first successful teleprinter. The UK {PSTN} will support a maximum rate of 600 baud but each baud may carry between 1 and 16 bits depending on the coding (e.g. {QAM}). Where data is transmitted as {packet}s, e.g. characters, the actual "data rate" of a channel is R * D / P where R is the "raw" rate in bits per second (including packet overhead), D is the number of data bits in a packet and P is the total number of bits in a packet. The original, now obsolete, definition of baud was the reciprocal of the duration of the shortest signalling element. This was mostly relevant to {Morse code}. The term "baud" causes much confusion and is usually best avoided. Use "bits per second" (bps), "bytes per second" or "characters per second" (cps) if that's what you mean. (17 Jan 1995) baud barf /bawd barf/ The garbage one gets on the {display screen} when using a {modem} connection with some {protocol} setting (especially line speed) incorrect, or when someone picks up a voice extension on the same line, or when really bad line noise disrupts the connection. Baud barf is not completely {random}, by the way; hackers with a lot of serial-line experience can usually tell whether the device at the other end is expecting a higher or lower speed than the terminal is set to. *Really* experienced ones can identify particular speeds. (22 Feb 1996) baud rate See {baud}. bawk An {Awk}-like pattern-matching language by Bob Brodt, distributed with {Minix}. (28 Nov 1994) baz /baz/ The third {metasyntactic variable} "Suppose we have three functions: FOO, BAR, and BAZ. FOO calls BAR, which calls BAZ..." (See also {fum}). Occasionally appended to {foo} to produce "foobaz". Early versions of the Hacker Jargon dictionary derived "baz" as a Stanford corruption of {bar}. However, Pete Samson (compiler of the {TMRC} lexicon) reports it was already current when he joined TMRC in 1958. He says "It came from "Pogo". Albert the Alligator, when vexed or outraged, would shout "Bazz Fazz!" or "Rowrbazzle!" The club layout was said to model the (mythical) New England counties of Rowrfolk and Bassex (Rowrbazzle mingled with Norfolk/Suffolk/Middlesex/ Essex)." BBC {British Broadcasting Corporation} BBC Microcomputer A series of {6502}-based personal computers launched by {Acorn Computers} Ltd. in January 1982, for use in the British Broadcasting Corporation's educational programmes on computing. The computers are noted for their reliability (many are still in active service in 1994) and both hardware and software were designed for easy expansion. The 6502-based computers were succeeded in 1987 by the Acorn {Archimedes} family. {xbeeb} is a BBC Micro {emulator} for {Unix} and {X11}. BBC Networking Club A {bulletin board} set up by the {British Broadcasting Corporation} Education department in April 1994. Registration (from May 1994) 5 pounds ($7.50) + VAT per month if you are already on the {Internet} or a starter kit providing Internet access through the club will cost 25 pounds for the IBM PC or Macintosh, and 35 pounds for the {Acorn} {Archimedes} plus 12 pounds per month. {Home (http://www.bbcnc.org.uk)} {(ftp://ftp.bbcnc.org.uk)}. E-mail: . Telnet: auntie.bbcnc.org.uk 9999 (193.128.6.134). (18 Jan 1995) BBL (I will) be back later. See {talk mode}. BBN {Bolt, Beranek and Newman} bboard /bee'bord/ {bulletin board system}. BBS {Bulletin Board System} BC An {arbitrary precision} numeric processing language with {C}-like {syntax}. Traditionally implemented as a front-end to {DC}. There is a {GNU} version called {GNU BC}. Unix manual page: bc(1). BCD {binary coded decimal} BCL The successor to {Atlas Commercial Language}. ["The Provisional BCL Manual", D. Hendry, U London 1966]. BC NELIAC Version of NELIAC, post 1962. Sammet 1969, p.197. BCNU Be seein' you. BCPL Basic CPL. Richards 1969. British systems language, a descendant of CPL (Combined Programming Language) and the inspiration for B and C. BCPL is low-level, typeless and block-structured, and provides only one-dimensional arrays. Case is not significant, but conventionally reserved words begin with a capital. Flow control: If-Then, Test-Then-Else, Unless-Do, While-Do, Until-Do, Repeat, Repeatwhile, Repeatuntil, For-to-By-Do, Loop, Break and Switchon-Into-Case-Default-Endcase. BCPL has conditional expressions, pointers, and manifest constants. BCPL had both procedures: 'Let foo(bar) Be command' and functions: 'Let foo(bar) = expression'. 'Valof $(..Resultis..$)' causes a compound command to produce a value. Parameters are call-by-value. Program segments communicate via the global vector where system and user variables are stored in fixed numerical locations in a single array. The first BCPL {compiler} was written in {AED}. BCPL was used to implement the {TRIPOS} {operating system}, which was subsequently reincarnated as {AmigaDOS}. ["BCPL - The Language and its Compiler", Martin Richards & Colin Whitby-Stevens, Cambridge U Press 1979]. See {OCODE}, {INTCODE}. Oxford BCPL differed slightly: Test-Ifso-Ifnot, and section brackets in place of $( $). The original {INTCODE} {interpreter} for BCPL is available for {Amiga}, {Unix}, {MS-DOS} {(ftp://wuarchive.wustl.edu/systems/amiga/programming/languages/BCPL/)}. A BCPL compiler {bootstrap} kit with an {INTCODE} {interpreter} in {C} by Ken Yap is available by {(ftp://ftp.syd.dit.csiro.au/[.languages]bcpl.tar_z)}. (26 Mar 1995) BCS 1. {British Computer Society}. 2. {Binary Compatibility Standard}. BDL Block Diagram Compiler. A block-diagram simulation tool, with associated language. "A Software Environment for Digital Signal-Processing Simulations," D.H. Johnson & R.E. Vaughan, Circuits Systems and Signal Processing 6(1):31-43, (1987). BDPA {Black Data Processing Associates} BEA Basic programming Environment for interactive-graphical Applications, from Siemens-Nixdorf. beam [Star Trek Classic's "Beam me up, Scotty!"] To transfer {softcopy} of a file electronically; most often in combining forms such as "beam me a copy" or "beam that over to his site". Compare {blast}, {snarf}, {BLT}. beam search An optimisation of the {best first search} graph search {algorithm} where only a predetermined number of paths are kept as candidates. The number of paths is the "width of the beam". If more paths than this are generated, the worst paths are discarded. This reduces the space requirements of best first search. beanie key [Mac users] See {command key}. BeBOP Combines sequential and parallel {logic programming}, {object-oriented} and {meta-level programming}. Both "don't know" {nondeterminism} and stream {AND-parallelism}. Prolog theories are first order entities and may be updated or passed in messages. Implemented by translation to {NU-Prolog} and {PNU-Prolog}. {(ftp://munnari.oz.au/pub/bebop.tar.Z)}. E-mail: Andrew Davidson . BEDO {Burst Extended Data Out DRAM} Bedrock A {C++} {class} library for {Macintosh} user interface portability. beep The preferred term for a ring of the computer's "bell" among micro hobbyists. Compare {feep}. @Begin The {Scribe} equivalent of {\begin}. \begin The {LaTeX} command used with \end to delimit an environment within which the text is formatted in a certain way. E.g. \begin{table}...\end{table}. Used humorously in writing to indicate a context or to remark on the surrounded text. For example: \begin{flame} Predicate logic is the only good programming language. Anyone who would use anything else is an idiot. Also, all computers should be tredecimal instead of binary. \end{flame} {Scribe} users at {CMU} and elsewhere used to use @Begin/@End in an identical way (LaTeX was built to resemble Scribe). On {Usenet}, this construct would more frequently be rendered as "" and "", or "#ifdef FLAME" and "#endif FLAME". (01 Jun 1996) BEGL Back End Generator Language. A {code generator} description language. The input language for the back end generator {BEG}. {(ftp://gatekeeper.dec.com/pub/gmd/cocktail/beg)} ["BEG - A Generator for Efficient Back Ends", H. Emmelmann et al, SIGPLAN Notices 24(7):227-237 (Jul 1989)]. ["BEG - A Back End Generator - User Manual", H. Emmelmann , GMD, U Karlsruhe 1990]. (14 Dec 1994) beige toaster A {Macintosh}. See {toaster}, {Macintrash}, {maggotbox}. (14 Dec 1994) BEL BELl, the {mnemonic} for {ASCII} 7. (24 Jun 1996) belief revision The area of {theory change} in which preservation of the information in the theory to be changed plays a key role. A fundamental issue in belief revision is how to decide what information to retract in order to maintain consistency, when the addition of a new belief to a theory would make it inconsistent. Usually, an ordering on the sentences of the theory is used to determine priorities among sentences, so that those with lower priority can be retracted. This ordering can be difficult to generate and maintain. The postulates of the {AGM Theory for Belief Revision} describe minimal properties a revision process should have. [Better definition?] (20 Mar 1995) BELL An early system on the {IBM 650} and {Datatron 200} series. Versions: BELL L2, BELL L3. [Listed in CACM 2(5):16 (May 1959)]. [Is Datatron version the same?] (06 Dec 1994) Bell 103 The original variant of {V.21} created by {AT&T} when they had a telephone system monopoly in the USA. (02 Feb 1995) Bell Communications Research, Inc (Bellcore) The research laboratory for the seven regional {Bell Telephone} companies in the USA that were created by the divestiture of {AT&T} in 1984. It can be compared to {Bell Laboratories}, for which many Bellcore employees used to work. Currently jointly owned by the seven baby bells (as they are called), there are rumors that it is to be sold by its current owners to become an independent research laboratory Its headquarters are in Livingstone, New Jersey. It has offices in Morristown, Lincroft, and Piscataway, all in New Jersey, USA. Telephone: +1 (201) 74 3000, +1 (800) 521 CORE. (06 Dec 1994) Bellcore {Bell Communications Research}, Inc. bell curve {normal distribution}. Bell Laboratories One of {AT&T}'s research sites, in Murray Hill, New Jersey, USA. It was the birthplace of the {transistor}, {Unix}, {C} and {C++} and the current home of research on {Plan 9} and {ODE}. {AT&T Research (http://www.research.att.com/)} {(ftp://ftp.research.att.com/)} {netlib} sources {(ftp://netlib.att.com)}. (17 Nov 1994) Bell Labs {Bell Laboratories} bells and whistles [By analogy with the toyboxes on theater organs]. Features added to a program or system to make it more {flavorful} from a hacker's point of view, without necessarily adding to its utility for its primary function. Distinguished from {chrome}, which is intended to attract users. "Now that we've got the basic program working, let's go back and add some bells and whistles." No one seems to know what distinguishes a bell from a whistle. bells, whistles, and gongs A standard elaborated form of {bells and whistles}; typically said with a pronounced and ironic accent on the "gongs". benchmark A standard program or set of programs which can be run on different computers to give an inaccurate measure of their performance. "In the computer industry, there are three kinds of lies: lies, damn lies, and benchmarks." A benchmark may attempt to indicate the overall power of a system by including a "typical" mixture of programs or it may attempt to measure more specific aspects of performance, like graphics, I/O or computation (integer or {floating-point}). Others measure specific tasks like {rendering} polygons, reading and writing files or performing operations on matrices. The most useful kind of benchmark is one which is tailored to a user's own typical tasks. While no one benchmark can fully characterise overall system performance, the results of a variety of realistic benchmarks can give valuable insight into expected real performance. Benchmarks should be carefully interpreted, you should know exactly which benchmark was run (name, version); exactly what configuration was it run on (CPU, memory, compiler options, single user/multi-user, peripherals, network); how does the benchmark relate to your workload? Well-known benchmarks include {Whetstone}, {Dhrystone}, {Rhealstone} (see {h}), the {Gabriel} {Lisp} benchmarks, the {SPECmark} suite, and {LINPACK}. See also {machoflops}, {MIPS}, {smoke and mirrors}. {Usenet} newsgroup: {news:comp.benchmarks}. {A database of some benchmark results (http://netlib2.cs.utk.edu/performance/html/PDSreports.html)}. (14 Nov 1994) benchmarks {benchmark} Bend Over, Here It Comes Again (BOHICA) An utterance of frustration by computer support personnel who anticipate being told (usually via phone) to do something that can't be done, by a boss who doesn't know his ass from deep center field about what he's asking his minions to do. (20 Sep 1995) BER {Basic Encoding Rules} Berkeley {University of California at Berkeley} Berkeley 4.2 See {Berkeley System Distribution}. Berkeley EDIF200 translator-building toolkit Wendell C. Baker and Prof A. Richard Newton of the Electronics Research Laboratory, Department of Electrical Engineering and Computer Sciences at the {University of California, Berkeley}. Version 7.6. Restriction: no-profit without permission. {(ftp://ic.berkeley.edu/pub/edif)} (01 Jul 1990) Berkeley FP A version of Backus's {FP} distributed with {4.2BSD} {Unix}. {(ftp://apple.com/ArchiveVol1/Unix_lang)} Berkeley Internet Name Domain (BIND) Implementation of a {DNS} {server} developed and distributed by the {University of California at Berkeley}. Many {Internet} {host}s run BIND, and it is the ancestor of many commercial BIND implementations. (29 Nov 1994) Berkeley Logo A {Logo} {interpreter} by brian harvey . Logo programs will run on {Unix}, {IBM PC} and {Macintosh}. It is "richer" than {MswLogo} but pretty slow. It doesn't do anything fancy about graphics and only allows one turtle. Version: 3.0 {(ftp://anarres.cs.berkeley.edu/pub/ucblogo/)} (06 Aug 1993) Berkeley Network (B-NET) Top level {Unix} {Ethernet} software developed at the {University of California at Berkeley}. There are no formal specifications but UCB's {4.2BSD} {Unix} implementation on the {VAX} is the de facto standard. Distributed by {Unisoft}. Includes net.o driver routines for specific hardware, {pseudo tty}s, {daemon}s, hostname command to set/get name, /etc/hosts database of names and {Internet address}es of other hosts, /etc/hosts.equiv host-wide database to control remote access, .rhosts per user version of hosts.equiv. UCB's implementation of the {Internet Protocol} includes trailers to improve performance on paged memory management systems such as {VAXen}. These trailers are an exception to the Internet Protocol specification. Berkeley Quality Software (Often abbreviated "BQS") Term used in a pejorative sense to refer to software that was apparently created by rather spaced-out hackers late at night to solve some unique problem. It usually has nonexistent, incomplete, or incorrect documentation, has been tested on at least two examples, and core dumps when anyone else attempts to use it. This term was frequently applied to early versions of the "dbx(1)" debugger. See also {Berzerkeley}. (15 Jan 1996) Berkeley Software Design, Inc (BSDI) A company that sells {BSD/OS}, a commercial version of {Berkeley Standard Distribution} {Unix}, networking, and Internet technologies originally developed by the {Computer Systems Research Group} (CSRG) at the {University of California at Berkeley}. Leading CSRG computer scientists founded BSDI in 1991. BSDI's BSD/OS represents over 20 years of development by the worldwide BSD technical community. BSD technology is known worldwide for its powerful, flexible and portable architecture and advanced development environments. BSDI designs, develops, markets, and supports the {BSD/OS} {operating system}, {Internet} server software for {IBM PCs}, and other products. BSDI planned to release an Internet gateway product for {Novell} {IPX} networks in 1995. {Home (http://www.bsdi.com/)} E-mail: . Address: 5575 Tech Center Drive, #110, Colorado Springs, CO 80918, USA. Telephone: +1 (719) 593 9445. Fax: +1 (719) 598 4238. (13 Jan 1996) Berkeley Softworks The company that wrote {Graffiti} and a similar scheme for the {Commodore 64} (made it very {Macintosh}-like) and the {Commodore 128} (which could {multitask}). (24 Jan 1995) Berkeley System Distribution (BSD) A family of {Unix} versions for the {DEC} {VAX} and {PDP-11}, developed by {Bill Joy} and others at the {University of California at Berkeley}. BSD Unix incorporates {paged} {virtual memory}, {TCP/IP} networking enhancements, and many other features. BSD UNIX 4.0 was released on 19 October 1980. The BSD versions (4.1, 4.2, and 4.3) and the commercial versions derived from them ({SunOS}, {ULTRIX}, {Mt. Xinu}, {Dynix}) held the technical lead in the Unix world until {AT&T}'s successful standardisation efforts after about 1986, and are still widely popular. See also {Berzerkeley}, {USG Unix}. (23 Nov 1994) Berkeley Unix See {Berkeley System Distribution}. berklix /berk'liks/ (From {Berkeley Unix}) {Berkeley System Distribution}. Not used at {Berkeley} itself. May be more common among {suit}s attempting to sound like cognoscenti than among hackers, who usually just say "BSD". (23 Feb 1995) Bernoulli principle (Or "air foil principle", after Swiss mathematician Daniel Bernoulli, 1700-1782) The law that pressure in a fluid decreases with the rate of flow. It has been applied to a class of {hard disk} drives. (23 Feb 1995) Bernstein condition Processes cannot execute in parallel if one effects values used by the other. Nor can they execute in parallel if any subsequent process uses data effected by both, i.e. whose value might depend on the order of execution. (23 Feb 1995) Bertrand (Named after the British mathematician Bertrand Russell (1872-1970)). Wm. Leler. Rule-based specification language based on augmented term rewriting. Used to implement constraint languages. The user must explicitly specify the tree-search and the constraint propagation. {(ftp://nexus.yorku.ca/pub/scheme/scm/bevan.shar)} ["Constraint Programming Languages - Their Specification and Generation", W. Leler, A-W 1988, ISBN 0-201-06243-7]. Bertrand Meyer The author of the {Eiffel} Language and many articles on {object-oriented} software techniques. (01 Mar 1995) Bertrand Russell (1872-1970) A British mathematician, the discoverer of {Russell's paradox}. (27 Mar 1995) Berzerkeley /b*r-zer'klee/ (From "berserk", via the name of a now-deceased record label) A humorous distortion of "Berkeley" used especially to refer to the practices or products of the {BSD Unix} hackers. See {software bloat}, {Missed'em-five}, {Berkeley Quality Software}. Mainstream use of this term in reference to the cultural and political peculiarities of UC Berkeley as a whole has been reported from as far back as the 1960s. (01 Jun 1996) Berzerkley {Berzerkeley} best effort A classification of low priority network traffic, used especially the {Internet}. Different kinds of traffic have different priorities. {Videoconferencing} and other types of {real-time} communication, for example, require a certain minimum guaranteed {bandwidth} and {latency} and so must be given a high priority. {Electronic mail}, on the other hand, can tolerate an arbitrarily long delay and is classified as a "best-effort" service. [Scientific American, Nov. 1994, pp. 83-84]. (04 Apr 1995) best first search A {graph} search {algorithm} which optimises {breadth first search} by ordering all current paths according to some {heuristic}. The heuristic attempts to predict how close the end of a path is to a solution. Paths which are judged to be closer to a solution are extended first. See also {beam search}, {hill climbing}. (09 Dec 1995) BETA Kristensen, Madsen , Moller-Pedersen & Nygaard, 1983. Object-oriented language with block structure, coroutines, concurrency, strong typing, part objects, separate objects and classless objects. Central feature is a single abstraction mechanism called "patterns", a generalisation of classes, providing instantiation and hierarchical inheritance for all objects including procedures and processes. Mjolner Informatics ApS, Aarhus, implementations for Mac, Sun, HP, Apollo. E-mail: . Mailing list: . ["Object-Oriented Programming in the BETA Programming Language", Ole Lehrmann et al, A-W June 1993, ISBN 0-201-62430-3]. (31 Oct 1995) beta /bay't*/, /be't*/ or (Commonwealth) /bee't*/ See {beta conversion}, {beta test}. beta abstraction [{lambda-calculus}] The conversion of an expression to an {application} of a {lambda abstraction} to an argument expression. Some subterm of the original expression becomes the argument of the abstraction and the rest becomes its body. E.g. 4+1 --> (\ x . x+1) 4 The opposite of beta abstraction is {beta reduction}. These are the two kinds of {beta conversion}. beta conversion [{lambda-calculus}] {beta reduction} or {beta abstraction}. beta reduction [{lambda-calculus}] The {application} of a {lambda abstraction} to an argument expression. A copy of the body of the lambda abstraction is made and occurences of the {bound variable} being replaced by the argument. E.g. (\ x . x+1) 4 --> 4+1 Beta reduction is the only kind of {reduction} in the {pure lambda-calculus}. The opposite of beta reduction is {beta abstraction}. These are the two kinds of {beta conversion}. See also {name capture}. beta testing Testing a pre-release (potentially unreliable) version of a piece of software by making it available to selected users. This term derives from early 1960s terminology for product cycle checkpoints, first used at {IBM} but later standard throughout the industry. "{Alpha test}" was the unit, module, or component test phase; "Beta Test" was initial system test. These themselves came from earlier A- and B-tests for hardware. The A-test was a feasibility and manufacturability evaluation done before any commitment to design and development. The B-test was a demonstration that the engineering model functioned as specified. The C-test (corresponding to today's beta) was the B-test performed on early samples of the production design. An item "in beta test" is thus mostly working but still under test. In the {Real World}, systems (hardware or software) often go through two stages of release testing: Alpha (in-house) and Beta (out-house?). Beta releases are generally made to a small number of lucky (or unlucky), trusted customers. (10 May 1996) Bezier (After Frenchman Pierre Bézier from Regie Renault) A collection of formulae for describing curved lines ({Bezier curve}) and surfaces ({Bezier surface}), first used in 1972 to model automobile surfaces. Curves and surfaces are defined by a set of "control points" which can be moved interactively making Bezier curves and surfaces convinient for interactive graphic design. ["Principles of interactive computer graphics", William M. Newman, Graw-Hill]. (04 Apr 1995) Bezier curve A type of curve defined by mathematical formulae, used in {computer graphics}. A curve with coordinates P(u), where u varies from 0 at one end of the curve to 1 at the other, is defined by a set of n+1 "control points" (X(i), Y(i), Z(i)) for i = 0 to n. P(u) = Sum i=0..n [(X(i), Y(i), Z(i)) * B(i, n, u)] B(i, n, u) = C(n, i) * u^i * (1-u)^(n-i) C(n, i) = n!/i!/(n-i)! A Bezier curve (or surface) is defined by its control points, which makes it invariant under any {affine mapping} (traslation, rotation, parallel projection), and thus even under a change in the axis system. You need only to transform the control points and then compute the new curve. The control polygon defined by the points is itself affine invariant. Bezier curves also have the variation-diminishing property. This makes them easier to split compared to other types of curve such as {Hermite} or {B-spline}. Other important properties are multiple values, global and local control, versatility, and order of continuity. [What do these properties mean?] (12 Jun 1996) Bezier surface A surface defined by mathematical formulae, used in {computer graphics}. A surface P(u, v), where u and v vary orthogonally from 0 to 1 from one edge of the surface to the other, is defined by a set of (n+1)*(m+1) "control points" (X(i, j), Y(i, j), Z(i, j)) for i = 0 to n, j = 0 to m. P(u, v) = Sum i=0..n {Sum j=0..m [ (X(i, j), Y(i, j), Z(i, j)) * B(i, n, u) * B(j, m, v)]} B(i, n, u) = C(n, i) * u^i * (1-u)^(n-i) C(n, i) = n!/i!/(n-i)! Bezier surfaces are an extension of the idea of {Bezier curves}, and share many of their properties. (12 Jun 1996) BFI {brute force and ignorance} BGP {Border Gateway Protocol} BHC Code {Bose-Chaudhuri-Hocquenghem Code} bib The {filename extension} for a {BibTeX} bibliography database file. (03 Oct 1995) bible 1. One of a small number of fundamental source books such as {Knuth} and {K&R}. 2. The most detailed and authoritative reference for a particular language, {operating system} or other complex software system. BIBOP {Big bag of pages} BibTeX A {Tex} extension package for bibliographic citations distributed with {LaTeX}. It uses a style-independent bibliography database (.bib file) to produce a list of sources, in a customisable style, from citations in a Latex document. It also supports some other formats. BibTeX is a separate program from LaTeX. LaTeX writes information about citations and which .bib files to use in a ".aux" file. BibTeX reads this file and outputs a ".bbl" file containing LaTeX commands to produce the source list. You must then run LaTeX again to incorporate the source list in your document. In typeset documents, "BibTeX" is written in upper case, with the "IB" slightly smaller and with the "E" as a subscript. BibTeX is described in the {LaTeX} book by Lamport. BiCapitalisation The act said to have been performed on trademarks (such as {PostScript}, {NeXT}, {NeWS}, {VisiCalc}, {FrameMaker}, {TK!solver}, {EasyWriter}) that have been raised above the ruck of common coinage by nonstandard capitalisation. Too many {marketroid} types think this sort of thing is really cute, even the 2,317th time they do it. Compare {studlycaps}. (23 Feb 1995) BiCMOS A manufacturing process for semiconductor devices that combines {bipolar} and {CMOS} to give the best balance between available output current and power consumption. (28 Mar 1995) bidirectional printing A feature of a printer whose printer head can print both when moving left to right and when moving right to left. Also known as "{boustrophedonic}". (13 Apr 1995) bi-endian Silicon schizophrenia. Processors and other chips that have can be switched to work in in {big-endian} or {little-endian} mode. The {PowerPC} chip has this ability, which allows it to run the little-endian {Windows NT}, or the big-endian {MacOS/PPC}. (23 Feb 1995) BIFF /bif/ [{Usenet}] The most famous {pseudo}, and the prototypical {newbie}. Articles from BIFF are characterised by all uppercase letters sprinkled liberally with bangs, typos, "cute" misspellings (EVRY BUDY LUVS GOOD OLD BIFF CUZ HE'S A K00L DOOD AN HE RITES REEL AWESUM THINGZ IN CAPITULL LETTRS LIKE THIS!!!), use (and often misuse) of fragments of {talk mode} abbreviations, a long {sig block} (sometimes even a {doubled sig}), and unbounded naivet'e. BIFF posts articles using his elder brother's VIC-20. BIFF's location is a mystery, as his articles appear to come from a variety of sites. However, {BITNET} seems to be the most frequent origin. The theory that BIFF is a denizen of BITNET is supported by BIFF's (unfortunately invalid) {electronic mail address}: . [1993: Now It Can Be Told! My spies inform me that BIFF was originally created by Joe Talmadge , also the author of the infamous and much-plagiarised "Flamer's Bible". The BIFF filter he wrote was later passed to Richard Sexton, who posted BIFFisms much more widely. Versions have since been posted for the amusement of the net at large. - ESR] biff /bif/ To notify someone of incoming mail. From the {BSD} utility "biff(1)", which was in turn named after a friendly golden Labrador who used to chase frisbees in the halls at UCB while {4.2BSD} was in development (it had a well-known habit of barking whenever the mailman came). No relation to {BIFF}. \big Prefix of several {LaTeX} commands implying a larger symbol. See the command without "big". Often used to convert a dyadic operator into a function which operates on a set. E.g. \sqcup, \bigsqcup. (03 Feb 1995) Big bag of pages (BIBOP) Where data objects are tagged with some kind of descriptor (giving their size or type for example) memory can be saved by storing objects with the same descriptor in one "page" of memory. The most significant bits of an object's address are used as the BIBOP page number. This is looked up in a BIBOP table to find the descriptor for all objects in that page. This idea is similar to the "zones" used in some {Lisp} systems (e.g. {LeLisp}). [David R. Hanson. "A portable storage management system for the Icon programming language". Software - Practise and Experience, 10:489-500 1980]. (29 Nov 1994) big-endian (From Swift's "Gulliver's Travels" via the famous paper "On Holy Wars and a Plea for Peace" by Danny Cohen, USC/ISI IEN 137, dated April 1, 1980) The Lilliputians, being very small, had correspondingly small political problems. The Big-Endian and Little-Endian parties debated over whether soft-boiled eggs should be opened at the big end or the little end. 1. A computer architecture in which, within a given multi-byte numeric representation, the most significant byte has the lowest address (the word is stored "big-end-first"). Most processors, including the IBM 370 family, the {PDP-10}, the {Motorola} {microprocessor} families, and most of the various {RISC} designs current in mid-1993, are big-endian. See {NUXI problem}, {swab}. 2. An {electronic mail address} the wrong way round. Most of the world follows the {Internet} {hostname} {standard} (see {FQDN}) and writes e-mail addresses starting with the name of the computer and ending up with the {country code} (e.g. dbh@doc.ic.ac.uk). In the United Kingdom the {Joint Networking Team} decided to do it the other way round (e.g. me@uk.ac.wigan.cs) before the {Internet} {domain} standard was established. Most {gateway site}s have {ad-hockery} in their {mailer}s to handle this, but can still be confused. In particular, the address above could be in the U.K. (domain "uk") or Czechoslovakia (domain "cs"). There are signs at last (July 1994) that this parochial idiosyncracy may be abolished, at least in the .ac.uk domain, and mailers may start to reject big-endian addresses. Maybe one day Americans will start to use the .us {country code} {domain} instead of .com, .edu, .mil, .gov etc. By that time the net will probably reach other planets and we'll have a whole new set of problems. See also {little-endian}, {middle-endian}. (07 Mar 1995) Big Gray Wall What faces a {VMS} user searching for documentation. A full VMS kit comes on a pallet, the documentation taking up around 15 feet of shelf space before the addition of layered products such as {compiler}s, {database}s, multi-vendor networking, and programming tools. Recent (since VMS version 5) DEC documentation comes with gray binders; under VMS version 4 the binders were orange and under version 3 they were blue. Often contracted to "Gray Wall". (07 Mar 1995) big iron Large, expensive, ultra-fast computers. Used generally of {number crunching} supercomputers such as {Cray}s, but can include more conventional big commercial {IBM}ish {mainframe}s. Term of approval; compare {heavy metal}, oppose {dinosaur}. BIG-LAN ["BIG-LAN Frequently Asked Questions Memo", BIG-LAN DIGEST V4:I8, February 14, 1992.] Bigloo A {Scheme} {interpreter}, compiler and {run-time system} by Manuel Serrano which aims to deliver small, fast stand alone {application}s. The compiler produces {ANSI C} and supports optimisation. Bigloo conforms to the {IEEE Scheme} {standard} with some extensions for {regular expression} handling. It runs on {Sun}, {Sony} {News}, {SGI}, {Linux}, {HP-UX} and is easy to port to any {Unix} system. Version 1.4. {(ftp://ftp.inria.fr/INRIA/Projects/icsla/Implementations/)} (08 Sep 1993) bignum /big'nuhm/ (Originally from {MIT} {MacLISP}) A {multiple-precision} computer representation for very large integers. Most computer languages provide a type of data called "integer", but such computer integers are usually limited in size; usually they must be smaller than 2^31 (2,147,483,648) or (on a {bitty box}) 2^15 (32,768). If you want to work with numbers larger than that, you have to use {floating-point} numbers, which are usually accurate to only six or seven decimal places. Computer languages that provide bignums can perform exact calculations on very large numbers, such as 1000! (the factorial of 1000, which is 1000 times 999 times 998 times ... times 2 times 1). For example, this value for 1000! was computed by the {MacLISP} system using bignums: 40238726007709377354370243392300398571937486421071 46325437999104299385123986290205920442084869694048 00479988610197196058631666872994808558901323829669 94459099742450408707375991882362772718873251977950 59509952761208749754624970436014182780946464962910 56393887437886487337119181045825783647849977012476 63288983595573543251318532395846307555740911426241 74743493475534286465766116677973966688202912073791 43853719588249808126867838374559731746136085379534 52422158659320192809087829730843139284440328123155 86110369768013573042161687476096758713483120254785 89320767169132448426236131412508780208000261683151 02734182797770478463586817016436502415369139828126 48102130927612448963599287051149649754199093422215 66832572080821333186116811553615836546984046708975 60290095053761647584772842188967964624494516076535 34081989013854424879849599533191017233555566021394 50399736280750137837615307127761926849034352625200 01588853514733161170210396817592151090778801939317 81141945452572238655414610628921879602238389714760 88506276862967146674697562911234082439208160153780 88989396451826324367161676217916890977991190375403 12746222899880051954444142820121873617459926429565 81746628302955570299024324153181617210465832036786 90611726015878352075151628422554026517048330422614 39742869330616908979684825901254583271682264580665 26769958652682272807075781391858178889652208164348 34482599326604336766017699961283186078838615027946 59551311565520360939881806121385586003014356945272 24206344631797460594682573103790084024432438465657 24501440282188525247093519062092902313649327349756 55139587205596542287497740114133469627154228458623 77387538230483865688976461927383814900140767310446 64025989949022222176590433990188601856652648506179 97023561938970178600408118897299183110211712298459 01641921068884387121855646124960798722908519296819 37238864261483965738229112312502418664935314397013 74285319266498753372189406942814341185201580141233 44828015051399694290153483077644569099073152433278 28826986460278986432113908350621709500259738986355 42771967428222487575867657523442202075736305694988 25087968928162753848863396909959826280956121450994 87170124451646126037902930912088908694202851064018 21543994571568059418727489980942547421735824010636 77404595741785160829230135358081840096996372524230 56085590370062427124341690900415369010593398383577 79394109700277534720000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 000000000000000000. (27 Jun 1996) bigot A person who is religiously attached to a particular computer, language, operating system, editor, or other tool (see {religious issues}). Usually found with a specifier; thus, "Cray bigot", "ITS bigot", "APL bigot", "VMS bigot", "Berkeley bigot". Real bigots can be distinguished from mere partisans or zealots by the fact that they refuse to learn alternatives even when the march of time and/or technology is threatening to obsolete the favoured tool. It is truly said "You can tell a bigot, but you can't tell him much." Compare {weenie}. Big Red Switch [IBM] The power switch on a computer, especially the "Emergency Pull" switch on an IBM {mainframe} or the power switch on an IBM PC where it really is large and red. "This !@%$% {bitty box} is hung again; time to hit the Big Red Switch." Sources at IBM report that, in tune with the company's passion for {TLA}s, this is often abbreviated as "BRS" (this has also become established on FidoNet and in the PC {clone} world). It is alleged that the emergency pull switch on an {IBM 360}/91 actually fired a non-conducting bolt into the main power feed; the BRSes on more recent mainframes physically drop a block into place so that they can't be pushed back in. People get fired for pulling them, especially inappropriately (see also {molly-guard}). Compare {power cycle}, {three-finger salute}, {120 reset}; see also {scram switch}. Big Room The extremely large room with the blue ceiling and intensely bright light (during the day) or black ceiling with lots of tiny night-lights (during the night) found outside all computer installations. "He can't come to the phone right now, he's somewhere out in the Big Room." (04 Mar 1996) big win An {MIT} term for a {Good Thing} or a lucky accident. (06 Mar 1996) bijection A function is bijective or a bijection or a one-to-one correspondence if it is both {injective} (no two values map to the same value) and {surjective} (for every element of the {codomain} there is some element of the {domain} which maps to it). I.e. there is exactly one element of the domain which maps to each element of the codomain. Only bijective functions have inverses f' where f(f'(x)) = f'(f(x)) = x. See also {injection}, {surjection}. (02 Nov 1994) Bill Gates William Henry Gates III, Chief Executive Officer of {Microsoft}, which he co-founded in 1975 with Paul Allen. In 1994 Gates is a billionaire, worth $9.35b and {Microsoft} is worth about $27b. He was a {computer nerd} who dropped out of Harvard and one of the first programmers to oppose {software piracy} ("Open Letter to Hobbyists," Computer Notes, February 3, 1976). (02 Mar 1995) Bill Joy {William Joy} binaries {binary file} binary Base two. A number representation consisting of 0's and 1's used by practically all computers because of its ease of implementation using digital electronics and {Boolean algebra}. (12 Jun 1996) binary coded decimal (BCD) Number representation where a number is expressed as a sequence of decimal digits and then each decimal digit is encoded as a four-bit binary number. E.g. decimal 92 would be encoded as the eight bit sequence 1001 0010. It is easier to convert decimal numbers to and from BCD than binary and it is possible to build hardware which operates directly on BCD though it is often converted to binary for arithmetic processing. Binary Compatibility Standard (BCS) The {ABI} of {88open}. binary exponential backoff An {algorithm} for dealing with contention in the use of a network. To transmit a {packet} the {host} sets a local parameter, L to 1 and transmits in one of the next L {slot}s. If a {collision} occurs, it doubles L and repeats. binary file A file containing arbitrary bytes or words, as opposed to a {text file} containing only printable characters (e.g. {ASCII} characters with codes 10, 13, and 32-126). On modern {operating systems} a text file is simply a binary file that happens to contain only printable characters, but some older systems distinguish the two file types, requiring programs to handle them differently. A common class of binary files is programs in {machine language} ("{executable} files") ready to load into memory and execute. Binary files may also be used to store data output by a program, and intended to be read by that or another program but not by humans. Binary files are more efficient for this purpose because the data (e.g. numerical data) does not need to be converted between the binary form used by the {CPU} and a printable (ASCII) representation. The disadvantage is that it is usually necessary to write special purpose programs to manipulate such files since most general purpose utilities operate on text files. There is also a problem sharing binary numerical data between processors with different {endian}ness. Some communications {protocols} handle only text files, e.g. most {electronic mail} systems, though as of 1995 this is changing slowly. The {Unix} utility {uuencode} can be used to convert binary data to text for transmission by e-mail. The {FTP} utility must be put into "binary" mode in order to copy a binary file since in its default "ascii" mode translates between the different text line terminator characters used on the sending and receiving computers. Confusingly, some files produced by {wordprocessors}, and {rich text} files, are actually binary files because they contain non-printable characters and require special programs to view, edit, and print them. (14 Dec 1995) binary large object (BLOB) A large block of bits stored in a {database}, such as a picture or sound file. A BLOB is not interpreted by the {database management system}. binary search A search {algorithm} which repeatedly divides an ordered {search space} in half according to how the required (key) value compares with the middle element. The following pseudo-{C} routine performs a binary search return the index of the element of vector "thing[first..last]" equal to "target": if (target < thing[first] || target > thing[last]) return NOT_FOUND; while (first < last) { mid = (first+last)/2; /* truncate to integer */ if (target < thing[mid]) last = mid; else if (target > thing[mid]) first = mid+1; else return mid; } if (target == thing[last]) return last; return NOT_FOUND; (10 Apr 1995) binary tree (btree) A {tree} in which each node has at most two successors or child nodes. In {Haskell} this could be represented as data BTree a = NilTree | Node a (BTree a) (BTree a) See also {balanced tree}. (29 Nov 1994) BIND {Berkeley Internet Name Domain} bindery A {Novell Netware} database that contains definitions for entities such as users, groups, and {workgroups}. The bindery allows the network supervisor to design an organised and secure operating environment based on the individual requirements of each of these entities. The bindery has three components: objects, properties, and property data sets. Objects represent any physical or logical entity, including users, user groups, file servers. Properties are characteristics of each object (e.g. passwords, account restrictions, {internetwork addresses}). Property data sets are the values assigned to an entity's bindery properties. [Netware Version 3.11 "Concepts" documentation (a glossary of Netware-related terms)]. (07 Mar 1996) binding-time analysis An analysis to identify sub-expressions which can be evaluated at {compile-time} or where versions of a function can be generated and called which are specialised to certain values of one or more arguments. See {partial evaluation}. (28 Mar 1995) BinHex A {Macintosh} format for representing a {binary file} using only {printable character}s. The file is converted to lines of letters, numbers and punctuation. Because BinHex files are simply text they can be sent through most {electronic mail} systems and stored on most computers. However the conversion to text makes the file larger, so it takes longer to transmit a file in BinHex format than if the file was represented some other way. The suffix ".{hqx}" usually indicates a BinHex format file. See also {BinHex 4.0}, {uuencode}. [Encoding algorithm?] (30 Nov 1994) Binhex 4.0 A seven bit wide representation of a {Macintosh} file with {CRC} error checking. Binhex 4.0 files are designed for communication of Mac files over long distance, possibly noisy, seven bit wide paths. BinProlog Probably the fastest freely available {C}-emulated {Prolog}. BinProlog features: logical and permanent {global variable}s; backtrackable {destructive assignment}; circular term {unification}; extended {DCG}s (now built into the {engine} as "invisible grammars"); {intuitionistic} and {linear implication} based {hypothetical reasoning}; a {Tcl}/{Tk} interface. Version 3.30 runs on {SPARC}/{Solaris} 2.x, {SunOS} 4.x; {DEC Alpha} 64 bit version; {DEC} {MIPS}; {SGI} {MIPS}; {68k} - {NeXT}, {Sun3}; {IBM RS6000}; {HP PA-RISC} (two variants); {Intel 80386}, {Intel 486}/{Linux}, {MS-DOS}, {Microsoft Windows 3.1} (with DOS-extender {go32} v1.10). {Multi-BinProlog} is a {multi-threaded} {Linda}-style parallel extension to BinProlog for {Solaris} 2.3. {(ftp://clement.info.umoncton.ca/BinProlog/)} E-mail: Paul Tarau . (04 Apr 1995) BIOR An early system on {UNIVAC} I or II. [Listed in CACM 2(5):16 (May 1959)]. (01 Apr 1995) BIOS {Basic Input/Output System} BIP An incorrect singular of {BIPS}. One billion instructions per second is 1 BIPS, not 1 BIP. bipartite graph See {complete graph}. bipolar 1. See {bipolar transistor}. 2. In digital transmission, an electrical line signaling method where the mark value alternates between positive and negative polarities. See also {AMI}. (02 Mar 1995) bipolar transistor A {transistor} made from a sandwich of n- and p-type {semiconductor} material: either npn or pnp. The middle section is known as the "base" and the other two as the "collector" and "emitter". When used as an amplifying element, the base to emitter junction is in a "forward-biased" (conducting) condition, and the base to collector junction is "reverse-biased" or non-conducting. Small changes in the base to emitter current (the input signal) cause either {holes} (for pnp devices) or free {electrons} (for npn) to enter the base from the emitter. The attracting voltage of the collector causes the majority of these charges to cross into and be collected by the collector, resulting in amplification. Contrast {field effect transistor}. (04 Oct 1995) BIPS Billion (10^9) instructions per second. Same as {GIPS}. Bird-Meertens Formalism (BMF) (Or "Squiggol") A calculus for derivation of {functional program}s from a specification. It consists of a set of {higher-order function}s that operate on lists including {map}, {fold}, {scan}, {filter}, inits, tails, {cross product} and {function composition}. ["A Calculus of Functions for Program Derivation", R.S. Bird, in Res Topics in Fnl Prog, D. Turner ed, A-W 1990]. ["The Squiggolist", ed Johan Jeuring, published irregularly by CWI Amsterdam]. (01 May 1995) Birds Of a Feather (BOF) (From the saying "Birds of a feather flock together") An informal discussion group, scheduled on a conference program or formed ad hoc, to consider a specific issue or subject. It is not clear where or when this term originated, but it is now associated with the {USENIX} conferences for {Unix} techies and was already established there by 1984. It was used earlier than that at {DECUS} conferences and is reported to have been common at {SHARE} meetings as far back as the early 1960s. (11 Oct 1994) BISDN Broadband {Integrated Services Digital Network}. Bison {GNU}'s replacement for the {yacc} {parser generator}. Runs under {Unix} and {Atari}. Author: Robert Corbett. Version: 1.22. Bison will apply the {GNU} {General Public License} to your code. FTP from your nearest {GNU archive site}. {(ftp://prep.ai.mit.edu/pub/gnu/bison-1.21.tar.Z)}. E-mail: . {Bison++} is a version which produces {C++} output. (14 Sep 1993) Bison++ GNU's Yacc parser generator retargeted to C++ by Alain Coetmeur . Version 1.04. {(ftp://iecc.com/pub/file/bison++.tar.gz)}. {(ftp://iecc.com/pub/file/misc++.tar.gz)}. {(ftp://psuvax1.cs.psu.edu/pub/src/gnu/bison++-1.04.tar.Z)}. (08 Jul 1993) BIST {Built-in Self Test} bit binary digit. The unit of information; the amount of information obtained by asking a yes-or-no question; a computational quantity that can take on one of two values, such as true and false or 0 and 1; the smallest unit of storage - sufficient to hold one bit. A bit is said to be "set" if its value is true or 1, and "reset" or "clear" if its value is false or 0. One speaks of setting and clearing bits. To {toggle} or "invert" a bit is to change it, either from 0 to 1 or from 1 to 0. The term "bit" first appeared in print in the computer-science sense in 1949, and seems to have been coined by early computer scientist John Tukey. Tukey records that it evolved over a lunch table as a handier alternative to "bigit" or "binit". See also {flag}, {trit}, {mode bit}, {byte}, {word}. bit bang Transmission of data on a {serial line} accomplished by rapidly changing a single output bit, in software, at the appropriate times. The technique is a simple loop with eight OUT and SHIFT instruction pairs for each byte. Input is more interesting. And {full duplex} (doing input and output at the same time) is one way to separate the real hackers from the {wannabee}s. Bit bang was used on certain early models of {Prime} computers, presumably when {UART}s were too expensive, and on archaic {Zilog Z80} micros with a {Zilog} PIO but no SIO. In an interesting instance of the {cycle of reincarnation}, this technique is now (1991) coming back into use on some {RISC} architectures because it consumes such an infinitesimal part of the processor that it actually makes sense not to have a {UART}. bit bashing (Also "bit diddling" or {bit twiddling}). Any of several kinds of low-level programming characterised by manipulation of {bit}, {flag}, {nybble}, and other smaller-than-character-sized pieces of data. These include low-level device control, encryption algorithms, checksum and error-correcting codes, hash functions, some flavours of graphics programming (see {bitblt}), and assembler/compiler code generation. May connote either tedium or a real technical challenge (more usually the former). "The command decoding for the new tape driver looks pretty solid but the bit-bashing for the control registers still has bugs." See also {bit bang}, {mode bit}. bitblt /bit'blit/ [{BLT}] 1. Any of a family of closely related algorithms for moving and copying rectangles of bits between main and display memory on a {bit-mapped} device, or between two areas of either main or display memory (the requirement to do the {Right Thing} in the case of overlapping source and destination rectangles is what makes BitBlt tricky). 2. {blit}, {BLT}. bit bucket 1. The universal data sink (originally, the mythical receptacle used to catch bits when they fall off the end of a register during a shift instruction). Discarded, lost, or destroyed data is said to have "gone to the bit bucket". On {Unix}, often used for {/dev/null}. Sometimes amplified as "the Great Bit Bucket in the Sky". 2. The place where all lost mail and news messages eventually go. The selection is performed according to {Finagle's Law}; important mail is much more likely to end up in the bit bucket than junk mail, which has an almost 100% probability of getting delivered. Routing to the bit bucket is automatically performed by mail-transfer agents, news systems, and the lower layers of the network. 3. The ideal location for all unwanted mail responses: "Flames about this article to the bit bucket." Such a request is guaranteed to overflow one's mailbox with flames. 4. Excuse for all mail that has not been sent. "I mailed you those figures last week; they must have landed in the bit bucket." Compare {black hole}. This term is used purely in jest. It is based on the fanciful notion that bits are objects that are not destroyed but only misplaced. This appears to have been a mutation of an earlier term "bit box", about which the same legend was current; old-time hackers also report that trainees used to be told that when the CPU stored bits into memory it was actually pulling them "out of the bit box". See also {chad box}. Another variant of this legend has it that, as a consequence of the "parity preservation law", the number of 1 bits that go to the bit bucket must equal the number of 0 bits. Any imbalance results in bits filling up the bit bucket. A qualified computer technician can empty a full bit bucket as part of scheduled maintenance. bit decay See {bit rot}. People with a physics background tend to prefer this variant for the analogy with particle decay. See also {computron}, {quantum bogodynamics}. bit diddling See {bit bashing}. bite It's spelled "{byte}" to avoid confusion with "{bit}". bitmap A data file or structure which corresponds bit for bit with an image displayed on a screen, probably in the same format as it would be stored in the display's video memory. A bitmap is characterised by the width and height of the image. A bitmap may represent a coloured image, in which case there will be more that one bit for each {pixel} and it might be called a {pixmap}. bitmap display A computer output device where each {pixel} displayed corresponds directly to one or more bits in the computer's video memory. Such a display can be updated extremely rapidly since changing a pixel involves only a single processor write to memory compared with a terminal connected via a serial line where the speed of the serial line limits the speed at which the display can be changed. Most modern {personal computer}s and {workstation}s have bitmap displays, allowing the efficient use of {graphical user interface}s, interactive graphics and a choice of on-screen {font}s. Some more expensive systems still delegate graphics operations to dedicated hardware such as {graphic accelerator}s. The bitmap display might be traced back to the earliest days of computing when the Manchester University Mark I(?) computer, developed by F.C. Williams and T. Kilburn shortly after the Second World War. This used a {storage tube} as its working memory. Phosphor dots were used to store single bits of data which could be read by the user and interpreted as binary numbers. [Is this history correct? Was it ever used to display "graphics"? What was the resolution?] (16 Feb 1995) bitmap font A {font} where each character is stored as an {array} of {pixel}s (a {bitmap}). Such fonts are not easily scalable, in contrast to {vectored font}s (like those used in {Postscript}). [Examples?] (16 Feb 1995) bit mask A pattern of {binary} values which is combined with some value using {bitwise} AND with the result that bits in the value in positions where the mask is zero are also set to zero. For example, if, in {C}, we want to test if bits 0 or 2 of x are set, we can write int mask = 5; /* binary 101 */ if (x & mask) ... A bit mask might also be used to set certain bits using bitwise OR, or to invert them using bitwise {exclusive OR}. (12 May 1995) BITNET /bit'net/ (Because It's Time NETwork) An academic and research computer network connecting approximately 2500 computers. BITNET provides interactive, {electronic mail} and file transfer services, using a {store-and-forward} {protocol}, based on {IBM} {Network Job Entry} protocols. Bitnet-II encapsulates the Bitnet protocol within {IP} {packet}s and depends on the {Internet} to route them. BITNET traffic and Internet traffic are exchanged via several {gateway} hosts. BITNET is now operated by {CREN}. BITNET is everybody's least favourite piece of the network. The BITNET hosts are a collection of {IBM} {dinosaur}s and {VAXen} (the latter with lobotomised communications hardware) that communicate using 80-character {EBCDIC} card images (see {eighty-column mind}); thus, they tend to mangle the {header}s and text of third-party traffic from the rest of the {ASCII}/{RFC 822} world with annoying regularity. BITNET is also notorious as the apparent home of {BIFF}. (29 Nov 1994) bit-paired keyboard (Obsolete, or "bit-shift keyboard") A non-standard keyboard layout that seems to have originated with the {Teletype} {ASR-33} and remained common for several years on early computer equipment. The ASR-33 was a mechanical device (see {EOU}), so the only way to generate the character codes from keystrokes was by some physical linkage. The design of the ASR-33 assigned each character key a basic pattern that could be modified by flipping bits if the SHIFT or the CTRL key was pressed. In order to avoid making the thing more of a Rube Goldberg {kluge} than it already was, the design had to group characters that shared the same basic bit pattern on one key. Looking at the {ASCII} chart, we find: high low bits bits 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 010 ! " # $ % & ' ( ) 011 0 1 2 3 4 5 6 7 8 9 This is why the characters !"#$%&'() appear where they do on a Teletype (thankfully, they didn't use shift-0 for space). This was *not* the weirdest variant of the {QWERTY} layout widely seen, by the way; that prize should probably go to one of several (differing) arrangements on {IBM}'s even clunkier 026 and 029 card punches. When electronic terminals became popular, in the early 1970s, there was no agreement in the industry over how the keyboards should be laid out. Some vendors opted to emulate the Teletype keyboard, while others used the flexibility of electronic circuitry to make their product look like an office typewriter. These alternatives became known as "bit-paired" and "typewriter-paired" keyboards. To a hacker, the bit-paired keyboard seemed far more logical - and because most hackers in those days had never learned to touch-type, there was little pressure from the pioneering users to adapt keyboards to the typewriter standard. The doom of the bit-paired keyboard was the large-scale introduction of the computer terminal into the normal office environment, where out-and-out technophobes were expected to use the equipment. The "typewriter-paired" standard became universal, "bit-paired" hardware was quickly junked or relegated to dusty corners, and both terms passed into disuse. (20 Feb 1995) bit rot (Or {bit decay}) Hypothetical disease the existence of which has been deduced from the observation that unused programs or features will often stop working after sufficient time has passed, even if "nothing has changed". The theory explains that bits decay as if they were radioactive. As time passes, the contents of a file or the code in a program will become increasingly garbled. There actually are physical processes that produce such effects (alpha particles generated by trace radionuclides in ceramic chip packages, for example, can change the contents of a computer memory unpredictably, and various kinds of subtle media failures can corrupt files in mass storage), but they are quite rare (and computers are built with error-detecting circuitry to compensate for them). The notion long favoured among hackers that cosmic rays are among the causes of such events turns out to be a myth; see the {cosmic rays} entry for details. Bit rot is the notional cause of {software rot}. (29 Nov 1994) bit slice A technique for constructing a processor from modules, each of which processes one bit-field or "slice" of an operand. Bit slice processors usually consist of an {ALU} of 1, 2, 4 or 8 bits and control lines (including carry or overflow signals usually internal to the {CPU}). For example, two 4-bit ALUs could be arranged side by side, with control lines between them, to form an ALU of 8-bits. A sequencer executes a program to provide data and control signals. The {AMD Am2901} is an example. (15 Nov 1994) bits per inch (BPI) A measure of the recording density of a {magnetic tape} or {disk}. (13 Apr 1995) bit stuffing A {protocol} which guarantees the receiver of {synchronous} data can recover the sender's clock. When the data stream sent contains a large number of adjacent bits which cause no transition of the signal, the receiver cannot adjust its clock to maintain proper synchronised reception. To eliminate the possibility of such a pathological case, when a preset number of transitionless bits have been transmitted, a bit which does cause a transition is "stuffed" (transmitted) by the sender. The receiver follows the same protocol and removes the stuffed bit after the specified number of transitionless bits, but can use the stuffed bit to recover the sender's clock. The advantage of bit stuffing is that only a bit (not a {byte}) is inserted in the data stream, and that only when the content of the data stream fails to provide a timing signal to the receiver. Thus very nearly 100% of the bits transported are useful data. In contrast, {asynchronous} transmission of data "throws away" a start bit and one or more stop bits for each data byte sent. (23 Apr 1996) bit twiddling 1. (pejorative) An exercise in tuning (see {tune}) in which incredible amounts of time and effort go to produce little noticeable improvement, often with the result that the code becomes incomprehensible. 2. Aimless small modification to a program, especially for some pointless goal. 3. {bit bashing}, especially used for the act of frobbing the device control register of a peripheral in an attempt to get it back to a known state. bitty box /bit'ee boks/ A computer sufficiently small, primitive, or incapable as to cause a hacker acute claustrophobia at the thought of developing software on or for it. The term is especially used of small, obsolescent, {single-tasking}-only {personal computer}s such as the {Atari 800}, {Osborne}, {Sinclair}, {VIC-20}, {TRS-80} or {IBM PC} but the term is a general pejorative opposite of "real computer" (see {Get a real computer!}). See also {mess-dos}, {toaster}, {toy}. (29 Nov 1994) bitwise A bitwise operator treats its operands as a {vector} of {bit}s rather than a single number. {Boolean} bitwise operators combine bit N of each operand using a {Boolean} function ({NOT}, {AND}, {OR}, {XOR}) to produce bit N of the result. For example, a bitwise AND operator ("&" in {C}) would evaluate 13 & 9 as (binary) 1101 & 1001 = 1001 = 9, wheras, the logical AND, ({C} "&&") would evaluate 13 && 9 as TRUE && TRUE = TRUE = 1. In some languages, e.g. {Acorn}'s {BASIC V}, the same operators are used for both bitwise and logical operations. This usually works except when applying NOT to a value x which is neither 0 (false) nor -1 (true), in which case both x and (NOT x) will be non-zero and thus treated as TRUE. Other operations at the bit level, which are not normally described as "bitwise" include shift and rotate. (12 May 1995) bitwise complement The bitwise complement of a {bit field} is a bit field of the same length but with each zero changed to a one and vice versa. This is the same as the {ones complement} of a binary integer. (14 Nov 1994) bixie /bik'see/ Variant {emoticon}s used on {Byte Information eXchange}. The {smiley} bixie is <@_@>, apparently intending to represent two cartoon eyes and a mouth. A few others have been reported. (29 Nov 1994) Bjarne Stroustrup The father of {C++} and author of the C++ {bible}. E-mail: . ["The C++ Programming Language", Bjarne Stroustrup, Addison-Wesley, 1986]. (14 Feb 1995) BJC4000 A colour {bubble jet} printer from {Canon}. Released in September 1994. It features 720 x 360 dots per inch in black and white mode and 360 x 360 in colour. It has two cartridges: one for black and one for the three primary colours so it prints true black when printing in colour. (29 Nov 1994) black art A collection of arcane, unpublished, and (by implication) mostly ad-hoc techniques developed for a particular application or systems area (compare {black magic}). VLSI design and compiler code optimisation were (in their beginnings) considered classic examples of black art; as theory developed they became {deep magic}, and once standard textbooks had been written, became merely {heavy wizardry}. The huge proliferation of formal and informal channels for spreading around new computer-related technologies during the last twenty years has made both the term "black art" and what it describes less common than formerly. See also {voodoo programming}. black-box testing {functional testing} Black Data Processing Associates (BDPA) A non-profit professional association, founded in 1975 to promote positive influence in the {information technology} (IT) industry and how it affects African Americans. The BDPA facilitates African American professional participation in local and national activities keeping up with developing IT trends. BDPA offers a forum for exchanging information and ideas about the computer industry. It provides numerous networking opportunities through monthly program meetings, seminars, and workshops and the annual national conference. Membership is open to anyone interested in IT. The Foundation provides scholarships to students who compete in an annual {Visual Basic} competition. {Home (http://www.bdpa.org/conf96)} E-mail: . Telephone: Ms. Pat Drumming, +1 (800) 727-BDPA. (07 Apr 1996) black hole 1. An expression which depends on its own value or a technique to detect such expressions. In graph reduction, when the reduction of an expression is begun, the root of the expression can be overwritten with a black hole. If the expression depends on its own value, e.g. x = x + 1 then it will try to evaluate the black hole which will usually print an error message and abort the program. A secondary effect is that, once the root of the expression has been black-holed, parts of the expression which are no longer required may be freed for garbage collection. Without black holes the usual result of attempting to evaluate an expression which depends on itself would be a stack overflow. If the expression is evaluated successfully then the black hole will be updated with the value. Expressions such as ones = 1 : ones are not black holes because the list constructor, : is lazy so the reference to ones is not evaluated when evaluating ones to WHNF. 2. Where an {electronic mail} message or {news} aritcle has gone if it disappears mysteriously between its origin and destination sites without returning a {bounce message}. Compare {bit bucket}. black magic A technique that works, though nobody really understands why. More obscure than {voodoo programming}, which may be done by cookbook. Compare also {black art}, {deep magic}, and {magic number} (sense 2). blargh /blarg/ [MIT] The opposite of {ping}. An exclamation indicating that one has absorbed or is emitting a quantum of unhappiness. Less common than {ping}. blast 1. {BLT}, used especially for large data sends over a network or comm line. Opposite of {snarf}. Usage: uncommon. The variant "blat" has been reported. 2. [HP/Apollo] Synonymous with {nuke}. Sometimes the message "Unable to kill all processes. Blast them (y/n)?" would appear in the command window upon logout. blat 1. {blast}. 2. See {thud}. BLAZE A {single assignment} language for {parallel processing}. ["The BLAZE Language: A Parallel Language for Scientific Programming", P. Mehrotra et al, J Parallel Comp 5(3):339-361 (Nov 1987)]. BLAZE 2 An {object-oriented} successor to {BLAZE}. ["Concurrent Object Access in BLAZE 2", P. Mehrotra et al, SIGPLAN Notices 24(4):40-42 (Apr 1989)]. bletcherous /blech'*-r*s/ Disgusting in design or function; esthetically unappealing. This word is seldom used of people. "This keyboard is bletcherous!" (Perhaps the keys don't work very well, or are misplaced.) The term {bletcherous} applies to the esthetics of the thing so described; similarly for cretinous. By contrast, something that is "losing" or "bagbiting" may be failing to meet objective criteria. Bletchley Park A country house and grounds some 50 miles north of London, England, where highly secret work deciphering intercepted German military radio messages was carried out during World War Two. Thousands of people were working there at the end of the war, including a number of early computer pioneers such as {Alan Turing}. The nature and scale of the work has only emerged recently, with total secrecy having been observed by all the people involved. Throughout the war, Bletchley Park produced highly important strategic and tactical intelligence used by the Allies, (Churchill's "golden eggs"), and it has been claimed that the war in Europe was probably shortened by two years as a result. There is an exhibition of wartime code-breaking memorabilia including fragments of a {Colossus}, a wartime semi-fixed-program {vacuum tube} calculator at Bletchley Park on alternate weekends. The {Computer Conservation Society} (CCS), a specialist group of the {British Computer Society}, has been asked to help the planning and preparation of a Historical Computer Exhibition there. It is hoped that the CCS will have substantial facilities for storage of old artifacts and for restoration workshops, as well as archive, library and research facilities. Telephone: Bletchley Park Trust office +44 (908) 640 404 (office hours and open weekends). (17 Nov 1994) B-LINE An early {CAD} language. ["B-LINE, Bell Line Drawing Language", A.J. Frank, Proc Fall JCC 33 1968]. (17 Nov 1994) blinkenlights /blink'*n-li:tz/ Front-panel diagnostic lights on a computer, especially a {dinosaur}. Derives from the last word of the famous blackletter-Gothic sign in mangled pseudo-German that once graced about half the computer rooms in the English-speaking world. One version ran in its entirety as follows: ACHTUNG! ALLES LOOKENSPEEPERS! Das computermachine ist nicht fuer gefingerpoken und mittengrabben. Ist easy schnappen der springenwerk, blowenfusen und poppencorken mit spitzensparken. Ist nicht fuer gewerken bei das dumpkopfen. Das rubbernecken sichtseeren keepen das cotten-pickenen hans in das pockets muss; relaxen und watchen das blinkenlichten. This silliness dates back at least as far as 1959 at Stanford University and had already gone international by the early 1960s, when it was reported at London University's ATLAS computing site. There are several variants of it in circulation, some of which actually do end with the word "blinkenlights". In an amusing example of turnabout-is-fair-play, German hackers have developed their own versions of the blinkenlights poster in fractured English, one of which is reproduced here: ATTENTION This room is fullfilled mit special electronische equippment. Fingergrabbing and pressing the cnoeppkes from the computers is allowed for die experts only! So all the "lefthanders" stay away and do not disturben the brainstorming von here working intelligencies. Otherwise you will be out thrown and kicked anderswhere! Also: please keep still and only watchen astaunished the blinkenlights. See also {geef}. BLISS Basic Language for Implementation of System Software (or allegedly, "System Software Implementation Language, Backwards"). Designed by W.A. Wulf, {CMU} ca. 1969. An expression language, block-structured, and typeless, with exception handling facilities, {coroutine}s, a {macro} system, and a highly optimising compiler. One of the first non-assembly languages for {operating system} implementation. Gained fame for its lack of a {goto}. Also lacks implicit {dereferencing}: all symbols stand for addresses, not values. Versions: CMU {BLISS-10} for the PDP-10; CMU {BLISS-11}, DEC {BLISS-32} for {VAX}/{VMS}. ["BLISS: A Language for Systems Programming", W.A. Wulf et al, CACM 14(12):780-790. Dec 1971]. BLISS-10 A version of {BLISS} from {CMU} for the {PDP-10}. BLISS-11 A {cross-compiler} for the {PDP-11} running on a {PDP-10}. Written at {CMU} to support the {C.mmp}/{Hydra} project. BLISS-32 A version of {BLISS} from DEC for {VAX}/{VMS}. blit /blit/ 1. To copy a large array of bits from one part of a computer's memory to another part, particularly when the memory is being used to determine what is shown on a display screen. "The storage allocator picks through the table and copies the good parts up into high memory, and then blits it all back down again." See {bitblt}, {BLT}, {dd}, {cat}, {blast}, {snarf}. More generally, to perform some operation (such as toggling) on a large array of bits while moving them. 2. Sometimes all-capitalised as "BLIT": an early experimental {bit-mapped} terminal designed by Rob Pike at {Bell Labs}, later commercialised as the {AT&T 5620}. (The folk etymology from "Bell Labs Intelligent Terminal" is incorrect. Its creators liked to claim that "Blit" stood for the Bacon, Lettuce, and Interactive Tomato). (16 Nov 1994) blitter /blit'r/ (Or "{raster blaster}"). A special-purpose {integrated circuit} or hardware system built to perform {blit} (or "{bit bang}") operations, especially used for fast implementation of {bit-mapped} graphics. The {Commodore} {Amiga} and a few other {microcomputers} have these, but in 1991 the trend is away from them (however, see {cycle of reincarnation}). (30 Apr 1996) blivet /bliv'*t/ [allegedly from a World War II military term meaning "ten pounds of manure in a five-pound bag"] 1. An intractable problem. 2. A crucial piece of hardware that can't be fixed or replaced if it breaks. 3. A tool that has been hacked over by so many incompetent programmers that it has become an unmaintainable tissue of hacks. 4. An out-of-control but unkillable development effort. 5. An embarrassing bug that pops up during a customer demo. 6. In the subjargon of computer security specialists, a denial-of-service attack performed by hogging limited resources that have no access controls (for example, shared spool space on a multi-user system). This term has other meanings in other technical cultures; among experimental physicists and hardware engineers of various kinds it seems to mean any random object of unknown purpose (similar to hackish use of {frob}). It has also been used to describe an amusing trick-the-eye drawing resembling a three-pronged fork that appears to depict a three-dimensional object until one realises that the parts fit together in an impossible way. bloat {software bloat} bloatware {Software} suffering from {software bloat}. (14 Oct 1995) BLOB {binary large object} block 1. A unit of data or memory, often, but not exclusively, on a disk. Compare {record}, {sector}. 2. To delay or sit idle while waiting for something. Compare {busy-wait}. blocked records Several {record}s written as a contiguous block on {magnetic tape} so that they may be accessed in a single I/O operation. Blocking increases the amount of data that may be stored on a tape because there are fewer {inter-block gap}s. It requires that the tape drive or processor have a sufficiently large buffer to store the whole block. (13 Apr 1995) Block Started by Symbol (BSS) The uninitialised data segment produced by Unix linkers. The other segments are the "text" segment which contains the program code and the "data" segment contains initialised data. Objects in the bss segment have only a name and a size but no value. block transfer computations [UK television series "Dr. Who"] Computations so fiendishly subtle and complex that they could not be performed by machines. Used to refer to any task that should be expressible as an {algorithm} in theory, but isn't. Bloggs Family, the An imaginary family consisting of Fred and Mary Bloggs and their children. Used as a standard example in knowledge representation to show the difference between extensional and intensional objects. For example, every occurrence of "Fred Bloggs" is the same unique person, whereas occurrences of "person" may refer to different people. Members of the Bloggs family have been known to pop up in bizarre places such as the DEC Telephone Directory. Compare {Mbogo, Dr. Fred}. Blosim Block-Diagram Simulator. A block-diagram simulator. "A Tool for Structured Functional Simulation", D.G. Messerschmitt, IEEE J on Selected Areas in Comm, SAC-2(1):137-147, 1984. blow an EPROM /bloh *n ee'prom/ (Or "blast", "burn") To program a {read-only memory}, e.g. for use with an {embedded system}. This term arose because the programming process for the {Programmable Read-Only Memory} (PROM) that preceded present-day {Erasable Programmable Read-Only Memory} (EPROM) involved intentionally blowing tiny electrical fuses on the chip. The usage lives on (it's too vivid and expressive to discard) even though the write process on EPROMs is nondestructive. (29 Nov 1994) blow away To remove (files and directories) from permanent storage, generally by accident. "He reformatted the wrong partition and blew away last night's netnews". Compare: {nuke}. (05 Jan 1996) blow out (Probably from mining and tunneling jargon) Of software, to fail spectacularly; almost as serious as {crash and burn}. See {blow past}, {blow up}, {die horribly}. (29 Nov 1994) blow past To {blow out} despite a safeguard. "The server blew past the 5K reserve buffer." (29 Nov 1994) blow up 1. Of a scientific computation: to become unstable. It suggests that the computation is diverging so rapidly that it will soon overflow or at least go {nonlinear}. 2. {blow out}. BLOX A {visual language}. BLT 1. /B-L-T/, /bl*t/ or (rarely) /belt/ Synonym for {blit}. This is the original form of {blit} and the ancestor of {bitblt}. It refers to any large bit-field copy or move operation (one resource-intensive memory-shuffling operation done on pre-paged versions of {ITS}, {WAITS} and {TOPS-10} was sardonically referred to as "The Big BLT"). The jargon usage has outlasted the {PDP-10} BLock Transfer instruction from which {BLT} derives; nowadays, the {assembly language} {mnemonic} {BLT} almost always means "Branch if Less Than zero". 2. bacon, lettuce and tomato (sandwich). Blue A language proposed by Softech to meet the {DoD} {Ironman} requirements which led to {Ada}. ["On the BLUE Language Submitted to the DoD", E.W. Dijkstra, SIGPLAN Notices 13(10):10-15 (Oct 1978)]. Blue Book 1. Informal name for one of the three standard references on the page-layout and graphics-control language {PostScript} ["PostScript Language Tutorial and Cookbook", Adobe Systems, Addison-Wesley 1985, QA76.73.P67P68, ISBN 0-201-10179-3]. The other three official guides are known as the {Green Book}, the {Red Book}, and the {White Book}. 2. Informal name for one of the three standard references on Smalltalk. ["Smalltalk-80: The Language and its Implementation", David Robson, Addison-Wesley 1983, QA76.8.S635G64, ISBN 0-201-11371-63]. This book also has green and red siblings. 3. Any of the 1988 standards issued by the {ITU-T}'s ninth plenary assembly. These include, among other things, the {X.400} {electronic mail} specification and the Group 1 through 4 fax standards. See also {book titles}. (12 Oct 1995) Blue Glue [IBM] IBM's SNA (Systems Network Architecture), an incredibly {losing} and bletcherous communications protocol widely favoured at commercial shops that don't know any better. The official IBM definition is "that which binds blue boxes together." See {fear and loathing}. It may not be irrelevant that {Blue Glue} is the trade name of a 3M product that is commonly used to hold down the carpet squares to the removable panel floors common in {dinosaur pen}s. A correspondent at U. Minn. reports that the CS department there has about 80 bottles of the stuff hanging about, so they often refer to any messy work to be done as "using the blue glue". blue goo Term for "police" {nanobot}s intended to prevent {gray goo}, denature hazardous waste, destroy pollution, put ozone back into the stratosphere, prevent halitosis, and promote truth, justice, and the American way, etc. See {nanotechnology}. (29 Nov 1994) blue wire (IBM) Patch wires added to circuit boards at the factory to correct design or fabrication problems. These may be necessary if there hasn't been time to design and qualify another board version. Compare {purple wire}, {red wire}, {yellow wire}. (29 Nov 1994) blurgle /bler'gl/ [Great Britain] Spoken {metasyntactic variable}, to indicate some text that is obvious from context, or which is already known. If several words are to be replaced, blurgle may well be doubled or trebled. "To look for something in several files use "{grep} string blurgle blurgle"." In each case, "blurgle blurgle" would be understood to be replaced by the file you wished to search. Compare {mumble}. BMASF Basic Module Algebra Specification Language? "Design of a Specification Language by Abstract Syntax Engineering", J.C.M. Baeten et al, in LNCS 490, pp.363-394. BMDP BioMeDical Package. A statistical language developed at {UCB} in 1961, first implemented in {FORTRAN} for the {IBM 7090}. (13 Mar 1995) B-Method A system for rigorous or formal development of software using the notion of {Abstract Machine}s to specify and design software systems. The B-Method is supported by the {B-Toolkit}. Abstract Machines are specified using the Abstract Machine Notation (AMN) which is in turn based on the mathematical theory of {Generalised Substitution}s. (13 Mar 1995) BMF {Bird-Meertens Formalism} bmp {Microsoft Windows} {Bitmap} format. BMP files may use {run-length encoding}. [Format?] (05 Jan 1995) BMWF Austrian Ministry of Science. BNC A connector for {coaxial cable} such as that used for some video connections and {RG58} "{cheapernet}" connections. A BNC connector has a bayonet-type shell with two small knobs on the female connector which lock into spiral slots in the male connector when it is twisted on. Different sources expand BNC as Bayonet Navy Connector, British Naval Connector, Bayonet Neill Concelman, or Bayonet Nut Connection. (18 Sep 1995) BNF {Backus-Naur Form}. Originally Backus Normal Form. BNR Pascal ["Remote Rendezvous", N. Gammage et al, Soft Prac & Exp 17(10):741-755 (Oct 1987)]. (21 Dec 1994) BNR Prolog A {constraint logic} language. [Details?] (21 Dec 1994) boa [IBM] Any one of the fat cables that lurk under the floor in a {dinosaur pen}. Possibly so called because they display a ferocious life of their own when you try to lay them straight and flat after they have been coiled for some time. It is rumored within IBM that channel cables for the 370 are limited to 200 feet because beyond that length the boas get dangerous --- and it is worth noting that one of the major cable makers uses the trademark "Anaconda". board 1. In-context synonym for {bboard}; sometimes used even for {Usenet} newsgroups. 2. An electronic circuit board. boat anchor 1. Like {doorstop} but more severe; implies that the offending hardware is irreversibly dead or useless. "That was a working motherboard once. One lightning strike later, instant boat anchor!" 2. A person who just takes up space. 3. Obsolete but still working hardware, especially when used of an old S100-bus hobbyist system; originally a term of annoyance, but became more and more affectionate as the hardware became more and more obsolete. Bob David Betz. A tiny object-oriented language. {(ftp://ftp.mv.com/pub/ddj/packages/bob15.arc)} [Dr Dobbs J, Sep 1991, p.26]. BOCS Berard Object and Class Specifier, an Object-oriented CASE tool from Berard Software Engineering. Boehm B. Proposed the COCOMO technique for evaluating the cost of a software project. BOEING Early system on IBM 1103 or 1103A. Listed in CACM 2(5):16 (May 1959). BOF /B-O-F/ or /bof/ 1. {Birds Of a Feather}. 2. Boring Old Fart. BOFH {Bastard Operator From Hell} bogometer /boh-gom'-*t-er/ A notional instrument for measuring {bogosity}. Compare the "wankometer" described in the {wank} entry; see also {bogus}. bogon /boh'gon/ [by analogy with proton/electron/neutron, but doubtless reinforced after 1980 by the similarity to Douglas Adams's "Vogons"] 1. The elementary particle of bogosity (see {quantum bogodynamics}). For instance, "the Ethernet is emitting bogons again" means that it is broken or acting in an erratic or bogus fashion. 2. A query {packet} sent from a {TCP/IP} {domain resolver} to a root server, having the reply bit set instead of the query bit. 3. Any bogus or incorrectly formed packet sent on a network. 4. A person who is bogus or who says bogus things. This was historically the original usage, but has been overtaken by its derivative senses. See also {bogosity}, {bogus}; compare {psyton}, {fat electrons}, {magic smoke}. The bogon has become the type case for a whole bestiary of nonce particle names, including the "clutron" or "cluon" (indivisible particle of cluefulness, obviously the antiparticle of the bogon) and the futon (elementary particle of {randomness}, or sometimes of lameness). These are not so much live usages in themselves as examples of a live meta-usage: that is, it has become a standard joke or linguistic maneuver to "explain" otherwise mysterious circumstances by inventing nonce particle names. And these imply nonce particle theories, with all their dignity or lack thereof (we might note parenthetically that this is a generalisation from "(bogus particle) theories" to "bogus (particle theories)"!). Perhaps such particles are the modern-day equivalents of trolls and wood-nymphs as standard starting-points around which to construct explanatory myths. Of course, playing on an existing word (as in the "futon") yields additional flavour. bogon filter /boh'gon fil'tr/ Any device, software or hardware, that limits or suppresses the flow and/or emission of bogons. "Engineering hacked a bogon filter between the {Cray} and the {VAXen}, and now we're getting fewer dropped packets." See also {bogosity}, {bogus}. bogon flux /boh'gon fluhks/ A measure of a supposed field of {bogosity} emitted by a speaker, measured by a {bogometer}; as a speaker starts to wander into increasing bogosity a listener might say "Warning, warning, bogon flux is rising". See {quantum bogodynamics}. bogosity /boh-go's*-tee/ 1. The degree to which something is {bogus}. At CMU, bogosity is measured with a {bogometer}; in a seminar, when a speaker says something bogus, a listener might raise his hand and say "My bogometer just triggered". More extremely, "You just pinned my bogometer" means you just said or did something so outrageously bogus that it is off the scale, pinning the bogometer needle at the highest possible reading (one might also say "You just redlined my bogometer"). The agreed-upon unit of bogosity is the {microLenat}. 2. The potential field generated by a {bogon flux}; see {quantum bogodynamics}. See also {bogon flux}, {bogon filter}, {bogus}. bogo-sort /boh"goh-sort"/ (variant "stupid-sort") The archetypical perversely awful algorithm (as opposed to {bubble sort}, which is merely the generic *bad* algorithm). Bogo-sort is equivalent to repeatedly throwing a deck of cards in the air, picking them up at random, and then testing whether they are in order. It serves as a sort of canonical example of awfulness. Looking at a program and seeing a dumb algorithm, one might say "Oh, I see, this program uses bogo-sort." Compare {bogus}, {brute force}, {Lasherism}. bogotify /boh-go't*-fi:/ To make or become bogus. A program that has been changed so many times as to become completely disorganised has become bogotified. If you tighten a nut too hard and strip the threads on the bolt, the bolt has become bogotified and you had better not use it any more. This coinage led to the notional "autobogotiphobia" defined as "the fear of becoming bogotified"; but is not clear that the latter has ever been "live" jargon rather than a self-conscious joke in jargon about jargon. See also {bogosity}, {bogus}. bogue out /bohg owt/ To become bogus, suddenly and unexpectedly. "His talk was relatively sane until somebody asked him a trick question; then he bogued out and did nothing but {flame} afterwards." See also {bogosity}, {bogus}. bogus 1. Non-functional. "Your patches are bogus." 2. Useless. "OPCON is a bogus program." 3. False. "Your arguments are bogus." 4. Incorrect. "That algorithm is bogus." 5. Unbelievable. "You claim to have solved the halting problem for Turing Machines? That's totally bogus." 6. Silly. "Stop writing those bogus sagas." Astrology is bogus. So is a bolt that is obviously about to break. So is someone who makes blatantly false claims to have solved a scientific problem. (This word seems to have some, but not all, of the connotations of {random} - mostly the negative ones.) It is claimed that "bogus" was originally used in the hackish sense at {Princeton} in the late 1960s. It was spread to {CMU} and {Yale} by Michael Shamos, a migratory Princeton alumnus. A glossary of bogus words was compiled at Yale when the word was first popularised (see {autobogotiphobia} under {bogotify}). The word spread into hackerdom from CMU and {MIT}. By the early 1980s it was also current in something like the hackish sense in West Coast teen slang, and it had gone mainstream by 1985. A correspondent from {Cambridge}, UK reports, by contrast, that these uses of "bogus" grate on British nerves; in Britain the word means, rather specifically, "counterfeit", as in "a bogus 10-pound note". BOHICA /bo-hee-ka/ {Bend Over, Here It Comes Again}. Bohr bug /bohr buhg/ (From Quantum physics) A repeatable {bug}; one that manifests reliably under a possibly unknown but well-defined set of conditions. Compare {heisenbug}. See also {mandelbug}, {schroedinbug}. (28 Feb 1995) boink /boynk/ [{Usenet}: variously ascribed to the TV series "Cheers" "Moonlighting", and "Soap"] 1. To have sex with; compare {bounce}. (This is mainstream slang.) In Commonwealth hackish the variant "bonk" is more common. 2. After the original Peter Korn "Boinkon" {Usenet} parties, used for almost any net social gathering, e.g. Miniboink, a small boink held by Nancy Gillett in 1988; Minniboink, a Boinkcon in Minnesota in 1989; Humpdayboinks, Wednesday get-togethers held in the San Francisco Bay Area. Compare {@-party}. 3. Variant of "bonk"; see {bonk/oif}. Bolt, Beranek and Newman, Inc. (BBN) A company in Cambridge, Massachusetts, USA. They were awarded the original contract to build the {ARPANET} and have been extensively involved in {Internet} development. They are responsible for managing {NNSC}, {CSNET}, and {NEARnet}. (07 Oct 1994) [Butterfly?] bomb 1. General synonym for {crash} except that it is not used as a noun. Especially used of software or OS failures. "Don't run Empire with less than 32K stack, it'll bomb." 2. {Atari ST} and {Macintosh} equivalents of a {Unix} "{panic}" or {Amiga} {guru}, in which {icon}s of little black-powder bombs or mushroom clouds are displayed, indicating that the system has died. On the {Macintosh}, this may be accompanied by a decimal (or occasionally {hexadecimal}) number indicating what went wrong, similar to the {Amiga} {guru meditation} number. {MS-DOS} computers tend to get {locked up} in this situation. (16 Nov 1994) bondage-and-discipline language A language (such as {Pascal}, {Ada}, APL, or Prolog) that, though ostensibly general-purpose, is designed so as to enforce an author's theory of "right programming" even though said theory is demonstrably inadequate for systems hacking or even vanilla general-purpose programming. Often abbreviated "B&D"; thus, one may speak of things "having the B&D nature". See {Pascal}. Compare {languages of choice}. (05 Jan 1996) bonk/oif /bonk/, /oyf/ In the {MUD} community, it has become traditional to express pique or censure by "bonking" the offending person. Convention holds that one should acknowledge a bonk by saying "oif!" and there is a myth to the effect that failing to do so upsets the cosmic bonk/oif balance, causing much trouble in the universe. Some MUDs have implemented special commands for bonking and oifing. See also {talk mode}. Booch {(http://www.itr.ch/tt/case/BoochReferenz/)} [What is it?] (18 Jan 1995) bookmark A {Gopher} reference to a document which may be on the same server or a different one. Most {Gopher client}s can save a file of bookmarks to allow you to quickly located documents to which you want to refer frequently. Bookreader {DEC}'s {CD-ROM}-based on-line documentation browser. book titles There is a tradition in hackerdom of informally tagging important textbooks and standards documents with the dominant colour of their covers or with some other conspicuous feature of the cover. Many of these are described in {this dictionary} under their own entries. See {Aluminum Book}, {Blue Book}, {Cinderella Book}, {Devil Book}, {Dragon Book}, {Green Book}, {Orange Book}, {Pink-Shirt Book}, {Purple Book}, {Red Book}, {Silver Book}, {White Book}, {Wizard Book}, {Yellow Book}, {bible}, {rainbow series}. Bookviewer A hypertext documentation system from Oracle based on Oracle Toolkit. It allows the user to create private links and bookmarks, and to make multimedia annotations. bool A {Boolean} variable or value. (25 Mar 1995) Boolean 1. {Boolean algebra}. 2. (The type of) a variable with two possible values. Boolean algebra (After the logician {George Boole}). A mathematical system concerning the two {truth value}s, TRUE and FALSE and the functions {AND}, {OR} and {NOT}. Boolean algebra is one of the cornerstones of {logic} and is also fundamental in the design of digital electronics and programming languages. Boolean functions are ususally represented by {truth table}s where "0" represents "false" and "1" represents "true". E.g.: A | B | A AND B --+---+-------- 0 | 0 | 0 0 | 1 | 0 1 | 0 | 0 1 | 1 | 1 This can be given more compactly using "x" to mean "don't care" (either true or false): A | B | A AND B --+---+-------- 0 | x | 0 x | 0 | 0 1 | 1 | 1 Similarly: A | NOT A A | B | A OR B --+------ --+---+-------- 0 | 1 0 | 0 | 0 1 | 0 x | 1 | 1 1 | x | 1 Other functions such as {XOR}, {NAND}, {NOR} or functions or more than two inputs can be constructed using combinations of AND, OR and NOT. AND and OR can be constructed from each other using {DeMorgan's Theorem}: A OR B = NOT ((NOT A) AND (NOT B)) A AND B = NOT ((NOT A) OR (NOT B)) In fact any Boolean function can be constructed using just NOR or just NAND using the identities: NOT A = A NOR A A OR B = NOT (A NOR B) and {DeMorgan's Theorem}. (05 Jan 1995) Boolean logic A {logic} based on {Boolean algebra}. (25 Mar 1995) Boole, George {George Boole} Booster A {data-parallel} language. "The Booster Language", E. Paalvast, TR PL 89-ITI-B-18, Inst voor Toegepaste Informatica TNO, Delft, 1989. boot (from "{bootstrap}" or "to pull oneself up by one's bootstraps") To load and initialise the {operating system} on a computer. See {reboot}, {cold boot}, {warm boot}, {soft boot}, {hard boot}, {bootstrap}, {bootstrap loader}. (27 Nov 1995) BOOTP The Bootstrap Protocol. A {protocol} described in {RFC}s 951 and 1084 and used for booting {diskless workstation}s. See also {Reverse Address Resolution Protocol}. (16 Feb 1995) bootstrap 1. (From "to pull oneself up by one's bootstraps") To load and initialise the {operating system} on a computer. Normally abbreviated to "{boot}". See {bootstrap loader}. 2. (From "to pull oneself up by one's bootstraps") to use a {compiler} to compile itself. The usual process is to write an {interpreter} for a language, L, in an existing language, M. The compiler is then written in L and the interpreter is used to run it. This produces an {executable} for compiling programs in L from the source of the compiler in L. This technique is often used to verify the correctness of a compiler. It was first used in the {LISP} community. See also {my favourite toy language}. (27 November 1995) bootstrap loader (from "{bootstrap}" or "to pull oneself up by one's bootstraps") A short {program} that was read in from {card}s or {paper tape}, or {toggle}d in from the {front panel} switches, which read in a more complex {program} to which it gave control. On early computers the bootstrap loader was always very short (great efforts were expended on making it short in order to minimise the labour and chance of error involved in toggling it in), but was just smart enough to read in a slightly more complex {program} (usually from a card or {paper tape} reader), to which it handed control; this {program} in turn was smart enough to read the {application} or {operating system} from a {magnetic tape} drive or {disk drive}. Thus, in successive steps, the {computer} "pulled itself up by its bootstraps" to a useful operating state. Nowadays the bootstrap is usually found in {ROM} or {EPROM}, and reads the first stage in from a fixed location on the {disk}, called the "{boot block}". When this {program} gains control, it is powerful enough to load the actual {OS} and hand control over to it. See {boot}. (27 November 1995) boot virus An {MS-DOS} {virus} that infects the {boot record} program on {hard disk}s and {floppy disk}s or the {master boot record} on hard disks. The virus gets loaded into memory before {MS-DOS} and takes control of the computer, infecting any floppy disks subsequently accessed. An infected {boot disk} may stop the computer starting up at all. (16 Feb 1995) Border Gateway Protocol (BGP) An {Exterior Gateway Protocol} defined in {RFC 1267} and {RFC 1268}. Its design is based on experience gained with {Exterior Gateway Protocol} (EGP), as defined in {STD} 18, {RFC 904} and EGP usage in the {NSFNet} {backbone}, as described in RFCs 1092 and 1093. (29 Nov 1994) Borland International, Inc. A company selling a variety of {IBM PC} software development and {database} systems. Borland was founded in 1983 and initially became famous for their low-cost software, particularly {Turbo Pascal}, {Turbo C}, and {Turbo Prolog}. Current products include the {Borland C++} C++ and C developement environment, the {Paradox} and {dBASE} {databases}, {Delphi}, and {InterBase}. Borland has approximately 1000 employees worldwide and has operations in Australia, Canada, France, Germany, Japan, Netherlands, and the United Kingdom. Borland sold {Quattro} Pro to {Novell} in 1994 for $100M. Quarterly sales $69M, profits $61M (Aug 1994). {Home (http://www.borland.com/)}. Headquarters: 100 Borland Way, Scotts Valley, CA, 95066, USA. Telephone: +1 (408) 431 1000. (27 May 1996) BOS 1. A data management system written at {DESY} and used in some high energy physics programs. 2. The Basic Object System. A {C}-callable library that implements the notion of object and which uses {Tcl} as its {interpreter} for interpreted {method}s (you can have "compiled" methods in C, and mix compiled and interpreted methods in the same object, plus lots more stuff). I regularly (a) subclass and (b) mixin existing objects using BOS to extend, among other things, the set of {tk} {widget}s (I have all tk widgets wrapped with BOS "classes"). BOS is a {class}-free object system, also called a prototype-based object system; it is modelled loosely on the {Self} system from {Stanford University}. (21 Aug 1992). Version 1.31 by Sean Levy . {(ftp://barkley.berkeley.edu/tcl)} Bose-Chaudhuri-Hocquenghem Code (BHC Code) An {error detection and correction} technique based on {Cyclic Redundancy Code}, used in telecommunications applications. (16 Jan 1995) BOSS Bridgport Operating System Software. A derivative of the {ISO 1054} numerical machine control language for milling, etc. bottom The least defined element in a given {domain}. Often used to represent a non-terminating computation. (In {LaTeX}, bottom is written as {\perp}, sometimes with the domain as a subscript). bottom feeder Synonym for {slopsucker}, derived from the fishermen's and naturalists' term for finny creatures who subsist on the primordial ooze. bottom-unique In {domain theory}, a function f is bottom-unique if f x = bottom <=> x = bottom A bottom-unique function is also {strict}. bottom-up implementation The opposite of {top-down design}. It is now received wisdom in most programming cultures that it is best to design from higher levels of abstraction down to lower, specifying sequences of action in increasing detail until you get to actual code. Hackers often find (especially in exploratory designs that cannot be closely specified in advance) that it works best to *build* things in the opposite order, by writing and testing a clean set of primitive operations and then knitting them together. (10 May 1996) bottom-up model A method for estimating the cost of a complete software project by combining estimates for each component. (28 May 1996) bottom-up testing An integration testing technique that tests the low-level components first using test drivers for those components that have not yet been developed to call the low-level components for test. Compare {bottom-up implementation}. (10 May 1996) bounce 1. (Perhaps by analogy to a bouncing check) An {electronic mail} message that is undeliverable and returns an error notification (a "{bounce message}") to the sender is said to "bounce". 2. To play volleyball. The now-demolished {D. C. Power Lab} building used by the {Stanford AI Lab} in the 1970s had a volleyball court on the front lawn. From 5 PM to 7 PM was the scheduled maintenance time for the computer, so every afternoon at 5 would come over the intercom the cry: "Now hear this: bounce, bounce!", followed by Brian McCune loudly bouncing a volleyball on the floor outside the offices of known volleyballers. 3. To engage in sexual intercourse; probably from the expression "bouncing the mattress", but influenced by Roo's psychosexually loaded "Try bouncing me, Tigger!" from the "Winnie-the-Pooh" books. Compare {boink}. 4. To casually reboot a system in order to clear up a transient problem. Reported primarily among {VMS} users. 5. (VM/CMS programmers) Automatic warm-start of a computer after an error. "I logged on this morning and found it had bounced 7 times during the night" 6. (IBM) To {power cycle} a peripheral in order to reset it. (29 Nov 1994) bounce message A notification message returned to the sender by a site unable to relay {e-mail} to the intended recipient or the next link in a {bang path}. Reasons might include a nonexistent or misspelled username or a {down} relay site. Bounce messages can themselves fail, with occasionally ugly results; see {sorcerer's apprentice mode} and {software laser}. The terms "bounce mail" and "barfmail" are also common. (29 Nov 1994) boundary scan The use of {scan register}s to capture state from device input and output pins. {IEEE} Standard 1149.1-1990 describes the international standard implementation (sometimes called JTAG after the Joint Test Action Group which began the standardisation work). (14 Feb 1995) boundary value analysis A test data selection technique in which values are chosen to lie along data extremes. Boundary values include maximum, minimum, just inside/outside boundaries, typical values, and error values. The hope is that, if a systems works correctly for these special values then it will work correctly for all values in between. (10 May 1996) bounded In {domain theory}, a subset S of a {cpo} X is bounded if there exists x in X such that for all s in S, s <= x. In other words, there is some element above all of S. If every bounded subset of X has a least upper bound then X is boundedly {complete}. ("<=" is written in {LaTeX} as {\subseteq}). (03 Feb 1995) boundedly complete In domain theory, a complete partial order is boundedly complete if every bounded subset has a least upper bound. Also called consistently complete. bound variable 1. A bound variable or {formal argument} in a function definition is replaced by the {actual argument} when the function is applied. In the {lambda abstraction} \ x . M x is the bound variable. However, x is a {free variable} of the term M when M is considered on its own. M is the {scope} of the binding of x. 2. In logic a bound variable is a quantified variable. See {quantifier}. bournebasic A {BASIC} {interpreter}. comp.sources.misc archives volume 1. Bourne shell (sh, Shellish). The original {command line interpreter} {shell} and script language for {Unix} written by S.R. Bourne of {Bell Laboratories} in 1978. sh has been superseded for interactive use by the {Berkeley} {C shell}, {csh} but still widely used for writing {shell script}s. There were even earlier shells, see {glob}. [Details?] {ash} is a Bourne Shell clone. ["Unix {Time-Sharing} System: The Unix Shell", S.R. Bourne, Bell Sys Tech J 57(6):1971-1990 (Jul 1978)]. boustrophedonic (From the Greek "boustrophe-don": turning like oxen in plowing; from "bous": ox, cow; "strephein": to turn) An ancient method of writing using alternate left-to-right and right-to-left lines. It used for an optimisation performed by some computer typesetting software and moving-head printers to reduce physical movement of the print head. The adverbial form "boustrophedonically" is also found. (29 Nov 1994) box 1. A computer; especially in the construction "foo box" where foo is some functional qualifier, like "graphics", or the name of an {operating system} (thus, "Unix box", "{MS-DOS} box", etc.) "We preprocess the data on Unix boxes before handing it up to the mainframe." The plural "{boxen}" is sometimes seen. 2. Without qualification but within an {IBM} {SNA}-using site, this refers specifically to an {IBM} {front-end processor}. (29 Nov 1994) boxed comments Comments (explanatory notes attached to program instructions) that occupy several lines by themselves; so called because in assembler and C code they are often surrounded by a box in a style something like this: /************************************************* * * This is a boxed comment in C style * *************************************************/ Common variants of this style omit the asterisks in column 2 or add a matching row of asterisks closing the right side of the box. The sparest variant omits all but the comment delimiters themselves; the "box" is implied. Opposite of {winged comments}. boxen /bok'sn/ (By analogy with {VAXen}) A fanciful plural of {box} often encountered in the phrase "Unix boxen", used to describe commodity {Unix} hardware. The connotation is that any two Unix boxen are interchangeable. (29 Nov 1994) Boxer A {visual language} by Hal Abelson and Andy diSessa of Berkeley which claims to be the successor to {Logo}. Boxes are used to represent {scope}. (02 May 1995) boxology /bok-sol'*-jee/ {ASCII art}. This term implies a more restricted domain, that of box-and-arrow drawings. "His report has a lot of boxology in it." Compare {macrology}. (02 Dec 1994) Boycott Apple Some time before 1989, {Apple Computer}, Inc. started a lawsuit against {Hewlett-Packard} and {Microsoft}, claiming they had breeched Apple's {copyright} on the {look and feel} of the {Macintosh user interface}. In December 1989, {Xerox} failed to sue {Apple Computer}, claiming that the software for Apple's {Lisa} computer and {Macintosh} {Finder}, both copyrighted in 1987, were derived from two {Xerox} programs: {Smalltalk}, developed in the mid-1970s and {Star}, copyrighted in 1981. Apple wanted to stop people from writing any program that worked even vaguely like a {Macintosh}. If such {look and feel} lawsuits succeed they could put an end to {free software} that could substitute for commercial software. In the weeks after the suit was filed, {Usenet} reverberated with condemnation for Apple. {GNU} supporters {Richard Stallman}, John Gilmore, and Paul Rubin decided to take action against Apple. Apple's reputation as a force for progress came from having made better computers; but The {League for Programming Freedom} believed that Apple wanted to make all non-Apple computers worse. They therefore campaigned to discourage people from using Apple products or working for Apple or any other company threatening similar obstructionist tactics (e.g. {Lotus} and {Xerox}). Because of this boycott the {Free Software Foundation} for a long time didn't support {Macintosh} {Unix} in their software. In 1995, the LPF and the FSF decided to end the boycott. [Dates? Other events? Why did Xerox's case against Apple fail?] (18 Apr 1995) bozotic (From Bozo the Clown, a famous circus personality, via "bozo" - a clod, idiot or generally silly person) any form of clown-like or ludicrous behaviour. The word also has echoes of "robotic", so bozotic behaviour is mindless, automaton-like stupidity. (05 Jan 1996) BPI {bits per inch}. BPS bits per second. BQS {Berkeley Quality Software} bracket abstraction An {algorithm} which turns a term into a function of some variable. The result of using bracket abstraction on T with respect to variable v, written as [v]T, is a term containing no occurrences of v and denoting a function f such that f v = T. This defines the function f = (\ v . T). Using bracket abstraction and {currying} we can define a language without {bound variable}s in which the only operation is {monadic} function application. See {combinator}. (07 Mar 1995) Brain Aid Prolog (BAP) A parallel {Prolog} environment for {transputer} systems by Frank Bergmann , Martin Ostermann , and Guido von Walter of {Brain Aid Systems} GbR. It is based on a model of communicating sequential Prolog processes. The {runtime system} consists of a multi-process {operating system} with support for several applications running concurrently. {Home (http://www.cs.tu-berlin.de/~fraber/bap.html)} {Berlin FTP (ftp://unlisys.in-berlin.de/pub/brainaid/)}, {CMU FTP (ftp://ftp.cs.cmu.edu/user/ai/lang/prolog/impl/parallel/bap/)}. (07 Mar 1995) brain-damaged 1. [generalisation of "Honeywell Brain Damage" (HBD), a theoretical disease invented to explain certain utter cretinisms in Honeywell {Multics}] Obviously wrong; cretinous; {demented}. There is an implication that the person responsible must have suffered brain damage, because he should have known better. Calling something brain-damaged is really bad; it also implies it is unusable, and that its failure to work is due to poor design rather than some accident. "Only six monocase characters per file name? Now *that's* brain-damaged!" 2. [especially in the Mac world] May refer to free demonstration software that has been deliberately crippled in some way so as not to compete with the commercial product it is intended to sell. Synonym {crippleware}. brain-dead Brain-damaged in the extreme. It tends to imply terminal design failure rather than malfunction or simple stupidity. brain dump (The act of telling someone) everything one knows about a particular topic. Typically used when someone is going to let a new party maintain a piece of code. Conceptually analogous to an operating system {core dump} in that it saves a lot of useful {state} before an exit. "You'll have to give me a brain dump on FOOBAR before you start your new job at HackerCorp." At Sun, this is also known as "TOI" (transfer of information). brain fart The actual result of a {braino}, as opposed to the mental glitch that is the braino itself. E.g. typing "dir" on a {Unix box} after a session with {MS-DOS}. (21 Apr 1996) braino {thinko} branch coverage testing A test method which aims to ensure that each possible branch from each decision point (e.g. "if" statement) is executed at least once, thus ensuring that all reachable code is executed. (10 May 1996) branch delay slot {delayed control-transfer} branch prediction A technique used in some processors with {instruction prefetch} to guess whether a branch will be taken or not and prefetch code from the appropriate location. When a branch instruction is executed, it and the next instruction executed are stored in the {Branch Target Buffer}. This information is used to predict which way the instruction will branch the next time it is executed. When the prediction is correct (and it is over 90% of the time), executing a branch does not cause a {pipeline break}. [Does it store instructions or their addresses?] (05 May 1995) Branch Target Buffer (BTB) A {register} used to store the predicted destination of a branch in a processor using {branch prediction}? [Is this correct? Examples?] (05 May 1995) branch to Fishkill (IBM: from the location of one of the corporation's facilities) Any unexpected jump in a program that produces catastrophic or just plain weird results. See {jump off into never-never land}, {hyperspace}. Brazil An {operating system} from {Acorn Computers} used on an {ARM} card which could be fitted to an {IBM PC}. There was also an {ARM} second processor for the {BBC Microcomputer} which used Brazil. Never used on the {Archimedes}(?). (05 Dec 1994) BRB (I will) be right back. See {talk mode}. bread crumbs Debugging statements inserted into a program that emit output or log indicators of the program's {state} to a file so you can see where it dies or pin down the cause of surprising behaviour. The term is probably a reference to the Hansel and Gretel story from the Brothers Grimm; in several variants, a character leaves a trail of bread crumbs so as not to get lost in the woods. breadth first search A graph search {algorithm} which tries all one-step extensions of current paths before trying larger extensions. This requires all current paths to be kept in memory simultaneously, or at least their end points. Opposite of {depth-first search}. See also {best first search}. (05 Jan 1996) break 1. To cause to be {broken} (in any sense). "Your latest patch to the editor broke the paragraph commands." 2. (Of a program) To stop temporarily, so that it may debugged. The place where it stops is a "{breakpoint}". 3. To send an {RS-232} break (two character widths of line high) over a {serial line}. 4. [Unix] To strike whatever key currently causes the tty driver to send SIGINT to the current process. Normally, break, delete or {control-C} does this. 5. "break break" may be said to interrupt a conversation (this is an example of verb doubling). This usage comes from radio communications, which in turn probably came from landline telegraph/teleprinter usage, as badly abused in the Citizen's Band craze a few years ago. 6. {pipeline break}. break-even point In the process of implementing a new computer language, the point at which the language is sufficiently effective that one can implement the language in itself. That is, for a new language called, hypothetically, FOOGOL, one has reached break-even when one can write a demonstration compiler for FOOGOL in FOOGOL, discard the original implementation language, and thereafter use working versions of FOOGOL to develop newer ones. This is an important milestone. See {My Favourite Toy Language}. [There actually is a language called {Foogol}]. breath-of-life packet ({XEROX PARC}) An {Ethernet} {packet} that contains {bootstrap} code, periodically sent out from a working computer to infuse the "breath of life" into any computer on the network that has crashed. Computers depending on such packets have sufficient hardware or firmware code to wait for (or request) such a packet during the reboot process. See also {dickless workstation}. The notional "kiss-of-death packet", with a function complementary to that of a breath-of-life packet, is recommended for dealing with hosts that consume too many network resources. Though "kiss-of-death packet" is usually used in jest, there is at least one documented instance of an {Internet} subnet with limited address-table slots in a gateway computer in which such packets were routinely used to compete for slots, rather like Christmas shoppers competing for scarce parking spaces. (26 Jan 1995) breedle See {feep}. BRI {Basic Rate Interface}, {2B1D} {Integrated Services Digital Network}. Basic Rate ISDN? BRIDGE A component of {ICES} for civil engineers. [Sammet 1969, p. 616]. bridge A device which forwards traffic between network segments based on {datalink layer} information. These segments would have a common {network layer} address. See also {gateway}, {router}. Bridgetalk A visual language. Brilliant One of five pedagogical languages based on {Markov} {algorithm}s, used in ["Nonpareil, a Machine Level Machine Independent Language for the Study of Semantics", B. Higman, ULICS Intl Report No ICSI 170, U London (1968)]. See also {Diamond}, {Nonpareil}, {Pearl}, {Ruby}. bring X to its knees To present a computer, operating system, piece of software, or algorithm with a load so extreme or {pathological} that it grinds to a halt. "To bring a MicroVAX to its knees, try twenty users running {vi} - or four running {EMACS}." Compare {hog}. British Broadcasting Corporation (BBC) The UK state television and radio company. They commissioned the "{BBC Micro}" from {Acorn Computers} for use in a television series about using computers. They also run the {BBC Networking Club}. (28 Feb 1995) British Standards Institute (BSI) The British member of {ISO}. (12 Jun 1996) British Telecom (BT) The largest telecommunications provider in the UK. Due to regulatory issues, BT had to sell off its interest in McCaw Cellular. BT sold it to {AT&T} for something like 4B$. BT then invested that in {MCI}. As a part of the deal, MCI was given BT North America, which was the old {Tymnet}. MCI laid off about 40% of the Tymnet staff. {Home (http://www.intervid.co.uk/)} (09 May 1995) British Telecom Research Laboratories (BTRL) The laboratories where {British Telecom} develops many of its new Network services. {Home (http://www.labs.bt.com/)} Address: Martlesham Heath, near Ipswich, Suffolk, UK. (25 Apr 1995) brittle Said of {software} that is functional but easily broken by changes in operating environment or configuration, or by any minor tweak to the software itself. Also, any system that responds inappropriately and disastrously to abnormal but expected external stimuli; e.g. a {file system} that is usually totally scrambled by a power failure is said to be brittle. This term is often used to describe the results of a research effort that were never intended to be robust, but it can be applied to commercially developed software, which displays the quality far more often than it ought to. Opposite of {robust}. (09 May 1995) broadband A transmission medium capable of supporting a wide range of frequencies, typically from audio up to video frequencies. It can carry multiple signals by dividing the total capacity of the medium into multiple, independent bandwidth channels, where each channel operates only on a specific range of frequencies. See also {baseband}. (09 May 1995) broadcast A transmission to multiple, unspecified recipients. On Ethernet, a broadcast packet is a special type of multicast packet which all nodes on the network are always willing to receive. broadcast storm An {broadcast} on a {network} that causes multiple {host}s to respond by broadcasting themselves, causing the storm to grow exponentially in severity. See {network meltdown}. (07 Feb 1995) brochureware Planned but non-existent product like {vaporware}, but with the added implication that marketing is actively selling and promoting it (they've printed brochures). Brochureware is often deployed as a strategic weapon; the idea is to con customers into not committing to an existing product of the competition's. It is a safe bet that when a brochureware product finally becomes real, it will be more expensive than and inferior to the alternatives that had been available for years. broken Not working properly (of programs). broken arrow The error code displayed on line 25 of a {IBM 3270} terminal (or a {terminal emulator} emulating a 3270) for various kinds of {protocol} violations and "unexpected" error conditions (including connection to a {down} computer). On a PC, simulated with "->/_", with the two centre characters overstruck. "Broken arrow" is also military jargon for an accident involving nuclear weapons. (07 Feb 1995) broket /broh'k*t/ or /broh'ket/ [broken bracket] Either of the characters "<" or ">" when used as paired enclosing delimiters (commonly known as {angle bracket}s). A bracket that is bent in the middle. Brooks's Law "Adding manpower to a late software project makes it later" - a result of the fact that the expected advantage from splitting work among N programmers is O(N) (that is, proportional to N), but the complexity and communications cost associated with coordinating and then merging their work is O(N^2) (that is, proportional to the square of N). The quote is from Fred Brooks, a manager of {IBM}'s {OS/360} project and author of "{The Mythical Man-Month}" The myth in question has been most tersely expressed as "Programmer time is fungible" and Brooks established conclusively that it is not. Hackers have never forgotten his advice; too often, {management} still does. See also {creationism}, {second-system effect}, {optimism}. brouter A device which bridges some {packet}s (i.e. forwards based on {datalink layer} information) and routes other packets (i.e. forwards based on {network layer} information). The {bridge}/{route} decision is based on configuration information. browser A program which allows a person to read {hypertext}. The browser gives some means of viewing the contents of {nodes} and of {navigating} from one node to another. {Netscape}, {Mosaic}, {Lynx} and {W3} are examples for browsers for the {World-Wide Web}. They act as {clients} to remote {web servers}. (31 May 1996) BRS {Big Red Switch}. This abbreviation is fairly common on-line. BRUIN Brown University Interactive Language. A simple interactive language with {PL/I}-like {syntax}, for {IBM 360}. ["Meeting the Computational Requirements of the University, Brown University Interactive Language", R.G. Munck, Proc 24th ACM Conf, 1969]. (14 Feb 1995) brute force A primitive programming style in which the programmer relies on the computer's processing power instead of using his own intelligence to simplify the problem, often ignoring problems of scale and applying naive methods suited to small problems directly to large ones. The term can also be used in reference to programming style: brute-force programs are written in a heavy-handed, tedious way, full of repetition and devoid of any elegance or useful abstraction (see also {brute force and ignorance}). The {canonical} example of a brute-force algorithm is associated with the "{travelling salesman problem}" (TSP), a classical {NP-hard} problem: Suppose a person is in, say, Boston, and wishes to drive to N other cities. In what order should the cities be visited in order to minimise the distance travelled? The brute-force method is to simply generate all possible routes and compare the distances; while guaranteed to work and simple to implement, this algorithm is clearly very stupid in that it considers even obviously absurd routes (like going from Boston to Houston via San Francisco and New York, in that order). For very small N it works well, but it rapidly becomes absurdly inefficient when N increases (for N = 15, there are already 1,307,674,368,000 possible routes to consider, and for N = 1000 - well, see {bignum}). Sometimes, unfortunately, there is no better general solution than brute force. See also {NP-complete}. A more simple-minded example of brute-force programming is finding the smallest number in a large list by first using an existing program to sort the list in ascending order, and then picking the first number off the front. Whether brute-force programming should actually be considered stupid or not depends on the context; if the problem is not terribly big, the extra CPU time spent on a brute-force solution may cost less than the programmer time it would take to develop a more "intelligent" algorithm. Additionally, a more intelligent algorithm may imply more long-term complexity cost and bug-chasing than are justified by the speed improvement. {Ken Thompson}, co-inventor of {Unix}, is reported to have uttered the epigram "When in doubt, use brute force". He probably intended this as a {ha ha only serious}, but the original {Unix} {kernel}'s preference for simple, robust and portable {algorithm}s over {brittle} "smart" ones does seem to have been a significant factor in the success of that {operating system}. Like so many other tradeoffs in software design, the choice between brute force and complex, finely-tuned cleverness is often a difficult one that requires both engineering savvy and delicate aesthetic judgment. (14 Feb 1995) brute force and ignorance (BFI) A popular design technique at many software houses - {brute force} coding unrelieved by any knowledge of how problems have been previously solved in elegant ways. Dogmatic adherence to design methods tends to encourage this sort of thing. Characteristic of early {larval stage} programming; unfortunately, many never outgrow it. Also encountered in the variants BFMI - brute force and massive ignorance, and BFBI - brute force and bloody ignorance. "Gak, they used a {bubble sort}! That's strictly BFI." Compare {bogosity}. (12 Jun 1996) BS Backspace, the {mnemonic} for {ASCII} 8. (24 Jun 1996) BSA {Business Software Alliance} BSD {Berkeley System Distribution} BSD386 {386BSD} BSDI {Berkeley Software Design, Inc.} BSD/OS {BSDI}'s commercial version of {Berkeley Standard Distribution} {Unix}. BSD/OS is a {POSIX}-compatible, {Unix}-like system for the {80386}, {486}, and {Pentium}. It is based on the {BSD} software from {UCB}, a number of other sources, and components engineered by BSDI. The initial production release of BSD/OS shipped in March, 1993. (13 Jan 1996) BSI {British Standards Institute} BSL Variant of IBM's PL/S systems language. Versions: BSL1, BSL2. BSP method A CASE method from IBM. BSS {Block Started by Symbol} BTB {Branch Target Buffer}. B-Toolkit A set of software tools designed to support a rigorous or formal development of software systems using the {B-Method}. The Toolkit also provides a development environment automating the management of all associated files, ensuring that the entire development, including code and documentation, is always in a consistent state. The Toolkit includes: a specification, design and code configuration management system, including integrity and dependency management and source file editing facilities; a set of software specification and design analysis tools, which includes {syntax} checkers, type checkers and a specification animator; a set of verification tools, which includes a proof-obligation generator and automatic and interactive provers; a set of coding tools, which includes a translator, linker, rapid prototyping facilities and a reusable specification/code module library; a documentation tool for automatically producing fully cross-referenced and indexed type-set documents from source files; a re-making tool for automatically re-checking and re-generating specifications, designs, code and documentation after modifications to source files. A normal licence costs 25,000 pounds, academic 6,250 pounds. (13 Mar 1995) btree {B-tree} B-tree 1. {binary tree}. 2. {balanced tree}. BTRIEVE 1. {BTRIEVE Technologies, Inc.}. 2. A trademark of {BTRIEVE Technologies, Inc.} for their {ISAM} {index file} manager for {IBM PC}s. (28 Mar 1995) BTRIEVE Technologies, Inc. /bee-treev/ (BTI) A provider of {client-server} {database engines}. BTI was founded by former {Novell, Inc.} employees, including the original developers of the Btrieve database engine. BTI acquired the database product line from Novell in April, 1994. {Home (http://www.btrieve.com/)} Address: Austin, Texas, USA. (14 Dec 1995) BTRL {British Telecom Research Laboratories}. BTW by the way. BUAF [alt.fan.warlord] Big Ugly ASCII Font. A special form of {ASCII art}. Various programs exist for rendering text strings into block, {bloob}, and pseudo-script fonts in cells between four and six character cells on a side; this is smaller than the letters generated by older {banner} programs. These are sometimes used to render one's name in a {sig block}, and are critically referred to as "BUAF"s. See {warlording}. BUAG [alt.fan.warlord] Big Ugly ASCII Graphic. Pejorative term for ugly {ASCII ART}, especially as found in {sig block}s. For some reason, mutations of the head of Bart Simpson are particularly common in the least imaginative {sig block}s. See {warlording}. bubble memory A storage device built using materials such as gadolinium gallium garnet which are can be magnetised easily in only one direction. A film of these materials can be created so that it is magnetisable in an up-down direction. The magnetic fields tend to join together, some with the north pole facing up, some with the south. When a veritcal magnetic field is imposed on this, the areas in opposite alignment to the field shrink to circles, or 'bubbles'. A bubble can be formed by reversing the field in a small spot, and can be destroyed by increasing the field. Bubble memory is {non-volatile} but {EEPROM}, {flash memory} and ferroelectric technologies, which are also non-volatile, are faster. ["Great Microprocessors of the Past and Present", V 4.0.0, John Bayko , Appendix C] (03 Feb 1995) bubble sort A sorting technique in which pairs of adjacent values in the list to be sorted are compared and interchanged if they are out of order; thus, list entries "bubble upward" in the list until they bump into one with a lower sort value. Because it is not very good relative to other methods and is the one typically stumbled on by {naive} and untutored programmers, hackers consider it the {canonical} example of a naive algorithm. The canonical example of a really *bad* algorithm is {bogo-sort}. A bubble sort might be used out of ignorance, but any use of bogo-sort could issue only from brain damage or willful perversity. bucky bits /buh'kee bits/ 1. Obsolete. The bits produced by the CONTROL and META shift keys on a SAIL keyboard (octal 200 and 400 respectively), resulting in a 9-bit keyboard character set. The MIT AI TV (Knight) keyboards extended this with TOP and separate left and right CONTROL and META keys, resulting in a 12-bit character set; later, LISP Machines added such keys as SUPER, HYPER, and GREEK (see {space-cadet keyboard}). 2. By extension, bits associated with "extra" shift keys on any keyboard, e.g. the ALT on an IBM PC or command and option keys on a Macintosh. It has long been rumored that "bucky bits" were named after Buckminster Fuller during a period when he was consulting at Stanford. Actually, bucky bits were invented by Niklaus Wirth when *he* was at Stanford in 1964--65; he first suggested the idea of an EDIT key to set the 8th bit of an otherwise 7-bit ASCII character. It seems that, unknown to Wirth, certain Stanford hackers had privately nicknamed him "Bucky" after a prominent portion of his dental anatomy, and this nickname transferred to the bit. Bucky-bit commands were used in a number of editors written at Stanford, including most notably TV-EDIT and NLS. The term spread to MIT and CMU early and is now in general use. Ironically, Wirth himself remained unaware of its derivation for nearly 30 years, until GLS dug up this history in early 1993! See {double bucky}, {quadruple bucky}. buffer 1. An area of memory used for storing messages. Typically, a buffer will have other attributes such as an input pointer (where new data will be written into the buffer), and output pointer (where the next item will be read from) and/or a count of the space used or free. Buffers are used to decouple processes so that the reader and writer may operate at different speeds or on different sized blocks of data. There are many different algorithms for using buffers, e.g. first in first out (FIFO or shelf), last in first out (LIFO or stack), double buffering (allowing one buffer to be read while the other is being written), cyclic buffer (reading or writing past the end wraps around to the beginning). 2. An electronic device to provide compatibility between two signals, e.g. changing voltage levels or current capability. buffered write-through When a {cache} uses a "{write buffer}" to hold data being written back to main memory. This frees the cache to service read requests while the write is taking place. There is usually only one stage of buffering so subsequent consecutive writes must wait for first to complete. Most accesses are reads so buffered write-through is only useful for very slow main memory. buffer overflow What happens when you try to store more data in a {buffer} than it can handle. This may be due to a mismatch in the processing rates of the producing and consuming processes (see {overrun} and {firehose syndrome}), or because the buffer is simply too small to hold all the data that must accumulate before a piece of it can be processed. For example, in a text-processing tool that {crunch}es a line at a time, a short line buffer can result in {lossage} as input from a long line overflows the buffer and overwrites data beyond it. Good defensive programming would check for overflow on each character and stop accepting data when the buffer is full. See also {spam}, {overrun screw}. (13 May 1996) bug An unwanted and unintended property of a program or piece of hardware, especially one that causes it to malfunction. Antonym of {feature}. E.g. "There's a bug in the editor: it writes things out backwards." Historical note: Admiral {Grace Hopper} (an early computing pioneer better known for inventing {COBOL}) liked to tell a story in which a technician solved a {glitch} in the {Harvard Mark II machine} by pulling an actual insect out from between the contacts of one of its relays, and she subsequently promulgated {bug} in its hackish sense as a joke about the incident (though, as she was careful to admit, she was not there when it happened). For many years the logbook associated with the incident and the actual bug in question (a moth) sat in a display case at the Naval Surface Warfare Center (NSWC). The entire story, with a picture of the logbook and the moth taped into it, is recorded in the "Annals of the History of Computing", Vol. 3, No. 3 (July 1981), pp. 285--286. The text of the log entry (from September 9, 1947), reads "1545 Relay #70 Panel F (moth) in relay. First actual case of bug being found". This wording establishes that the term was already in use at the time in its current specific sense - and Hopper herself reports that the term "bug" was regularly applied to problems in radar electronics during WWII. Indeed, the use of "bug" to mean an industrial defect was already established in Thomas Edison's time, and a more specific and rather modern use can be found in an electrical handbook from 1896 ("Hawkin's New Catechism of Electricity", Theo. Audel & Co.) which says: "The term "bug" is used to a limited extent to designate any fault or trouble in the connections or working of electric apparatus." It further notes that the term is "said to have originated in {quadruplex} telegraphy and have been transferred to all electric apparatus." The latter observation may explain a common folk etymology of the term; that it came from telephone company usage, in which "bugs in a telephone cable" were blamed for noisy lines. Though this derivation seems to be mistaken, it may well be a distorted memory of a joke first current among *telegraph* operators more than a century ago! Actually, use of "bug" in the general sense of a disruptive event goes back to Shakespeare! In the first edition of Samuel Johnson's dictionary one meaning of "bug" is "A frightful object; a walking spectre"; this is traced to "bugbear", a Welsh term for a variety of mythological monster which (to complete the circle) has recently been reintroduced into the popular lexicon through fantasy {role-playing game}s. In any case, in jargon the word almost never refers to insects. Here is a plausible conversation that never actually happened: "There is a bug in this ant farm!" "What do you mean? I don't see any ants in it." "That's the bug." [There has been a widespread myth that the original bug was moved to the Smithsonian, and an earlier version of this entry so asserted. A correspondent who thought to check discovered that the bug was not there. While investigating this in late 1990, your editor discovered that the NSWC still had the bug, but had unsuccessfully tried to get the Smithsonian to accept it - and that the present curator of their History of American Technology Museum didn't know this and agreed that it would make a worthwhile exhibit. It was moved to the Smithsonian in mid-1991, but due to space and money constraints has not yet been exhibited. Thus, the process of investigating the original-computer-bug bug fixed it in an entirely unexpected way, by making the myth true! - ESR] bug-compatible Said of a design or revision that has been badly compromised by a requirement to be compatible with {fossil}s or {misfeature}s in other programs or (especially) previous releases of itself. "{MS-DOS} 2.0 used \ as a path separator to be bug-compatible with some cretin's choice of / as an option character in 1.0." bug-for-bug compatible Same as {bug-compatible}, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated. buglix /buhg'liks/ Pejorative term referring to {DEC}'s {ULTRIX} {operating system} in its earlier *severely* buggy versions. Still used to describe ULTRIX, but without nearly so much venom. Compare {AIDX}, {HP-SUX}, {Nominal Semidestructor}, {Telerat}, {sun-stools}. BUGSYS A programming system for {pattern recognition} and preparing animated films, for {IBM 7094} and {IBM 360}. ["BUGSYS: A Programming System for Picture Processing - Not for Debugging", R.A. Ledley et al, CACM 9(2) (Feb 1966)]. (14 Feb 1995) built-in (Or "primitive") A built-in function or operator is one provided by the lowest level of a language implementation. This usually means it is not possible (or efficient) to express it in the language itself. Typical examples are the basic arithmetic and {Boolean} operators (in {C} syntax: +, -, *, /, %, !, &&, ||), bit manipulation operators (~, &, |, ^) and I/O primitives. Other common functions may be provided in libraries but are not built-in if they are written in the language being implemented. (14 Feb 1995) Built-in Self Test (BIST) The technique of designing circuits with additional logic which can be used to test proper operation of the primary (functional) logic. (14 Feb 1995) bulletin board {bulletin board system} bulletin boards {bulletin board system} bulletin board system (BBS, bboard) (After a physical peice of board on which people can pin messages written on paper for general consumption - a "physical bboard"). A computer and associated software which typically provides an electronic message database where people can log in and leave messages. Messages are typically split into {topic group}s similar to the {newsgroup}s on {Usenet} (which is like a distributed BBS). Any user may submit or read any message in these public areas. Apart from public message areas, a BBS may provide archives of files, personal {electronic mail} and any other services or activities of interest to the bulletin board system's operator (the "{sysop}"). Thousands of local BBSes are in operation throughout the world, typically run by amateurs for fun out of their homes on {MS-DOS} boxes with a single {modem} line each. Although BBSes have traditionally been the domain of hobbyists, an increasing number of BBSes are connected directly to the {Internet}, and many BBSes are currently operated by government, educational, and research institutions. Fans of {Usenet} and {Internet} or the big commercial {time-sharing} bboards such as {CompuServe}, {CIX} and {GEnie} tend to consider local BBSes the low-rent district of the hacker culture, but they serve a valuable function by knitting together lots of hackers and users in the personal-{micro} world who would otherwise be unable to exchange code at all. Use of this term for a {Usenet} newsgroup generally marks one either as a {newbie} fresh in from the BBS world or as a real old-timer predating {Usenet}. bulletproof Used of an algorithm or implementation considered extremely {robust}; lossage-resistant; capable of correctly recovering from any imaginable exception condition - a rare and valued quality. Synonym {armor-plated}. bum 1. To make highly efficient, either in time or space, often at the expense of clarity. "I managed to bum three more instructions out of that code." "I spent half the night bumming the interrupt code." In {elder days}, {John McCarthy} (inventor of {Lisp}) used to compare some efficiency-obsessed hackers among his students to "ski bums"; thus, optimisation became "program bumming", and eventually just "bumming". 2. To squeeze out excess; to remove something in order to improve whatever it was removed from (without changing function; this distinguishes the process from a {featurectomy}). 3. A small change to an algorithm, program, or hardware device to make it more efficient. "This hardware bum makes the jump instruction faster." Usage: now uncommon, largely superseded by v. {tune} (and {tweak}, {hack}), though none of these exactly capture sense 2. All these uses are rare in Commonwealth hackish, because in the parent dialects of English "bum" is a rude synonym for "buttocks". bump Increment. E.g. {C}'s {++} operator. It is used especially of counter variables, pointers and index dummies in "for", "while", and "do-while" loops. (29 Nov 1994) burble [Lewis Carroll's "Jabberwocky"] Like {flame}, but connotes that the source is truly clueless and ineffectual (mere flamers can be competent). A term of deep contempt. "There's some guy on the phone burbling about how he got a DISK FULL error and it's all our comm software's fault." This is mainstream slang in some parts of England. Burge's Language Unnamed functional language based on lambda-calculus. Recursive Programming techniques", W.H. Burge, A-W 1975. buried treasure A surprising piece of code found in some program. While usually not wrong, it tends to vary from {crufty} to bletcherous, and has lain undiscovered only because it was functionally correct, however horrible it is. Used sarcastically, because what is found is anything *but* treasure. Buried treasure almost always needs to be dug up and removed. "I just found that the scheduler sorts its queue using {bubble sort}! Buried treasure!" burn-in period 1. A factory test designed to catch systems with {marginal} components before they get out the door; the theory is that burn-in will protect customers by outwaiting the steepest part of the {bathtub curve} (see {infant mortality}). 2. A period of indeterminate length in which a person using a computer is so intensely involved in his project that he forgets basic needs such as food, drink, sleep, etc. Warning: Excessive burn-in can lead to burn-out. See {hack mode}, {larval stage}. Burroughs Corporation A company which merged with {Sperry Univac} to form {Unisys Corporation}. (22 Nov 1994) Burst EDO {Burst Extended Data Out DRAM} Burst Extended Data Out DRAM (Burst EDO, BEDO) A variant on {EDO DRAM} in which read or write cycles are batched in bursts of four. The bursts wrap around on a four byte boundary which means that only the two least significant bits of the {CAS} address are modified internally to produce each address of the burst sequence. Consequently, burst EDO bus speeds will range from 40MHz to 66MHz, well above the 33MHz bus speeds that can be accomplished using {Fast Page Mode} or EDO DRAM. Burst EDO was introduced sometime before May 1995. (25 Jun 1996) burst page Synonym {banner}, sense 1. bus A set of conductors (wires, PCB tracks or connections in an {integrated circuit}) connecting the various {functional units} in a computer. There are busses both within the {CPU} and connecting it to external memory and {peripheral} devices. The width of the bus, i.e. the number of parallel connectors, determines the size in bits of the largest data item which it can carry. The bus width and the number of data items per second which it can transmit are one of the factors limiting a computer's performance. Most current {microprocessors} have 32-bit busses both internally and externally. Some processors have internal busses which are wider than their external busses (usually twice the width) since the width of the internal bus affects the speed of all operations and has less effect on the overall system cost than the width of the external bus. [Origin: from electrical "bus bar", from trams?] (01 Nov 1995) Business Software Alliance The BSA was created by {Microsoft} in 1988 in an attempt to combat {software theft}. The alliance includes the majority of leading software publishers including {Novell}, {Symantec}, and {Autodesk} and is actively campaigning in over 65 countries. The BSA operates a three-pronged approach: 1. Lobbying to strengthen copyright laws and co-operation with law enforcement agencies. 2. Educating the public through marketing, roadshows, etc. 3. Bringing legal actions against counterfeiters. BSA's aims are the same as the {Federation Against Software Theft} but it is not limited to the UK. In December 1990 the BSA obtained the first legal order in the UK which allowed a surprise search on a company's offices for suspected copyright infringement. {Home (http://www.bsa.org/bsa)} UK Office: Business Software Alliance, 1st Floor, Leaconfield House, Curzon Street, London W1Y 8AS, United Kingdom. See also {software audit}. (19 May 1996) bus mastering The ability of an {expansion card} to directly read and write the main memory allowing the {CPU} to delegate {I/O} work to the cards. (25 Jun 1996) Busy Beaver (BB) One of a series of sets of {Turing Machine} programs. The BBs in the Nth set are programs of N states that produce a larger finite number of ones on an initially blank tape than any other program of N states. There is no program that, given input N, can deduce the productivity (number of ones output) of the BB of size N. The productivity of the BB of size 1 is 1. Some work has been done to figure out productivities of bigger Busy Beavers - the 7th is in the thousands. (24 Oct 1994) busy-wait To wait for an {event} by {spin}ning through a {tight loop} or timed-delay loop that {poll}s for the event on each pass, as opposed to setting up an {interrupt handler} and continuing execution on another part of the task. This is a wasteful technique, best avoided on {time-sharing} systems where a busy-waiting program may {hog} the processor. Butterfly Common LISP A parallel version of {Common LISP} for the {BBN Butterfly} computer. Butterfly Scheme A parallel version of {Scheme} for the {BBN Butterfly} computer. buzz 1. Of a program, to run with no indication of progress and perhaps without guarantee of ever finishing; especially said of programs thought to be executing a {tight loop} of code. A program that is buzzing appears to be {catatonic}, but never gets out of catatonia, while a buzzing loop may eventually end of its own accord. "The program buzzes for about 10 seconds trying to sort all the names into order." See {spin}; see also {grovel}. 2. [ETA Systems] To test a wire or printed circuit trace for continuity by applying an AC rather than DC signal. Some wire faults will pass DC tests but fail a buzz test. 3. To process an {array} or list in sequence, doing the same thing to each element. "This loop buzzes through the tz array looking for a terminator type." bwBASIC Bywater BASIC interpreter. A {BASIC} {interpreter} by Ted A. Campbell which implements a large superset of the {ANSI Standard for Minimal BASIC} (X3.60-1978) in {ANSI C}, and offers a simple interactive environment including some {shell} program facilities as an extension of BASIC. The interpreter source has been compiled successfully on a range of {ANSI C} {compiler}s on varying {platform}s including {MS-DOS}, {Unix}, and {Acorn} {RISC OS}. Version 2.10 was posted to {news:comp.sources.misc}, volume 40. (29 Oct 1993) BWQ [IBM] Buzz Word Quotient. The percentage of buzzwords in a speech or documents. Usually roughly proportional to {bogosity}. See {TLA}. byacc Berkeley Yacc. Probably the best variant of the {Yacc} {parser generator}. Written by Robert Corbett . byacc was previously known as {Zoo}, and before that, as {Zeus}. Version: 1.9. {(ftp://ftp.cs.berkeley.edu/~ftp/ucb/4bsd/byacc.tar.Z)} (19 Jun 1995) by hand 1. Said of an operation (especially a repetitive, trivial, and/or tedious one) that ought to be performed automatically by the computer, but which a hacker instead has to step tediously through. "My mailer doesn't have a command to include the text of the message I'm replying to, so I have to do it by hand." This does not necessarily mean the speaker has to retype a copy of the message; it might refer to, say, dropping into a subshell from the mailer, making a copy of one's mailbox file, reading that into an editor, locating the top and bottom of the message in question, deleting the rest of the file, inserting ">" characters on each line, writing the file, leaving the editor, returning to the mailer, reading the file in, and later remembering to delete the file. Compare {eyeball search}. 2. By extension, writing code which does something in an explicit or low-level way for which a presupplied library routine ought to have been available. "This cretinous {B-tree} library doesn't supply a decent iterator, so I'm having to walk the trees by hand." Byte A popular computing magazine. byte /bi:t/ A component in the machine {data hierarchy} usually larger than a {bit} and smaller than a {word}; now often eight bits and the smallest addressable unit of storage. The byte typically holds one {character}. A byte may be 9 bits on 36-bit computers. Some older architectures used "byte" for quantities of 6 or 7 bits, and the PDP-10 and IBM 7030 supported "bytes" that were actually bitfields of 1 to 36 (or 64) bits! These usages are now obsolete, and even 9-bit bytes have become rare in the general trend toward power-of-2 word sizes. The term was coined by Werner Buchholz in 1956 during the early design phase for the {IBM} {Stretch} computer. In 1962 he described it as "a group of bits used to encode a character, or the number of bits transmitted in parallel to and from input-output units." The move to an 8-bit byte may have begun with the IBM 1620 about 1961; it was adopted as a standard by the {System/360}. The word was coined by mutating the word "bite" to avoid confusion with "bit". James S. Jones adds: I am sure I read in some historical brochure by IBM some 15-20 years ago that BYTE was an acronym that stood for "Bit asYnchronous Transmission E__?__" which related to width of the bus between the Stretch CPU and its CRT-memory (prior to Core). [True origin?] See also {nybble}, {octet}. (04 Nov 1995) byte-code compiler A {compiler} which outputs a program in some kind of {byte-code}. This program is then interpreted by a {byte-code interpreter}. The advantage of this technique compared with outputing {machine code} for a particular processor is that the same byte-code can be executed on any processor on which the byte-code interpreter runs. (04 Nov 1995) byte compiler {byte-code compiler} bytesexual /bi:t"sek"shu-*l/ Said of hardware, denotes willingness to compute or pass data in either {big-endian} or {little-endian} format (depending, presumably, on a {mode bit} somewhere). See also {NUXI problem}. bzzzt, wrong /bzt rong/ ({Usenet}, {Internet}) From a Robin Williams routine in the movie "Dead Poets Society" spoofing radio or TV quiz programs, such as *Truth or Consequences*, where an incorrect answer earns one a blast from the buzzer and condolences from the interlocutor. A way of expressing mock-rude disagreement, usually immediately following an included quote from another poster. The less abbreviated "*Bzzzzt*, wrong, but thank you for playing" is also common; capitalisation and emphasis of the buzzer sound varies. (11 Nov 1994) C A programming language designed by {Dennis Ritchie} at {AT&T} {Bell Labs} ca. 1972 for systems programming on the {PDP-11} and immediately used to reimplement {Unix}. It was called "C" because many features derived from an earlier compiler named "{B}" in commemoration of *its* parent, {BCPL}. In fact, C was briefly named "NB". Before {Bjarne Stroustrup} settled the question by designing {C++}, there was a humorous debate over whether C's successor should be named "D" or "P" (following B and C in "BCPL"). C is terse, low-level and permissive. It has a {macro preprocessor}, {cpp}. Partly due to its distribution with {Unix}, C became immensely popular outside {Bell Labs} after about 1980 and is now the dominant language in systems and {microcomputer} applications programming. It has grown popular due to its simplicity, efficiency, and flexibility. C programs are often easily adapted to new environments. C is often described, with a mixture of fondness and disdain, as "a language that combines all the elegance and power of {assembly language} with all the readability and maintainability of assembly language". Ritchie's original C, known as {K&R C} after Kernighan and Ritchie's book, has been {standard}ised (and simultaneously modified) as {ANSI C}. See also {ACCU}, {ae}, {c68}, {c386}, {C-Interp}, {cxref}, {dbx}, {dsp56k-gcc}, {dsp56165-gcc}, {gc}, {GCT}, {GNU C}, {GNU superoptimiser}, {Harvest C}, {malloc}, {mpl}, {Pthreads}, {ups}. (01 Jun 1996) (c) An {ASCII} rendition of the encircled "c" {copyright} symbol. Unfortunately, this rendition is not legally valid, the circle must be complete. The word "copyright" in full is perfectly adequate though. (In {LaTeX} the copyright symbol is written as \copyright). (03 Feb 1995) C* An {object-oriented}, {data-parallel} superset of {ANSI C} with synchronous semantics for the {Connection Machine}, designed by {Thinking Machines}, 1987. C* adds a "domain" data type and a selection statement for parallel execution in domains. The current version is 6.x. E-mail: , . ["C*: An Extended C Language for Data Parallel Programming", J.R. Rose et al, Proc Second Intl Conf on Supercomputing, L.P. Kartashev et al eds, May 1987, pp.2-16]. ["C* Programming Manual", Thinking Machines Corp, 1986]. C++ One of the most used {object-oriented} languages, a superset of {C} developed primarily by Bjarne Stroustrup at {AT&T} {Bell Laboratories} in 1986. In C++ a {class} is a user-defined type, syntactically a struct with {member function}s. {Constructor}s and {destructor}s are member functions called to create or destroy {instance}s. A {friend} is a nonmember function that is allowed to access the private portion of a class. C++ allows {implicit type conversion}, {function inlining}, {overloading} of operators and function names, and {default function argument}s. It has {stream}s for I/O and references. {MS-DOS (ftp://grape.ecs.clarkson.edu/pub/msdos/djgpp/djgpp.zip)}, {Unix ANSI C++ (ftp://prep.ai.mit.edu/pub/gnu/g++-1.39.0.tar.Z)} - X3J16 committee. (They're workin' on it). See also {cfront}, {LEDA}, {uC++}. {Usenet} newsgroup: {news:comp.lang.c++}. ["The C++ Programming Language", Bjarne Stroustrup, A-W, 1986]. (06 Jun 1996) C+@ (Formerly Calico). An {object-oriented language} from {Bell Laboratories} which uniformly represents all data as a pointer to a self-described object. C+@ provides {multiple inheritance} with {delegation} and with control over which {method}s come from which delegated object; and {default methodologies}. It has a simple {syntax} with emphasis on graphics. It was originally used for prototyping of telecommunication services. It runs under {SunOS} and compiles to {Vcode}. Unir Tech, (800) 222-8647. E-mail: Jim Vandendorpe . ["A Dynamic C-Based Object-Oriented System for Unix", S. Engelstad et al, IEEE Software 8(3):73-85 (May 1991)]. ["The C+@ Programming Language", J. Fleming, Dr Dobbs J, Oct 1993, pp.24-32]. (31 Oct 1994) [What has "Unir Tech" got to do with it?] C-10 An improved version of {COLINGO}. [Sammet 1969, p.702]. (28 Oct 1994) C++ 2.0 May 1989. {multiple inheritance}, type-safe linkage, pointers to members, abstract classes. ["C++ 2.0 Draft Reference Manual"]. C++ 2.1 ["Annotated C++ Reference Manual", B. Stroustrup et al, A-W 1990]. c2man An automatic {documentation} extraction tool by Graham Stoney . c2man extracts comments from {C} source code to generate functional interface documentation in the same format as sections 2 and 3 of the {Unix} Programmer's Manual. It looks for comments near the objects they document, rather than imposing a rigid {syntax} or requiring that the programmer use a typesetting language. Acceptable documentation can often be generated from existing code with no modifications. It supports both {K&R} and {ISO}/{ANSI C} coding styles. Output can be in {nroff} -man, {Texinfo} or {LaTeX} format. It {automagically} documents {enum} parameter and return values, it handles both {C} (/* */) and {C++} (//) style comments, but not C++ grammar (yet). It requires {yacc}, {byacc} or {bison} for syntax analysis; {lex} or {flex} for {lexical analysis} and {nroff}, {groff}, {texinfo} or {LaTeX} to format the output. It runs under {Unix}, {OS/2} and {MS-DOS}. Version 2.0 patchlevel 25 (25 Oct 1995). {Washington FTP (ftp://ftp.wustl.edu/usenet/comp.sources.reviewed/volume03/)}. {Stuttgart FTP (ftp://ftp.informatik.uni-stuttgart.de/pub/archive/comp.sources/reviewed/)}. {Patches (ftp://lth.se/pub/netnews/sources.bugs/volume93/sep/)}. Mailing list: ("subscribe c2man " in the message body). Patches posted to {Usenet} newsgroups {news:comp.sources.bugs} and {news:comp.sources.reviewed}. (21 Feb 1994) c386 A compiler for {K&R C} plus {prototype}s and other {ANSI C} features by Matthew Brandt, Christoph van Wuellen, Keith and Dave Walker. c386 is targetted to several {68000} and {Intel 80386} {assembler}s, including {gas}. {floating-point} support is by inline code or {emulation}. It can produce lots of warnings and generates better code than {ACK}. {Version 4.2a (ftp://bugs.nosc.mil/pub/Minix/common-pkgs/c386-4.2.tar.Z)}. c386 has been ported to {Intel 80386} and {68000} {Minix} and should work on any Unix. It is actively worked on by the Walkers. {Usenet} newsgroup: {news:comp.os.minix}. C5 An {OPS5} implementation in {C}. C64 {Commodore 64} c68 {c386} also produces {68000} code. CA 1. {cellular automaton}. 2. {Computer Associates}. ca The {coutry code} for Canada. (19 Apr 1995) cache A small fast memory holding recently-accessed data, designed to speed up subsequent access to the same data. Most often applied to processor-memory access but also used for a local copy of data accessible over a network etc. When data is read from, or written to, main memory a copy is also saved in the cache, along with the associated main memory address. The cache monitors addresses of subsequent reads to see if the required data is already in the cache. If it is (a "cache hit") then it is returned immediately and the main memory read is aborted (or not started). If the data is not cached (a "cache miss") then it is fetched from main memory and also saved in the cache. The cache is built from faster memory chips than main memory so a cache hit takes much less time to complete than a normal memory access. The cache may be located on the same {integrated circuit} as the {CPU}, in order to further reduce the access time. The most important characteristic of a cache is its "hit rate" - the fraction of all memory accesses which are satisfied from the cache. This in turn depends on the cache design but mostly on its size. The size is limited by the cost of fast memory chips. The hit rate also depends on the access pattern of the particular program being run (the sequence of addresses being read and written). Caches rely on two properties of the access patterns of most programs: temporal locality - if something is accessed once, it is likely to be accessed again soon, and spatial locality - if one memory location is accessed then nearby memory locations are also likely to be accessed. In order to exploit spatial locality, caches often operate on several words at a time, a "{cache line}" or "cache block". Main memory reads and writes are whole cache lines. When the processor wants to write to main memory, the data is first written to the cache on the assumption that the processor will probably read it again soon. Various different policies are used. In a "write-through" cache, data is written to main memory at the same time as it is cached. In a "write-back" cache it is only written to main memory when it is forced out of the cache. See also {buffered write-through}, {posted write-through}. If all accesses were writes then, with a write-through policy, every write to the cache would necessitate a main memory write, thus slowing the system down to main memory speed. However, statistically, most accesses are reads and most of these will be satisfied from the cache. Write-through is simpler than write-back because an entry that is to be replaced can just be overwritten in the cache as it will already have been copied to main memory whereas write-back requires the cache to initiate a main memory write of the flushed entry followed (for a processor read) by a main memory read. However, write-back is more efficient because an entry may be written many times in the cache without a main memory access. When the cache is full and it is desired to cache another line of data then a cache entry is selected to be written back to main memory or "flushed". The new line is then put in its place. Which entry is chosen to be flushed is determined by a "{replacement algorithm}". Some processors have separate instruction and data caches. Both can be active at the same time, allowing an instruction fetch to overlap with a data read or write. This separation also avoids the possibility of bad cache conflict between say the instructions in a loop and some data in an array which is accessed by that loop. See also {direct mapped cache}, {fully associative cache}, {secondary cache}, {sector mapping}, {set associative cache}. (06 May 1995) cache block {cache line} cache conflict When accesses to memory repeatedly overwrite the same {cache} entry. This can happen if two blocks of data are mapped to the same set of cache locations. For example, if arrays A, B and C, each the same size as a {direct mapped cache}, are placed next to each other in memory, thrashing will occur when the following loop is executed: for (i=1; i (COAST) {Intel Corporation} attempt to's standardise the modular {L2 cache} subsystem in {Pentium}-based computers. A COAST module should be about 4.35" wide by 1.14" high. According to earlier specifications from {Motorola}, a module between 4.33" and 4.36" wide, and between 1.12" and 1.16" high is within the COAST standard. Some module vendors, including some major motherboard suppliers, greatly violate the height specification. Another COAST specification violated by many suppliers concerns clock distribution in synchronous modules. The specification requires that the clock tree to each synchronous chip be balanced, i.e. equal length from edge of the connector to individual chips. An unbalanced clock tree increases reflections and noise. For a 256 {kilobyte} cache module the standard requires the same clock be used for both chips but some vendors use separate clocks to reduce loading on the clock driver and hence increase the clock speed. However, this creates unbalanced loading in other motherboard configurations, such as motherboards with soldered caches in the system. (10 Jun 1996) caching {cache} CACI A company developing and marketing {SIMSCRIPT}, {MODSIM} and other {simulation} software products. Telephone: +1 (619) 457-9681. (22 Sep 1994) CACM {Communications of the ACM} CAD {Computer Aided Design} CAD/CAM Computer Aided Design/Computer Aided Manufacturing.(see CAD) CADD Computer Aided Detector Design: a project to develop standards and methods to allow cooperation between HEP detector designers working in different institutes. Cadence Design Systems The "world leader" in {design automation} software and services that accelerate and advance the process of designing electronic systems. {Home (http://www.cadence.com)} CADET Computer Aided Design Experimental Translator. [Sammet 1969, p. 683]. (29 Nov 1994) CADRE A software engineering vendor in the US. CAE 1. {Common Applications Environment}. 2. {Computer Aided Engineering}. CAF {constant applicative form} CAFE ["Job Control Languages: MAXIMOP and CAFE", J. Brandon, Proc BCS Symp on Job Control Languages--Past Present and Future, NCC, Manchester, England 1974]. (28 Oct 1994) CAGE Early system on IBM 704. Listed in CACM 2(5):16 (May 1959). CAI {Computer-Aided Instruction} Cairo {Windows NT 4} CAIS {Common APSE Interface Specification} CAIS-A Common APSE Interface Set A DoD-STD-1838A. CAiSE Conference on Advanced Information Systems Engineering. CAJOLE (Chris And John's Own LanguagE) A {dataflow} language developed by Chris Hankin and John Sharp at {Westfield College}. ["The Data Flow Programming Language CAJOLE: An Informal Introduction", C.L. Hankin et al, SIGPLAN Notices 16(7):35-44 (Jul 1981)]. (08 Nov 1994) CAL Course Author Language. The {CAI} language for the {IBM 360}. ["Design of a Programming Language for Computer Assisted Learning", F.M. Tonge, Proc IFIP Congress 1968, v2]. (08 Nov 1994) Calc An extensible, advanced desk calculator and mathematical tool written in {Emacs Lisp} by Dave Gillespie . Calc runs as part of {GNU Emacs}. You can use Calc as only a simple four-function calculator, but it also provides additional features including choice of algebraic or {RPN} ({stack}-based) entry, logarithms, trigonometric and financial functions, {arbitrary precision}, complex numbers, vectors, matrices, dates, times, infinities, sets, algebraic simplification, differentiation and integration. Version: 2.02. FTP calc-2.02.tar.z from your nearest {GNU archive site}. (08 Nov 1994) calculator (Cambridge) {bitty box}. (22 Feb 1995) Calculus of Communicating Systems (CCS) A mathematical model (a formal language) for describing processes, mostly used in the study of {parallelism}. A CCS program, written in {behaviour expressions syntax} denotes a process behaviour. Programs can be compared using the notion of {observational equivalence}. ["A Calculus of Communicating Systems", LNCS 92, Springer 1980]. ["Communication and Concurrency", R. Milner, P-H 1989]. (29 Nov 1994) Calendar API {Calendar Application Programming Interface} Calendar Application Programming Interface (CAPI, Calendar API) An {API} for calendar {software}. {Microsoft} has defined a CAPI for their {Schedule+} application. (11 Jan 1995) Caliban A {declarative} annotation language for controlling the partitioning and placement of the evaluation of expressions in a distributed {functional language}. Designed by Paul Kelly , {Imperial College}. ["Functional Programming for Loosely-coupled Multiprocessors", P. Kelly, Pitman/MIT Press, 1989]. (11 Jan 1995) Calico {C+@} California State University San Marcos (CSUSM) {Home (http://coyote.csusm.edu/)} (21 Dec 1994) callback 1. A scheme used in {event-driven} programs where the program registers a callback handler for a certain {event}. The program does not call the handler directly but when the event occurs, the handler is called, possibly with arguments describing the event. 2. A user authentication scheme used by some computers running {dial-up} services. The user dials in to the computer and gives his login ID and password. The computer then hangs up the connection and uses an {auto-dial} {modem} to call back to the user's registered telephone number. Thus, if an unauthorised person discovers a user's password, the callback will go, not to him, but to the owner of that login who will then know that his account is under attack. However, some {PABX}s can be fooled into thinking that the caller has hung up by sending them a dial tone. When the computer tries to call out on the same line it is not actually dialing through to the authorised user but is still connected to the original caller. call-by-name (CBN) (Normal order reduction, leftmost, outermost reduction). An argument passing convention (first provided by {ALGOL 60}?) where argument expressions are passed unevaluated. This is usually implemented by passing a pointer to some code which will return the value of the argument and an environment giving the values of its {free variable}s. This {evaluation strategy} is guaranteed to reach a {normal form} if one exists. When used to implement {functional programming} languages, call-by-name is usually combined with {graph reduction} to avoid repeated evaluation of the same expression. This is then known as {call-by-need}. The opposite of call-by-name is {call-by-value} where arguments are evaluated before they are passed to a function. This is more efficient but is less likely to terminate in the presence of infinite data structures and {recursive} functions. Arguments to {macro}s are usually passed using call-by-name. (29 Nov 1994) call-by-need A {reduction strategy} which delays evaluation of function arguments until they are needed because they are arguments to a {primitive} function or a conditional. Call-by-need is one part of {lazy evaluation}. The term first appears in Chris Wadsworth's thesis "Semantics and Pragmatics of the Lambda calculus" (Oxford, 1971, p. 183). It was used later, by J. Vuillemin in his thesis (Stanford, 1973). (27 May 1995) call-by-reference An argument passing convention where the address of an argument variable is passed to a function or procedure, as opposed to where the value of the argument expression is passed. Execution of the function or procedure may have {side-effect}s on the actual argument as seen by the caller. The C language's "&" (address of) and "*" (dereference) operators allow the programmer to code explicit call-by-reference. Other languages provide special syntax to declare reference arguments (e.g. {ALGOL 60}). See also {call-by-name}, {call-by-value}, {call-by-value-result}. call-by-value (CBV) An {evaluation strategy} where arguments are evaluated before the function or procedure is entered. Only the values of the arguments are passed and changes to the arguments within the called procedure have no effect on the actual arguments as seen by the caller. See {applicative order reduction}, {call-by-value-result}, {strict evaluation}, {call-by-name}, {lazy evaluation}. call-by-value-result An argument passing convention where the {actual argument} is a variable V whose value is copied to a local variable L inside the called function or procedure. If the procedure modifies L, these changes will not affect V, which may also be in scope inside the procedure, until the procedure returns when the final value of L is copied to V. Under {call-by-reference} changes to L would affect V immediately. Used, for example, by {BBC BASIC V} on the {Acorn} {Archimedes}. call/cc {Call-with-current-continuation} Caller ID (CID) A feature of some {modem}s. calling convention The arrangement of {arguments} for a procedure or function call. Different programming languages may require arguments to be pushed onto a {stack} or entered in {registers} in left-to-right or right-to left order, and either the caller or the callee can be responsible for removing the arguments. The calling convention also determines if a variable number of arguments is allowed. (11 Nov 1995) Call-with-current-continuation (call/cc) A {Lisp} control function. call/cc takes a function f as its argument. It calls f and passes it the current {continuation}, which is itself a function, k. The continuation represents the context of the call to call/cc. It is a function which takes the result of call/cc (which is the result of f) and returns the final result of the whole program. Thus if, for example, the final result is to print the value returned by call/cc then anything passed to k will also be printed: (defun f (k) (apply k 1) (apply k 2) 3) (print (call/cc f)) Will print 1 2 3. (29 Nov 1994) CALS Computer-Aided Acquisition and Logistics Support: a DoD standard for electronic exchange of data with commercial suppliers. CAM {content addressable memory} CAM-6 Software for running {cellular automata}. CAM-6 has been implemented in hardware as {CAM-PC}. (21 Apr 1995) CAMAL CAMbridge ALgebra system. A {symbolic mathematics} system used in Celestial Mechanics and General Relativity. CAMAL was implemented in {BCPL} on {Titan}. ["CAMAL User's Manual", John P. Fitch, Cambridge U, England (1975)]. ["The Design of the Cambridge Algebra System", S.R. Bourne et al, Proc 2nd Symp of Symb & Alg Manip, SIGSAM 1971]. (16 Feb 1995) Cambridge Lisp A flavour of Lisp using BCPL. Sources owned by Fitznorman partners. Camelot Library ["The Camelot Library", J. Bloch, in "Guide to the Camelot Distributed Transaction Facility: Release I", A.Z. Spector et al eds, CMU 1988, pp. 29-62]. [What is it?] (19 Apr 1995) CAMIL Computer Assisted/Managed Instructional Language. A language used for {CAI} at Lowry AFB, CO. ["The CAMIL Programming Language", David Pflasterer, SIGPLAN Notices 13(11):43 (Nov 1978)]. (09 Nov 1994) CAML 1. A language for preparation of animated movies. 1976. (09 Nov 1994) 2. Categorical Abstract Machine Language. A version of {ML} by G. Huet, G. Cousineau, Ascander Suarez, Pierre Weis, Michel Mauny and others of {INRIA}. CAML is intermediate between {LCF ML} and {SML}. CAML has {first-class} functions, {static type inference} with {polymorphic} types, user-defined {variant type}s and {product type}s, and {pattern matching}. The CAML V3.1 implementation adds {lazy} and {mutable} data structures, a "{grammar}" mechanism for interfacing with the {Yacc} {parser generator}, {pretty-printing} tools, high-performance {arbitrary-precision} arithmetic and a complete library. CAML runs on {Sun-3}, {Sun-4}, {Sony} {68000}, {Sony} {R3000}, {Decstation}, {Macintosh} {A/UX} and {Apollo}. It is built on a proprietary run-time system. See also {CAML Light}. {(ftp://ftp.inria.fr/lang/caml/)}. {(ftp://ftp.inria.fr/INRIA/caml/V3.1)}. E-mail: Pierre Weis , (bugs). Mailing list: . {Usenet} newsgroup: {news:comp.lang.ml}. ["The CAML Reference Manual", P. Weis et al, TR INRIA-ENS, 1989]. (20 Oct 1991) Caml Light A small portable implementation of a version of {CAML} by Xavier Leroy and Damien Doligez of {INRIA}. Caml Light uses a {bytecode interpreter} written in {C}. It adds a {Modula-2}-like {module} system, {separate compilation}, {lazy stream}s for parsing and printing, graphics primitives and an interface with {C}. Version 0.6 runs on {Unix}, {MS-DOS}, {Macintosh}, {Atari ST} and {Amiga}. It includes an {interpreter}, {compiler}, {Emacs} mode, libraries, {scanner generator}, {parser generator}, {run-time support} and an interactive development environment. {(ftp://ftp.inria.fr/lang/caml-light/)} E-mail: . Mailing list: . {Usenet} newsgroup: {news:comp.lang.ml}. (06 Oct 1993) CAM-PC A {cellular automata} circuit board which is a hardware implementation from {Automatrix} of the {MIT} {CAM-6} machine. It comes with dozens of experiments and applications. {Home (http://www.automatrix.com/campc/index.html)} (21 Apr 1995) Campus Wide Information System (CWIS) Information and services made publicly available at university sites via {kiosk}s running interactive computing systems, possibly via campus networks. Services routinely include directory information, calendars, {bulletin board}s and {database}s. (09 Nov 1994) CAN {Cancel} can To abort a job on a {time-sharing} system. Used especially when the person doing the deed is an operator, as in "canned from the {console}". Frequently used in an imperative sense, as in "Can that print job, the LPT just popped a sprocket!" Synonymous with {gun}. It is said that the ASCII character with {mnemonic} CAN (0011000) was used as a kill-job character on some early OSes. Alternatively, this term may derive from mainstream slang "canned" for being laid off or fired. Canada Country with {domain} "ca". (06 Apr 1995) Cancel (CAN) {ASCII} character 24. (28 Jun 1996) Candle Part of the {Scorpion} environment development system. (09 Nov 1994) candygrammar A programming-language grammar that is mostly {syntactic sugar}; the term is also a play on "candygram". {COBOL}, {Apple Computer}'s {Hypertalk} language, and a lot of the so-called "{4GL}" database languages share this property. The usual intent of such designs is that they be as English-like as possible, on the theory that they will then be easier for unskilled people to program. This intention comes to grief on the reality that syntax isn't what makes programming hard; it's the mental effort and organisation required to specify an algorithm precisely that costs. Thus the invariable result is that "candygrammar" languages are just as difficult to program in as terser ones, and far more painful for the experienced hacker. [The overtones from the old Chevy Chase skit on Saturday Night Live should not be overlooked. This was a "Jaws" parody. Someone lurking outside an apartment door tries all kinds of bogus ways to get the occupant to open up, while ominous music plays in the background. The last attempt is a half-hearted "Candygram!" When the door is opened, a shark bursts in and chomps the poor occupant. There is a moral here for those attracted to candygrammars. Note that, in many circles, pretty much the same ones who remember Monty Python sketches, all it takes is the word "Candygram!", suitably timed, to get people rolling on the floor. - GLS] canonical (Historically, "according to religious law") 1. A standard way of writing a formula. Two formulas such as 9 + x and x + 9 are said to be equivalent because they mean the same thing, but the second one is in "canonical form" because it is written in the usual way, with the highest power of x first. Usually there are fixed rules you can use to decide whether something is in canonical form. Things in canonical form are easier to compare. 2. The usual or standard state or manner of something. The term acquired this meaning in computer-science culture largely through its prominence in {Alonzo Church}'s work in computation theory and {mathematical logic} (see {Knights of the Lambda-Calculus}). Compare {vanilla}. This word has an interesting history. Non-technical academics do not use the adjective "canonical" in any of the senses defined above with any regularity; they do however use the nouns "canon" and "canonicity" (not "canonicalness"* or "canonicality"*). The "canon" of a given author is the complete body of authentic works by that author (this usage is familiar to Sherlock Holmes fans as well as to literary scholars). "The canon" is the body of works in a given field (e.g. works of literature, or of art, or of music) deemed worthwhile for students to study and for scholars to investigate. The word "canon" derives ultimately from the Greek "kanon" (akin to the English "cane") referring to a reed. Reeds were used for measurement, and in Latin and later Greek the word "canon" meant a rule or a standard. The establishment of a canon of scriptures within Christianity was meant to define a standard or a rule for the religion. The above non-technical academic usages stem from this instance of a defined and accepted body of work. Alongside this usage was the promulgation of "canons" ("rules") for the government of the Catholic Church. The usages relating to religious law derive from this use of the Latin "canon". Hackers invest this term with a playfulness that makes an ironic contrast with its historical meaning. A true story: One Bob Sjoberg, new at the {MIT} {AI Lab}, expressed some annoyance at the incessant use of jargon. Over his loud objections, {GLS} and {RMS} made a point of using as much of it as possible in his presence, and eventually it began to sink in. Finally, in one conversation, he used the word "canonical" in jargon-like fashion without thinking. Steele: "Aha! We've finally got you talking jargon too!" Stallman: "What did he say?" Steele: "Bob just used "canonical" in the canonical way." Of course, canonicality depends on context, but it is implicitly defined as the way *hackers* normally expect things to be. Thus, a hacker may claim with a straight face that "according to religious law" is *not* the canonical meaning of "canonical". (22 Dec 1994) canonical name (CNAME) A host's official name as opposed to an alias. The official name is the first hostname listed for its {Internet address} in the hostname database, {/etc/hosts} or the {Network Information Service} (NIS) map hosts.byaddr ("hosts" for short). A host with multiple network interfaces may have more than one Internet address, each with its own canonical name (and zero or more aliases). You can find a host's canonical name using {nslookup} if you say set querytype=CNAME and then type a hostname. (29 Nov 1994) canonicity The extent to which something is {canonical}. (03 Mar 1995) C (ANSI) {ANSI C} can't happen The traditional program comment for code executed under a condition that should never be true, for example a file size computed as negative. Often, such a condition being true indicates data corruption or a faulty {algorithm}; it is almost always handled by emitting a fatal error message and terminating or crashing, since there is little else that can be done. Some case variant of "can't happen" is also often the text emitted if the "impossible" error actually happens. Although "can't happen" events are genuinely infrequent in production code, programmers wise enough to check for them habitually are often surprised at how frequently they are triggered during development and how many headaches checking for them turns out to head off. See also {firewall code}, {professional programming}. (10 May 1996) Cantor An {object-oriented language} with fine-grained {concurrency}. [Athas, Caltech 1987. "Multicomputers: Message Passing Concurrent Computers", W. Athas et al, Computer 21(8):9-24 (Aug 1988)]. (22 Nov 1994) CAP {Columbia AppleTalk Package} capacitor An electronic device that can store electrical charge. The charge stored Q in Coulombs is related to the capacitance C in Farads and the voltage V across the capacitor in Volts by Q = CV. The basis of a {dynamic RAM} cell is a capacitor. They are also used for power-supply smoothing (or "decoupling"). This is especially important in digital circuits where a digital device switching between states causes a sudden demand for current. Without sufficient local power supply decoupling, this current "spike" cannot be supplied directly from the power supply due to the inductance of the connectors and so will cause a sharp drop in the power supply voltage near the switching device. This can cause other devices to malfunction resulting in hard to trace {glitch}es. (12 Apr 1995) CAPI {Calendar Application Programming Interface} Captain Abstraction The champion of the principles of {abstraction} and modularity, who protects unwary students on {MIT}'s course {6.001} from the nefarious designs of Sergeant Spaghetticode and his vile {concrete} programming practices. See also {spaghetti code}. (22 Nov 1994) card 1. A circuit board. 2. A {punched card}. 3. An alternative term for a {node} in a system (e.g. {HyperCard}, {Notecards}) in which the node size is limited. cardinality The number of elements in a set. If two sets have the same number of elements (i.e. there is a {bijection} between them) then they have the same cardinality. A cardinality is thus an {isomorphism class} in the {category} of sets. {aleph 0} is defined as the cardinality of the first {infinite} {ordinal}, {omega} (the number of {natural number}s). (29 Mar 1995) cardinal number The {cardinality} of some set. CARDS Central Archive for Reusable Defense Software of the DoD. card walloper An {EDP} programmer who grinds out {batch program}s that do stupid things like print people's paychecks. Compare {code grinder}. See also {punched card}, {eighty-column mind}. Career Limiting Move (CLM, Sun) 1. An action endangering one's future prospects of getting plum projects and raises and possibly one's job: "His Halloween costume was a parody of his manager. He won the prize for "best CLM"." 2. Denotes extreme severity of a bug, discovered by a customer and obviously missed earlier because of poor testing: "That's a CLM bug!" (16 Dec 1994) caret ^ Common: hat; control; uparrow; caret; {ITU-T}: circumflex. Rare: chevron; {INTERCAL}: shark (or shark-fin); to the ("to the power of"); fang; pointer (in Pascal). careware /keir'weir/ (Or "{charityware}") {Shareware} for which either the author suggests that some payment be made to a nominated charity or a levy directed to charity is included on top of the distribution charge. Compare {crippleware}. (16 Dec 1994) cargo cult programming A style of (incompetent) programming dominated by ritual inclusion of code or program structures that serve no real purpose. A cargo cult programmer will usually explain the extra code as a way of working around some bug encountered in the past, but usually neither the bug nor the reason the code apparently avoided the bug was ever fully understood (compare {shotgun debugging}, {voodoo programming}). The term "cargo cult" is a reference to aboriginal religions that grew up in the South Pacific after World War II. The practices of these cults centre on building elaborate mockups of aeroplanes and military style landing strips in the hope of bringing the return of the god-like aeroplanes that brought such marvelous cargo during the war. Hackish usage probably derives from Richard Feynman's characterisation of certain practices as "cargo cult science" in his book "Surely You're Joking, Mr. Feynman" (W. W. Norton & Co, New York 1985, ISBN 0-393-01921-7). Caribou CodeWorks The company which sells {QTRADER}. Director of Marketing: Norm Larsen . (05 Nov 1995) Carl Friedrich Gauss A German mathematician (1777 - 1855), one of all time greatest. Gauss discovered the {method of least squares} and {Gaussian elimination}. Gauss was something of a child prodigy; the most commonly told story relates that when he was 10 his teacher, wanting a rest, told his class to add up all the numbers from 1 to 100. Gauss did it in seconds, having noticed that 1+...+100 = 100+...+1 = (101+...+101)/2. He did important work in almost every area of mathematics. Such eclecticism is probably impossible today, since further progress in most areas of mathematics requires much hard background study. Some idea of the range of his work can be obtained by noting the many mathematical terms with "Gauss" in their names. E.g. {Gaussian elimination} (linear algebra); {Gaussian prime}s (number theory); {Gaussian distribution} (statistics); {Gauss} [unit] (electromagnetism); {Gaussian curvature} (differential geometry); {Gaussian quadrature} (numerical analysis); {Gauss-Bonnet formula} (differential geometry); {Gauss's identity} (hypergeometric functions); {Gauss sum}s (number theory). His favourite area of mathematics was {number theory}. He conjectured the {Prime Number Theorem}, pioneered the {theory of quadratic forms}, proved the {quadratic reciprocity theorem}, and much more. He was "the first mathematician to use {complex number}s in a really confident and scientific way" (Hardy & Wright, chapter 12). He nearly went into architecture rather than mathematics; what decided him on mathematics was his proof, at age 18, of the startling theorem that a regular N-sided polygon can be constructed with ruler and compasses if and only if N is a power of 2 times a product of distinct {Fermat prime}s. (10 Apr 1995) Carnegie Mellon University (CMU) {School of Computer Science (http://www.cs.cmu.edu/Web/FrontDoor.html)}. Carriage Return (CR, Control-M, {ASCII} 13) The character which causes the {cursor} to move to the left margin, often used with {line feed} to start a new line of output. Encoded in {C} and {Unix} as "\r". (24 Jun 1996) carrier signal A continuous signal of a single frequency capable of being modulated by a second, data-carrying signal. In radio communication, the two common kinds of modulation are {amplitude modulation} and {frequency modulation}. (01 Mar 1995) Cartesian product (After Renee Descartes, French philosper and mathematician) The Cartesian product of two sets A and B is the set A x B = {(a, b) | a in A, b in B}. I.e. the product set contains all possible combinations of one element from each set. The idea can be extended to products of any number of sets. If we consider the elements in sets A and B as points along perpendicular axes in a two-dimensional space then the elements of the product are the "{Cartesian coordinates}" of points in that space. See also {tuple}. (01 Mar 1995) CAS {Column Address Strobe} CAS 8051 Assembler An experimental one-pass {assembler} for the 8051 with {C}-like syntax by Mark Hopkins. Most features of a modern assembler included except {macro}s (soon to be added). Requires an {ANSI-C} compiler. Ported to {MS-DOS}, {Ultrix}, {Sun4}. (July 1993). Version 1.2. Assembler/linker, disassembler, documentation, examples. {(ftp://lyman.pppl.gov/pub/8051/assem)}, {(ftp://nic.funet.fi/pub/microprocs/MCS-51/csd4-archive/assem)}. {Other software tools and applications (ftp://nic.funet.fi/pub/compilers/8051/)}. (26 Jan 1995) cascade 1. A huge volume of spurious error-message output produced by a compiler with poor error recovery. Too frequently, one trivial syntax error (such as a missing ")" or "}") throws the parser out of synch so that much of the remaining program text is interpreted as garbaged or ill-formed. 2. A chain of {Usenet} followups, each adding some trivial variation or riposte to the text of the previous one, all of which is reproduced in the new message; an {include war} in which the object is to create a sort of communal graffito. CASE 1. {Computer Aided Software Engineering}. 2. {Common Applications Service Element}. case 1. {switch}. 2. Whether a character is a capital letter ("upper case" - ABC..Z) or a small letter ("lower case" - abc..z). The term case comes from the printing trade when the use of moving type was invented in the early Middle Ages (Caxton or Gutenberg?) and the letters for each {font} were stored in a box with two sections (or "cases"), the upper case was for the capital letters and the lowercase was for the small letters. The Oxford Universal Dictionary of Historical Principles (Feb 1993, reprinted 1952) indicates that this usage of "case" (as the box or frame used by a compositor in the printing trade) was first used in 1588. (01 Mar 1996) case and paste (From "{cut and paste}") The addition of a new {feature} to an existing system by selecting the code from an existing feature and pasting it in with minor changes. Common in telephony circles because most operations in a telephone switch are selected using "case" statements. Leads to {software bloat}. In some circles of {Emacs} users this is called "programming by Meta-W", because Meta-W is the Emacs command for copying a block of text to a {kill buffer} in preparation to pasting it in elsewhere. The term is condescending, implying that the programmer is acting mindlessly rather than thinking carefully about what is required to integrate the code for two similar cases. At {DEC}, this is sometimes called "clone-and-hack" coding. (01 Mar 1996) case based reasoning (CBR) A technique for problem solving which looks for previous examples which are similar to the current problem. This is useful where {heuristic} {knowledge} is not available. There are many situations where experts are not happy to be questioned about their knowledge by people who want to write the knowledge in rules, for use in {expert systems}. In most of these situations, the natural way for an expert to describe his or her knowledge is through examples, stories or cases (which are all basically the same thing). Such an expert will teach trainees about the expertise by apprenticeship, i.e. by giving examples and by asking the trainees to remember them, copy them and adapt them in solving new problems if they describe situations that are similar to the new problems. CBR aims to exploit such knowledge. Some key research areas are efficient indexing, how to define "similarity" between cases and how to use temporal information. (28 May 1996) CASE Data Interchange Format (CDIF) An emerging standard for interchange of data between {CASE} tools. (03 Nov 1994) CASE framework A set of products and conventions that allow CASE tools to be integrated into a coherent environment. case insensitive Opposite of {case sensitive}. (13 Jan 1996) Case Integration Services (CIS) A committee formed to discuss {CASE} tool integration standards related to {ATIS}. (25 Oct 1994) CASE*Method An analysis and design method from {Oracle} targeted at information management applications. (28 Oct 1994) case sensitive A property of a text matching operation which distinguishes upper-{case} (capital) letters from lower case. Case sensitivity is relevant in areas including: text editors (many default to case insensitive searching but case sensitive searching is occasionally more useful); {operating systems} ({MS-DOS} filenames are case insensitive, {Unix} filenames are case sensitive); programming (most programming languages distiguish between case in the names of {identifiers}), and addressing ({Internet} {domain names} are case insensitive but {RFC 822} local {mailbox} names are case sensitive). (13 Jan 1996) CASE SOAP III Version of SOAP assembly language for IBM 650. Listed in CACM 2(5):16 (May 1959). CASE tools Software tools to help in the application of CASE methods to a software project. cashe It's spelled "{cache}". CAST {Computer Aided Software Testing} cast An {explicit type conversion} in {C}. For example, to convert an integer (usually 32 bits) to a char (usually 8 bits) we might write: int i = 42; char *p = &buf; *p = (char) i; The expression "(char)" casts i to char type. Casts (including this one) are often not strictly necessary, due to automatic {coercion}s performed by the compiler, but can be used to make the conversion obvious and to avoid warning messages. (16 Feb 1995) casters-up mode [IBM, probably from slang belly up] Yet another synonym for "broken" or "down". Usually connotes a major failure. A system (hardware or software) which is "down" may be already being restarted before the failure is noticed, whereas one which is "casters up" is usually a good excuse to take the rest of the day off (as long as you're not responsible for fixing it). casting the runes What a {guru} does when you ask him or her to run a particular program and type at it because it never works for anyone else; especially used when nobody can ever see what the guru is doing different from what J. Random Luser does. Compare {incantation}, {runes}, {examining the entrails}; also see the {AI koan} about Tom Knight. CAT Common Abstract Tree Language. R. Voeller & Uwe Schmidt, U Kiel, Germany 1983. Universal intermediate language, used by Norsk Data in their family of compilers. "A Multi-Language Compiler System with Automatically Generated Codegenerators, U. Schmidt et al, SIGPLAN Notices 19(6):202-2121 (June 1984). cat (From "catenate") {Unix}'s command which copies one or more entire files to the screen or some other output sink without pause. See also {dd}, {BLT}. Among {Unix} fans, cat is considered an excellent example of user-interface design, because it delivers the file contents without such verbosity as spacing or headers between the files (the {pr} command can be used to do this), and because it does not require the files to consist of lines of text, but works with any sort of data. Among Unix haters, cat is considered the {canonical} example of *bad* user-interface design, because of its woefully unobvious name. It is far more often used to {blast} a file to standard output than to concatenate files. The name "cat" for the former operation is just as unintuitive as, say, LISP's {cdr}. Of such oppositions are {holy wars} made. (29 Nov 1994) catatonic Describes a condition of suspended animation in which something is so {wedged} or {hung} that it makes no response. If you are typing on a terminal and suddenly the computer doesn't even echo the letters back to the screen as you type, let alone do what you're asking it to do, then the computer is suffering from catatonia (possibly because it has crashed). Compare {buzz}. CATE Computer Aided Test Engineering: CASE methods applied to electronics testing and linked to CAE category A category K is a collection of objects, obj(K), and a collection of {morphism}s (or "{arrow}s"), mor(K) such that 1. Each morphism f has a "typing" on a pair of objects A, B written f:A->B. This is read 'f is a morphism from A to B'. A is the "source" or "{domain}" of f and B is its "target" or "{co-domain}". 2. There is a {partial function} on morphisms called {composition} and denoted by an {infix} ring symbol, o. We may form the "composite" g o f : A -> C if we have g:B->C and f:A->B. 3. This composition is associative: h o (g o f) = (h o g) o f. 4. Each object A has an identity morphism id_A:A->A associated with it. This is the identity under composition, shown by the equations id_B o f = f = f o id_A. In general, the morphisms between two objects need not form a set (to avoid problems with {Russell's paradox}). An example of a category is the collection of {set}s where the objects are sets and the morphisms are functions. Sometimes the composition ring is omitted. The use of capitals for objects and lower case letters for morphisms is widespread but not universal. Variables which refer to categories themselves are usually written in a script font. cathode ray tube (CRT) An electrical device for displaying images by exciting phosphor dots with a scanned electron beam. CRTs are found in computer {VDU}s and {monitors}, televisions and oscilloscopes. The first commercially practical CRT was perfected on 29 January 1901 by Allen B DuMont. A large glass envelope containing a negative electrode (the cathode) emits electrons (formerly called "cathode rays") when heated, as in a {vacuum tube}. The electrons are accelerated across a large voltage gradient towards the flat surface of the tube (the screen) which is covered with phosphor. When an electron strikes the phosphor, light is emitted. The electron beam is deflected by electromagnetic coils around the outside of the tube so that it scans across the screen, usually in horizontal stripes. This scan pattern is known as a {raster}. By controlling the current in the beam, the brightness at any particular point (roughly a "{pixel}") can be varied. Different phosphors have different "{persistence}" - the length of time for which they glow after being struck by electrons. If the scanning is done fast enough, the eye sees a steady image, due to both the persistence of the phospor and of the eye itself. CRTs also differ in their {dot pitch}, which determines their spatial {resolution}, and in whether they use {interlace} or not. (17 Nov 1994) CATIA An {IBM} CAD/CAM product used heavily in the auto and aerospace industries. It runs on the IBM {RS/6000} and {HP} platforms. (13 Jan 1996) C/ATLAS A DoD test language. It is a variant of {ATLAS}. (01 May 1995) CATNIP {Common Architecture for Next Generation Internet Protocol} CATO FORTRAN-like CAI language for PLATO system on CDC 1604. "CSL PLATO System Manual", L.A. Fillman, U Illinois, June 1966. cause-effect graphing A testing technique that aids in selecting, in a systematic way, a high-yield set of test cases that logically relates causes to effects to produce test cases. It has a beneficial side effect in pointing out incompleteness and ambiguities in specifications. (10 May 1996) CAYLEY A {symbolic mathematics} system for {group theory} written by John Cannon of the {University of Sydney}, Australia in 1976. ["An Introduction to the Group Theory Language CAYLEY", J. Cannon, Computational Group Theory, M.D. Atkinson ed, Academic Press 1984, pp. 148-183]. Current version: V3.7 for Sun, Apollo, VAX/VMS. E-mail: . (12 Apr 1995) cb {C Beautifier} CBASIC A {BASIC} compiler by Gordon Eubanks, now at {Symantec}. It evolved from/into {EBASIC}. (29 Nov 1994) C-BC A {strongly typed} version of {BC} by Mark Hopkins, with expanded {C}-like {syntax}, more base types and the ability to form {array} and pointer types of any dimension and to allocate/free arrays at run-time. Most {POSIX-BC} features are supported, except that functions must be declared consistently and declared before first use. String handling is slightly different. It requires and {ANSI-C} compiler and runs under {MS-DOS} or {Unix}. Version 1.1. Posted to {alt.sources} 10 Apr 1993. (23 Aug 1993) C Beautifier (cb) A {Unix} tool for reformatting {C} {source} code. Unix manual: cb(1). CBIR {content-based information retrieval}. (23 Nov 1995) CBN {call-by-name} CBR {case based reasoning} CBT {Computer-Based Training} CBV {call-by-value} cbw {Crypt Breakers Workbench} CC++ {Compositional C++} C/C++ 1. {Borland C/C++}. 2. {Watcom C/C++}. 3. Either {C} or {C++}. (06 Apr 1996) CCalc A {symbolic mathematics} system for {MS-DOS}, available from {Simtel}. (12 Apr 1995) CCD {Charge-Coupled Device} CCIRN Coordinating Committee for Intercontinental Research Networks. CCITT Commite' Consultatif International de Telegraphique et Telephonique. (International consultative committee on telecommunications and Telegraphy). CCITT changed its name to {ITU-T} on 1 March 1993. (03 Nov 1994) CCL 1. Coral Common LISP. 2. Computer Control Language. English-like query language based on COLINGO, for IBM 1401 and IBM 1410. CCLU Cambridge CLU. {CLU} extended to support {concurrency}, distributed programming and {remote procedure call}, by G. Hamilton et al at {CUCL}. E-mail: Jean Bacon . (13 Oct 1994) ccmail It's written {cc:mail}. cc:mail Commercial {electronic mail} software by {Lotus Corporation} for {Microsoft Windows}. (14 Mar 1995) CCP {Concurrent Constraint Programming} Not a language, but a general approach. CCR 1. {condition code register}. 2. (Database) {concurrency control and recovery}. CCS 1. {Common Communication Services}. 2. {Calculus of Communicating Systems}. 3. {Computer Conservation Society}. CCSP {Contextually Communicating Sequential Processes} CCTA The Government Centre for Information Systems. (Originally "Central Computer and Telecommunications Agency"). CCTA is part of the Office of Public Service and Science, which works to improve government's services to the public. They are responsible for stimulating and promoting the effective use of Information Systems in support of the efficient delivery of business objectives and improved quality of services by the public sector. CCTA had to change its name as it was not an agency in the "Next Steps" sense. The letters were retained as customers were familiar with them. {Home (http://www.open.gov.uk/)} E-mail: . Address: Norwich, UK. (18 Jan 1995) CD {Compact Disc} CDA Compound Document Architecture: DEC's set of standards for compound document creation, storage, retrieval, interchange and manipulation. CDC {Control Data Corporation} CDDI {Copper Distributed Data Interface} CDD/Plus {DEC}'s {CASE} {repository}. CDE 1. C Development environment from {IDE}. 2. {Common Desktop Environment}. 3. {Co-operative Development Environment}. (11 Jul 1996) CDF Common Data Format. A library and toolkit for multi-dimensional data sets. CD-i {Compact Disc interactive} CDIF {CASE Data Interchange Format} CDL 1. Computer Definition [Design?] Language. A hardware description language. "Computer Organisation and Microprogramming", Yaohan Chu, P-H 1970. 2. Command Definition Language. Portion of ICES used to implement commands. Sammet 1969, p.618-620. 3. Compiler Description Language. C.H.A. Koster, 1969. Intended for implementation of the rules of an affix grammar by recursive procedures. A procedure may be a set of tree-structured alternatives, each alternative is executed until one successfully exits. Used in a portable COBOL-74 compiler from MPB, mprolog system from SzKI, and the Mephisto chess computer. "CDL: A Compiler Implementation Language", in Methods of Algorithmic Language Implementation, C.H.A. Koster, LNCS 47, Springer 1977, pp.341-351. "Using the CDL Compiler Compiler", C.H.A. Koster, 1974. Versions: CDL2, CDLM used at Manchester. 4. Common Design Language. "Common Design Language", IBM, Software Engineering Inst, Sept 1983. 5. Control Definition Language. Ideas which contributed to Smalltalk. ["Control Structures for Programming Languges", David A. Fisher, PhD Thesis, CMU 1970]. CDM {Content Data Model} CDMA {Code Division Multiple Access} CDP1802 {RCA 1802} CDPD {Cellular Digital Packet Data} cdr /ku'dr/ or /kuh'dr/ [LISP] To skip past the first item from a list of things (generalised from the LISP operation on binary tree structures, which returns a list consisting of all but the first element of its argument). In the form "cdr down", to trace down a list of elements: "Shall we cdr down the agenda?" Usage: silly. See also {loop through}. Historical note: The instruction format of the IBM 7090 that hosted the original LISP implementation featured two 15-bit fields called the "address" and "decrement" parts. The term "cdr" was originally "Contents of Decrement part of Register". Similarly, "car" stood for "Contents of Address part of Register". The cdr and car operations have since become bases for formation of compound metaphors in non-LISP contexts. GLS recalls, for example, a programming project in which strings were represented as linked lists; the get-character and skip-character operations were of course called CHAR and CHDR. CD-ROM {Compact Disc Read-Only Memory} CDS {Concrete Data Structure} cd tilde /C-D til-d*/ To go home. From the {Unix} {C shell} and Korn-shell command "cd ~", which takes one to one's "$HOME" directory. "cd" with no arguments does the same thing. (28 Oct 1994) Cecil AN {object-oriented} language combining {multi-method}s with a classless object model, object-based {encapsulation} and optional {static type checking}. It distinguishes between {subtyping} and {code inheritance}. Includes both explicit and implicit parameterisation of objects, types, and methods. {(ftp://cs.washington.edu/pub/chambers/cecil-spec.ps.Z)} ["The Cecil Language: Specification and Rationale", C. Chambers, TR 93-03-05, U Wash (Mar 1993)]. (28 Oct 1994) Cedar A superset of {Mesa}, from {Xerox PARC}, adding {garbage collection}, {dynamic type}s and a universal pointer type (REF ANY). Cedar is a large complex language designed for custom Xerox hardware and the Cedar {operating system}/environment. Data types are {atom}s, lists, ropes ("industrial strength" strings), conditions. Multi-processing features include {thread}s, {monitor}s, {signal}s and catch phrases. It was used to develop the Cedar integrated programming environment. ["A Description of the Cedar Language", Butler Lampson, Xerox PARC, CSL-83-15 (Dec 1983)]. ["The Structure of Cedar", D. Swinehart et al, SIGPLAN Notices 20(7):230-244 (July 1985)]. (26 Jan 1995) CEEMAC+ Graphics language for DOS 3.3 on {Apple II}. CEI-PACT Central European Initiative on Parallel Computation. CELIP A cellular language for {image processing}. ["CELIP: A cellular Language for Image Processing", W. Hasselbring , Parallel Computing 14:99-109 (1990)]. (05 Dec 1994) Cellang See {Cellular}. CELLAS CELLular ASsemblies. A {concurrent} {block-structured} language. [Mentioned in "Attribute Grammars", LNCS 323, p.97]. (05 Dec 1994) Cello {World-Wide Web} {browser} {client} for {IBM PC}s. Runs under {Microsoft Windows}. CELLSIM A program for modeling populations of biological cells. ["CELLSIM II User's Manual", C.E. Donaghey, U Houston (Sep 1975)]. (05 Dec 1994) Cellular A system for {cellular automata} programming by J Dana Eckart Version 2.0 includes a {byte-code compiler}, {run-time system} and a viewer. Posted to comp.sources.Unix, volume 26. See also {Cellang}. (03 Apr 1993) cellular automata {cellular automaton} cellular automaton (CA, plural "- automata") A regular spatial lattice of "cells", each of which can have any one of a finite number of states. The state of all cells in the lattice are updated simultaneously and the state of the entire lattice advances in discrete time steps. The state of each cell in the lattice is updated according to a local rule which may depend on the state of the cell and its neighbors at the previous time step. Each cell in a cellular automaton could be considered to be a {finite state machine} which takes its neighbours' states as input and outputs its own state. The best known example is J.H. Conway's game of {Life}. {FAQ (http://alife.santafe.edu/alife/topics/cas/ca-faq/ca-faq.html)}. {Usenet} newsgroups: {news:comp.theory.cell-automata}, {news:comp.theory.self-org-sys}. (03 Mar 1995) Cellular Digital Packet Data (CDPD) A wireless standard providing two-way, 19.2 kbps {packet} data transmission over exisiting {cellular telephone} channels. (05 Dec 1994) Cellular Neural Network (CNN) The CNN Universal Machine is a low cost, low power, extremely high speed {supercomputer} on a chip. It is at least 1000 times faster then equivalent {DSP} solutions of many complex {image processing} tasks. It is a stored program supercomputer where a complex sequence of image processing {algorithm}s is programmed and downloaded into the chip, just like any digital computer. Because the entire computer is integrated into a chip, no signal leaves the chip until the image processing task is completed. Although the CNN universal chip is based on analogue and logic operating principles, it has an on-chip analog-to-digital input-output interface so that at the system design and application perspective, it can be used as a digital component, just like a DSP. In particular, a development system is available for rapid design and prototyping. Moreover, a {compiler}, an {operating system}, and a {user-friendly} CNN {high-level language}, like the {C} language, have been developed which makes it easy to implement any image processing algorithm. [Professor Leon Chua, University of California at Berkeley]. (27 Apr 1995) CELP Computationally Extended Logic Programming. ["Computationally Extended Logic Programming", M.C. Rubenstein et al, Comp Langs 12(1):1-7 (1987)]. (27 Apr 1995) CEN Conseil Européen pour la Normalisation. A body coordinating {standard}isation activities in the EEC and EFTA countries. (14 Dec 1994) CENELEC CEN-electricite. central office The place where telephone companies terminate customer lines and locate switching equipment to interconnect those lines with other networks. (20 Mar 1995) central processing unit (CPU) The part of a computer which controls all the other parts. The CPU fetches instructions from memory and decodes them. This may cause it to transfer data to or from memory or to activate {peripheral}s to perform input or output. A {parallel computer} has several CPUs which may share other resources such as memory and peripherals. The {CPU Info Center} lists many kinds of CPU. (14 Dec 1994) Centronics A parallel interface for printers, found on many {microcomputer}s. [Pin-out? Origin?] (16 Feb 1995) Centrum voor Wiskunde en Informatica (CWI, Centre for Mathematics and Computer Science) An independent research institute active in the fields of mathematics and computer science. CWI also aims to transfer new knowledge in these fields to society, trade and industry CWI is funded for 70 percent by NWO, the National Organisation for Scientific Research. The remaining 30 percent is obtained through national and international programmes and contract research commissioned by industry. Address: Kruislaan 413, 1098 SJ Amsterdam, The Netherlands; P.O.Box 94079, 1090 GB Amsterdam, The Netherlands. Telephone: +31 (20) 5929 333. {Home (http://www.cwi.nl/)} {(ftp://ftp.cwi.nl/pub/)}. CEPT {Comite Europeen des Postes et Telecommunications} Ceres workstation Oberon System A complete {Oberon} compiler written in {Oberon}. Source to most of the complete Ceres workstation Oberon System, including the {NS32032} {code generator} is available. Less of the low level system specific code is available. {(ftp://neptune.ethz.ch/Oberon/)} (14 Dec 1994) CERN The European Laboratory for Particle Physics. CERNLIB The CERN Program Library. CERT {Computer Emergency Response Team} CESP Common ESPECIALLY AI Language Inst, Mitsubishi - {object-oriented} extension of {Prolog}, a {Unix}-based version of {ESP}. E-mail: . (14 Dec 1994) CESSL CEll Space Simulation Language. A language for simulating cellular space models. ["The CESSL Programming Language", D.R. Frantz, 012520-6-T, CS Dept, U Michigan (Sept 1971)]. (14 Dec 1994) cextract A {C} {prototype} extractor byAdam Bryant . It can generate {header file}s for large multi-file C programs, and will provide an automated method for generating all of the prototypes for all of the functions in such a program. It can also generate a sorted list of all functions and their locations. cextract version 1.7 works with both {ANSI C} and {K&R C} and runs under {Unix} and {VMS}. Posted to comp.sources.reviewed. (03 Nov 1992) CFD Computational Fluid Dynamics. A {FORTRAN}-based parallel language for the {Illiac IV}. (29 Nov 1994) cforth A {Forth} {interpreter}. Posted to comp.sources.unix volume 1. (29 Nov 1994) cfortran.h A transparent, machine independent interface between {C} and {FORTRAN} routines and global data by Burkhard Burow . It provides {macro}s which allow the {C} {preprocessor} to translate a simple description of a C (Fortran) routine or global data into a Fortran (C) interface. Version 2.6 runs on {VAX}/{VMS}/{Ultrix}, {DECstation}, {Silicon Graphics}, {IBM} {RS/6000}, {Sun}, {Cray}, {Apollo}, {HP9000}, {LynxOS}, {f2c}, {NAG f90}. {(ftp://zebra.desy.de/cfortran/)} It was reviewed in RS/Magazine November 1992 and a user's experiences with cfortran.h are described in the Jan 93 issue of Computers in Physics. (12 Apr 1992) CFP 1. {Constraint Functional Programming}. 2. {Communicating Functional Processes}. 3. Call For Papers (for a conference). CFP92 {SPEC CFP92} CGA {Color Graphics Adapter} CGGL ("seagull") Code-Generator Generator Language. A machine description language based on modeling the computer as a {finite-state machine}. ["A Code Generator Generator Language", M.K. Donegan et al, SIGPLAN Notices 14(8):58-64 (Aug 1979)]. (24 Oct 1994) CGI 1. {Common Gateway Interface}. 2. A French software engineering vendor in the US. CGM {Computer Graphics Metafile} CGOL A package providing {ALGOL}-like surface syntax for {MACLISP} written by V.R. Pratt in 1977. {(ftp://mc.lcs.mit.edu/its/ai/lisp/cgol.fasl)} ["CGOL - An Alternative Exetrnal Representation for LISP Users", V. Pratt, MIT AI Lab, Working Paper 89, 1976]. cgram An {ANSI C} {LL1} or {LL2} {grammar} written in {Scheme} by Mohd Hanafiah Abdullah . A program (f-f-d.s) extracts the FIRST/FOLLOW/DIRECTOR sets. {(ftp://primost.cs.wisc.edu/pub/comp.compilers/cgram-ll1.Z)} chad /chad/ 1. The perforated edge strips on printer paper, after they have been separated from the printed portion. Also called {selvage} and {perf}. 2. (Obsolete) The confetti-like paper bits punched out of cards or paper tape and which collected in the {chad box}. This was also called "chaff", "computer confetti" and "keypunch droppings". Historical note: One correspondent believes "chad" derives from the Chadless keypunch (named after its inventor), which cut little U-shapes in the card, rather than punching out a circle or rectangle. The U's made a hole when folded back. It was clear that if the Chadless keypunch didn't make them, then the stuff that other keypunches made had to be "chad". chad box A metal box about the size of a lunchbox (or in some models a large wastebasket), for collecting the {chad} that accumulated in {Iron Age} {card punch}es. You had to open the covers of the card punch periodically and empty the chad box. The {bit bucket} was notionally the equivalent device in the {CPU} enclosure, which was typically across the room in another great gray-and-blue box. chain 1. (From {BASIC}'s "CHAIN" statement) To pass control to a child or successor without going through the {operating system} {command interpreter} that invoked you. The state of the parent program is lost and there is no returning to it. Though this facility used to be common on memory-limited {microcomputer}s and is still widely supported for {backward compatibility}, the jargon usage is semi-obsolescent; in particular, {Unix} calls this {exec}. Oppose the more modern "{subshell}". 2. A series of linked data areas within an {operating system} or {application program}. "Chain rattling" is the process of repeatedly running through the linked data areas searching for one which is of interest. The implication is that there are many links in the chain. 3. A possibly infinite, non-decreasing sequence of elements of some {total ordering}, S x0 <= x1 <= x2 ... A chain satisfies: for all x,y in S, x <= y \/ y <= x. I.e. any two elements of a chain are related. ("<=" is written in {LaTeX} as {\sqsubseteq}). (03 Feb 1995) Challenge-Handshake Authentication Protocol (CHAP) An {authentication} scheme used by {PPP} servers to validate the identity of the originator of the connection upon connection or any time later. CHAP applies a three-way {handshaking} procedure. After the link is established, the server sends a "challenge" message to the originator. The originator responds with a value calculated using a {one-way hash function}. The server checks the response against its own calculation of the expected hash value. If the values match, the authentication is ack