C hate thread

C is a disservice to intelligent programmers. It has almost 0 features that a modern and intelligent programmer uses to be productive. Since C is such a timesink, it's popularity is falling more than any other languages in the market.
C is dying and it should die ASAP. C programmers are actually retards in general. C is a small language to grasp, exactly the kind of shit that makes things retard friendly.
C has no advanced features like C++ does.

But as a newfag you are kinda in the right direction. C is for newbies. Think of it this way:
During ancient times, counting to 10 was a big deal and a person who could count to 10 was considered to be "wise".

Fast forward a few century counting to 10 is so trivial we teach this to toddlers. Now toddlers appreciate the vast "knowledge" of counting to 10 while matured brains are busy with modern technologies.

C is from stone age and the people who still preach it is like overgrown toddlers that can't learn advanced things. C is for lesser programmers.
C doesn't have delegates
C doesn't have resizable arrays
C doesn't have strings
C doesn't have string concatenation
C doesn't have namespaces
C doesn't have exception handling
C doesn't have closures in the standard
C doesn't have unit tests
C doesn't have Function overloading
C doesn't have memory safety of any kind
C doesn't prevent memory exploits and has no bounds and runtime checks
C doesn't support dynamic method loading/creating
C doesn't even have generics and templates
C doesn't have meta programming
C doesn't have mixins
C doesn't have higher order functions
C doesn't have contract programming
C doesn't have inner classes
C doesn't have function literals
C doesn't have array slicing
C has a very limited support for implicit parallelism
C doesn't even have string switches

C is a cancer that plagues the modern software industry

Attached: 1537743140640.png (600x382, 163K)

Other urls found in this thread:

fuchsia.googlesource.com/zircon
twitter.com/NSFWRedditGif

Nah

here we go again, i guess

op is right and you know it

>Bumping this shitty bait thread
No.

Obvious bait, but just wanted to point out that le stone age is a meme and humans have had sophisticated mathematical systems since the inception of the human race

Don't forget that C is bad for performance as well.

>C doesn't have delegates
useless
>C doesn't have resizable arrays
useless, you preallocate all space you need
if you're a retard that uses C for applications, that's on you
>C doesn't have strings
useless, slow
>C doesn't have string concatenation
useless
>C doesn't have namespaces
that's a feature, it forces you to KISS
>C doesn't have exception handling
exceptions are the shittiest approach to error handling
>C doesn't have closures in the standard
useless
>C doesn't have unit tests
useless, you want to verify that your program is correct, not not hand-wave it by passing arbitrary bug-ridden tests
>C doesn't have Function overloading
that's a feature, no hidden cost to calling a function
>C doesn't have memory safety of any kind
it does, you just have to stop being a retard and use the tools available
>C doesn't prevent memory exploits and has no bounds and runtime checks
that'sa feature, it's the programmer's responsibility to verify his program
>C doesn't support dynamic method loading/creating
that's a feature
>C doesn't even have generics and templates
that'sa feature, forces you to KISS and to optimize algos for your specific use-case
>C doesn't have meta programming
useless
>C doesn't have mixins
useless
>C doesn't have higher order functions
useless, you want HKTs, if anything
>C doesn't have contract programming
it does, you're just a retard that doesn't know how to use the tools available
>C doesn't have inner classes
useless
>C doesn't have function literals
useless
>C doesn't have array slicing
useless
>C has a very limited support for implicit parallelism
feature - it forces you to think carefully about what you're doing
>C doesn't even have string switches
useless, if you're pattern-matching strings, your design is terrible by default
>C is a cancer that plagues the modern software industry
no, that would be retards like you that refuse to use appropriate tools

What are these: delegates, memory safety, meta programming, mixins

What is an inner class as opposed to an outer class?
What is a function literal?

It's literally FORTRAN that is only relevant because of the Linux kernel.

I have a feeling that the 'portability' of C is the primary reason why x86 processors today are implemented in microcode on top of the actual processors instead of there being optimizing compilers for actually hardware agnostic languages for the actual processors.
The state of microprocessor security reminds me of the state of C's security as well.

C is an algol.

>Literally everything doesn't matter
Wew lad.

