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
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
What are apps, and are they different from programs?
Here's a simplified history which may shed some light on the question
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
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'
Then the word 'application' gradually changed from an adjective into a noun
In other words, people talked about 'applications' instead of 'application programs'
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
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'
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
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)
The most common conventional platforms are Linux, Mac OS, and Windows
The most common mobile platforms are Android, iOS, and Windows mobile
If you describe a function rather than defining it, e.g.
int length(char s[]);
what should that be called?
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
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
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