[AK]: The idea for such a glossary came from news:comp.lang.tcl, but I don't remember anymore who proposed it. (Probably a trouble-maker like [LV] ) AK: The definitions below are currently the ones I am using. Please add links to separate pages to them for discussion. Terms referring to greater projects (f.e. [WOBBLE]) will need additional pages for specification et.al. [LV]: See http://catb.org/~esr/jargon/ , http://foldoc.doc.ic.ac.uk/foldoc/index.html , or http://www.imagescape.com/helpweb/history/define.html for sites referenced for explanations of computer jargon. ---- Also see the [acronym collection] in case what you are seeking is not merely a term, but an acronym of some sort. '''Note:''' The relations between some of the defined terms can be seen in a picture [http://www.oche.de/~akupries/img/gloss.gif] ---- Also note, the original intent for this page was as a collection of serious terms and their definitions. Over time, some humorous, or at least pseudo-humorous, terms have been added. ---- Alphabetical listing of terms: adminisphere: The rarefied organizational layers beginning just above the rank and file. Decisions that fall from the adminisphere are often profoundly inappropriate or irrelevant to the problems they were designed to solve. advanced regular expression: term used to distinguish the Tcl regular expression syntax in version 8.1 and later from the syntax used earlier in Tcl's product line. Alpha Geek: The most knowledgeable, technically proficient person in an office or work group. "Ask [RS], he's the alpha geek around here." application: A collection of code that is, in general, invoked from a command line or another application. An application can be in any programming language. archive: A collection of '''distribution'''s. Possibly uses meta information from the distributions to index them. bar: See '''foo''' for an explanation of both words. Batteries Included: A single archive file containing Tcl, Tk, and a number of other commonly used extensions, designed to be able to build as a useful, one configure/make (or binary) distribution. Beepilepsy: The brief seizure people sometimes suffer when their beepers go off, especially in vibrator mode. Characterized by physical spasms, goofy facial expressions, and stopping speech in mid-sentence. binary distribution: A ''distribution'' containing binary extensions. All of them must be compiled for the same machine architecture. binary extension: To use a code extension one has to compile the provided source code into the format understood by the particular machine architecture. The resulting files, the '''binary extension''', are unreadable to humans, but directly executable by the computer for which they were compiled. Users of the [TclPro] Tools able to compile script extensions into such a binary format too. A difference to the other binaries is, that these are independent of the particular architecture, due to the use of a bytecode representation. bit: [[fill in the blanks]] blamestorming: Sitting around in a group discussing why a deadline was missed or a project failed and who was responsible. builtin commands: The commands provided as part of the tcl '''kernel'''. bundle: See library. Used by perlies. byte: [[fill in the blanks]] CGI Joe: A hard-core CGI script programmer with all the social skills and charisma of a plastic action figure. charset: ??? character set: ??? Career-Limiting Move (CLM): Used among microserfs to describe an ill-advised activity. Trashing your boss while he or she is within earshot is a serious CLM. cobweb site: A World Wide Web (WWW) site that hasn't been updated for a long time. A dead WWW site. code extension: An ''extension'' implemented in C or some other system programming language. Contains the source code implementing the APIs and the commands. code point: ??? commercial software: This software generally is software sold with support, documentation, licensing, etc. for use in commercial environments. copyleft software: This is one term frequently attached to software distributed with one of the Free Software Foundatation [http://www.fsf.org/] license agreements. core: This and the term '''kernel''' are often intermixed. The distinction as I saw it on c.l.t. is to call the bare interpreter together with its builtin commands the kernel; and kernel + a standard library (see [Official library of extensions]) the core. core dump: This is something different from the definition of core on this page. This is a file or printout generated at the time of a program terminating event, reflecting the state of memory from the application's point of view. These should be, in general, things that the application developer would prefer not to generate. However, the unexpected is often encountered. dancing bear: [Will Duquette] writes on [comp.lang.tcl]: An ill-conceived system that nevertheless somehow manages to provide a minimal level of functionality despite being fundamentally flawed. In other words, the amazing thing about the Dancing Bear isn't that it dances ''well'', but that it dances ''at all''. distribution: A collection of files, extensions and bundles, all distributed together. donuts: Besides being a wonderful pastry, often used on the chatroom to indicate units of work ... an old Dunkin' Donuts (TM) commercial series used the catch-phrase "Time to make the donuts". http://www.insidejoke.tv/200210/donutguy.asp dynamically loadable library (DLL): A ''shared library'' that can be loaded after the program in question has been running for an arbitrary length of time. The main complexity with DLLs is making the names of the symbols (functions, datastructures, etc.) within the library available to the rest of the program, since the program itself cannot be built with direct knowledge of those symbols (since that knowledge would force the library to be loaded too early!) [emoticons]: A character representation of a concept expected to convey graphical recogniztion - think of this as being a character equivalent to an icon. encoding: A set of mappings from characters (described by name) to numeric code positions (often hex numbers). ASCII is a very widespread 7-bit encoding (i.e. using code positions 0x00..0x7F). Unicode is a 16 or more bits encoding that aims at containing all other encodings. Tcl uses Unicode as pivot encoding internally, and converts from/to other encodings with the [encoding] command. ensemble: A command that exists to cluster related subcommands together. The core has many examples of this ([info], [string], [dict], [namespace], [interp], etc.) and some extensions (e.g. [incr Tcl]) have special support for creating them using scripts. extension: A set of related files defining new commands and APIs, either at the C-level or the script level. May contain only tcl scripts, or only source code, or both. The pure forms are called script and code extensions. [filter]: A programming idea/paradigm/[idiom] whereby an application provides the functionality of reading its input, massaging it in some manner, and then producing output, typically making use of [stdin] and [stdout] [file handle]s. foo: The first metasyntactic variable. A generic word, not really an acronym, used as a variable name. Often found in conjunction with bar, and ultimately derived from the acronym FUBAR. For a really good feeling of what FUBAR is all about, see the movie Saving Private Ryan. In fact, see the movie anyway, but now you have something to look out for... :^) freely distributable software: This software is software whose authors encourage the free sharing of the executables and possibly the source. The license of this software does not try to restrict the exchange of the software, though there is often restrictions as to retaining of copyright notices, etc. freeware: A term created many years ago to refer to software whose authors expect no financial compensation for use of the software. In my opinion, it does NOT refer to software which, while free, is crippled until one pays a fee, or which is a limited demonstration of a package for which one is expected to pay. Freeware most frequently comes with source on Unix platforms, while on other platforms that may or may not be the case. This term often is used as synonymous to an entire class of software - public domain, copyleft, freely distributable. Gates meme: A mental virus, resulting in the infected person thinking that anything that Bill Gates and Microsoft can do no wrong. glyph: ??? Heisenbug: [aku] term for bug that moves as you insert puts, etc. to try to locate conditions causing the bug. [infrastructure]: an underlying base or foundation; basic facilities, services, etc for the functioning of an environment. [K]-combinator: originally from combinator theory, that is a function that takes two arguments and always returns the first: ''proc K {x y} {set x}''. In combinator theory, it is used to create constant functions, but in Tcl its use is quite different, where it is used as part of a construct to allow a variable's contents to be destructively retrieved, allowing for very efficient object ref-count management. More details can be found at [Tcl Performance] and [Chart of proposed list functionality]. Its use is an advanced optimisation technique that should be postponed if possible, since it does wonders for obfuscation [Donal Fellows]. kernel: See '''core''' for explanation of both terms. library: A collection of (possibly related) extensions. The term is potentially confusing as other things are called library too, most notably bundled object code. I hesitate to make the alternative '''bundle''' the primary definition, because of our [Official library of extensions]! Official bundle ?! [locale]: ??? major/minor command interface: See '''ensemble''' module: See '''extension'''. Perl speak. open source: A philosophy for developing, releasing, and evolving software. When programmers on the Internet can read, redistribute, and modify the source for a piece of software, it evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing. See http://www.opensource.org/ for more information. package: An extension containing the necessary baggage to allow the kernel its use via a call to "[package] require foo". To use extensions without that the user has to explicitly set up the auto_path in his applications, which is error prone and not easily distributable. regular expression: See [Regular Expressions]. script extension: An ''extension'' using tcl as implementation language. The defined commands are realized as tcl proc's. shared library: A piece of binary code that provides a set of operations and datastructures like a normal library, but which does not need to be physically incorporated into the executables that use it until they are actually executed. Virtually always implemented on machines with virtual memory by mapping the memory pages holding the library into the address space of each executable image in memory that uses the lib. Many operating systems also support dynamic libraries which are an extension of shared libraries that can be loaded during the execution of the program and not just when it is loaded. ''Operating systems without shared libs are really horrible and inefficient to use, since you end up with many copies of the same code from the C library in memory. Thankfully, the world has moved on!'' silver bullet: A technology or solution thought to somehow ''magically'' solve all (or a majority) of one's problems. Often used in relationship to whatever the media and industry is currently calling ''sexy''. For instance, cell phones, personal digital video recorders and pocket computers, or Java or XML and all the related baggage. slashdotted: The overwhelming flood of web site visitors that result after having an article posted about the site on http://www.slashdot.org/ . sneaker-net: The transference of data from one machine to another by way of floppy disk or some other hand carried media rather than by some sort of electronic connection. standard library: A library containing the extensions blessed by [TCT] and thus deemed "official". See the [Official library of extensions] for a project working to define its functionality. shareware: Software whose author is either not interested in payment or depends on trust or tricky code for payment. The application is made available for download but either depends on trust for the user to pay, or relies on nag screens, limited functionality, limited documentation, or limited support to encourage payment. standard tcl distribution: The distribution containing the '''core''', i.e. kernel and [Official library of extensions]. Often abbreviated as "standard distribution". standard tk distribution: See '''standard tcl distribution''', additionally contains the Tk extension. This extension can be logically split into a "Tk core extension" and a "Tk widgets extension" built on top of that one. It is possible to argue that "Tk" should be simply seen as an element of the "standard library". In that case there is no difference between the standard tcl/tk distributions. Tcl proper list: Sequence of characters in a form that Tcl_SplitList(3) is happy to accept and with no unquoted metacharacters from the set $[[" and unquoted braces and backslashes are only acceptable where they are performing quoting themselves; unquoted spaces are used separate list items (words.) The easiest way to build a proper list is to use the [list] command. All proper lists are valid commands (provided the first word in that list actually describes an existing command) that do not expand any of the words of the list from the form they were in when presented to the (sometimes putative) list operation. You should not assume that random user input is a list. Ever. Tcl ''pure'' list: A Tcl proper list that has never been referred to as anything other than a list (in particular, the printable version of this value has never been required.) The output of the various list commands (including [split] and [lappend]) are pure lists. Pure lists have substantially improved performance characteristics (since Tcl8.3) over ordinary lists for operations like [concat] and [eval] (working over 10 times faster in some pathological cases) though there are no other observable differences between them. [Unicode]: A standard for encoding characters (''not'' glyphs) that is meant to cover ''all'' written languages ever. Note: In e.g. the C sources for Tcl, "Unicode" is often used where UCS-2 would be a more appropriate term. ---- More terms, without explanations (yet). [compilation], [configuration], [hypertext], [hypertool], [installation], [megawidget], [meta information], [namespace], official, [ouster-vote], [patch], [platform], [release], [retrieval], ''Official release'' versus others (NeoTcl, Plus/Dash Tcl, [ActiveTcl], other?), version, [Babel], [ETEN], [Feather], [SEE], [TEA], [WOBBLE] [troll] ---- LV: I'm uncertain about the TclPro compilation note in 'binary extension'. That is to say, I do not know whether applications compiled by the TclPro tools are platform independent. Certainly not truly platform independent, since they require the tbcload extension which is only available for Windows, SPARC Solaris and Linux. ---- '''byte code:''' and several other items happen to appear in the "Python glossary" [http://manatee.mojam.com/python-glossary]. ---- [Category Tutorial] | [Category Glossary]