Are you just getting started with learning to code? If so you should understandably be experiencing some level of information overload from the various technical terms and jargon used by software developers.
This list will help clarify some of the most basic coding terminology you will surely come across. This is for the absolute beginners who are just getting started with the journey of learning to code. Developers with some experience may also benefit (you never know what you could learn!).
This list differs from other coding terminology lists you’ll find on the web as it does not include terms directly related to concepts in the activity of writing code (e.g. functions), or specific programming fields (e.g. web development).
Instead, this list focuses on very general coding terminology used day to day by developers regardless of their field.
Most items on this list, every single programmer will eventually 100% come across. And the rest, you’ll very very likely end up seeing at some point and will need to know what it means.
I’m confident enough that you’ll see these terms as they cover the most basic fundamentals of coding terminology. You should take the time to become familiar with the ones you don’t already know.
Note: This list should be read in order as some terms defined earlier further clarifies a later defined term.
Here are some of the most basic coding terminology for beginners:
1. Programming Language
These are computer languages written in human readable form to provide instructions for computers. Programmers use these languages to create software.Â
Many different programming languages exist, and the one to use will depend on the nature of the program being developed. Programming languages will differ by various factors. This includes their syntax, which are rules on how code written in the language should be formatted. And their keywords, a specific set of words recognised by the programming language.
However, many programming languages have cross over of syntax, keywords and general concepts.
2. Binary Code
Binary is the native language of computers and is made up of only 1’s and 0’s.
While a programming language allows us to write instructions for a computer, binary is what a computer can actually understand. Every line of code written by programmers regardless of the programming language, ultimately must be broken down into binary for a computer to run it. A programming language just allows a developer to tell the computer what it should do in a human readable form.
3. Computer Program
An entity existing on a CPU that can be run to perform various tasks. A computer program is basically anything that exists on your PC, mobile phone or any CPU based device that can carry out a function.
In terms of PCs a file manager, web browser, mail clients, music player, text editors, operating system, graphical user interfaces can all be described as a computer program. Other words used to describe a computer program include “application”, “software program” or simply “program”.
4. Hardware
Hardware are physical components of a computer you can touch. It’s important to distinguish this term as in many cases the line between a hardware and software component should be understood when writing applications.
For example, the physical keyboard on a laptop is hardware. And there are various layers of software programs written to interact with the hardware to process key presses.Â
Ultimately all software interacts with computer hardware. Without hardware, software cannot exist.
5. Operating System
An operating system is a collection of computer programs that allow applications to communicate to the underlying hardware. Operating systems perform underlining tasks to manage interaction between hardware and software components.Â
Some of the main roles of an operating system include managing memory resources, handling device components that exist on the computer and providing resources to applications to make use of underlying hardware.
The most common operating systems are Linux, Windows and macOS.
6. Firmware
The term firmware is used to distinguish software programs that run at a level close to the device hardware. These programs can also be referred to as running at a “low-level”.Â
For example, a program written to process keyboard presses can be called firmware because it runs close to the hardware layer. This is in contrast to “high-level” programs like a web browser, which runs far from the hardware layer. So because a web browser application does not run close to the hardware, it will not be called firmware.
The term “firmware” is used mainly for clarification on the type of software. When you see “firmware”, you know it refers to a program running close to device hardware. Whereas “software” can refer to any type of computer program, including firmware.
7. File Extension
Refers to the characters placed after the dot (“.”) in a filename. For example, for the files “Hello.c” and “Hello.js”, the file extensions are “.c” and “.js”. The file extension determines what applications can be used to open or run the file.Â
8. Source Code
A file containing human readable code written using the syntax of a programming language. A source code file is where you as a developer, will type in your code.
For source code, the file extension tells which programming language the code was written in. As an example, for the files “Hello.c” and “Hello.js”, we can tell from the extension the files contain C and JavaScript code respectively.Â
9. Executable
Refers to a file that can be run (or executed) by an application. This differs from source code as executables typically no longer contain human readable text.
Executables can be in different formats. For example, “.exe”, “.bin”, “.out” and much more.
10. Bugs
A term generally used to describe any form of unexpected behaviour by a computer program.
Developers often refer to unwanted behaviours as “a bug”. For example, someone might say, “The program stops working when I do this, there’s a bug”.
11. Compiler
A compiler is a program that breaks down source code into machine readable code to create an executable. This process is referred to as “compiling the code”.Â
The step of compiling the code is necessary for source code written in languages that can not be directly interpreted. An example of these languages are C, C++, C#, Java, Go, Swift, Rust, etc.
12. Linker
A linker is a program used as part of the process of compiling code. The process of compiling source code into an executable consists of several steps. These steps generate different file types such as object files and depend on the presence of other files such as libraries. The linker links all the necessary files together to form the executable.
13. Makefile
A makefile is a file containing instructions and commands for the process of compiling code to generate an executable or a specified target file. The process of compiling code has several steps and these steps can vary by number and complexity depending on the program being compiled.Â
Makefiles allow for automation of the compilation process. The makefile can be used by a build tool which will follow instructions listed in the file for how to generate the target. Some applications may also use several makefiles to describe the build process.
14. Interpreter
An interpreter is a program designed to understand and run raw source code without having to first convert it to a different format. Source code which can be directly understood by an interpreter must be written in a language that supports this, such as Python, JavaScript and Bash.
To understand this further you may contrast this with a compiled language, which can not be directly interpreted and must be compiled first, such as C, C++ and Java.
It’s also important to note many languages can be both compiled and interpreted. With the compilation process coming before the interpretation.
15. Script
This term can refer to various things but we’ll cover 2 key ones:
- Script file – A file containing source code that can be interpreted directly by specific programs designed to execute it.
2. Scripting language – Generally refers to languages that do not require compilation before they can be executed. JavaScript, Python, Perl, Bash are examples of scripting languages.Â
For some programming languages, the source code cannot be run directly and must first be compiled. For some, they can be run directly through use of scripting engines (also called interpreters). In this case, the source code can be called a script.Â
For example, consider a file containing Python code. The nature of Python allows its source code to be interpreted directly by the Python interpreter. Hence, a Python source file can be called a script. Because of this, the terms “source code” and “script” are often used interchangeably.
16. Cross-platform
Cross-platform (or multi-platform) is a term used to describe programs which can run on more than one type of software or hardware platform.
For example, a software application which can run on Linux, Windows and macOS operating systems is described as cross-platform. Cross-platform simply means it supports more than one environment.
17. Command
In the context of programming, a command is a typed instruction given to a program to run a task. The program accepting the command will have a set of commands it can understand and will link each one to the performance of a task.
For example, on Linux systems the command “ls” means to list all files in the directory.Â
Different systems and applications support different sets of commands. Commands can be given through various interfaces, such as a terminal (see next heading).
18. Terminal
A terminal (also often known as a command-line-interface) is a program providing an interface to input commands. While a command is the typed word the program can understand to perform an action, the terminal is just an interface in which the command can be issued.
Terminals do not process the command and are simply interfaces that pass the command to the program that can process it.
19. Debugger
A tool used in the process of figuring out where bugs are in a program.Â
“De” + “bugger” = removing bugs from your program.Â
Although it doesn’t directly tell you where the bug is (sorry!) It certainly helps by providing functions that assist with the investigation. This includes the ability to navigate through your code line by line while the program is running or defining points where your program should pause.
20. IDE
IDEs (Integrated Development Environments) are applications containing a suite of tools to assist you in developing software. They typically will have a built in text editor for writing source code with added features such as auto completion, syntax highlighting and auto formatting. They will also have built in debuggers, compilers, terminal and much more.Â
The idea of using IDEs to write software is for all tools used by a programmer to be located in one space, making the development process simpler. Example IDEs include Visual Studio, Eclipse and NetBeans.
21. Library
A collection of resources provided in complementary to a programming language to be used as part of development of a software program written in that language. These resources are typically files consisting of pre-written reusable code to allow multiple programs to use functionality provided within the library without the program having to implement the code directly.
Libraries differ from other software components because they are written to be as independent as possible. This allows libraries to be easily distributed and used by any program that wants to invoke use of its functionality. Libraries can be native to the programming language or can be customly created.
22. Framework
Similar to libraries, frameworks provide resources usually extending another language (or even further extending libraries) to make it simpler to import various functionalities without implementing it yourself.Â
Frameworks are structured to act as an environment that complements developing of specific software applications by providing building blocks that can be configured by the program in development.Â
The ability to configure functionality provided by frameworks is a key factor that sets them apart from libraries. Frameworks also typically contain a collection of multiple libraries.Â
However, the line between what is called a library or framework is a bit blurred and both terms are sometimes used interchangeably.
23. SDK
SDKs (Software Development Kit) are a collection of software tools to aid development of applications on a specific platform. SDKs are usually designed by the creator of a platform and these kits are handed out to developers who want to write software for that platform. An example of tools and resources included in SDKs are libraries, frameworks, compilers, debuggers, an IDE and documentation.
SDKs simplify the process of writing software for a platform without having to worry about if your resulting application will be compatible with the platform. In many cases, without having this kit, it will otherwise be extremely difficult (and in some cases impossible) to develop software for that platform.
For example, a video games console manufacturer like Nintendo would provide SDKs to game developers who want to make games for their consoles, e.g. the Nintendo Switch. The Switch SDK will contain all the resources developers need to ensure their designed game will be compatible to run on the Switch.
24. Virtual Environment
This describes a software environment generated to simulate a real environment. Virtual environments differ from real ones as they will be lighter weight, portable, quick to generate and easily disposable.Â
The purpose of using virtual environments is to create an environment that is isolated, so only required dependencies needed to run an application will exist on the environment. This is often referred to as having a “clean environment”.Â
Using virtual environments are useful for testing purposes, as real environments often have lots of clutter that can impact proper testing of applications.
25. Version Control
Version control (or source control) is the concept of using a systematic process of managing changes to source code and other files used in a project.Â
Using version control will ensure changes made to files under monitor of the version control system are recorded.
26. Git
The most popular software version control system. Git uses the concept of repositories, which is a group of files being monitored for changes.Â
Git tracks changes made to files in a repository and allows saving snapshots of the repository at different points in time. It also allows rollback to different snapshots or to compare differences between snapshots of the repository.
Other version control systems include Subversion and Mercurial.
27. GitHub
28. Open Source
Open source generally refers to applications, products, or anything anyone can use, view and modify because the files used to make it are available in a public location.
In the case of software programs, if the source code is publicly available for anyone to view, it can be called open source. Open source projects are driven by the public and typically will accept contributions from anyone (yes, even you!).
Related: See our beginner friendly guide to making your first open source contribution.
29. API
API (Application Programming Interface) can be understood by breaking down its name. It’s an Application that allows Programs to Interface between each other. The API is used to make programs interact with each other by defining a set of rules and functions that should be followed.
An API is essentially just a middleman between two pieces of software to allow them to interact.
As an example, the GitHub API defines a set of instructions that will allow any program to interface to the GitHub database.
30. IoT
IoT (Internet of Things) is a technological term to describe devices that can communicate with each other through a means involving an internet connection.Â
For example, take an app on your mobile phone that can be used to control lights in your house from anywhere as long as your mobile phone has an internet connection. We can say the app running on your phone and the lights being controlled are using IoT technology to communicate.
Understanding basic coding terminology is important and this list should help those who are just getting started in their journey of learning to code. Bookmark this page and refer back when you want a refresher on these terms.
Did I miss anything obvious? Do you have a better definition of any of these terms? Comment below.