Software Types, Languages and Schemas

Software is everywhere including in household appliances, cars and factories. In the article, I cover basic types of software and languages used. Not all languages are covered because there are so many.

I do not cover toolchains although there may be mentioned in this article. I do not cover the software development process in this article.

Contents

1. Software Types and Languages
— 1.1 Types
—- 1.1.1 Compilers
—- 1.1.2 Firmware
—- 1.1.3 Operating Systems
—- 1.1.4 Frameworks
—- 1.1.5 Runtime
—- 1.1.6 SaaS
—- 1.1.7 Services
—- 1.1.8 Apps
—- 1.1.9 Web Apps
— 1.2 Languages
—- 1.2.1 Machine Language
—- 1.2.2 Native Compilation
—— Assembly
—— C / C++
—— COBOL
—— Delphi
—— Objective-C
—— Swift
—- 1.2.3 Intermediate Compilation
—— C#
—— Visual Basic
—— Java
—— UE Blueprints
—— XAML
—- 1.2.4 Interpreted
—— JavaScript
—— Perl
—— PHP
—— Python
—— PL\SQL
—— T-SQL
2. Schemas
References
Errata

1. Software Types and Languages

There are many other languages including Rust, Typescript, Fortran and others but I’m only focusing on these.

1.1 Software Types

1.1.1 Compilers

Compilers are used to convert the written language and turn it into a more machine-friendly code. There are different types of compilers that generate different outputs. Compilers can also help stop the developer from accidentally using the wrong data types or objects in the code. This is because the compiler does a large amount of syntax checking. There are different types of compilers used throughout software.

.NET Framework Compiler

The .NET framework compiler compiles to bytecode formally MSIL and now referred to as common intermediate language (CIL)[20]. The bytecode uses a format defined in the common language infrastructure (CLI) specification[1]. During runtime, the common language runtime (CLR)[18] interprets the CIL to calls into the system and also handles exceptions and memory overflows using a just-in-time (JIT)[19] methodology. This type of coding is referred to as managed code as the CLR ‘nannies’ it for the developer to stop damage to the system (to an extent). You cannot write directly to memory-mapped locations on the machine because the CLR will not let you. (CLR is an interpreter for CIL.)

.NET Framework Compiler and Runtime
  • Common Intermediate Language (CIL)[20]
  • Common Language Infrastructure (CLI)[1] Specification
  • Common Language Runtime (CLR)[18]
  • Just-in-Time (JIT)[19] Methodology
Native Compiler

A native compiler that compiles code without an intermediate. Some compilers for Windows include options for stripping down the compiled code so it is raw machine code. This can be useful for writing bootstrap and your own operating system. There are some compatibility modes that can be used thanks to the motherboard’s basic input/output system (BIOS)[69].

I once wrote a bootstrap that booting a PC and went into one of the common VESA[58] modes and decoded a graphics file using a file allocation table (FAT)[11][12][13] library I also wrote. Graphics interchange format (GIF)s[14] or other formats could be used to provide basic graphics for icons and a keyboard for basic selection. The FAT library was actually used for storing files on a memory card using a larger PIC microcontroller. I think there is a 3rd party library for FAT now.

Interpreters

Interpreters interrupt lines of code and perform actions. The interpreter is much the same as a runtime and compiles on the fly. These are not really compilers and are really a runtime. Python, PHP, Perl and JavaScript are all interpreted languages. Even the old Commodore 64[6] basic is interpreted to machine instructions although there were cartridges that could be plugged into the back most programs loaded on either a floppy disk or cassette tape. There is an emulator that can run on a PC now. If you want to go old-school, super retro or just want to see how lucky we all are today.

1.1.2 Firmware

