C never dies

C has come to practically define the entire computing landscape at the moment.

C is the de facto standard for not just writing Operating Systems and kernels, but also how APIs are presented to the developer and user.

Languages like Java for example, generally you’ll write 99% of code in Java, but you also get the opportunity to call C code too, via JNI. Just about any serious language/runtime lets you do this. So if we can consider languages like cars, i.e. Java is a Toyota, Python is a Honda, JavaScript is a PT Cruiser etc. then C isn’t just a language, it’s the roads.

There are many different Operating Systems, but one thing unites practically all of them, and that is C, not just in using it, but using how C presents calling conventions to just about everything else. Even esoteric niche OS like Inferno, you’ll write all software in Limbo and run on the dis runtime, but if you want to drill down to the hardware, or extend the OS, you’re into C.

Operating Systems not written at least partially in C are a rounding error, it’s a tiny fraction of 1%.

At a systems or hardware level C doesn’t just dominate, it really sets the rules for the whole game.

A lot of programmers (especially beginners) don’t really notice C, and don’t really notice where it’s used, but I compare that to this:

How often do you stop to notice the ground under your feet?

Attached: 1200px-The_C_Programming_Language_logo.svg.png (1200x1276, 74K)

All the time.
I know C because I'm kinda crazy for knowing how everything works behind a computer, it was my first programming la language.
I'm also interested ( although I don't use ) basic and assembly.

>Languages like Java for example, generally you’ll write 99% of code in Java, but you also get the opportunity to call C code too, via JNI.
And this is why modern software is shit. All source code should be written in C. No exceptions.

>C
>pointer functions and struct instead of actually useful classes with methods

Attached: 306258cbfee56e2c1143e2e8262b2f71c3f7e9d0e20bc62f17f2a546a205cdbf.png (625x423, 74K)

lol who said I don't use other languages?

You shouldn't

>How often do you stop to notice the ground under your feet?
I work as a C programmer, doing system's stuff, so pretty much all the time.

It should be everyones first language. and any sensible cs program knows this and starts with it. its the foundation of 99% of all modern computing. its based and beautiful.

I mean unless you're translating all your shit to C before compiling, you did. That just seems like an incredibly inefficient compilation process.
Pic related.

Attached: 1532646041789.jpg (869x1776, 252K)

I'm and while I agree that any sensible CS program should teach at least one or two classes of C programming (along with assembly and intro to network programming and operation systems with assignments in C), I'm not sure how useful it is as a first language. But maybe.

As for C being beautiful though, that's not the case. It's gritty and grimy, coarse and rough. But it gets the job done.

See

Common Lisp is a big-city language. Spit out the hayseed, pronounce "shit" with one syllable and "shotgun" with two. You're not in Kansas, anymore. C is the language of the poor farmer village where the allocation of every seed and livestock matters, where taxes are low and public service non-existent. Appreciating the value of a large language is evidently hard for many people, just like many people find themselves miserable in the big city and go to great lengths to create a small village for themselves in the city where everything is like it used to be where they came from.

Attached: ErikNaggum_LUGM99_DKL.jpg (1257x1133, 259K)

>As for C being beautiful though, that's not the case. It's gritty and grimy, coarse and rough. But it gets the job done.
that's the best part of C
it lets you knot all the crosses and dot all the T's

But it's also why it's tedious to work with.

C is a memory manager with syntax, it forces you to engage with the von neumann machine

what you are referring to as C calling convention is actually standard arch-defined calling convention
in C you don't have that kind of control to specify which choices will be made regarding call conventions, this is abstracted away

It's not sensibly used for anything except hardware/low level system programming, though. If that doesn't interest you, for sure skip it all together.
But as a basic intro, it's good, since it's syntax and std lib is clear and concise.

I entirely agree with your post. The only exception would probably be writing portable native bindings (see Python C bindings or Java Native Interface), libraries that are supposed to link with multiple languages (that have native bindings) and/or working on some large scale (legacy) open source programs where it's easier to find C programmers than anything else. But yeah, you make a good point.

a. no support for concurrency
b. anemic standard library
c. pointer arithmetics
d. void*
e. difficult to debug due to absolutely lacking exception handling measures

