C is not low lv

It's over Jow Forums. We been living a lie all these years. C is not a low level language. Has not been for many years.

queue.acm.org/detail.cfm?id=3212479

Attached: 158770867_0eb69d5683_o.jpg (1812x1812, 595K)

Other urls found in this thread:

queue.acm.org/detail.cfm?id=3212479
twitter.com/SFWRedditGifs

Ok

I've been telling this to Jow Forums all these time.

Who the fuck told you it was ever low level?

>he needs a blog post to tell him that C is not assembly

>queue.acm.org/detail.cfm?id=3212479

>There is a common myth in software development that parallel programming is hard. This would come as a surprise to Alan Kay, who was able to teach an actor-model language to young children, with which they wrote working programs with more than 200 threads. It comes as a surprise to Erlang programmers, who commonly write programs with thousands of parallel components. It's more accurate to say that parallel programming in a language with a C-like abstract machine is difficult, and given the prevalence of parallel hardware, from multicore CPUs to many-core GPUs, that's just another way of saying that C doesn't map to modern hardware very well.

Does that shitter not know about openMP or pthreads?

Have you ever used either?

Cniles sure avoid them like the plague.

>>he needs a blog post to tell him that C is not assembly
No, that is not the argument of the post.
The author freely admits that C probably *was* a low level programming language at some point.

>Who the fuck told you it was ever low level?
For example the author of that blog article:
"It's easy to argue that C was a low-level language for the PDP-11"

C isn't low level assembly is and even that machine is real deal. C might be lower than most but since it's inception it's considered high because you could do drastically more way easier than assembly

Read the article...

>let's redefine low-level so C isn't low-level
Bitch C is the definition of low-level language.

Every first chapter of every "Introduction to C" book will tell you this, OP.

Read the article, the author makes a good point...

>The root cause of the Spectre and Meltdown vulnerabilities was that processor architects were trying to build not just fast processors, but fast processors that expose the same abstract machine as a PDP-11
Any more reading on this?

>Read the article, the author makes a good point...
No he doesn't, he's a contrarian snowflake faggot who wants attention.

>No he doesn't, he's a contrarian snowflake faggot who wants attention.
Read the article, he really doesn't say anything controversial, it was roughly the same Idea that was told to me at the beginning of my C course in University.

C has less and less to do with how a computer really works, which is something anyone who has *some* idea of how a modern Computer works knows.

>A programming language is low level when its programs require attention to the irrelevant
what a silly thing to say

I think it is quite fitting.

>C has less and less to do with how a computer really works, which is something anyone who has *some* idea of how a modern Computer works knows.
This. The "portable assembler“ abstraction of C is less and less accurate.

Your definition of "low level" is quite bizarre then.

I get what he's saying, but replacing the current processors and every program ever written to solve the problem, is just not going to happen

It's not a really good, concrete or objective definition of low level.

>concrete or objective definition of low level.
Give a better one.
I would say that definition describes exactly what low level programming is about, not relying on abstractions, but doing it manually.
At the very least it captures the spirit of what "low level" programming is about quite well.

Open MP and pthreads are trash.
MPI is all the rage.

A "low level" language, in theory, should provide direct, detailed constructs to manipulate the machine in very precise ways, without providing much abstraction and being inherently tied to the machine's internal design.
Worrying about dereferencing a null pointer is requiring attention to an irrelevant aspect that is fairly abstract and has nothing to do with the way ANY machine works.
C is not a low level language.

>A "low level" language, in theory, should provide direct, detailed constructs to manipulate the machine in very precise ways, without providing much abstraction and being inherently tied to the machine's internal design.
Yeah, that is something the article talks about at length.

>Worrying about dereferencing a null pointer is requiring attention to an irrelevant aspect that is fairly abstract and has nothing to do with the way ANY machine works.
I would actually disagree, even for the hardware a null pointer means *something* and thus handling it is something such a language needs to do. What else would you do when you try to allocate more space then available?
The article gives much better examples then that, eg. when it comes to cache, it simply isn't the case that memory is linear, that C construct is simply inaccurate to what the hardware actually does and this comes with actual issues.

>C is not a low level language.
Yeah, I think that is accurate considering the way modern Computers are set up.

>C
>literally named for being "high level"
>apparently not low level.

Read the article

"Low" is a relative term. This is a pointless thread.

I've been to University.

Read the article, C has less and less to do with how a modern Computer works.

The article is interesting and makes an actually good argument.

>>Read the article, he really doesn't say anything controversia
He doens't say anything interesting. The entire discussion is a matter of semantics about what "low" means. Nobody disagrees about the actual nature of C, the only disagreement is what qualifies as "low".