Firmware refers to code written for embedded systems including using a real-time operating system (RTOS)[33] and microcontrollers like the Arizona Microchip Inc. peripheral interface controller (PIC)[2] range. Typically firmware is written in C, C++ or assembly and is compiled to machine code. Some embedded systems use types of RTOS and run applications but these are still commonly referred to as firmware. Examples of devices that have firmware are TVs, Set-top boxes, washing machines, other white goods, home internet hubs, and other consumer electronics. Some of the older mobile phones had firmware but newer smartphones use operating systems and applications.

1.1.3 Operating Systems

Operating systems provide a layer of software between applications and the underlying hardware. The operating system provides loaders, memory management, task scheduling and security. The most well known operating systems to date (10th July 2021) include Linux (Kernel 5.12.9), macOS Big Sur, Windows 10.

1.1.4 Frameworks

Frameworks are collections of libraries with a common structure. The framework takes care of non-application specific work, for example, file operations, display drawing, web API interaction, data serialization using things like JSON or XML and a variety of other useful collections of code that can be accessed from the application. The framework can be compiled to run on other platforms and provide the same libraries. For example, .NET Core can run apps on Linux, macOS and Windows.

1.1.5 Runtime

The runtime is an interpreter. Some languages are interpreted line by line whereas, others are compiled to intermediate code. For example, C#.NET and VB.NET compile to intermediate see the compilers section above. VB 3 to 6 and C++ both had runtimes[7] required on Windows. Now things have moved to .NET the framework includes the common language runtime (CLR)[18]. Java has its own runtime[7]. Other interpreted languages use a runtime. See more detail about runtime on Wikipedia[7].

1.1.6 SaaS

Software as a Service (SaaS) can include paid subscription services and free to use services and are generally exposed to a public network. RESTful API[9] is one method of providing SaaS. I like to use PHP in the back-end to deliver the service. I like to use the OAuth[10] system to provide a token exchange for authentication. SaaS can be direct to user applications on web browsers or APIs that provide a function. You can get an API service online that sends text messages to mobile phones. So if you are writing a web application but want to send users text messages a subscription service can be used. I have used one a while back that was via a RESTful API[9] to access the service. This means that an organisation do not need to have banks of mobile devices to send messages. There are so many things that can be achieved using SaaS. You can even create your own device and expose it online via a SaaS. Google provide a host of amazing SaaS options. See Google’s development centre[15]. I use google re-captcha on my site.

1.1.7 Services

Software servers like databases, Dynamic Host Configuration Protocol (DHCP)[3] servers, and apache are all examples of software services or daemons. DHCP gives out internet protocol (IP)[62] addresses to machines communicating using a media access control (MAC)[4] address. The DHCP protocol is under RF2131[74]. Although probably taken for granted. In Windows, many of the servers are written as a service, which differs from an application, but applications that can be loaded to manage the services. Running services in the background allow the user to carry on with work without really noticing the existence of these services. You can run messaging servers, game servers all manner of servers as a service or daemon on an operating system. Web servers like Apache also run as a service or daemon. I like to use XAMPP[5] when developing for Apache as it includes lots of servers out-of-the-box and PHP[35][36]. On Linux[63] the background processes run as a ‘daemon’ these are referred to as a ‘service’ on Microsoft Windows.

1.1.8 Apps

Applications (Apps) are programs that run on an operating system. They can range from PC and Mac to smartphones and tablets. Even mainframes can have applications. Software applications are the application of technology to deliver functionality for the user in the form of input and output to and from an electronic device, typically including manually entered input either physically or verbally into the computer and visual or audio output. There are some applications that have been written for scientific study that can read a signal in the brain to control screen input. The technology uses flashing areas on the screen and monitors the brains response using a specific signal. The user had to focus on a specific path and took training. This has moved on a lot since I last watch a television program about it see:

Brain-Computer Interfaces in Medicine, https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3497935/

1.1.9 Web Apps

Web applications are built with a back-end server and a front-end graphical interactive display. You can have front-end and back-end libraries and frameworks. WordPress is a framework that runs at the back-end and provides a plugin system. WordPress[54] is PHP based. Some organisations create their web apps in pure JavaScript. The page can be load and have a script to do all the work. The Node.js[59] backend is JavaScript with a runtime.