>C has come to practically define the entire computing landscape at the moment.
Don't remind me. Please.

Man, I miss him.

>a. no support for concurrency
While technically true that there is no built-in support for this in the language, POSIX threads is defacto standard for concurrency in C.

is C++ a better C? (im not an authist incel manlet programmer, im just curious)

Despite C's obvious influence on C++, C and C++ should be regarded as entirely different languages by now. Generally, C-style programming is considered unidiomatic or even unsafe code in C++ and both rely on entirely different idioms and paradigms.

In all, what said is true. C is well suited for interacting with hardware or low-level stuff, while C++ is more similar to modern day languages (despite having inherited some archaic concepts from C such as header files and preprocessor).

It once were but it have been a separate language for a long time now. Modern C is better in some ways IMO

classes and methods are just abstractions of functions and primitive data types anyway

But knowing C or Assembly isn't making you better than any other developer, nobody is fuckin special and if someone is thinking in such manner than he has something wring inside his brain RIP TAD...
Everybody can start programming in C with enough of training, some will be better that's sure, but...
What counts is how much you are able to do for the others with your skills, create open source libraries and software, writting good apps.

For someone that is real man, true programmer and passionate of technology things that we are writting here are obvious, programming moved to the web, C is better only in low level computing, that's was and it is it's purpose, you are just feeding your rotten ego...

It actually does. Knowing how the code actually interacts with the machine makes for much more efficient code. More efficient code runs faster and uses less RAM, providing a better user experience as well as using less energy since the CPU isn't powering through needless amounts of cycles.

But it's usefull only when you are building hi efficeint corporate level stuff eg. OS, Kernels, Drivers or any other electronic engineering related shit.
Typical user who is our(developers) customer has in palm of his hand device powerfull enough to withstand less efficient code. Modern smartphone has computing power that we could only imagine 10 years back and that's reason why developing less optimated JS apps and using modern languages is growing. Biggest market is web and developing web app based purely on JS is fastest and requires to less resources to deploy, it also provides satysfying experience for the user.

That's how C is loosing in interest...

For me more satysfying is that i can deploy fully fledged web app in one week, for someone else more satysfying would be that he's sorting algorythm is faster than other one in some cases.
It's private case i think.

>unsafe
Might as well say "yikes"

Instead of resorting to brainlet memes, how about trying to absorb some information instead? C is prone to a lot more errors than sepples, we all know this.

abstractions that make code so much more beautiful

That's not true at all, because C is simpler

Code asthetics have a negative effect on performance in execution.

C may be simpler, but it also lacks higher level expressions and abstractions and require the programmer to do more work to achieve the same. The programmer is only human, and makes mistakes. More work offloaded on to the programmer, leads to higher chance of mistakes. This is why sepples advocate throwing exceptions rather than returning error codes, using RAII instead of manually releasing resources and catching every single exit point, safe pointers instead of manually dealing with memory ownership, etc.

As someone who highly enjoys hacky C. On our modern systems, sometimes the more complicated and safer abstractions of seeples can protect code execution. It's rare to see real examples, but it can be true. So for large complicated projects, sometimes C++ can tie things together well, even if you really want to just call C functions.

in the short term, but they're a hell of a lot easier to debug

C is not meant for anything that would require extensive amounts of time to do those things. The "unix philosophy" itself im pretty sure is avoid this very thing.

The UNIX philosophy is a meme, and is the reason why NIXes are a clusterfuck today that implemented Multics, but in the most backwards and hacky way possible.

C is nothing more than a product of its time. But its also the best at what it is used for today, namely device drivers, low-level system's programming and maintaining legacy software.

If you wrote code correctly the first time, there would ne no need for that. As a matter of fact, that applies to the whole "software as a service" bullshit.

it's not about writing code correctly the first time, it's about implementing new features through upgrades. That's why there's three parts to semver, not one, genius.

The whole problem with the "modern" software industry is its special flavor of risk aversion. Instead of hiring competent programmers and making them responsible for human lives, they hire idiots and give them tools that limit the damage they can do.
Imagine how much faster your car would go if its code was all written in C.