# Glossary¶

Acceptance Tests
System Tests
User Tests
Testing of the complete application to confirm that it meets the project specification
Accessor
Mutator
Methods that can access a private attribute. These methods control access to the attributes and can enforce value validation to make sure the attribute is properly constrained.
A simple number used to identify where in memory we want something to happen., In most computers, each byte of memory has a unique numerical address.
API
Application Programming Interface
A collection of methods that provide the public interface to a subsystem used in your application.
Assemble
Assembler
Assemblers
When we process a program written in Assembly Language, we use a tool called an assembler to convert the program into machine language the processor actually understands. We compile our programs.
Assembly Language
A human readable form of machine language. An assembler converts code written in this language into machine language. These languages are processor specific.
Avatar
A graphical representation of a user. Often an image, but it can be a cartoon-like character as well. To make the web more personal (and less anonymous), sites like Gravatar help users show their chosen avatar on many web sites. I consider this usage part of setting up a professional image.
Baby Step
Baby Steps
A software development process that focuses on making very small changes to your code, followed by a quick test using the compiler to make sure you can run your code, and a run that generates output you can inspect to see how your changes are working. The key to this is doing this sequence often.
baby steps
A programming style where you make small changes to a working program to get another working program that is closer to the final solution. Do not move on until the new program works!
Blasting Code
Blast Code
An old school method of software development. This method involves long sessions of writing code with few attempts to test the code. The result is often long sessions fixing typing mistakes, followed by long sessions with a debugger trying to figure out why things do not work.
blasting code
A term used to indicate long sessions furiously writing code in the hope you can get things running by a deadline. It is the exact opposite of baby steps programming!
block
A program block is a sequence of lines of code treated as a unit. Typical blocks are surrounded in C++ with curly braces, and are indented in Python.
Branch
Branches
A fork in the development road where a new feature is developed separate from the main line of development. Eventually this new line of development will be merged back into the main line.
Camel Case
A naming convention where the name is made up of multiple words, each with the first letter capitalized, and spaces removed. For example: CamelCase.
CAS
A scheme used by Git to store documents based on a hash code generated from a file’s contents. The hash code is used to form a directory name where the file is stored.
Change Script
Change Scripts
This is a chunk of code that can be used by an appropriate tool to convert one product into another one. These scripts are the heart of source code control systems. The Unix tool diff is used to create such scripts.
Clone
Create a copy of files living on a remote server for your local use. This creates a working copy of the project. You may (or may not) have rights to make changes and push them back up. It is common to clone project hosted on services like GitHub so you can use the code or study it. You can update your local copy at any time to keep up with changes in the project.
Cloud
The funny new term we use to refer to machines “out ther” somewhere on the Internet.
Code of Conduct
Every profession has a defined set of rules they expect members of that profession to follow. Most of the time, these rules are common sense, but they are defined to make sure every member understands what the profession seeks to present itself to the public. You are expected to know these rules and follow them when you join the profession. Look into each profession’s primary organization for guidance. For computer folks, this is probably the Association for Computing Machinery.
Command
A series of space-separated text items handed to the operating system. The first of these items is the name of some program (which may be internal to the operating system) you want to run. The rest of the items are called parameters which are processed by the program and control exactly what that program does.
Command Line
A simple text-only interface to the operating system on your computer. On a PC, the cmd program provided this interface. On Linux, the terminal program is what you launch, and on Linux, the term program usually provided this interface. In all cases, you type in commands to run programs, or manage your system.
Command Line
A simple text line on your screen where you can type in a command to the operating system.
Comment
Short chunks of text added to program code that seeks to explain when is going on. Far too often, this text just repeats what the code actually says, making them useless. Comments should explain the “why” of a block of code.
Commit
Commits
push to a remote server.
Commit
Commits
The process of generating a marker that records the state of a project at that moment in time. SCCS systems generate a change script that can be used to restore your project to the exact form is has at this moment, even as the project continues on in its development.
Compile
Compiler
Compilers
When we process a program written in a high-level programming language, the tool we use is called a compiler. That tool converts our program into the machine language the processor actually understands.. We say we compile our programs.
Conflict
Conflicts
A situation where two different versions of a single project asset exist. The differences must be resolved before the asset can continue to exist in the combined project.
constant
A memory location whose value is not supposed to change during the execution of a program.
A system that stores objects with names based on the contents of those objects. Used by Git internally to store version information.
Context Free
A programming language must be defined in such a way that figuring out what should come next (tokens) can be figured out without studying the context in which the token appears.
On most systems, when you right-click on something, you bring up a menu that is sensitive to the context of the thing you are pointing to. That menu lets you perform tasks common to that thing!
Continuous Integration
A testing technique where a project is automatically tested on a number of build systems to verify that the project is running properly. By testing automatically, developers can spot major problems that cause errors on specific platforms quickly.
A small file containing information needed to reconnect you to a web server automatically. Cookies often store log in credentials. It is vital that you never allow your personal cookies to be saved on a public machine. Doing so gives others complete access to your accounts. Parameter Parameters A block of text (no spaces allowed, unless the block is enclosed in quotes) that is passed to a program or a sub-program. If passed to a program and there are more than one parameter needed, they are usually separated by spaces. If passed to a sub-program, they are usually separated by commas.
Current
This is the flow of electrons through a circuit. Moving electrons generate heat and electromagnetic waves as a by-product of this motion.
Current Working Directory
When working on the command line, the directory you are currently working in is called the current working directory. On Linux/Mac running the pwd command will show you the path to this directory. On a PC< the cd command will do the same thing.
Current Working Directory
When you work on the command line, you are “working” in some directory on your system. Any files you create will be stored in that directory. You navigate around in your file system using the “change directory” command (cd).
data
A set of bits in memory representing an encoded thing from our human world.
Data Alignment
Modern processors work best when data is aligned so that the data item fits in a natural data chunk the processor will fetch. Misalignment problems occur when a single data item requires two memory accesses to access.
data type
Specifies the size of a data container needed to store values, and the rules to use to manipulate that data.
DDNS
DynDNS
Dynamic DNS
A service that updates DNS tables used by Internet services to map domain names to addresses. These services are helpful if your network address changes often, as it might if you are working from home and want to set up a server.
Debugger
A software development tool that is used to step a program one line at a time, then allows the developer to inspect the internal state of the machine as the program runs. They are a vital, and often under-used tool in programming.
Decode
After the processor has fetched part of an instruction, it decodes that part to determine what additional information it needs to do its work. If it needs more data from memory, that data will be read from memory into internal registers. As part of this step, the complete size of the instruction is calculated, and the IP register is updated to point to the next instruction in memory.
desk checking
Thinking your way through a piece of code manually. You record the values of all variables involved, and determining exactly how the code will flow.
Diff
Difference
A tool can read two files and show the differences between them. It can also create a patch file that can be used to convert one of them into the other.
Directory
A storage container in your file system. You can place files or other directories in this container. It is a model of a filing system “folder”.
Directory
Directory Tree