It's not, nothing he says about C is insightful, just common knowledge. He's not bringing anything new to the table, he's just arguing that people are using the word "low" incorrectly.

The article isn't truly about C at all, it's about the word "low". Which far from being interesting, is tedious.

>The entire discussion is a matter of semantics about what "low" means. Nobody disagrees about the actual nature of C, the only disagreement is what qualifies as "low".
I don't get what you are saying, the article talks about the relation between C and the actual hardware it is compiled for, not the definition of "low".

>he's just arguing that people are using the word "low" incorrectly.
Did you read the same article as I did?
Because he definitely doesn't talk about what "low" means, as the author freely admits that C *was* low level considered in relation to some hardware.

How does that contradict my point that C was considered high-level from day one?

>C was considered high-level
By whom?

>the article talks about the relation between C and the actual hardware it is compiled for
The article contends that "low" should be used to describe languages that are very close to hardware. With that definition of low, everybody knows that C isn't low.

That is not the only definition of low in common use. When some people say a language is low, they mean it's lacking things like garbage collection and has (mis)features like static weak typing. With this definition of low, C plainly qualifies.

Nobody disagrees on the fundamental nature of what C is. We all know it's not a close mapping to modern hardware, and we all know it has static weak typing and no garbage collection. The article isn't telling us anything new about C. All the article is doing is asserting one meaning of "low" to be the correct meaning.

By everyone who don't visit Jow Forums

>The article contends that "low" should be used to describe languages that are very close to hardware. With that definition of low, everybody knows that C isn't low.
No?
The Article says that C on some hardware should be considered low level, so your point makes zero sense.

>When some people say a language is low, they mean it's lacking things like garbage collection and has (mis)features like static weak typing. With this definition of low, C plainly qualifies.
Fine.

>All the article is doing is asserting one meaning of "low" to be the correct meaning.
It presumes that and talks about the relation between language and hardware...

>By everyone who don't visit Jow Forums
*doesn't
But you visit Jow Forums and claim otherwise.

Assembly programmers. No matter which way you look at it, "low" is always relative to your perspective. The first language I ever started writing programs in was z80 assembly (on a TI-83+). To me, learning C was very much learning a high level language.

To a python programmer C will always be low no matter which definition of low they subscribe to because Python is an even worse mapping to modern hardware than C, and has many convenient features like garbage collection.

But again, when the article argues that C isn't low level, it's not arguing that it has the same features and hardware mapping as python; everybody including the author knows that it doesn't. Rather he's just arguing about when and how the word "low" should be used.

Not to mention the fact that most parallel/GPU programs the author holds up as the alternative are written in C as well (or CUDA specifically). Excluding experimental/toy systems of course.

>>The Article says that C on some hardware should be considered low level, so your point makes zero sense.
The article is asserting that whether or not C and the hardware model match up closely is what determines if something is low or not. The relationship between C and the hardware, whatever that hardware happens to be, was never in doubt by anybody.

The title of the article is
>"C Is Not a Low-level Language"
which is basically flamebait. It's meant to get people who use other definitions of "low" all riled up. If the title of the article was
>"C's model of computation does not closely match the reality of many modern processors"
Then it would be uncontentious, uninteresting, and would get less clicks.

>There are this many people who don't understand what "low level" and "high level" actually mean in the context of programming languages.
A low level language is "low level" because it has a 1:1 relation/mapping with the hardware. Examples include MIPS, x86, ARM, etc. Anything you write in this language must be tailored for the specific limitations of the hardware you intend for it to run on.
A high level language is "high level" because it is a level of abstraction above low level languages; you don't need to know everything (or anything) about the hardware it will run on. Examples of this include C, C++, Java, Python, etc. Anything you write in these languages will not have a 1:1 mapping with the hardware--it needs to be translated first.

Unironically a good read, thanks OP.

If C is a low-level language, then Fortran is low too. It translates into machine code not any worse than C.

Attached: 1529325909020.png (405x386, 192K)

you can compile js to machine code. JS is literally low level language now.

It's not as simple as something being low or high level. Java for example would be considered high level, but it's certainly lower level than Haskell.

/thread

C has never been low level, C is high level, assembly is low.

It's also a shit language desu.

True, but that's another story.

Is is that simple. To argue that one language is lower level than another is to A. argue that it's lower level while both still being within the same level--which is purposefully misleading if you don't specify as such, usually argued by those who are ignorant of what low-level and high-level actually means-- or B. argue that the other language is essentially translated into a high-level language--thus being an even higher level language.

You guys know most c/c++ compilers will allow you to write assembly right?

1. OP is a faggot
2. C is low-level for today's standards. inb4 relativism.

Yes, and...?

Indeed Unix was touted as the first major OS that was written in a high level language (i.e. C)