Redpill me on why I should learn C

Redpill me on why I should learn C

Other urls found in this thread:

Veeky
en.wikipedia.org/wiki/Veeky
knowyourmeme.com/memes/sites/Veeky
crunchbase.com/organization/Veeky
rationalwiki.org/wiki/Veeky
twitter.com/AnonBabble

you shouldn't. learn C++ instead. there are a ton of interesting libraries for it.

>learn C++
Never seen someone give such terrible advice.

>Never seen someone give such terrible advice.
>animeposter

Humor me, user, why is C++ not a good language to learn?

Considering it teaches you all the fundamentals (including how to handle memory), I don't see any other language that could be better to start programming.

>inb4 Java or some shitty nu-lang

it's really easy and simple

>why is C++ not a good language to learn
it doesn't make anime real desukarane tachibakayo

Most other languages are built upon C, and you will get to understand how software works on a deeper level. You can also do some cool stuff with memory space and learn how to hack.

Sonic isn't anime you fggt

You probably shouldn't unless you're getting into low end embedded. Otherwise just learn C++

This. Also, learn assembly.

The is that way

This.

easiest ones to learn memory management. All other baby you

>>animeposter
That's not anime.

If you want to make good numerical simulation it's one of the best choice : low-level language while not as old as Fortran. Also quite easy to handle syntax.
>inb4 "But geant4 is written in C++"

Veeky Forums is an anime site. Sometimes we discuss things that aren't anime, but that doesn't change the climate.

it's not 2010 anymore, lad

OOP is fucking terrible

Because it's the language that all serious operating systems, drivers, and embedded systems code is written in. It's important to understand low level programming concepts

That being said, unless you're actually working on codebases like that then you should learn C++ as your primary working language, because you can drop down into the C level if you want, but also make use of complex stuff like templates and RAII semantics, which are amazing for making safe and flexible code

Anyone telling you C isn't worth learning is clearly not a software engineer themselves, or at least not a good one. It's absolutely essential

Remember: if you can't implement it in C, you can't implement it at all. You're just letting the language implement it for you. This is always essential to keep in mind.

Veeky Forums.org/
>There are boards dedicated to A VARIETY OF TOPICS, from Japanese animation and culture to videogames, music, and photography.

en.wikipedia.org/wiki/Veeky Forums
>The site quickly became popular, expanded, and now features boards dedicated to A WIDE VARIETY OF TOPICS, from anime/manga to videogames, music, literature, fitness, politics, and sports.

knowyourmeme.com/memes/sites/Veeky Forums
>The site consists of 56 TOPICAL imageboards that are sectioned into SIX MAJOR CATEGORIES: Japanese Culture, Interests, Creative, Adult Content and Miscellaneous and Others.

crunchbase.com/organization/Veeky Forums
>Different boards are dedicated to DIFFERENT TOPICS, from Japanese anime to videogames, music, and photography.

rationalwiki.org/wiki/Veeky Forums
>Veeky Forums hosts dozens of imageboards covering A NUMBER OF TOPICS, ranging from the original anime board (/a/), sports (/sp/) and even DIY (/diy/).

These are one page and a half of google results filtered down to those that define Veeky Forums. NOT A SINGLE FUCKING ONE claims anime is the center topic. Veeky Forums is a science board. Anime is not science. Deal with it.

As it's been said already, C is probably the most efficient way of understanding programming in terms of what the actual machine is doing at every step. Assembly would be even closer to the hardware of course, but makes sacrifices in readability and ease of learning/application for simple tasks.

You will learn very very bad habits with high level languages if you don't have an appreciation for what similar C could would be doing.

OOP is a mess for small projects, but once you start making stuff where the team members each have their own specialty and don't know shit about the next person's tasks, separating states is handy as hell. Also, before you start spewing bullcrap, no, functional programming doesn't do that.

OOP is absolutely 100% essential for any reasonably complex software. Anyone who says otherwise clearly has never worked in the industry and worked on 1mLoC+ codebases where you HAVE to use OOP or you will quickly devolve into spaghetti code

Name a good argument against OOP. Protip: you can't

>c++ numerical algorithm

const extended_float G = ....;
...
auto force_gravity = G * particle[1].mass * particle[2].mass / ( (particle[1].location_vec - particle[2].location_vec)^2 )

>c numerical algorithm

