Path: ...!news.mixmin.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: David Brown Newsgroups: comp.lang.c Subject: Re: Top 10 most common hard skills listed on resumes... Date: Mon, 26 Aug 2024 15:46:02 +0200 Organization: A noiseless patient Spider Lines: 79 Message-ID: References: <20240825201124.000017a3@yahoo.com> <86msl05ctt.fsf@linuxsc.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Date: Mon, 26 Aug 2024 15:46:03 +0200 (CEST) Injection-Info: dont-email.me; posting-host="6d3fbbe72210d99c1b00ddb3dee295bc"; logging-data="2615685"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19LgfA0ALjLq1lxVfmb5YHbUCCJNb35lcw=" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0 Cancel-Lock: sha1:cIDgIe3CbHWW+18jTt89uqVx8ko= In-Reply-To: <86msl05ctt.fsf@linuxsc.com> Content-Language: en-GB Bytes: 4734 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: 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.