1.2 Languages

1.2.1 Machine Language

Machine language is a sequence of instructions utilizing an instruction set that runs on a processor or microcontroller. The instruction set varies widely between devices. Instruction sets are usually available in the form of a datasheet or manual for each set. A compiler is normally used to translate human-readable code to machine language. The most common types of languages for low-level programming are assembly, C and C++, and COBOL[37] is still used and was a replacement for assembly.

I prefer C because it can be used on the 8-bit microcontrollers.

1.2.2 Native Compulation

Assembly

Assembly is a second generation programming language. It is proprietary for each system.

C / C++

C is a powerful low-level programming language that allows direct memory access and can be used to program operating systems. Most C compilers have the option to include machine-specific assembly if required. This can be useful for bootstrap. Some object-oriented Programming (OOP)[23] coding methods can be used on C. C supports passing structures and unions along with function pointers that can be used to generate the OOP[23] code. C++ extends the C language to make OOP[23] coding a little easier. The first and most prominent difference is the use of classes. Classes are similar to packaging up structures and function pointers in one neat object. Another of the key features is the ‘operator’ overload. Unlike C, C++ allows for a custom operator using ‘<<‘ ‘>>’ for the direction of data flow. This allows a class to perform an operation on the data using a format of class << data. (Using bit shifting ‘<<‘ and ‘>>’ is still available.) C++ allows different operations on the data depending on the class’ operator.

This is a simple example from stackoverflow.com. Check the reference link as there are good examples of more complex operations. Example:

class myclass {
    int x;
    myclass operator << ( int a ) { 
        x += a;
    }
}

This code example is from an answer post by another user on stackoverflow.com anwser by Aerius.[17]

New class instances can be created using the ‘new’ key word.

When I first started using C and on the PIC microcontrollers are team only had books for reference no internet support. Even the datasheets for the microcontroller were books. If someone else was using the book you had to go and do thing else as there was a wide range and there was not enough space for too many copies of the same thing. As we got more customers Microchip Inc. just gave us the device data books. Once the PDF datasheets came out we started using two display screens. My Dad used punch cards when he worked on computers in the 1980s. We’re so spoilt with stackoverflow.com and many other resources. Then I started using the Texas Instruments (TI)[67] MSP430 which is a good example of bytes not being quite what you are used to.

“The size of the byte has historically been hardware-dependent and no definitive standards existed that mandated the size. Sizes from 1 to 48 bits have been used.”, Wikipedia[68]

COBOL

Common business-oriented language (COBOL) is a very old language and is still used by governments and banks running mainframes.[37]

Delphi

Delphi[32][34] is based on a language called Object Pascal[31] which was an OOP[23] version of Pascal[30]. Object Pascal is to Pascal as C++ is to C. Basically Delphi is a different flavour of Object Pascal but is multi-platform orientated as well. FoxPro[65], Foxbase and DBase are based on Pascal too. Delphi compiles to native code much like the C and C++ compilers. There is support for macOS and iOS (trademarks of Apple Inc.[60]), Android, Linux and Windows. See the Delphi site for more details.[34]

Objective C

Objective C[72] is effectively a proprietary programming language for Apple devices based loosely on C.

Swift

Another Apple programming language based on Objective-C.[73]

1.2.3 Intermediate Compilation

C#

Developed loosely based on the C syntax the C#.NET language runs on the .NET Framework. Because the framework is required and it runs in managed code C#.NET does not allow writing into unprotected memory. So you cannot write an operating system with C# unless someone provides a compiler and libraries to do it for each system. I wrote a large scale application on C#.NET Framework 4 (WinForms) with DevExpress[55] controls for scientific use.

