# Glossary¶

Amperes
TBD
Assembler
A tool that processes code written in a terse language designed to make machine instructions human readable. One line of assembly language translates into a single instruction for the target processor.
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.
Atom
A small fundamental building block making up the matter in the universe. These atoms are constructed out of even smaller components called Electrons, Protons, and Neutrons.
Attribute
Attributes
A variable stored inside of a logical structure called an object. In theory, the object can control access to this variable, protecting it from being modified maliciously by some other code.
Base
When talking about number systems, the base of that system refers to the number of symbols used.
Battery
A device that can deliver electrons to a circuit for some period of time. Some batteries are depleted by this action, others can be “recharged” so they can function repeatedly.
Class
A “blueprint” for an “object”. The blueprint is used to manufacture objects at runtime.
Cloud
In the old days, we just said “Internet”. The cloud is a collection of computer systems which are physically remote from your work area. You reach those systems over a network. “Cloud resources are usually not being managed by you, you are simply accessing those resources in your work.
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 line on your screen where you can type in a command to the operating system.
Compiler
A tool that translates a high-level programming language into something close to what the processor needs to actually run that program. Compilers are tied to a single operating system, and processor. If you change either, you need a new compiler. Compilers that run on one system and generate code to be run on some other system are called “cross-compilers”.
Conservation Laws
Mathematical laws governing interactions going ion in our universe. Three laws include the Conservaton of Mass, Conservation of Energy, and Conservtion o Momentum. There are many others in different fields of study. These laws can be expressed as mathematical equations, and studied in detail, which makes up much of the work in science and engineering.
Current
A measure of the movement of electrical potential across some distance
Current Working Directory
When working on the command line, you are placed in some directory in the file system. The directory you are in at the moment is called the “current working directory”. You cna change to another directory with the “CD” command on most systems.
Directory
Folder
Files, and other directories/folders are collected into a logical group within a container. That container modes a file folder in an office filing system. Each such folder can contain files or other folders.
DRY
“Don’t Repeat Yourself”. In programming, if you repeat the same code twice, you probably should have created a function that did that work.
Encapsulate
To create a protected shell around something. We use such a shell to prevent outside code from modifying data, or accessing functions that only the object should access.
Environment Variable
Each Operating system maintains a list if “variables” that help it manage various functions. These variables are simply strings of some sort, and applications can set up variables for their own use. The most common variable you will use maintains the list of locations where programs can be found. This variable is normally named just Path.
Execute
TBD
Function Prototype
TBD
Function Prototype
TBD
gates
In digital systems, “gates” are small components designed to perform simple Boolean operations. Internally, they model a simple Truth Table` defining the operation of the gate. These components need no clock, they simply transform input signals to output signals.
GUI
Graphical User Interface. Think “Windows”!
GUI
Graphical User Interface
A Windows based interface, driven largely using a mouse. Invented by Xerox, and introduced to most of us when we first got our Windows machine or a Macintosh! (Steve and Bill basically swiped the idea from Xerox!)
HDL
Hardware Description Language
A formal language used to describe the operation of a hardware system. Currently, HDL languages are actively used to design computer systems, replacing old techniques where circuits were drawn directly.
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. A different compiler is needed for each language machine combination.
Home Directory
User accounts on all systems set up a special folder where tat user can store files. The folder associated with the account is called the “home directory”.
IDE
Integrated Development Environment
An application that wraps up common tools needed to d development work into an integrated package. Such tools are great productivity boosters, but they often have a steep learning curve. That also often force project layouts on your work.
Interrupt
Interrupts
At the end of each “four-step” cycle in a processor, a signal can be detected that effectively calls a special function to deal with that signal. This happens independently of any normal program running at the time. Interrupts are used to deal with fast response hardware issues.
Low-level
Programs written at this level use the language of the machine. Usually, this is some form of assembly language.
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.
Methods
Functions contained inside of an object are called “methods”. The method can be asked to perform some action, but that method can determine exactly what to do. By using this approach, objects can control their own actions.
Namespace
TBD
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
A logical container modeling something from our “human” world. All data and functions that work on those data should be inside of the container. This isolates parts of the program, increasing the reliability of that code.
Open-Source
The “Open Source” world is one where all code is freely available and all source code is available as well. There are a variety of licenses that control how you can use this software, but basically, as long as you give credit to the original authors, you can use this code in your own “open source” projects.
Over-Clock
To run a processor faster than the manufacturer recommends. Some chips can handle this, since manufacturers are conservative in their ratings. However, pushing the chip to far will result in internal failures since components need a minimum amount of time to reach valid levels.
Parameters
TBD
Path
The exact location of any file or folder in a file system is defined by specifying the “path” to that resource. The path begins with the Root Directory, followed by the names of each subfolder leading to the resource. Between each folder name, we place the Path Separator character.
Path Separator
The character used between names on the system PATH. On a PC, this separator is a back-slash, on other systems it is a forward-slash.
Programmer’s Editor
A good editing tool that understands you are writing a computer program, and helps you do that properly. I use Vim as my personal editor.
Real World
That mystical place where everything is supposed to work properly. Since in your world things are never working properly, that “real world” is always just out of reach. But, you really want to live there!
Recursion
A programming techniques where you write a function that calls itself as part of its implementation.
Reserved Word
Most programming languages include a set of words that are used to help identify what language feature you are specifying when you write code in that language. Normally, these special words may not be used for any other purpose.
Root Directory
File systems are structured as a series of folders and sub-folders. The top level of this system is called the “root directory”. The name for this folder is just the Path Separator character, either “/” or “”.
Script
When you write a short program to help you manage your system, we call that program a “script”. Popular scripting languages include Python, and “Bash”.
Semantics
In programming, if you follow the syntax rules correctly, each construct will be transformed into something the computer can process. When that processing occurs, some state change will occur in the system. Your understanding of that state change is the “semantics” of the language.
Shell
Command Prompt
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.
State
In programming, we say a system (or the computer while running a program) is in some “state” at any moment in time. That state consists of the contents of every variable in your program at that instant. As your code “executes” each line causes something to change in the system. That change is a “state change”. You should clearly understand what will happen when each line of code you write is processed.
Syntax
In programming, the rules that defining the language tell you how to form constructs in that language. The rules define the “syntax” of the language. Failure to follow these rules results in “syntax” errors.
Test Driven Development
This is a development technique where you create simple test code that verifies that a new feature you plan to add to your project actually works as required. You write this test before creating the feature, then add code to make that feature work and pass the test. Repeat this process until you are done.
truth table
A simple table showing the outputs resulting from a fixed set of inputs. Truth tables are commonly used to show hor Boolean Functions operate.
Unit Test
A small self contained “unit” of code is subjected to a test to verify that it works properly. Units are usually a simple function, of a class. That unit is set up by test code, then exercised in test code. The unit can then be installed in the final application with confidence that it is ready for real work.
VM
Virtual Machine
A software implementation of a computer architecture. These programs can mimic a real computer completely.
Voltage
A measure of the difference in electrical potential between two reference points.