>delegates
It's a retarded C#-ism for (capturing) lambdas.
>memory safety
You won't segfault.
>meta programming
You can write programs that write programs.

>What is an inner class as opposed to an outer class?
A Java-ism. An inner class is a static defined in the scope of another class. Inner class instances implicitly store a reference to their outer class and can access it's members without having to use an explicit reference.
>What is a function literal?
An anonymous function expression.

*is a class defined in

kys OP

>u-useless
delusional

when was the last time you thought "wow, i really want C to have this useless feature" when writing low-level system?
>t. cretin that uses C for his shitty app

Namespaces cost nothing in implementation and are useful in any context. Same with metaprogramming.

>Causing unstable ABIs for a worthless """feature"""
No thanks.

>useful in any context
>metaprogramming
namespaces are anti-feature in systems language, you want modules
metaprogramming is equally as bad and discourages explicity, which is the last thing you want to do if you actually want to rely on your system
die in a pool of shit, retard
nobody wants your kind in systems programming, you're just a monkey throwing shit you find in application languages around in hope that it makes you able to write systems

Attached: 1438114215690.jpg (600x922, 211K)

Then why doesn't c have explicit named imports?

>Spends months re-implementing a C project in a higher-level language.
>Binary is now 15x larger and runs hundreds of times slower.

>Implying namespaces necessitate an unstable ABI

>you want modules
That thing C doesn't have?

Because:
1. those aren't modules
2. C is old language and breaking ABI for unimpactful feature isn't worth it
So? It's not like you *need* it. It helps a little, but it's not something i'd slap on C for the sake of having it.
It's a feature you want if you're designing a C successor.

>C hate thread
>lists C++ features that are themselves deprecated
>actually a C++ shill thread

>C
>explicit
lmao
Also C does have metaprogramming and namespaces, so I guess you should stop using it.

Attached: 1512992242512.png (600x595, 567K)

Please don't remind me of x-macros

You need some mechanism for importing symbols unless you want to add a different nested library prefix to each function call.

>C
>metaprogramming
>namespaces
i see, by your definition it's also functional *and* OOP language

Fucking based and redpilled.
The only reason to use C nowadays is to work and maintain projects that are written in it, but there is literally no reason to use it for a new project anymore.

>a language whose entire runtime system consists of copying some initial values into RAM doesn't support exceptions or runtime memory access checks
>a language where heap is a userspace abstraction doesn't support resizable arrays
>a language where vector comparisons are a part of the standard library doesn't support them in syntax
>a language where function and variable names are exactly as they appear in the object code doesn't support function overloading
>hurr C bad
There is nothing wrong with any of these things, and getting rid of them would require getting rid of the things that make C useful.
I don't know where you got the delegate thing from, but all a delegate is is a function pointer with a little extra data packed into it. C has that. Regarding metaprogramming- the preprocessor is deceptively powerful in the right hands, but that tends to be a touchy subject here so I'll leave it alone.

The only things you mention that are actual problems are:
>lack of homoiconicity
>lack of clean metaprogramming tool

And you entirely neglect to point out the one thing that is unequivocally a problem with C, which is its utterly useless type system.

The absolute state of Cniles.

C has most of those things, of those things just not in the base language.
Everything listed can (and have) been implemented except syntactical sugar like delegates, namespaces, function overloading and classes, function literals (you said delegates, no need to repeat yourself).
C has template metaprogramming in the form of macros and if you write an interpreter in C you can do interpreter style metaprogramming.

Macros are not turing complete. There is no metaprogramming here.

Right, better to PRE_Fix every library you use, instead of having the language manage name clashes for you, right?
I swear C pajeets are some of the most insufferable faggots on the world.

Why the fuck would your metaprogramming tool need to be turing complete in a language that's basically just a thin veneer over assembly?

I'm willing to bet that anyone hating on the C language probably doesn't know why the C language is designed in the way it is and probably couldn't write an efficient, elegant program in C to save their lives

>>a language where function and variable names are exactly as they appear in the object code
Try again

nested macros are turing complete, C++ macros are not seen by the compiler so 'turing complete' is a meme and a parlor trick

>C has metaprogramming
>No it doesn't
>Why do you need metaprogramming?
You really can't make this shit up.

