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
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
Juan Gonzalez
Don't forget that C is bad for performance as well.
Xavier Torres
>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
David Peterson
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?
Ayden Lopez
It's literally FORTRAN that is only relevant because of the Linux kernel.
Tyler Powell
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.
Ethan Lewis
>Literally everything doesn't matter Wew lad.
Tyler Martin
>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.
Chase Bell
*is a class defined in
Tyler Green
kys OP
Brody Diaz
>u-useless delusional
Ryan Lee
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
Luke Campbell
Namespaces cost nothing in implementation and are useful in any context. Same with metaprogramming.
Gabriel Richardson
>Causing unstable ABIs for a worthless """feature""" No thanks.
Landon Ortiz
>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
>Spends months re-implementing a C project in a higher-level language. >Binary is now 15x larger and runs hundreds of times slower.
Gabriel Evans
>Implying namespaces necessitate an unstable ABI
Justin Ortiz
>you want modules That thing C doesn't have?
Carter Lopez
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.
Wyatt Morales
>C hate thread >lists C++ features that are themselves deprecated >actually a C++ shill thread
Jose Lewis
>C >explicit lmao Also C does have metaprogramming and namespaces, so I guess you should stop using it.
You need some mechanism for importing symbols unless you want to add a different nested library prefix to each function call.
Jeremiah Miller
>C >metaprogramming >namespaces i see, by your definition it's also functional *and* OOP language
Nathan Hill
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.
Bentley Foster
>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.
Easton Reyes
The absolute state of Cniles.
Camden Gray
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.
Matthew Phillips
Macros are not turing complete. There is no metaprogramming here.
Blake Hernandez
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.
Grayson Wilson
Why the fuck would your metaprogramming tool need to be turing complete in a language that's basically just a thin veneer over assembly?
Cameron Turner
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
Andrew Miller
>>a language where function and variable names are exactly as they appear in the object code Try again
Anthony Nelson
nested macros are turing complete, C++ macros are not seen by the compiler so 'turing complete' is a meme and a parlor trick
Nolan Gray
>C has metaprogramming >No it doesn't >Why do you need metaprogramming? You really can't make this shit up.
James Cox
>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?
Liam Parker
C macros do not recursively expand. Try again.
Angel Martinez
>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.
Robert Hall
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.
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
Aiden Cox
qed
Connor Perry
This is like saying out of bounds access isn't UB because it worked on your machine.
Benjamin Barnes
The "backward compatibility" provided a migration path, nothing more.
Kevin Bell
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.
Xavier Ramirez
and you tried to say that name mangling doesn't mangle names. Seems like we're on the same page.
Kevin Lee
>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
Jayden Fisher
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
David Smith
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
Jason Johnson
How does this refute his statement?
Lucas Howard
>autism the post
Robert Bell
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
David Lopez
>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
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?
Bentley Sullivan
what exactly is your point? you asked a question, I answered and didnt give the answer that fits your meme, so what?
Bentley Myers
>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.
Juan Wright
Please no fight
Logan Gray
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?
Brandon Evans
you can make most of those of your own, if you want to..
Gabriel James
I love reinventing the wheel too, user.
Jack Morgan
go circlejerk somewhere else, I explained myself, if you dont like my answer then too bad
Asher Lewis
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?
Henry Sullivan
your waifu is a whore and you don't have an argument
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.
Isaiah Jackson
>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
Cameron Evans
>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.
Joshua Gutierrez
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.
Jackson Brooks
>thinking automatic memory management means garbage collector Again, outing yourself as a brainlet.
Jace Foster
A cute whore and I love her!
Carter Sanchez
>when you're first in solving programming challenges, but last in everything else Haskell, quite useless.
Nolan Rogers
If C is so shit, what do you suggest as an alternative? >inb4 rust
Liam Jones
>C is from stone age and the people who still preach it is like overgrown toddlers that can't learn advanced thing
>C doesn't have delegates Do you not realize that delegates are idiot-proofed function pointers? Back to codecademy for you
Connor Hernandez
>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.
Caleb Young
You don't need reference counting. Just stop using shared pointers.
Kayden Gray
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
>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?
Hunter Reed
yes, but that image is the average C++ programmer and I'm not sure why you posted it
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.
Jeremiah Harris
You mean a mutex? Yet another way to know you don't actually work in the industry or know anything about systems programming.
Jackson Walker
He's clearly compiling C code though
Asher Baker
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.
Nathan Miller
>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.