Sujet : Re: Top 10 most common hard skills listed on resumes...
De : david.brown (at) *nospam* hesbynett.no (David Brown)
Groupes : comp.lang.cDate : 26. Aug 2024, 14:46:02
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vai0ur$2fqc5$1@dont-email.me>
References : 1 2 3 4 5 6
User-Agent : Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
On 26/08/2024 02:48, Tim Rentsch wrote:
It's been amusing reading a discussion of which languages are or are
not high level, without anyone offering a definition of what the
term means.
That is an important point.
Wikipedia says, roughly, that a high-level language is
one that doesn't provide machine-level access (and IMO that is a
reasonable characterization).
No, that's not what Wikipedia says. To get the full picture, read the links:
<
https://en.wikipedia.org/wiki/Low-level_programming_language>
<
https://en.wikipedia.org/wiki/High-level_programming_language>
Roughly speaking, they define a "high-level language" as one with a strong abstraction from the underlying machine, while a "low-level language" has little or no abstraction.
Wikipedia classifies C as a high-level language that also supports a degree of low-level programming, which I think is a fair assessment.
Of course no distinction along these
lines is black and white - almost all languages have a loophole or
two - but I expect there is general agreement about which languages
clearly fail that test.
Agreed - trying to make such binary classifications is usually a bad idea.
In particular, any language that offers
easy access to raw memory addresses (and both C and C++ certainly
do), is not a high-level language in the Wikipedia sense.
That is simply incorrect, based on the Wikipedia articles.
I think it is perhaps better to first talk about low-level and high-level coding or functionality, rather than the language. High-level coding deals with abstractions, defined by their specifications rather than the hardware (or virtual machine) running the code. Low-level coding is tightly tied to the hardware - access to arbitrary memory (subject to OS or hardware restrictions), features based on the instruction set of the computer, and so on.
C clearly supports high-level programming - you can write very portable code that is independent from the underlying hardware. (Most C /programs/ require a least a small amount of implementation-dependent behaviour or external library code, but a lot of C /code/ does not.) It also clearly supports low-level programming.
Whether a programming language is considered "high level" or "low level" is, IME, determined by one question - is the language mainly defined in terms of abstract specifications or by the hardware implementing it? C does have implementation-specific behaviour, and is thus not "pure" high-level language, but there can be no doubt that it is primarily defined as a high-level language.
Both C and C++ also /support/ a limited (but very useful in practice) subset of low-level programming. That does not make them low-level programming languages, any more than C++ is a functional programming language just because it has lambdas. And even if one were to classify them as low-level languages, it would not stop them /also/ being high-level languages.
And note that Wikipedia classifies it as a high-level language, and lists it along with other high-level languages. (I don't consider Wikipedia to be authoritative, but it's usually a reasonable and objective source for many purposes.)
Third amusement: any language that has not yet become popular
has already failed to become popular.
Or it could be a new language that is gaining traction.