>I'm willing to bet that anyone hating on the C language probably doesn't know why the C language is designed in the way it is
Can you?

C macros do not recursively expand. Try again.

>basically just a thin veneer over assembly?
Do cniles actual believe this? The work compiler developers put into the C compiler is astronomical. The work the processor puts into translating assembly code into something actual useable by the machine is also astronomical. The amount of abstraction between a C program and the computer is probably beyond the capacity of most people to comprehend. C isn't "portable assembly" and it isn't that simple of a language. If you want to know what an actual "portable" assembly looks like take a look at forth or c--. God ,cniles are just straight delusional.

Oh and you can do metaprogramming in forth extremely easily and it just as lower level and simplier to implement than c. C just isn't a very well designed language.

hmmmmmm

Attached: hmmmmmm.png (607x947, 58K)

The only reason that C++ is popular is because its backwards compatible with C. If you hate C then you hate C++ because C++ loses all value when you take away the C subset

qed

This is like saying out of bounds access isn't UB because it worked on your machine.

The "backward compatibility" provided a migration path, nothing more.

You don't really understand what C is for, do you?
I can't blame you, people on both sides don't get it.
I'll clue you in.
C is a portable assembly language.
In simpler terms, it's a step between high level languages that include such things as namespaces and abstracted strings, and ASM
C doesn't have many of the things you're referring to simply because they wouldn't ruin the language's purpose.
C is meant for near full control over your program's faculties. Namespaces, automatic memory management, and abstracted strings all cause uncontrollable behavior that changes memory.
Memory that the programmer is meant to manage.
Yes, C is not a good choice for some tasks, but in others it is a fine choice.
Every tool for its proper job.

and you tried to say that name mangling doesn't mangle names. Seems like we're on the same page.

>The "backward compatibility" provided a migration path, nothing more.
C is literally the lingua franca of computing, even languages like Rust and Go are judged by how well they interface with C

try again

Backwards compatibility was useful to gain popularity, but it's no longer necessary once you have it, and it even hinders further development.
Saying that you should hate C++ if you hate C is also pretty retarded, since C++ is often used exactly because it provides something that C doesn't have, while still maintaining top notch performance.
C++ is actually moving further amd further away from C, and this is especially true in the most recent standards.
Clean, efficient, well-written C++17 looks nothing like good C.
In fact, the worst kind of C++ code is usually written by two kinds of people:
>those who write it as if it were c
>those who write it as if it were java

C++ only gains value when you take away the legacy cruft
in fact I would say that the biggest thing holding C++ back as a language is the insistence on keeping compatibility with that retarded mess of a shitlang
I have used C apis
and by god they're disgusting, verbose, and clunky as hell

How does this refute his statement?

>autism the post

Are you aware what C is used for? It's generally used for systems programming because it gives you so much control over the hardware. Of course it lacks features that modern programming languages have, because most of those language are written in C. If you're using C then you're probably writing a compiler, or OS, or device driver, or some other low level program. You are a completely uneducated retard who has no idea what you're talking about. I doubt you know anything about the "modern software industry" or about programming in general. You're probably a CS undergrad who had to use C in one class and found it too difficult because you're a total brainlet

>How does this refute his statement?
read this thread: no one believes this bullshit, everyone knows that C++ is stuck using templates for all new features, if C++ actually did what this guy is saying and became a new language no one would use it

No I didn't.

Attached: 1513109656923.png (1111x624, 613K)

That post said nothing about C or any language being the "lingua franca" or anything, it was simply explaining why C++ was originally designed with compatibility with C on mind, what the fuck is your point? Is this a pathetic goalpost-moving attempt?

what exactly is your point? you asked a question, I answered and didnt give the answer that fits your meme, so what?

>if C++ actually did what this guy is saying and became a new language no one would use it
Too bad it IS a quite different language already, yet it's still widely used. You are literally making factually false assumptions.

Please no fight

You replied to this (correct) statement
>The "backward compatibility" provided a migration path, nothing more.
with
>C is literally the lingua franca of computing, even languages like Rust and Go are judged by how well they interface with C
How does this invalidate the first quote? Are you mentally deficient?

you can make most of those of your own, if you want to..

I love reinventing the wheel too, user.

