Jargon

Code

The word "code" is very often used to mean "program text", especially when contrasting "code" with "data"

But it implies that programs are unreadable, and should really only be used for machine code, not program text

Of course, any language, human or computer, is unreadable if you are not fluent

But programs should be as readable as possible

Unfortunately, the word is so deeply embedded in computer science culture that it is difficult to avoid

Coding

In the past, "coding" was hardly ever used to mean "programming", with the exception of phrases like "coding monkey", referring to someone who can hack out programs, and maybe even make them work, but who has no appreciation of style, or design, or any wider computer science issues

Unfortunately, it has become fashionable lately

For those of us who have been around a while, coders are lesser beings than programmers, who are lesser beings than developers

Apps

What are apps, and are they different from programs?

Here's a simplified history which may shed some light on the question

Programs

In the beginning, there were just programs

All programs were potentially difficult to install, configure or upgrade - it involved knowing about versions, dependencies, platform specifics, and unwritten conventions of all sorts

Everybody who used a computer was expected to have what we would now call sysadmin (system administration) skills, which means having the ability to troubleshoot all that stuff

Application programs

Very gradually, some people began to realise that not everyone who used a computer had, or wanted, sysadmin skills

So, programs started to be divided into system programs and application programs

Application programs had installers, wizards and so on so that, for 'ordinary users', they would 'just work'

Applications

Then the word 'application' gradually changed from an adjective into a noun

In other words, people talked about 'applications' instead of 'application programs'

Apps

Then came the age of mobile devices, and 'application' got shortened to 'app'

But mobile device makers started to realise that, for a mobile device, there is no such thing as a system administrator

So everything on a mobile device is an app, whether it is a system program, or an application program

App = program

The result of all this messy history is that app means program

We are still waiting for the day when everybody realises that even people with sysadmin skills don't want to be bothered with all that fuss

The golden age will have come when all software 'just works'

Platform

A "platform" means a "kind of computer"

It includes the type of processor, the operating system and its version, the system libraries, and anything else which affects the programs which run on the computer

Platforms are often abbreviated by operating system names, but you need to be aware that the underlying processor, the version, and the installed libraries also cause differences

Types of computer

Traditionally, computers are divided into conventional (desktops and laptops) and mobile (tablets and smart phones)

A simple test is whether you can conveniently do programming on a computer - if not, it is mobile

There are borderline cases, e.g. a Chromebook with Linux installed alongside ChromeOS (a tablet you can, just, program on)

Common platforms

The most common conventional platforms are Linux, Mac OS, and Windows

The most common mobile platforms are Android, iOS, and Windows mobile

Describing functions

If you describe a function rather than defining it, e.g.

int length(char s[]);

what should that be called?

Prototypes

The official word used in the standard, and therefore in some textbooks and tutorials, for a function description like this:

int length(char s[]);

is prototype

The problem is that the word 'prototype' has too many meanings in computing, so it has become a bit confusing

Signatures

A good word for a function description like this:

int length(char s[]);

is signature

The problem with it is that it adds more jargon than necessary, because a different word is used for a description of a variable

Declarations

The word used in this unit, either for a function description or for a variable description like this:

int length(char s[]);
int numbers[];

is declaration

To declare something is to say it exists, whereas to define it is to say what it is

Technically, there is a slight difference with functions, because you can declare them multiple times, which you can't usually do with variables