Part of the .NET Core 5.0[38] allows C# to compile with parts of the .NET Core Framework into one executable. The .NET Core Framework has a limited subset of libraries compared to the full .NET Framework. The .NET Core 5.0 allows code to compile to one executable on Linux and was intended to include only the libraries needed for the program. The advantage is there is only one package and you do not need a runtime as it is in effect built-in. See the tutorial on my Hello World page. The .NET Framework supports multi-thread programming.

C# has gone through a number of revisions of the syntax. To date (9th July 2021) the current version is C# 9[54].

A guide to C# versions: https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-version-history

Visual Basic

Based loosely on the old BASIC[50] language Visual Basic (VB)[51] has grown from the days of VB 3 where you could not do a progress bar. In release VB 4 you could do ‘DoEvents’ which would allow for simple things like progress bars. Skip VB 5 don’t even know if it existed. VB 6 you could write your own class separately from VB. Now you have VB.NET which allows applications to be run on the .NET Framework. MS Office had some scripting in VB. There is a toolchain for MS Office integration development in Visual Studio. Now the .NET Framework[56] supports multi-thread programming.

Java

Java runs on top of a runtime called Java Runtime Environment (JRE)[71] like C# and VB. Java supports multithreading. It’s another toolchain for development. Java is already multiplatform and supports a unified windowing system that can give the same results on Linux, Windows and macOS. You can use NetBeans[49] and Eclipse[70] for Java-based development.

UE Blueprints

Unreal Engine (UE) Blueprints[41] is a graphics programming language that is compiled down to a form of bytecode. I have been playing around with Blueprints and I love it. It is event-driven. You can still put C# code in through Visual Studio but I like this, here’s a screenshot:

Working in combination with 3D objects (not shown), this script turns a light on and off depending on if the player is close or not using an overlap with another invisible object. The event tick is used at the very start to check for a player because there will not be an overlap event.

The links that can be connected are context-sensitive. So dragging off the junctions can give a different list using intelligent code completion[46].

XAML

Extensible application markup language (XAML)[42][43] is used for Windows Presentation Foundation (WPF)[61] and for Universal Windows Platform (UWP)[44]. For some reason, Microsoft has announced WPF for .NET Core 5.0 instead of UWP which most people have switched to for Windows Apps. That’s annoying. So UWP implementation is design to work with Windows Store so UWP would make more sense. Plus the little thing about loads of people learning it.

I’ve been writing an app using UWP and now that seems a bit pointless, however, Xamarin[47] toolchain is a good place to look. Xamarin is designed for cross-platform, including mobile apps but that’s probably going to disappear as well. I hope not though.

1.2.4 Interpreted

JavaScript

JavaScript started as quite a limited set of standards but has evolved. For example, being about to draw colourful 3D objects on a canvas. JavaScript is intended for client-side execution that extends the capability of a webpage to provide more advanced interaction with the user. On web browsers, JavaScript executes in a sandbox[66] meaning it cannot interfere with other things on the system and only do visual display work and take inputs from the user.

Python

Python[52] is a powerful interpreted programming language that has a key feature that is distinctive from other languages, a single Python class can inherit from multiple other classes.

class First(object):
    def __init__(self):
        print '1'

class Second(object):
    def __init__(self):
        print '2'

class Third(First, Second):
    def __init__(self):
        Second.__init__(self)

Example quoted from Seaux on stackoverflow.com[64].

PHP

Like Perl below, PHP is designed to run serverside for web applications and application interfaces. PHP is used to provide security and database access for web applications. PHP provides web pages to the front-end via the server. In creating a PHP based site API or application no special toolchains are required all that is needed is a text editor. It is helpful to use a code editor like Visual Studio Code[48] which is what I use for my PHP, CSS and JavaScript development. It is lightweight and has colour themes for syntax highlighting. Visual Studio Code includes intelligent code completion. The projects are basically just the root folder of the site. It loads quickly and has plugins. There are some integrated development environments (IDEs) that allow visual editing of the code and CSS live to a web page preview.