go circlejerk somewhere else, I explained myself, if you dont like my answer then too bad

Can anyone explain to me what the purpose of these "x hate threads" where x is something the OP dislikes?

Is it just a lazy form of bait?
OP trying to find an echo chamber/circlejerk for his opinions?
Jow Forums refugees looking for their fix of outrage?

Or what?

your waifu is a whore and you don't have an argument

Attached: 1543146641519.png (300x300, 109K)

C gives you everything you need, and nothing more.
Rust gives you all the things, plus the NodeJS "if you need it, import it" mentality.

>C doesn't have memory safety of any kind
>C doesn't prevent memory exploits and has no bounds and runtime checks
If it did then it isn't doing what you want.
Zoomer programming: The thread

>thinking a compiler is a low level program
This is how we know you are a brainlet.

>Namespaces, automatic memory management, and abstracted strings all cause uncontrollable behavior that changes memory
Literally all of those have well defined, deterministic behavior. There is no advantage to managing memory manually.

ok, great. I'll just implement a GC on everything you own that uses a microcontroller, so every product you use will be just as slow as your script kiddie shit.

>thinking automatic memory management means garbage collector
Again, outing yourself as a brainlet.

A cute whore and I love her!

>when you're first in solving programming challenges, but last in everything else
Haskell, quite useless.

If C is so shit, what do you suggest as an alternative?
>inb4 rust

>C is from stone age and the people who still preach it is like overgrown toddlers that can't learn advanced thing

Eat shit and die OP

Attached: 1543978203323.png (680x887, 1.08M)

>C doesn't have delegates
Do you not realize that delegates are idiot-proofed function pointers? Back to codecademy for you

>thinking I'm the person you replied to
you have a few options for non-GC'd dynamic memory management. Compile-time resolution, in the form of linear types or explicit lifetimes (which are effectively just a bastardization of linear types), and runtime resolution in the form of reference counting and garbage collection. Linear types have the problem of not existing in any commonly-used language (unfortunately), and they and lifetimes both are too advanced of a concept for retards like you to understand. That leaves us with reference counting, which by definition can't be used in circular references without special-case weak references, or just an entirely application-specific implementation for a specific data structure. I have taken the latter approach in the past with an embedded network stack that required some dynamic management of buffers. Reference counting has its merits, but until linear types become popular, GC is and will always be the least intrusive solution.

You don't need reference counting. Just stop using shared pointers.

As a software engineer who works on systems engineering, try to write an OS or any other systems program in C and then come back to me telling me its useless

fuchsia.googlesource.com/zircon

is this a c thread?

Attached: cthread.jpg (898x1146, 235K)

>hurr just don't share data between threads
great, another utter non-solution. No useful program is ever going to do many entirely independent tasks at the same time, such that they never need to share some kind of information. Synchronization is necessary. The fuck do you think a semaphore is?

yes, but that image is the average C++ programmer and I'm not sure why you posted it

Attached: 1462128560034.png (1052x1342, 769K)

Yes. There are no valid complaints about languages that can get you a job. OP is just being a child. Let's talk about how C will never go away.

You mean a mutex? Yet another way to know you don't actually work in the industry or know anything about systems programming.

He's clearly compiling C code though

those aren't the same thing you shit-eating mongoloid.
I work for an industrial automation firm, doing development on our two operating systems. One is a call stack-only, zero dynamic memory cooperative OS that can be thought of as a distant relative to Contiki, and the other is a heavily modified version of FreeRTOS running an alternative scheduler, one based on EDF instead of FreeRTOS's normal hard-priority based system. Both feature network stacks built in-house from the ground up, supporting IPv4 with both TCP and UDP sockets, SNMP (which is a bitch and a half by the way), HTTP 2.0, as well as ODVA compliant implementations of Ethernet/IP (which is an application layer 7 protocol its name) and DeviceNet. Besides 802.3, we also support DLR because some of our customers like the redundancy it provides. If you've ever bought a car that was manufactured in the western hemisphere, there's a very good chance some of my code was running in one of the robots that built it.

>which is an application layer 7 protocol its name
fuck, this was supposed to say "application layer protocol, despite its name." somehow managed to backspace the wrong part.

still waiting on a driver written in rust