= A Glosary of Computer jargon INTRODUCTION This file contains a list of terms frequently used and some fairly biased and un-scientific definitions. The file also includes a number of colloquial terms and phrases that are currently (may 2003) used commonly. Often these terms are used by writers who are attempting to impress or 'market' as much as they are attempting to communicate, and for this reason, phrases and words are often used in a large variety of ways. In some respects it would be possible to suggest that the sort of intelligence required in order to program or interact successfully with a computer is in many ways an 'anti-social' type of intelligence. For this reason, the clear use of language, which is a highly social function, is often lacking in writers of technical documents. A QUICK GLOSSARY (almost alphabetical) *Process Since all modern operating systems can do many things at the same time (which is known as 'multi-tasking') the different tasks need to be divided up in a manner in which the computer can keep track of which particular task it is performing at any one instant. The point is that the vast majority of personal computers only contain one CPU or central processing unit. A CPU is an extremely rapid calculating device but it has the characteristic that it is only capably of performing exactly one operation at any given moment. Also known as a thread. A program may have only one process or many, but must have at least one. *Automagically Used when something happens automatically and unexpectedly but is a welcome event. *Automatic Tag Completion This is a feature of XML Editors which helps the user to write XML by automatically inserting the correct XML tags in a document so that the user does not have to type out the tag. In some cases as soon as the user starts to type an XML tag, a little 'box' appears which contains a selection of all the tags which the writer could legally insert at that particular spot. And the writer can then choose which tag she would like to insert. The 'Netbeans' XML editor contains this feature. *Back-end :the back-end The part of the program that the user of the program does not see. This part includes the database and everything else. *Binary A system of yesses and no's (or zero's and one's) which can be (and is) used to represent anything in the universe in a very very accurate (but still approximate) sort of way. For example the number 4 is 'yes, no, no' whereas the number 5 is 'yes, no, yes' and the number 6 is 'yes, yes, yes' and so on. Every thing in the universe can be represented in some way using numbers, if you feel like it. This is the system that computers use. *Child Node This is a node that is 'beneath' another node. This term probably derives from the family-tree diagram analogy. A family-tree may often be drawn as a heirarchical data structure. *Client (computer software context) A program (or computer) which makes requests to another computer for some kind of information. *Collapse a node 'collapsing a node' is simply a fanciful way of saying 'clicking on a folder so that all the sub-directories of that folder disappear'. But, as we have discussed above, the 'folder' may not be normal folder, but may be something like an XML element. Often when a node has been 'expanded' it contains a ridiculously small icon of a 'minus sign' (as in the arithmetic sense). If a note has not been expanded or has been collapsed, it is usually represented by another very very small icon of a 'plus sign'. This are simply 'interface' conventions which are followed by most programs in order not to excessively confuse the user. Another convention, instead of the plusses and minusses, is to use pictures of 'folders' (in the sense of those cheap yellow cardboard things that you can put papers in, and which are supposed to keep the papers from getting damaged. ). When the folder is expanded the icon gets changed to a very small picture of folder which is open. -->> - a-parent-node - a-child-node - a-sibling-of-the-child-node - a-child-of-the-child-node + an-unexpanded-child-node - --<< *Contextual Menu This is the small pop-up box which you see when you click the right mouse button when the mouse is on top of some item (such as a file name). *Crap Out This term is used when a program 'dies' or 'crashes' for some reason, usually because too great a load has been placed on it. It is also possible to use this term when a program just starts to run really really slowly so that it becomes very annoying to use. This situation is also known as 'churn', because the program is churning over and over but not actually getting anything done. A quick tip, if you see the 'hard-disk light' on your computer lighting up continuously when you are trying to do something in a program then the program is using a thing called 'virtual memory' which is not good. *Data Structure A data structure is a way of storing data. Most data contains links between the different pieces of data. These links are often what makes the data meaningful. For example a shopping list can be thought of as a 'data structure'. The over-all unit of data (used in a plural sense) is the whole shopping list. But the shopping list contains 'sub-units' or 'items' or 'elements'. These 'items' are the actual items that need to be bought. These items may be linked or grouped in some way. They may be linked by the shop in which they need to be bought. These links or groupings are the characteristics that form the 'data-structure'. *Document Validation This is the process of checking an XML document conforms to the rules, or grammar as specified in the DTD or the Schema. *Dream-waster A program for creating web pages *Expand a Node *Explorer This refers to an application or window which allows a user to see an XML document (or other hierarchical data structure) as a 'tree' *Export This is the process of moving some data from one type of format to another format. It is usually referred to as exporting because it is performed from within a particular application. *Folder A 'folder' is (probably) the Microsoft word for a 'directory'. A directory is a place (or a virtual place) where files are stored on the hard disk of a computer. Directories and folders (which are the same thing) are designed to be a way to 'organise' or categorize the files which you have. It is a pretty bad system because often you will want to categorize something in a number of different ways but directories don't allow you to do this because a file can only be in one directory at once. The point is, though, that computers are very good at, and find it very easy to, categorise things hierarchically (which is how folders and directories are arranged). And for this reason, the designers of the first operating systems decided to foist apon the user (you) a system which was convenient for the computer but not convenient for human beings. This is not the only time which this has happened. *Front-end This is the part of a program that users of that program actually see. In other words, 'front-end' is fairly synonymous with the term 'user interface' or just 'interface'. If the program is running in an operating system such as Microsoft Windows then the front-end will be called a 'Graphical User Interface' or 'GUI'. *GUI o 'Graphical User Interface'. This is a type of interface to a program that has 'windows' and things that the user can amuse herself by clicking on, such as buttons and menus and little boxes with check marks in them. The alternative to this type of interface is 'text-only' or 'console-based' or 'terminal-based' or 'DOS box' or 'Command window' or 'command console'. This is where a small black box appears on your screen and asks you to type things like 'which dungeon do you enter?'. This 'console' interface is a relic from the days when computer monitors found it difficult to display images and so if a program didn't really need images then it didn't use them. Most people have a kind of mortal fear of a 'text only' type of computer program interface, probably because of some summer spent in a large western department store, entering product codes into some dodgy terminal screen with flickering green text and which demanded that the user have a great mastery of all aspects of the 'tab' key. *Hierarchical Database A kind of upside down tree of data. Examples of hierarchical databases include a file-system on a computer or an XML document. Another example of hierarchical data is one branch of a family tree, starting with a great-grandparent (for example) and listing all of that persons descendants in a 'tree' like format. *Ide This stands for Integrated Development Environment, and is a program which helps programmers to write other programs (!). *Instant Messaging This is the process of sending a message to another person without any delay or 'caching'. This is different from email because emails are not delivered until the recipient opens his or her 'inbox' *Internet-Exploder A Microsoft Web Browser *Mark-up Mark-up is a method off adding more information to a text document. This information can be added for different purposes. One main purpose is to change the appearance of the text document. This is the case for HTML. Another purpose is to insert data which will allow the document to exchanged with other people, computers, or programs. This is the case for XML. *Migrate This is the process of moving from one type of computer system or program to another system. *Name space This is a set of names which are all unique within their own little world, and their own little context, but which in another context or world may not be unique and which may mean something completely different. For example in the world of chess 'Kibbitz' means to look over somebody's shoulder and offer advice about what move they should play next, but in some other world (possibly Yiddish or German) that word may not mean that at all. That wasn't a very good example. Sorry. Name spaces are important in the XML world. *Node This originally was a Latin or Greek word meaning 'knot'. (Actually its probably an Indo-european word since it has a very strong similarity and 'cognate-ness' with the work 'knot'. It is unlikely that the Saxons or the Angles or the Normans would have taken such a basic word from a 'classical' culture -such as the Roman- especially considering that the word 'knot' is important in a sea-faring sense, which all those people, to some extent, must have been in order to arrive at England. So the English, who-ever they are, probably didn't take the work 'knot' from the Romans, who distributed a large number of words. So the similarity between the word 'knot' and the word 'node' cannot be explained through simple inheritance, and for this reason its likely that the words are connected in a much more ancient way.) A node is any point at which different paths (or branches or threads or lines or anything long and thin) come together. This is why a node is a 'knot', because knots are used to join different threads together (sometimes). The word node is much beloved by mathematicians and people who write computer software because it does make them sound knowledgeable and abstract, which is how they like to sound, and because the word is fairly general and can apply to lots of different situations. Some examples of nodes are; a cross-roads where various streets meet, the place where a family tree branches, the spot where the branch of a tree joins the trunk of the tree, a directory which contains files and other directories, an XML element which contains other XML elements, and so on. The word 'node' is often used when talking about the visual display of XML elements. *Parent Node A node which contains other nodes within itself. *Parsing The process of turning an XML document into something that a computer can actually understand. When this word is spoken out loud it almost always sounds identical to the word 'passing' which generally causes all sorts of confusion. XML files need to be 'parsed' before they can be 'transformed' (into something like HTML or anything else). Parsing is not really a completely simple thing for a computer to do, and can take more time than other sorts of tasks. When something is difficult for a computer to do, it is refered to as 'processor intensive' or 'resource intensive' or even 'memory intensive'. *Plain Text This is an important 'concept' which I have not dealt with in the main text of this document. Plain text is the sort of stuff the the program Microsoft Notepad can deal with. It is text without an visual 'formatting' applied. Although it may seem completely obvious plain text is actually very important because all different operating systems can understand it (Macintosh, Unix, Linux and Microsoft Windows). Technically there are slight differences in the way that Unix, Mac and MS Windows writes and reades 'plain text'. This difference has to do with the way that the end of each line in a text file is represented (or 'encoded'). But the difference is not very great, and there are lots of programs which can convert the different 'line endings' for different types of operating systems. These programs are often called something like 'unix2dos' or 'fromDos' or 'mac2unix' or whatever. In the Unix and Linux world an enormous number of programs deal with 'plain text' and most of these programs are available in MS Windows. XML is a plain text format. In other words, you can edit XML in any text editor including something like Microsoft Notepad. *Protocol An agreed apon set of messages and replies that allows two different sorts of computers to talk to each other. Or more generally, any agreed set of signals that allows different people or computers to comunicate. An example of a protocol is 'Morse Code' (That system of dots and dashes that get translated into characters of the alphabet). Another example is that system which American Indians apparently used of sending smoke signals to each other. For a protocol to work, the person at the other end has to know what your signal (or 'codes') actually mean. Protocols can have 'layers'. For example you could agree with some one that if you sent them the word 'blue' using smoke signals then it would mean that you had run out of water. By establishing another set of signals (in this case there is only one signal, the word 'blue') on top of the already established 'smoke signal' protocol, you have effectively added a 'layer' on top of that protocol. This is not very well explained, but the concept is quite simple when you get it. In the world of computer networks, protocols and layers of protocols are very important. For example, HTTP (the Hyper Text Transport Protocol) is one very common protocol. The Alexis program uses another XML based protocol which is a 'layer' on top of the HTTP protocol. I have probably made this sound more complicated than it really is. *Relational Database A system of tables (things which contain rows and columns) which contain information about a particular subject area. These tables can be 'queried' using a thing called 'structured query language' (SQL) which is fairly similar to English. Relational Databases have been the most commonly used over the last decade. *Rendering The process of turning mark-up tags into some kind of visual display. Also know as 'displaying', 'formatted for visual output', 'outputting', 'transforming into an end user document' etc. *Root Node This is the 'top-most' node, the node which contains all the other nodes. *Server A program (or computer) which manages information and responds to requests from other programs which may or may not be on the same computer. *Sibling Node This is an XML (or other type of) node which is on the same 'level' as another node. *Source *Source Code This is the code that a program is 'built' or created with. The reason that it is often not possible to get the source code for a program is that the company that made the program is worried that if you have the source code you wont need to pay them to use the program which they have written. This is because *Source Editor This is an editor which actually allows you to edit the 'codes' which are in a file. This is in a sense the opposite of 'WYSIWYG'. An XML editor really needs to have both a 'source editor' and a 'wysiwyg' editor so that the writer can choose which method suits her best. This is a general principal of interface design; allow the user to choose rather than being 'big-brotherish'. *Source View This is a view of a file which displays literally everything in the file rather than shielding the user from certain 'tricky' stuff which they might not want to see. For example when you click on the 'view source' menu item when you are viewing a web page, what is displayed is a 'source view'. But the source in question does not have to be HTML. It could XML, java, smoke-signal-codes, etc. *System A elaborate name for a program or a set of programs or for anything that does something *Tag Completion *Tags Tags are specific examples of mark-up, such as or *Text Editor/ Word-processor These two terms are NOT the same. The difference is important. A text editor does not provide features that allow you to 'format' the text which you are writing. That is, there are no 'italic' buttons or 'bold' buttons. Microsoft Word is a 'Word Processor' where as Microsoft Notepad is a 'Text Editor'. Word Processors are a terrible, terrible waste of time and perhaps should be illegal. If you are writing large numbers of documents which are fairly similar, you probably should use a text editor. *Tree View This is a view of an XML Document (or other hierarchical system) which displays the document as set of 'branches' of a 'tree' in a similar manner to MS File Explorer. *Validation *Vapor-ware (I spelt this without a 'u' because it is an American invention). This is a program or a system which is 'proposed' or designed or talked about and discussed but which is never actually created. Interesting vapor-ware is in some ways more important than it may seem, because programs which are never created can sometimes influence programs which are. It is said, for example, that the 'hyper-text' system (which all web-pages use now) was based on another system which was vapor-ware and much more ambitious than HTML or hyperlinks. *Virtual World A world which doesn't exist *WYSIWYG o This can be pronounced 'wizzy wig' or something similar. Its a fairly common and dominating term. It basically means that you can edit a document as if you were using some dodgy word-processor even though the document, or file, or thing, that you are editing is actually an HTML page or some other type of file which in reality contains all sorts of strange codes. An XML editor can also have a WYSIWYG interface so that the writer of the XML document doesn't have to see all the XML tags when she is writing. Dream-weaver is an example of a program that has a WYSIWYG interface, so that the web designer can create web pages without writing any HTML codes. *Xml This is a way of adding extra information to a document in order to allow it to be exchanged with other computers, programs or people, or to allow it to be transformed into other formats, such as HTML, plain text, Adobe PDF or WAP (which is the format used by mobile phones). XML is a simple but flexible system that uses 'tags' add information to a text document. To write an XML document is very simple, here is one -->> blue sky silver lining plain text content confusion Thats the question --<< *Xml DTD This is another way of doing what a 'xml schema' does. It is an older and apparently less preferable technique. *Xml Editor This is a piece of software that helps you write XML Documents. Strictly speaking every 'text editor' is able to edit XML documents (because XML is just text) but in practice it is often useful to have an editor which helps the user to type the tags, makes sure that the tags are 'legal' for the current XML documents and do other things like this. *Xml Grammar *Xml Schema This is a way of specifying the rules which a particular type of XML document must obey. For example the 'schema' will state what tags can be used, and where the tags can be used. Actually a schema is itself an XML document, that is, it obeys all the rules of XML. Its analogous to having the constitution of a country written in exactly the same format as all the other legislation for that country. This is considered to be a big advantage. *Xml Syntax This is the set of rules which govern a particular XML document and specify which tags may be used in that document. *meta rule This is a rule about other rules. The word 'meta' is originally Greek for something like 'above' but now can be used for any kind of thought which is more abstract than another thought. *well formed If a document adheres to the general rules of XML, then it is called 'well formed'. This is different from 'validation'.