If it has inline assembly it’s low-level in my opinion. This feature (or at a minimum the ability to link against and interface with assembled objects) is _the_ requirement for all hardware-facing programming, since general purpose programming languages cannot represent all possible hardware minutiae within the language.
Const-me · 26m ago
> it is possible to make C code run quickly but only by spending thousands of person-years building a sufficiently smart compiler
Just because some of the C++ code I write heavily relies on ISA-specific SIMD intrinsics doesn’t replace the language with some other one, it’s remains to be C++. Compared to solving the general problem by making a sufficiently smart automatically vectorizing C compiler, learning SIMD intrinsics is way more manageable.
BTW, a few years ago I wrote an article about SSE 1-4 and AVX 1-2 ISA extensions, as exposed to C and C++ languages: http://const.me/articles/simd/simd.pdf
efitz · 1h ago
Yes it is. I’m unswayed by your arguments. You start out by defining a low level language, concede that C meets your definition, and then go on to argue that even so, it’s not a low level language.
OSDeveloper · 2h ago
I would say it is only a low level language if it's a form of assembly or used in systems programming like Linux or OpenBSD or whatever else in the kernel land
Detrytus · 1h ago
I would say that any language that has if-else instruction, for loop, and the ability to define functions/procedures is "high level".
renewedrebecca · 1h ago
You can do all those things with a macro assembler.
andrewmcwatters · 38m ago
>> "A programming language is low level when its programs require attention to the irrelevant."
Wow, today I learned there are only low-level programming languages.
Just because some of the C++ code I write heavily relies on ISA-specific SIMD intrinsics doesn’t replace the language with some other one, it’s remains to be C++. Compared to solving the general problem by making a sufficiently smart automatically vectorizing C compiler, learning SIMD intrinsics is way more manageable.
BTW, a few years ago I wrote an article about SSE 1-4 and AVX 1-2 ISA extensions, as exposed to C and C++ languages: http://const.me/articles/simd/simd.pdf
Wow, today I learned there are only low-level programming languages.