Perl

Perl is designed to be run server-side in web applications and performs similar operations to PHP but in a variant language. It has been around a very long time. I wrote some in my very first full-time job as a web programmer in 1998. I only stay in the job for a couple of years until going over to the electronics side. There was not much uptake on the internet websites side of the business at that time but the internet has grown huge now.

T-SQL

T-SQL is an implementation of Structured Query Language (SQL) on Microsoft SQL Server[53] and supports try catch error trapping. MS SQL is easy to use and very fast.

PL\SQL

PL\SQL is a strict version of SQL used by the Oracle[44] database management system[45].

2. Schemas

Schemas are used to interchange data for different purposes but can also be used in a set format for some common purposes too.

JavaScript Object Notation (JSON)[24] – commonly used to interchange data with SaaS for example communicating with RESTful APIs. JSON can be used in two-way communications protocols and as a file format for applications such as Daz3D Studio[57].

Extensible Markup Language (XML)[25] – can be used in a similar way to JSON[24] but XML[25] is more weighty and so is becoming less commonly used. (With exception to its brother HTML). .NET Framework includes a serializer for saving and loading object data in XML[25] format.

HyperText Markup Language (HTML)[26] – is an application-specific variant of XML[25] and used to describe the content of a web page in an agreed format to the browser application. The HTML set standard is controlled by W3C[27]. HTML[26] can use CSS[28] classes in its mark-up for visual appearance.

Cascading Style Sheets (CSS)[28] – is an application-specific schema and is used to describe the appearance of different elements of a display in combination with HTML[26] to decouple the visual appearance from the page content on websites. The advantage of this is it allows for visual themes.

More about schemas and web programming languages on w3schools.com[29] with interactable examples.

References

