About programming language concept
There is much people that seems to consider the "programming languages" as "languages" in a way similar to the one we use to express our thoughts. The assumption behind this, or following this, is that softwares are thougths.
This is the greatest error, because the software is not "thought" but it is a concrete product like any other industrial or handcraft product. Thought is immaterial, software isn't.
The words "programming language" are completely, totally and extremely wrong, but we are constrained to use them every day. The right name should be one of the following:
- programming system
- programming toolset
- programming toolkit
- programming parts
- programming kit
It is rather unusual that a set of parts of a machine is called a "language". Software is just a piece of the complex machines that computer systems are.
There is an aspect in software that we should never forget: it is dependent on another big part, it is not self contained. Really portable, multi-platform software is rare. A multi-platform software is often a set of related softwares, one for each different platform.
Even the operating systems are strictly bound to the particular set of computer components. People tries to make software systems which can run on many different models or brands of hardware components but they can't include every hardware that is designed and produced. Successful companies of software are in strict contact with hardware companies, they cooperate a lot.
However the size of a software and the amount of work required to build it may be large, and so software systems become more important than hardware systems. After all, a computer has very few functionalities without software.