Introduction

“Software is eating the world”.

When Marc Andresson opened his now famous blog post with this line in 2011, he predicted that software companies would take over large parts of the “traditional” economy. If we look at the explosive growth of software-powered products and companies in recent years, his prediction certainly appears correct.

But what is software?

If hardware is our physical devices and their components, software is the code or instructions that tell the hardware what it needs to do.

We can use your smartphone to explain the relationship. The latest high-end smartphones are hardware devices with high-quality camera lenses and sensor components. But these lenses and sensors are useless by themselves – if you want to film yourself dancing and post it to TikTok, then we’ll also need software in the form of a smartphone operating system and camera software to capture and process our images and videos.

Let’s define some important terms.

Software

Software is a broad term for the collection of instructions (operating systems, programs, and applications) that tell hardware devices how to perform tasks. Many of these tasks will be interactive and initiated by a user, like when you create a document on Microsoft Word or share a story on Instagram.

The instructions, or code that make up software, are written by programmers and software developers using programming languages with names like Javascript, Python and Java.

Firmware

Firmware is a special type of software that controls hardware and doesn’t usually require user interaction. An example of firmware is the code on your smartphone that controls the initial loading sequence when you turn it on.

Program

A program is a set of instructions that tells a hardware device what to do.

Operating system

The operating system acts as the interface between hardware and the user and is probably the most important software category on a device. The operating system manages the hardware and all other programs and applications that run on the device, from the calculator app to the “device drivers” that let your computer communicate with your printer.

Desktop OS

The most popular Desktop OS (an operating system for personal computers and laptops) are Microsoft Windows, Apple MacOS and Linux. The most popular smartphone operating systems are Google Android and Apple iOS.

While each operating system acts as an interface between users and hardware, they have also been designed to prioritise certain features and functionality based on how they will be used. For example, mobile operating systems like iOS and Android are very good at power management, as mobile and tablet devices spend much of their life operating on battery power.

Application

An application, or app, is a program designed to let users carry out specific tasks. An application can’t run on hardware by itself, it needs to interact with an operating system. There are a few types of applications, including:

Desktop applications

Desktop applications are stored and run locally, or “natively”, on a standalone computer, performing specific tasks for the user.

A common example of a desktop app is the calculator app on your computer or laptop.

Because desktop apps run natively on the device, they generally have access to more underlying hardware, which usually allows for greater performance capabilities than web applications. This is one of the main reasons why applications that require a lot of hardware resources to maximise performance, like video editing software or the latest games, tend to be desktop applications.

alt_text

Web applications

Web applications are accessed via a web browser like Chrome or Edge. Rather than being stored locally on the hardware device, the software is sent to the user’s browser from a remote server when needed.

A popular example of a web app is Google Docs, a free word-processing app hosted on Google’s servers and then loaded on your browser when you visit https://docs.google.com. While your browser tab is open, you can use the app, but if you close the browser tab or lose your internet connection, you will generally lose access to the application.

Simply letting your computer run any random code it comes across as you browse around would be a security nightmare. The major web browsers solve this problem by only allowing code to execute in special, isolated environments called sandboxes.

While this browser sandbox is secure, it means the web app’s code does not have direct access to the device’s hardware, which limits its performance compared to a native app. We are making a tradeoff between convenience, security and performance when we use web applications.

Mobile applications

Mobile applications are stored and run locally or natively on your mobile device. Most of the time, these apps are downloaded from Google or Apple’s app stores. Mobile apps are stored on the device, similar to desktop apps, so you won’t lose access to them when you close your browser tab.

Android and iOS apps run in a security sandbox. One difference between a web browser’s sandbox and a mobile sandbox is that the mobile application sandbox has been designed for specific operating systems and devices (like Apple’s iOS running on an Apple iPhone), which lets mobile application software developers write code that is optimised to take advantage of the capabilities of each device.

In contrast, web browsers run on a wide range of devices of varying performance and capabilities so web application developers need to write code that can perform across all of them, whether it’s a powerful gaming PC or a 10-year-old work laptop.

Next:
Programming