4 ms·
C Is Not a Low-level Language: Your computer is not a fast PDP-11 (2018)
- kevin_thibedeau 2y agoThere are vastly more computers out there than x86 and many of them are little more (or less) advanced than a PDP-11.
- connicpu 2y agoBy raw compute power though it's pretty much x86, ARM, and whatever proprietary internal machine code Nvidia and AMD use on their GPUs that make up the vast majority.
- deleted 2y ago[deleted]
- cmrdporcupine 2y agoEven the bulk of ARM microcontrollers in common embedded usages these days have prefetch, branch prediction, caches, etc.
- deleted 2y ago[deleted]
- jasode 2y agoIf you want to see the previous threads, you have to remove "PDP-11" from the search query: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=C%20Is%20Not%20a%20Low-level%20Language%202018&sort=byDate&type=story https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que... Clicking the "past" link by itself won't find them.
- ThrowawayR2 2y agoExpanding that out: C Is Not a Low-Level Language (2018) | 2 points | krykp | 22 days ago | 1 comments | https://news.ycombinator.com/item?id=43039172 https://news.ycombinator.com/item?id=43039172 C Is Not a Low-level Language (2018) | 293 points | bmer | 1 year ago | 396 comments | https://news.ycombinator.com/item?id=37897946 https://news.ycombinator.com/item?id=37897946 C Is Not a Low-level Language (2018) | 204 points | goranmoomin | 3 years ago | 192 comments | https://news.ycombinator.com/item?id=29702001 https://news.ycombinator.com/item?id=29702001 C Is Not a Low-Level Language (2018) | 3 points | brundolf | 4 years ago | 3 comments | https://news.ycombinator.com/item?id=26216369 https://news.ycombinator.com/item?id=26216369 C Is Not a Low-level Language (2018) | 343 points | goranmoomin | 5 years ago | 167 comments | https://news.ycombinator.com/item?id=21888096 https://news.ycombinator.com/item?id=21888096 C Is Not a Low Level Language (2018) | 15 points | classicsnoot | 5 years ago | 2 comments | https://news.ycombinator.com/item?id=21370954 https://news.ycombinator.com/item?id=21370954
- zabzonk 2y ago[flagged]
- deleted 2y ago[deleted]
- jsd1982 2y agoIt feels a bit unfair to lay the blame for all of this on C. All other mainstream compilable languages compile to similar abstract machines in a similar fashion to C.
- lelanthran 2y agoThis old canard again? Hasn't this been debunked multiple times already? "C is not a low-level language" Uh, okay, then what is? What are you comparing it to? Low-level/high-level is not a binary switch, it's a spectrum; exactly how many languages are lower-level than C and how many are higher?
- Pet_Ant 2y agoArguably then only High-level Assembly [1] meets the criteria. Or perhaps micro-coding. That said with caches, branch predictors, register renaming, op-cracking, reordering, it's hard to say that assembly language is even low-level anymore because it's significantly abstracted over what is going to occur in the chip. [1] https://en.wikipedia.org/wiki/High_Level_Assembly https://en.wikipedia.org/wiki/High_Level_Assembly
- jcranmer 2y ago> Hasn't this been debunked multiple times already? No. One of the main problems with the C user base is that there's a sizable number of developers who attach some sort of special status to C as the closest thing to assembly language and get incredibly belligerent with compilers when they fail to reproduce the exact assembly they were expecting. (Cryptographers angry that the compiler is getting rid of their constant-time tricks is one of the more notable cases, no matter how many times compiler vendors keep saying "stop using C if you want constant time, we don't guarantee it, we won't guarantee it"). > What are you comparing it to? The reality is that C isn't meaningfully closer to assembly language than just about any other non-runtime based language--things like Fortran, Pascal, Rust, Zig, etc. are all around as good as C at representing machine hardware. Honestly, I'd say Rust is marginally better than C, by virtue of the fact that it allows multiple return types and lacks some of the implicit conversion inanities of C. > Uh, okay, then what is? The closest notable language you'll probably find is... LLVM IR (although I'd caveat that with LLVM IR isn't meant to actually be written by hand). LLVM does hew too close to the C abstract machine to be truly effective in this role, but it does make the crucial first step of having a distinction between registers and memory that is absent in all of the regular programming languages I'm aware of.
- whobre 2y agoTo be fair, C was never even considered to be a low level language in cs textbooks, although I see it mentioned at Wikipedia
- sl1ckback 2y agoLow-level, high-level… such categorization is arbitrary semantics. An old and arbitrary IT meme, like vim vs emacs. No useful outcomes are achieved through the debate. We learn nothing about a previously unknown capability of our technology or self structuring pointless taxonomy. “Oh look a grammatically correct sentence.” is all this rises to.
- deleted 2y ago[deleted]
- jstimpfle 2y agoThis is partly fighting a strawman. No performance aware programmer worth their salt assumes a fast PDP-11. C is still loved because it provides control over memory layout and memory management, maybe the two most important things if performance is needed.
- deleted 2y ago[deleted]
- fithisux 2y agoLow level means simple translation to assembly, not the gigabytes it takes to make a compiler or the crazy implementations, I wonder why Randal Hyde's HLA is not popular or maintained by the community.
- jeisc 2y agoOur computers though more powerful don't seem to work any better than they did before in my user experience of 30 years: stalls, hang ups, crashes and pop up windows telling me to do something... Why do we trust this consumer level technology to do mission critical work: running our lives or ruining it?