#define GRAVITATIONAL_CONSTANT extended_float_256_from_str(....)
...
extended_float_256 force_gravity = extended_float_256_div(extended_float_256_mult(extended_float_256_mult(GRAVITATIONAL_CONSTANT, particle[1].mass), particle[2].mass), extended_float_256_add( extended_float_256_add(extended_float_256_sqr(extended_float_256_sub(particle[1].location.x, particle[2].location.x)), extended_float_256_sqr(extended_float_256_sub(particle[1].location.y, particle[2].location.y ))), extended_float_256_sqr(extended_float_256_sub(particle[1].location.z, particle[2].location.z ))));

>hurr durr look haw scary that c code is to the normies. u must be a genius hax0r for writing it

>Name a good argument against OOP.
Encapsulation is ill-defined. OOP dismisses accessors and mutators as literally Hitler despite them being absolutely necessary for some things, namely when:
• one of the member variables is inherently part of the interface (e.g. real and imaginary parts of a complex number);
• you're making a container class.

C++ doesn't force you to use OOP like java/c#

>99% of all C++ haters have never actually coded in C++

That sounds like some straw man of a philosophical extremist OOP position as opposed to a good argument against OOP itself.

There is no issue with having GetImaginary() and GetReal() and there is no problem with having mutators when it's well understood that this is a class meant to hold mutable state.

The arguments against accessors and mutators are about misuse of them and turning classes into big piles of GetX, GetY, SetX, SetY, for no good reason

What if you want to rewrite the complex class to have member variables in polar form? Then all your c.real and c.im are nonfunctional. While if they were c.real(), c.im(), they would still work.

This seems true. I hated C++ because I was taught it in 2010, but what I was taught wasn't even C++03 (and it was an awful class in general that covered MFC GUI stuff instead of most C++ topics). I went on to learn C#, Python, and Java on my own but eventually had to use C++ again to teach it. And it turned out a lot of what I liked in other languages existed in C++. Now I love it.

>C++ doesn't force you to use OOP
wut

what codebase doesn't use classes or structs

Whatever else anybody here tells you, make sure your integrated development environment has intellisense

You don't have to make a codebase using them. You'd just be retarded not to. What do you have against structs and classes user? Also their use does not by itself imply OOP

christian apologetics have more finesse than this

>the absolute state of C++ fans

There is no especial reason, you could learn Commodore basic 3.5 instead. There is also a Commodore assembly language as well which will clear this thread of c+v posters.

C has structs too.

C structs aren't classes.

>being a fedora

>>>/reddit/

>You don't have to make a codebase using them. You'd just be retarded not to.
so... C++ forces you to use OOP or you're "retarded." OK.

Explain why you don't want to

>project straw-men
>name calling and insults
>ignore counter arguments

Yep, definitely the Richard Dawkins' school of debating that killed off not just religious discussion but now political, social, and most internet discussions too.

...

Explain how it forces you to user

to avoid coding like a "retard"

Just learn some python, and the time you saved not having to learn some low level crap you can spend on learning something useful, like R

What about the time you lose waiting for it to finish your calculations?

Having strong feelings towards a programming language

>diversity is a strength

This is bait. OOPfags will try to twist ML into OOP. We're doing fine with 20Mloc codebase without any OOP in avionics, respectfully declining your assertion.

As a first programming language to learn, it is god-tier. It will force you to allocate yourself memory and free it yourself. Structs and function pointers will even let you code your own (sort of) OOP.
tl;dr C doesn't spoonfeed you anything plus you can develop gameboy and nes games

The largest codebases are written in c. Wanna explain that faggot?

What about C#?
Honestly I just got into media engineering in uni as a plan B. But I'm starting to gain legit interesting in coding after the first half of this uni year.

You should learn it, so you understand how the computer operates and know how to write truly efficient code.

Once you have that down you can move on to whatever language you like.

starting to gain legit interest*

>C function pointers

Disgusting. Just use C++

Learn Haskell or LISP instead

If you want to learn scientific programming, you should learn C then Python.

>C
No, you should learn C++ if you don't want your code to end up looking like >python
The numerical stuff is awkwardly hacked in. Just use Matlab if you want to write quick and dirty scripts.

totally agree on that. My point was that it was interseting to learn programming in a minimalist, limited environment. For instance, my CS shool was forbidding using the C standard library except a few functions like malloc, free, write, read and sometimes exit. Therefore you had to code EVERYTHING from scratch, I had to code my own printf, memset, calloc, etc...