The operating system on most computers, today, uses tree-like structure to store files. The top of this tree, called the root of the tree, is a directory (or folder as Microsoft want us to call it). The name of this directory is either “/” on a Linux/Mac system, or “” on a Windows system.

A Directory is a container that can hold either files (objects that contain only data, such as text, images, of other binary data) or other directory objects (called subdirectories). Subdirectories have names that follow the rules for the operating system. Any directory or subdirectory can hold files of further subdirectories, giving the entire file system a (upside down) tree-like structure.

DNS
Domain Name Service
A phone book like service that maps domain names, like www.pylit.org, to an IP address.
Domain Name
Servers on the Internet are all part of some registered domain, which has a name associated with it. I own pylit.org for example. The last part is used to brand the kind of domain I am part of, in this case a non-profit organization. The first part is often chosen to identify the company involved. You can add a machine name to the front of this name. Often www is tacked on to identify a web server where the companies website is found.
DotFiles
Many programs keep settings in a hidden file in the user’s home directory. Exactly what these file hold depends on the program. It is common to manage these files in some way. I keep mine on my GitHub account at https://github.com/rblack42/dotfiles.
Drag and Drop
A modern method of constructing programs, or executing commands by dragging an icon on the screen and dropping it onto another place. Learning how all of this works can make you highly productive!
EBNF
Extended Backus-Naur Form
A notation used to define the syntax of a programming language. The notation is designed to be context free meaning there are no places where figuring out what comes next in a program depends on the context of the program. Usually, the rules can tell what is coming next by simple looking at the next token in the program
encoding
Creating a way to figure out a particular human thing from a simple number. There should be a unique number for each unique thing from our world.
Environment Variable
Environment Variables
Named strings managed by the command line processor. These strings are available to programs and are commonly used to set up data for a variety of purposes.
Execute
Executes
Executable
Executable File
In spite of the negative connotations of the term, we say a computer executes a program. The program that can be run is called executable.
Execute
Execution
We call the act of actually processing something in a computer executing that something. The something can be a single Machine Instruction, or a complete program. We are a brutal race of beings, aren’t we?
Fetch
Fetched
Using a special register called an Instruction Pointer (or IP, the processor reaches into the system memory at the address designated by the IP register and fetches a defined number of bytes which form all or part of the next Machine Instruction to be processed.
Finite State Machine
A system whose operation is defined as a set of states and transitions from one state to the next.
Flow Chart
A form of diagram showing the logic of a program. These diagrams have been around for almost as long as computers have been available. They are a great way (but not the only way) to visualize how your program will “flow” and think about what will happen when you run the program.
flow chart
A diagram of the flow of a program through decision and process blocks. A decision is shown in a diamond block and a process in a rectangle.
Folder
Microsoft insists that we call directory a “folder”. You pick! They mean the same thing.
Gravatar
A service that will provide your image when you log into a number of web sites. That image can be viewed by others to make sure they recognize the you they are communicating with. I consider using such a service part of setting up a professional image.
GUI
Graphical User Interface
A user interface were the mouse and windows are used to control applications.
Hash
Hash Key
A string of characters generated using a has function that is applied to all of the content of some object. These strings are often used to detect if the object has been altered in any way.
Hidden File
Most operating systems “hide” file names that start with a dot “.”. These normally contain configuration information that should not be modified unless you know what you are doing You need to use a special command to display these files when generating a directory list.
High-Level
High-Level Language
High-Level Languages
A language designed to be compiled into a low-level form like machine language is called a high-level language. Such languages are designed to be machine independent. C++ is a high-level language.
High-Level Language
Most programming languages are designed to help humans instruct a machine in how to solve some problem. These languages do not care what processor they will run on, and are called machine independent. You use a compiler designed to convert your high-level code into machine language for a particular processor. Different compilers support different machines.
Home Directory
Most operating systems create a directory you are to use for all of your files on that system. This directory is tied to the user account you log into when you access that system. On Windows, this is the directory where your “My Documents” folder is found, usually a place like C:\Users\username. On Linux systems the directory will be in /home/username. On Macs, it will be in /Users/username.
IDE
Integrated Development Environment
Integrated Development Environments
A collection of common programmer’s tools integrated into a single application with features that can greatly speed up program development. Unfortunately, typical IDE systems are complex and may not support all the languages you use, or be available on all the platforms you use.
Instruction
Instructions
Machine Instruction
Machine Instructions
A single instruction that a given processor can execute is called a machine instruction, or just an instruction. A set of Machine Instructions make up a Machine Language
Instruction Pointer
Processors use a special register to keep track of the address in memory where the next machine instruction to be processed can be found. This register is called the instruction pointer, or just the IP register.
Integration Tests
Tests of a set of units to confirm that they work together properly.
Interrupt
Interrupts
Interrupt Handler
Processors normally run programs using a simple four step process called “Fetch-Decode-Execute-Store”. When the machine is at the point where it is about to fetch another instruction, a signal can stop the action, and cause the machine to jump to a block of code that handles the signal. The signal is called an interrupt, since it interrupts the normal flow of a program. The code that deals with the signal is called an Interrupt Handler. Hopefully, interrupts are short enough that the interrupted program does not notice the delay!
IP
Internet Protocol. This term refers to the “dotted-quad” number assigned to your machine when it is connected to a standard network. You can determine your “IP number” by running ipconfig on a PC, or ifconfig on either a Mac or Linux system.
keyword
A word defined by the programming language. Most of the time, you should never try to use one of these words as the name of a data item in your program. Look for a list of these in the documentation for your programming language.
Latency
The delay between when an action is started and when it completes. In computing, this is usually measured in clock cycles.
A phase in transforming your program into a final executable file where one or more object files are combined with system libraries to build a final executable file. The tool that does this work is called a linker.
literal data
In your program, you can enter a series of text characters that represent the data item you want in your program. This text will be converted to internal binary form and used in your program.
Literate Programming

I form of documentation where program fragments are included in a literate document designed to explain how a program is developed. Those fragments are extracted from the documentation and combined into a normal form that can be processed by programming tools. This is the exact opposite of traditional documentation where the code is littered with comments that try to accomplish the same thing. These comments are often neglected and become meaningless.

The creator of this concept is Donald Knuth. If you claim to be a software developer, you owe it to yourself to read his work.

Low-Level
Low-Level Language
Low-Level Languages
A language that is very primitive, often tied to a specific processor. Assembly language and Machine language are low-level languages.
Machine Dependent
Machine Independent
Languages are either specific to a processor (low-level languages) or independent of any processor (high-level languages).
Machine Language
Machine Code
The low-level binary language a particular processor understands. Machine Language is a set of very simple instructions that the processor can execute. These languages are designed by the processor manufacturer, and are unique to that processor (or processor family). Usually that manufacturer designs an Assembly Language to go along with their machine language, but you are not required to use that language. As long as your assembler generates correct machine language, your code can run on that processor.
Master Branch
The primary development branch in a project managed with a SCCS.
Master Copy
Master Server
Development teams usually set up a server for use by the team. A copy of the project files is kept on this server and all team members make sure to synchronize their work with this server. We push your changes to the server, and pull changes down from the server, so we can see work done by other members of the team. Command Line A simple text line on your screen where you can type in a command to the operating system.
Merge
Merged
Combining two distinct development procedures into one. This may result in conflicts that must be resolved.
Mock Object
Mock Objects
A program component that implements the interface to a complex subsystem sufficiently well to enable testing of code that uses the real subsystem.
NTP
Network Time Protocol
Network Time Synchronization
Servers on the Internet with access to very accurate (usually based on atomic vibrations) time signals, keep track of the current time and can report that time to your system using a simple protocol. Most machines connected to the Internet can be set up to synchronize their view of the current time with these servers. (The software can even account for the time it takes for those signals to reach your machine!)
Object file
Object files
A file containing machine code for a particular machine, but missing some references needed to build an executable file. Several object files are combined, resolving the missing references to build a program. Usually, some of those unresolved references are resolved by searching a system library that accompanies the transformation tool (compiler) or the operating system. Only when there are no unresolved references can your program actually execute.
Old School
The place where old methods were learned. These methods are any methods not accepted as modern by current workers.
OOP
Object Oriented Programming
A design technique where the fundamental program components model objects from the real world the application is to serve.
OPC
Other People’s Code
You should study code written by other folks, especially those who seem to do the job well. Eventually, you will learn how to write well respected code and become the author of what others read. Just make sure you give credit for anything you decide to incorporate into your projects, and respect the license that goes with the code.
Open-Source
An open-source project is freely made available to the public in source code form. Such projects are usually protected by a license of some kind, designed to protect the rights of the author(s).
OS
Operating System
All general purpose machines need a piece of software to manage the hardware of the system. Typically, these programs provide a user interface to make controlling the machine simple. No on buys a system just for the OS. Instead, you pick an OS based on the applications you need to use to do real work (or play) on that system.
Over-Clock
Over-Clocked
It is possible to program the clock on some systems so it runs faster than advertised by the manufacturer. You might get more speed out of your system by doing this, but you also might reach a point where the signals are not getting where they need to be in time, and the results are totally unpredictable.
Parameter
Parameters
Values passed to a sub-program for it to use in it’s work.
Path
The sequence od directories and subdirectories you need to traverse to reach some file system asset.
Path Separator
When you form a “path” to something in your file system, you create a string showing through what directories you pass to get to the resource. You place one character between each directory name On a PC that character is a back slash, on Linux/Mac it is a forward slash.
Path Seperator
Operating systems use a special character to indicate you are traversing the directory tree from one level to another. The seperator character is a forward slash on most systems, except for WIndows, where you use a back slash instead.
Problem Statement
Every programming project should start with a problem statement that you analyze to see exactly what you are supposed to create. Your job is to create a solution to some problem. You may need to go to the originator of the statement to clarify things, and you should do this rather than guess at what is really wanted.
Professional Image
You have an image on the Web. Like it or not, this image follows you everywhere, even into the first job interview. Are you proud of that image? May folks post the most outrageous junk on their FaceBook pages, thinking no one but their “Friends” look at it. Not so! Unfortunately, your potential employer might check you out and not like what they see. Your choice. I recommend making sure you look like someone others want to employ, or at least someone who does more with their lives than just keep everyone informed about every aspect of your life on FaceBook! YMMV!
Provisioning Tool
Provisioning Tools
These programs help system administrators install and manage systems by automating the previously tedious process they used to perform. There are several tools in this category: Puppet, Chef, and Ansible are all popular open-source today.
Push
Pull
When working with an SCCS master server, we push your changes to the server, and pull changes down from the server, so we can see work done by other members of the team.
Real World
A fictitious place everyone claims exists. In this world things work perfectly (or at least better than in your present world!)
Refactor
Modify a programs code to improve its quality without changing how it works. This is a clean-up step in development designed to keep ugly code out of a project, and use best-practices in how code is presented.
Refactoring
Rewriting your code to make it simpler, and easier to understand without changing how it works. Your regression tests will tell you if you are doing this right!
refer
To use a name when you want to manipulate a piece of data. The computer will figure out the actual memory address for the item based on the name.
Register
A place inside the processor where data can be stored. There will be a number of such places in each processor Instead of addresses, these locations will have names. We refer to those names in assembly language programming.
Regression Test
Regression Tests
Testing to make sure a project is moving forward, not backward.
Repo
Repository
Repositories
A file system that serves as a database for a source-code control system like Subversion or Git.
Reserved Word
All programming languages identify certain words that are used to clearly identify the exact programming construct you are referring to in your code. Most of the time, those words may not be used for any other purpose, hence the term “reserved” is used to tell you they are special.
reStructuredText
A simple markup language designed to make documentation readable with no processing. Processing tools like SPhinx can turn documents written in this markup into HTML or PDF output that looks very nice!
Revision
Revisions
Another term for version. A revision captures the state of a collection of assets (files) at a particular moment in time. :term:Source Code Control Systems track the changes from one revision to another by creating change scripts that can convert the older version to the newer one.
Root Directory
The top most directory in a file system. On Linux/Mac there is one such directory, on Windows, this is the top most directory on any drive.
SCCS
Source Code Control System
Source Code Control Systems
Distributed Source Code Control Systems A tool used to track changes to all files involved in a development project. Most such tools use a central server. The distributed tools can function with no server as long as team members can communicate directly over the Internet. Typical tools are Subversion and Git
scope
This term refers to where you can use a name in your code. Typical scopes are file-level, procedure level, or block level.
Script
Programs designed to control computers are often called scripts. Most scripts are written using simple languages like bash on a Linux system or Python.
Semantic Analysis
The process of taking a properly formed construct in a programming language and converting it into another form the has the same meaning as the original construct. Typically, a tool like a compiler transforms your high-level code into machine language the processor can actually run.
Semantics
A properly written programming language construct causes the computer to do something. Exactly what that something is is called the semantics of that construct. You must understand the semantics in order to make sure you use that construct properly. This is called picking the right tool for the job!
Semantics
This term refers to the meaning of a construct in a programming language. Only a construct that passes the syntax analysis phase of transformation has any meaning.
Shell
Command Prompt
Command Line
The “old fashioned” way of controlling a computer. On Windows systems, this involves opening a window where you can type in commands. On Mac and Linux systems, you open up a Terminal program.
Side Effects
Functions usually operate as self contained blocks of code. They get information from the outside world through the parameter list, and produce results that are returned to the caller as return values. If the function modifies anything in the outside world as it performs its task, these are called side effects. Generally, these are bad things, and should be avoided.
SSD
Solid State Drive
Most hard disks use a rotating metal disk coated with a magnetic material that records the zeros and ones. A modern (and a bit expensive) alternative is to use electronic circuits similar to flash memory, but much faster, to store the bits. Since these drives are much faster than traditional hard disk drives, some systems use them to store the operating system, so the machine boots fast. If you have enough money, an SSD might be the only drive you have.
State
States

The exact configuration of a collection of items that make up some system. That set of items can grow or shrink over time, and individual items may be changed. At any moment in time, the entire collection is in some configuration.

The operation of many systems can be described exactly by a sequence of specific changes from one state to the next. Such a system is called a Finite State Machine.

Store
Retire
Retirement
Once a single Machine instruction has been completed, any new data produced by that instruction needs to be written to a final storage location, clearing the processor to move on to the next instruction. We say we store that data, or retire the instruction.
strongly typed
A language like C++ forces you to declare all variables and set the data type at compile time. You cannot change the type once it is defined. Python does not work this way. A data container can hold anything, and the type can change as you wish.
Style Guide
A document specifying the style to be used to projects in some organization. These guides lay out how program code should be presented, how variable names are formed, or how files should be organized to meet standards everyone in the organization will follow. Some of these guides can be extensive, others, very informal.
symbol table
All language processing tools (compilers) maintain a table of user named defined in the program. When you refer to a name, the symbol table is consulted to make sure what you are doing is legal in the language you are using.
Syntax
The formal rules that define how to write a construct in a particular programming language. These rules are simple and precise.
Syntax
This is a term referring to exactly what a statement in a programming language looks like when written in a program.
Syntax Analysis
Syntax Analyzer
The process of examining each construct in your program to make sure it is properly formed. Only when this is true can the analysis tool move on the semantic analysis to figure out what each construct means. The tool that checks the syntax is called a syntax analyzer, usually part of a compiler.
Syntax Diagram
A visual representation of a rule in EBNF. These rules define the syntax of a language.
System Clock
The master timing device on all computers. The processor uses the clock to synchronize the execution of machine instructions.
System Library
A file containing references needed by programs to connect to operating system of language specific functions.
System path
Most operating systems search for files to execute by examining directories listed in a system variable called the PATH.
Tag
Tags
A special marker used to identify particular revisions in a software development process.
TDD
Test Driven Development
A software development process where any change to the code is preceded by the creation of a test that will demonstrate the operation of the code after the change is made. The development process becomes one of generating code that passes the test.
Test Driven Design
A fictitious design technique where we practice TDD with no design in mind. This might be a bottom-up technique where interesting subassemblies get produced that might be useful in a larger project. Basically, this seems like a bad idea.
Texas Four-Step
All computer processors use a four step process to do their work. The four steps are called Fetch, Decode, Execute, and Store (or Retire.
Token
Tokens
In syntax analysis, your program is broken up into a number of tokens, a term describing one item that is “indestructible” in the language. For example the keyword “if” is a single token, so is an integer number, or a curly bracket, or the “>>” symbol used in C++.
Unit
Unit Test
Unit Tests
A unit is a basic component of a program. Typically this is one function or a class. We test these units to verify that they work as we intend.
Unresolved Reference
Unresolved References
When you try to link your program and there are references to items that cannot be found, we say these are unresolved references. The final executable file cannot be constructed in this case. System Library System Libraries Files containing code needed by a program to actually complete the transformation of a high-level language into machine language. In these libraries, we find code for input and output, code needed to interface with the operating system, etc.
URL
Uniform Resource Locator
The specific location of a web “resource”, which is normally a web page, but can be a file or anything that your browser can download to your system using the web protocol named HTTP.
variable
A memory container whose value may vary during execution of a program
variable name
A human friendly name we pick to refer to a piece of data in memory.
VirtualHost
A configuration used by Apache to manage web servers controlling multiple websites
VM
virtual machine
virtual machines
A program that emulates a real machine accurately enough to run real programs for that machine.
VM
Virtual Machine
A program running on a host computer that emulates a real machine well enough that operating systems and applications can run inside them. This effectively isolates the environment inside the VM from the host computer.
Voltage
This is a measure of the “force” driving electricity through a circuit. Think of pressure in a water pipe.
VPS
Virtual Private Server
A virtual machine set up on a remote server in such a way that a user can use the VM as a private serer. This arrangement is commonly used by companies to make more effective use of physical servers. Multiple VPS systems can run on one physical machine. Companies like Rackspace and Amazon offer access to such systems.
Working Copy
Working Copies
When using an SCCS system, the copy maintained on a remote server is usually treated as a master copy. Any local copies are called working copies. When you leave any work session, you should try to make sure the remote and working copies are identical. This will prevent problems later!
WSGI
Web Server Gateway Interface
A standard protocol used to host Python applications on web servers