[1, Common Language Infrastructure, Wikipedia, https://en.wikipedia.org/wiki/Common_Language_Infrastructure, accessed 6th Jun 2021]
[2, Microchip Inc., https://www.microchip.com/, accessed 6th Jun 2021]
[3, DHCP, Wikipedia, https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol, accessed 6th Jun 2021]
[4, MAC Address, https://en.wikipedia.org/wiki/MAC_address, accessed 6th Jun 2021]
[5, XAMPP, https://www.apachefriends.org/index.html, accessed 6th Jun 2021]
[6, VICE – the Versatile Commodore Emulator, https://vice-emu.sourceforge.io/, accessed 6th Jun 2021]
[7, Runtime system, https://en.wikipedia.org/wiki/Runtime_system, accessed 6th Jun 2021]
[8, removed]
[9, Representational state transfer, https://en.wikipedia.org/wiki/Representational_state_transfer, accessed 6th Jun 2021]
[10, OAuth, https://en.wikipedia.org/wiki/OAuth, accessed 6th Jun 2021]
[11, Overview of FAT, HPFS, and NTFS File Systems, 12/07/2020, https://docs.microsoft.com/en-us/troubleshoot/windows-client/backup-and-storage/fat-hpfs-and-ntfs-file-systems, accessed 7th Jun 2021]
[12, File Allocation Table, https://en.wikipedia.org/wiki/File_Allocation_Table, accessed 7th Jun 2021]
[13, The FAT File System, https://social.technet.microsoft.com/wiki/contents/articles/6771.the-fat-file-system.aspx, accessed 7th Jun 2021]
[14, GIF, https://www.britannica.com/technology/GIF, accessed 7th Jun 2021]
[15, Google Developers, https://developers.google.com/, accessed 7th Jun 2021]
[16, FORTRAN | computer language | Britannica, https://www.britannica.com/technology/FORTRAN, accessed 7th Jun 2021]
[17, What does “<<” and “>>” mean in C++ for cout/cin?, (code example) by Aerius, Oct 13 ’11, https://stackoverflow.com/questions/7757278/what-does-and-mean-in-c-for-cout-cin, accessed 7th Jun 2021]
[18, Common Language Runtime, https://en.wikipedia.org/wiki/Common_Language_Runtime, accessed 7th Jun 2021]
[19, Just-in-time compilation, https://en.wikipedia.org/wiki/Just-in-time_compilation, accessed 7th Jun 2021]
[20, Common Intermediate Language, https://en.wikipedia.org/wiki/Common_Intermediate_Language, accessed 7th Jun 2021]
[21, removed]
[22, Announcing .NET 5.0, https://devblogs.microsoft.com/dotnet/announcing-net-5-0/, accessed 7th Jun 2021]
[23, Object-orientated programming, https://en.wikipedia.org/wiki/Object-oriented_programming, accessed 7th Jun 2021]
[24, JSON, https://en.wikipedia.org/wiki/JSON, accessed 7th Jun 2021]
[25, XML, https://en.wikipedia.org/wiki/XML, accessed 7th Jun 2021]
[26, HTTP, https://en.wikipedia.org/wiki/HTML, accessed 7th Jun 2021]
[27, Standards – W3C, https://www.w3.org/standards/, accessed 7th Jun 2021]
[28, CSS, https://en.wikipedia.org/wiki/CSS, accessed 7th Jun 2021]
[29, W3Schools Online Web Tutorials, https://www.w3schools.com/, accessed 7th Jun 2021]
[30, Pascal (programming language), https://en.wikipedia.org/wiki/Pascal_(programming_language), accessed 7th Jun 2021]
[31, Object Pascal, https://en.wikipedia.org/wiki/Object_Pascal, accessed 7th Jun 2021]
[32, Delphi (software), https://en.wikipedia.org/wiki/Delphi_(software), accessed 7th Jun 2021]
[33, Real-time operating system, https://en.wikipedia.org/wiki/Real-time_operating_system, accessed 7th Jun 2021]
[34, Delphi: IDE Software Overview – Embarcadero, https://www.embarcadero.com/products/delphi, accessed 7th Jun 2021]
[35, PHP: Hypertext Preprocessor, https://www.php.net/, accessed 7th Jun 2021]
[36, PHP, https://en.wikipedia.org/wiki/PHP, accessed 7th Jun 2021]
[37, COBOL, https://en.wikipedia.org/wiki/COBOL, accessed 7th Jun 2021]
[38, .NET Tutorial – Hello World in 10 minutes, https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/intro, accessed 8th Jun 2021]
[39, Fortran, https://en.wikipedia.org/wiki/Fortran, accessed 8th Jun 2021]
[40, Oracle VM VirtualBox, https://www.virtualbox.org/, accessed 8th Jun 2021]
[41, Unreal Engine, https://www.unrealengine.com/en-US/unreal, accessed 8th Jun 2021]
[42, XAML overview – WPF .NET | Microsoft Docs, https://docs.microsoft.com/en-us/dotnet/desktop/wpf/xaml/?view=netdesktop-5.0, accessed 8th Jun 2021]
[43, Extensible Application Markup Language, https://en.wikipedia.org/wiki/Extensible_Application_Markup_Language, accessed 8th Jun 2021]
[44, Database Management, https://www.oracle.com/database/technologies/manageability.html, accessed 9th Jun 2021]
[45, Universal Windows Platform, https://en.wikipedia.org/wiki/Universal_Windows_Platform, accessed 9th Jun 2021]
[46, Intelligent Code Completion, https://en.wikipedia.org/wiki/Intelligent_code_completion, accessed 9th Jun 2021]
[47, Xamarin App Development with Visual Studio | Visual Studio, https://visualstudio.microsoft.com/xamarin/, accessed 9th Jun 2021]
[48, Visual Studio Code – Code Editing Redefined, https://code.visualstudio.com/, accessed 9th Jun 2021]
[49, Welcome to Apache NetBeans, https://netbeans.apache.org/, accessed 9th Jun 2012]
[50, BASIC Commands, https://www.dartmouth.edu/basicfifty/commands.html, accessed 9th Jun 2012]
[51, Visual Basic docs – get started, tutorials, reference. | Microsoft Docs, https://docs.microsoft.com/en-us/dotnet/visual-basic/, accessed 9th Jun 2021]
[52, Welcome to Python.org, https://www.python.org/, accessed 9th Jun 2021]
[53, Microsoft Data Platform | Microsoft, https://www.microsoft.com/en-us/sql-server, accessed 9th Jun 2021]
[54, What’s new in C# 9.0 – C# Guide | Microsoft Docs, https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-9, accessed 9th Jun 2021]
[55, DevExpress, https://www.devexpress.com/, accessed 9th Jun 2021]
[56, Download .NET Framework | Free official downloads, https://dotnet.microsoft.com/download/dotnet-framework, accessed 9th Jun 2021]
[57, Daz 3D – 3D Models and 3D Software, https://www.daz3d.com/, accessed 9th Jun 2021]
[58, VESA – Interface Standards for The Display Industry, https://vesa.org/, accessed 9th Jun 2021]
[59, Node.js, https://nodejs.org/en/, accessed 9th Jun 2021]
[60, Apple, https://www.apple.com/, accessed 9th Jun 2021]
[61, Windows Presentation Foundation for .NET 5 documentation | Microsoft Docs, https://docs.microsoft.com/en-us/dotnet/desktop/wpf/?view=netdesktop-5.0, accessed 9th Jun 2021]
[62, The Internet Protocol Stack, https://www.w3.org/People/Frystyk/thesis/TcpIp.html, accessed 9th Jun 2021]
[63, Linux.org, https://www.linux.org/, accessed 9th Jun 2021]
[64, How does Python’s super() work with multiple inheritance? – Stack Overflow, (see the answer from Seaux), https://stackoverflow.com/questions/3277367/how-does-pythons-super-work-with-multiple-inheritance, accessed 9th Jun 2021]
[65, FoxPro – Wikipedia, https://en.wikipedia.org/wiki/FoxPro, accessed 9th Jun 2021]
[66, Sandbox (computer security), https://en.wikipedia.org/wiki/Sandbox_(computer_security), accessed 9th Jun 2021]
[67, Analog | Embedded processing | Semiconductor company | TI.com, https://www.ti.com/, accessed 10th Jun 2021]
[68, Byte – Wikipedia, https://en.wikipedia.org/wiki/Byte, accessed 10th Jun 2021]
[69, What is BIOS?, https://www.computerhope.com/jargon/b/bios.htm, accessed 10th Jun 2021]
(70, Eclipse desktop & web IDEs | The Eclipse Foundation, https://www.eclipse.org/ide/, accessed 10th Jun 2021]
[71, Java SE Runtime Environment 8 – Downloads | Oracle United Kingdom, https://www.oracle.com/uk/java/technologies/javase-jre8-downloads.html, accessed 10th Jun 2021]
[72, Objective-C, https://en.wikipedia.org/wiki/Objective-C, accessed 10th Jun 2021]
[73, Swift (programming language), https://en.wikipedia.org/wiki/Swift_(programming_language), accessed 10th Jun 2021]
[74, DHCP, https://datatracker.ietf.org/doc/html/rfc2131, accessed 14th Jun 2022]

Errata

24th Jun 2021 – Added note to the software types and language diagram to say that there are other languages too.
22nd Jul 2021 – The first paragraph was corrupted and I have had to remove parts of it. I have checked on google search and the first paragraph had been changed from the original. It looks like a hacker has got into it somehow!
3rd Aug 2021 – I have reworded parts of section ‘1.1.7 Services’ to clarify terms.
14th Jun 2022 – Changed IPv4 comment to mention DHCP RFC instead. (More interesting.)
29th Jun 2022 – Broken up sentence on comment under XAML section.