Programming terms defined – a baker’s dozen

You hungry? I’ve been writing a few tutorials on beginner level programming with C#, and I found it difficult sometimes to explain something without using the actual term. Since you have to know these terms anyway, I might as well give you my brief and possibly unorthodox explanation of the common ones.

  • computer program
  • compiler
  • IDE (integrated development environment)
  • debug
  • programmer
  • source code
  • legacy code
  • DLL (dynamic link library)
  • programming language
  • interpreted language
  • script language
  • procedural programming
  • object oriented programming

computer program
Something that runs in a computer, preferably doing useful work. Also known as software or application.

compiler
A computer program that takes in one or more (text) files and produces one or more computer programs. A classic example of the fractal nature of programming. The output from a compiler can also be a code or class library.

Associated verb: compile.

IDE (integrated development environment)
A computer program with a bunch of nifty abilities including (but not limited to) writing your code, debugging (see below), compiling and even running the output program.

debug
To debug is to find and solve program errors. A program error is also known as a bug. You might have heard of delightful phrases such as squashing bugs, or buggy program (lots of errors).

programmer
A person who writes code and creates computer programs. Also interchangeably used with coder or software developer. As are their verbs, “to program“, “to code” and “to develop“.

source code
Usually used to refer to the (text) files containing the program code, but can also refer to the actual code itself.

legacy code
This refers to source code that’s written in an old(er) computer language. Maintaining legacy code is considered the bane of a programmer’s existence, because there’s nothing new to learn from and there’s very little reference material for it. The source code can be difficult to understand or poorly commented.

DLL (dynamic link library)
Contains a bunch of cool functions, but cannot be run like a program. However, it is used by programs. For example, say you have a DLL containing math functions for calculating means, averages, logarithms and so on. You can then write a program without having to code for those functions. Simply load or link the DLL and you can use those math functions.

programming language
Like human languages, there are many programming languages. Different programming languages just have their own language syntax for writing code.

Note: It’s actually easier to become multilingual in programming languages than in human languages.

interpreted language
The modern programming languages are considered high level languages. This means the language syntax is closer to a human language. It also means the language syntax is harder for a computer to understand. An interpreted language is somewhere in between. Examples are the compiled output (MSIL) from .NET languages (like C#) or Java byte code.

script language
The code from a script language is actually not compiled into anything. Nor does it need to be. A computer program can take in this code, known as a script, and perform actions written in the script.

An excellent example is the scripts used by games. Game engines are usually very complex, written in the high level languages. By their nature, games require lots of flexibility to create lots of options for the player to increase fun. Rewriting game code and recompiling is tedious. Writing game code to read in scripts is easier and allows flexibility, because the scripts can be changed outside of the game code.

Note that there are script languages that are just as complex as a programming language.

procedural programming
This refers to the flow of program logic and/or the style of coding. It is based on procedure calls, where the logic flows from start to end, interrupted only by calling procedures (or functions or methods) and/or control structures like loops and conditions.

Variables can be used by anything for any purpose, because there’s no sense of belonging. The extreme case are the global variables, where any function can access any global variable. The important thing is for the program to continue “flowing”. It is up to the programmer to manage the logic flow.

object oriented programming
Object oriented programming offers the concept of objects. Objects contain variables (or members) and functions (or methods), thus encapsulating logic, making it easier for the programmer to visualise and manage program logic flow.