Is C really that important to learn?
Posted by andr3wsmemez69@reddit | learnprogramming | View on Reddit | 142 comments
I started a college web design & video game design class a few weeks ago, so far we've been doing HTML, CSS, and generally how the internet works, we've been also doing C.
HTML and CSS? I can handle willy nilly, I even find them fun to use. All the internet stuff? I've already learned all we've done like the back of my hand. C though? I HATE C. I cant wrap my head around it, it feels exhausting to use it and try to comprehend it, my teacher keeps telling us that we have no future as programmers without C and its honestly freaking me out. I mostly enrolled this class for the video game design aspect, but I also found I really enjoy some of the web design stuff and if I dont end up having a future in video games I wanna pursue web design.
If i really do need C, im gonna lock in and try and catch up with everyone. I dont even have linux, i use a jslinux
Difficult-Total-9670@reddit
Hey, so i have the same problem its just that idk where to start learning it do yall have some ressources where i could really improve on c PLS HELP ME IM LOST
andr3wsmemez69@reddit (OP)
C for dummies was a huge help for me to start, it explains the basics from the beginning in easy to understand terms and with some humor thrown in there. Its a great read if youre trying to self teach
justaddlava@reddit
C is tiny; you can learn it in a day. It is not important for video game design or web design. It is important if you want to be a good programmer.
andr3wsmemez69@reddit (OP)
Its been about a month since i posted this, i finally took the plunge, downloaded a pdf of "C for dummies" and now I can safely say that my teacher did a shit job cause why did i think it was this hard
heir-to-gragflame@reddit
if you go through CS50 from harward that teaches from zero to python and then the rest of the lectures on C. IMO that's a great focused program
vixfew@reddit
It's not that C is important because it's C, more like, C has few abstractions. You learn how computers actually work. Depending on your future job field, it might not end up being that useful.
For web design, that's commonly split into actual design (figma), and making it work (html/css/js). It's unlikely you'll need the knowledge of how i.e. dynamic memory allocations need to be handled if you do design/frontend.
I'm not very familiar with gamedev
balefrost@reddit
Yes and no. If you really want to learn how processors work, you'd be better off going all the way to assembly. C compilers do a lot of heavy lifting and present an abstract machine that doesn't quite match the real machine.
(Even assembly is a step removed from what's actually happening, what with things like hardware-based out-of-order and speculative execution, but at least assembly represents the lowest level that you can directly influence.)
But C will give you a lower-level view than most languages do, especially compared to garbage collected languages or even more sophisticated systems languages like C++.
geon@reddit
You will learn how A computer works. Specifically a 1965 PDP-7. Because that’s what Dennis Ritchie worked on when he designed the language.
taker223@reddit
I thought it was PDP-11. That one from movie "Swordfish"
balefrost@reddit
Even then the surface area of the PDP-7 doesn't quite match the surface area of the C programming language. For example, it looks like the PDP-7 processor has an overflow status bit (called Link for some reason). You can use the overflow bit to do things like add multi-word integers even without hardware support.
Not all processors have an overflow bit, but even for those that do, it's not exposed in the C programming language.
So by learning C, you'll learn about an abstract machine that's sort of like a PDP-7.
geon@reddit
Absolutely. It’s not an assembly language.
No_Dot_4711@reddit
>It's unlikely you'll need the knowledge of how i.e. dynamic memory allocations need to be handled
though even then it'll help you reason a lot more about garbage collector performance problems and why object pooling works, especially when it comes to lazy lists, which are close to everywhere in UI
Astrokiwi@reddit
Honestly spending a few weeks on Assembly is great as well, so you understand registers and caching, and basic stuff like why division is slower than addition.
taker223@reddit
aha, and why when you divide or multiply to 2^(n) you should use shr or shl instead of div/mul
Photon-redshift-650@reddit
Why not go assembly then? Or better yet, machine language! Grab out the punch cards boys, time to do some boolean algebra!
FlowerDisastrous4819@reddit
"better programmer" coding in Python? Python is html compared to C / C++. By my standards you're not a programmer at all.
Photon-redshift-650@reddit
Idc
Python is best for data analysis and can get c-like performance when optimized while also being easier to write simulations in.
All physics/math related unies in the netherlands are switching to it, for a reason. These are all unies that rank in the top 300 worldwide.
I am sure a whole bunch of professors know better than you.
strange_username58@reddit
Python absolutely can't get c like performance. Python can use c libraries.
Photon-redshift-650@reddit
For computational physics stuff it can.
You throw out pythons jit compiler, use llvm’s one instead, avoid pitfalls like for loops in python and use the iterate function from numpy instead.
You’re basically calling mostly c-libraries plus it gets compiled to machine code :).
Quick example i drummed up with AI:
1️⃣ Parallel C Version with OpenMP
Here’s how you could modify the previous C program:
include
include
include
int main() { const long N = 10000000; const int T = 10; const double dt = 0.01; const double g = -9.81;
}
Compile with:
gcc -O3 -fopenmp -march=native particle_sim.c -o particle_sim
⸻
2️⃣ Comparison to Python + Numba
Version Notes Expected Timing (10M particles, 10 steps) C (gcc -O3, single-thread) Serial ~1.0 s C + OpenMP Parallelized ~0.2–0.4 s (8–16 cores) Python + Numba (parallel=True) Multi-threaded ~0.25–0.5 s
Observations: 1. Both C + OpenMP and Numba parallel can fully utilize multiple cores. 2. Numba parallel loops (prange) are very similar to OpenMP in effect: • The inner loop is distributed across threads. • Automatic thread management is done by Numba. 3. Performance of Python + Numba can actually match parallel C for simple loops. 4. Slight differences may occur due to: • Thread scheduling • Memory alignment / false sharing • CPU vectorization efficiency
⸻
✅ Key Takeaways • For single-threaded, C is faster than Python + Numba (~20–50% difference). • For multi-threaded, Python + Numba can be almost as fast as parallel C for large array computations. • For massively parallel tasks (millions of particles), GPU acceleration (CuPy, Numba CUDA) can outperform even parallel C on CPU.
⸻
If you want, I can make a benchmark Python script that runs: 1. Python + Numba (parallel) 2. Python + GPU (CuPy) 3. C + OpenMP (via subprocess)
and prints all timings side by side. This would give a full realistic comparison.
Do you want me to do that?
strange_username58@reddit
Your using c libraries
Soft_Enthusiasm_166@reddit
c-like performance comes from compiled c/c++ libraries like numpy no?
Photon-redshift-650@reddit
That and numba/cython. Using iterate function instead of for loops and that kind of stuff.
I am not dunking on c/c++ its important for some people to be proficient at it. All i am saying is that for me it was time wasted. Its also the reason why a year later they changed it to a python programming course in my uni.
So far i have not had to use my boolean algebra course or my c/c++/ASM knowledge for anything programming related. I read up on ASM for funsies.
So like i said in my above comment; just use the language most used in your field. If you’re ever running into performance issues where memory is a thing then just learn it then.
alphapussycat@reddit
Imo it's good to learn some assembly to get a better idea of what's happening. Machine code won't give you anything further.
Photon-redshift-650@reddit
I found my boolean algebra course actually quite enlightening. You basicly know how computers are build up and how they work, how a computer does additions, how we transfer from real world to machine language.
devloper27@reddit
Its terrible to look at with all its inner loops, ifs and null checks..but that could be a matter of personal style maybe.
taker223@reddit
> though? I HATE C. I cant wrap my head around it, it feels exhausting to use it and try to comprehend it, my teacher keeps telling us that we have no future as programmers without C and its honestly freaking me out.
Well, this is a college and your teacher gotta earn his pay.
IMHO Pure C is high-bar nowadays. You should have started with Pascal (not Object) or Python maybe for something comprehensive.
> I dont even have linux, i use a jslinux
Why TheF*ck you make things even more complicated?
Ashamed_Warning2751@reddit
C is very relevant for embedded and real time programming. Auto pilot and self driving cars use C, for example.
Comprehensive_Mud803@reddit
Yes, you will need C.
At least if you want to work in video games, there’s no way around it at some point.
OhFrancy_@reddit
I'd say you can go with C++ for videogames and never learn C, but it doesn't hurt to do so.
eambertide@reddit
Isn’t most game dev C++ C with Classes?
Alikont@reddit
Depends on how old your engine is.
Ormek_II@reddit
To HTML and CSS are not programming. The only Part that is seems to be C. So, dig in.
Learning typescript or any other imperative programming language will get you on your way as well, but your teacher chose C.
strange_username58@reddit
If you want to do video games you should learn c.
johns10davenport@reddit
C is a good learning tool. If you learn c well, you’ll FUCKING CRUSH python and all the other easy languages
Fractured_Reality_98@reddit
Many years ago, a college prof told the class to think of the C programming language as high level assembler. I found pointers to be the most challenging to understand. What you want to avoid is getting too into the weeds with constructs involving pointers. Keep things basic and understandable.
LivingAd3619@reddit
"my teacher keeps telling us that we have no future as programmers without C"
Generally speaking this is total bullshit.
I game dev? Might have some truth to it, tho I think c++ is bigger in that scene.
Buuuuuut, pushing through and learning it will be a major boon for you as c forces you to think lowlevel.
singaporestiialtele@reddit
hell neah bro just run asaembly thats how we suppose to code not those copilots or pre built functions
LivingAd3619@reddit
sarcasm, I guess. Are you saying that understanding how lowlevel computing works is pointless bc of couple new tools and existing libraries?
If so, LOL
kodaxmax@reddit
Well it is for 99% of web and game devs. Game engines and modern languages abstract most of that away.
LivingAd3619@reddit
GAME DEVs do not find value about knowing low level computing?
:D
Well, that is one of the opinions of all time. Tells me everything I need to know about your expertise and as so, about the value of your take.
kodaxmax@reddit
I get where you’re coming from. understanding how computers work at a low level can be an advantage in some edgcases where performance is critical.
But in practice, for most Game and web developers, that depth isn’t a requirement or even worth learning. Engines like Unity, Unreal, and Godot handle memory and performance details, so we can focus on design, gameplay logic, and optimization through profiling tools and common patterns instead of manual resource management.
There’s no need to gatekeep or talk down to people who take a different path, confidence in your perspective should speak for itself.
LivingAd3619@reddit
Believe it or not, I have some experience with couple of game dev engines and their envs.
And even tho it is not strictly needed in everyday work, not knowing what happens when you do this or that under the hood is major weak point in my eyes.
You dont even know what you dont know of that is the case.
And you can keep your life lessons to those who are interested in them.
kodaxmax@reddit
define "some" ive actuall made stuff in unity and godot and published assets for both, as well as creating a mods for a variety of games.
Do you have examples? How can it be both a major weakpoint and not ussually needed?
You can say that about litterally everything. You need to define a line. Do you expect people to learn the itnracies of the OS they are working on? how the physical hardware works? the laws of physics? quarks?
If you can't be civil and constructive, how can you expect me to take you seirously or trust that your motives arn't malicious?
LivingAd3619@reddit
"If you can't be civil and constructive, how can you expect me to take you seirously or trust that your motives arn't malicious?"
I dont expect anything out of you. Outside this little interaction I do not expect to ever see or hear from you again.
"define "some""
Years worth of professional software development experience. I am developing with little fun games with my son (he is aspiring to be game dev) at the moment in godot, and before unity shit themselves, with unity.
"How can it be both a major weakpoint and not ussually needed?"
I can give you stupid metaphor. If you mainly hunt birds with shotgun at closer range, do you think it is useless to be able to shoot hundreds of meters with rifle? It is not strictly needed.
If you say yes, then we just have very very different worldviews. I believe in bettering oneself in multiple aspects that somehow "touch" the main subject. I do not like to confine myself or restrict myself in any way. I dont know if that makes sense, english is my third (natural) lang.
"You can say that about litterally everything."
That is excatly why you never stop learning. No, i dont need to draw lines.
"Do you expect people to learn the itnracies of the OS they are working on?"
Why not? You never know what ideas you might get when you know something on a deeper level.
kodaxmax@reddit
I do. if your intent is to hunt birds with a shotgun, than a rifle is not the tool for the job, a shotgun is. It's important to understand what the best tool is for the job your doing. A physics degree might help you understand the greater univers, but it wont help you fix cars, any more than knowing c will help you build microgames in godot.
Thats totally different argument. You were insiting C is essential or atleast imporatn for all developers, especially game devs. This quote however is arguing for C as an academic hobby or self improvment. Building software and learning for the sake of elarning are two very different goals.
Because you have limited time, resources and passion. You can't learn everything, you have to pick what will ebnefit your most or interest you most. You cain't maintain 50 different projects in 20 different languages/environments and most people arn't interested in every part of devleopment.
OP is interested in agme dev and web design. Telling him to learn C for self improvement is arrogant and unhelpful. Learning any language is just as much a self improvment activitty and theres 6 or so more relevant languages to learn before C is worth considering.
LivingAd3619@reddit
"You were insiting C is essential or atleast imporatn for all developers,"
No. Nowhere ever never have I said anything of the sort. I do not care about c-lang at all.
"You can't learn everything"
No, but I CAN learn my stack very very well, from the absolute basics (in this situ the low level workings of computer) to the highest level of abstraction.
This is waste of time, conversing with you.
Have a good one.
kodaxmax@reddit
never? nothing of the sort... right.
But it doesn't sound like it is part of your stack. you described making small game in godot and unity. Neither is it relevant to OP. You also said you were learning it just for the sake of elarning and self improvement. This is the third different reason youve given.
only because you refuse to honestly and constructively engage or question your beliefs and motives.
LivingAd3619@reddit
"never? nothing of the sort... right."
You prolly can use your bean between your ears and figure out that as OP is learning C, the point I made is not the c itself, but the low level understanding. I hope that is not too high level concept for you.
"But it doesn't sound like it is part of your stack."
Tf... It is part of everybodys stack who work on computers. It is always there, on the bottom. Our whole effing industry sits on top of those concepts.
kodaxmax@reddit
99% of web and game devs will never touch it outside of unviersity. You might as well insist everyone become a geoligist because everything technically sits on the ground.
No, youve changed your position in every other comment, denied literal copy pasted quotes and insulted me everytime you realized you were wrong, rather than address anything i actually said.
LivingAd3619@reddit
My stance is the exact same as in the first comment I made under this post. And my stance was and WILL be: everybody who works with code could use the knowledge how they work under the hood. On the low level. The concepts. No matter the focus whether game dev, web dev, systems designer, database engineer, whatever.
"You might as well insist everyone become a geoligist"
No, I insist everybody could use the info how the ground became to be as it is now. Not expert, but have some general knowledge. You refuse that.
Now, this got boring. I wanted to see if you still had anything worthwhile to say as you have some intellect arguably but that apparently ran out.
kodaxmax@reddit
C++ and C# are by far the most popular. with godots GDscript, python and java trailing behind. The only big games i can think of that used C is the original ID software shooters from the 90s
Soft-Butterfly7532@reddit
That depends entirely on what they mean by "no future". That doesn't necessarily mean "no job".
LivingAd3619@reddit
"You have no future in programming, but you can get a job in it"
?
Lone_Snek@reddit
Future = development and growth. Job = doing pretty much the same shit 9 to 5.
LivingAd3619@reddit
But if you have a job in programming, you do have a future in it.
Future is not "development and growth", future literally means "the times to come".
america-inc@reddit
Yes, it looks like most games are written in C, C++, C#
Hang in there though, you'll get it!
HashDefTrueFalse@reddit
If you just want to work in web, you don't really need to know anything about the C language itself (unless your org uses it). If you want to work on other types of software (e.g. desktop/server/systems/firmware/drivers/performance software/graphics/signal processing etc.) then you might need C.
Whether or not you need to know the computer systems fundamentals that working in a language like C almost forces you to learn is (in my opinion) less up for debate. All the best engineers I've worked with over the decades have had solid fundamentals, and all the worthless ones have not.
So I'd say that you don't need to worry too much about the C languages specifically, but you would probably benefit a lot from using it to become familiar with how your computer works and how hosted software works with the system to get resources and do things. It will leave you with a deeper understanding and appreciation for how (not) and what (not) to do and when (not) to do it etc. You will consider things that people who have only ever worked in more abstracted environments won't, and that can make a big difference.
nooneinparticular246@reddit
These days Web = React = TypeScript. So learning the basics of a systems programming language like C will be helpful given that web programming also involves a lot of data structures, control flows, etc.
HashDefTrueFalse@reddit
Sadly true...
flumphit@reddit
You only need to learn C if you want to know how computers work, or want your programs to be fast. (Only like 75% serious. 😁 )
rvevau@reddit
knowing C gives you an understanding of how search and sorting functions work "from the inside" + working with memory and pointers (the best C feature). also C makes it easy to learn any other language. but i think it worth only if u into system programming or cybersecurity
doormat_girl477@reddit
Yes. All of my job offers I've ever gotten have been thanks to my C knowledge and knowledge of low level topics it forces you to learn. Last time I had to switch jobs, i ended up holding 3 job offers after only 1 month of applying and interviewing. Trust me C is king.
HobbesArchive@reddit
Short answer "Yes".
When I sleep at night I dream in C.
Head-End-5909@reddit
Learning C, C++ is fundamental
Philosophomorics@reddit
I wasn't in the class, so I can't say for certain, but I would assume that the teacher saying you need c really means you need the background understanding of what the computer is doing and not the language c itself. You can learn to make games without c. Using JavaScript you can do browser games, c++ and c# are common for PC apps (unreal and unity use c++and c# respectively) but there are also other options: unreal has blueprinting which is visual flowchart-esque programming, and godot has its own language. The big reason I would say to try to get through c and learn what they are teaching though is because computer science and object oriented programming (oop) are important in many industries, including making games. C and c++ are commonly used to teach compsci, like data structures, logic, memory management, as well as oop. Once you have an idea of how those things work and are done with the class, you can easily pick a different language like c# or Java to use instead.
Dic3Goblin@reddit
You don't have to just learn C. You have a few language options if you want to get into game dev.
You have Rust, C++, C#, Lua, and I think a few others.
If you want an easy in with game dev, learn GDscript and use Godot. It's similar to Python, but you can define variables with types.
The thing with Game dev you'll want to know is how to get preformance out of your applications, and that will help with your web development because it will make it so you notice non-preformant programming practices better, and you will have a better understanding of the ramifications of the choices you make, and can better weigh the pros and cons of programming decisions.
lukkasz323@reddit
No, C is just a good way to learn things that are important to learn.
hobbyoftakingphoto@reddit
It's like learning grammer before writing a novel.
Severed-Dude@reddit
So… I’ve been programming for a little over a decade and honestly, it’s all about what career field you’ll be going into. C and C++ are what’s basically used “under the hood” or the foundation for many other tools and applications we use today. The C language is arguably the most difficult to learn because you have to manage memory. BUT that’s also the nice thing if you’re trying to optimize an application you’re working on. Meaning, if you program in C, you get to not only build an application, but make it as performant as you want. Other languages, like JavaScript, allow you to build cool stuff for the web (and even games with unity) but don’t allow you to manage memory, it just does it for you.
So for game dev, C++ which takes care of most memory allocation for you, is the backbone to most game engines. It’s more intuitive than C and it was built as basically a clone of C but with great features, one of them is not having to worry about memory allocation nearly as much. Other languages which you’ll probably touch along the way is C# which allows you to write scripts in programs like unity. You can create entire games with it.
So do you need to know C to be a game dev? No. Not at all. But it can help you to know the foundation of systems and languages like C to better understand the big picture of what it is you’re getting yourself into.
Dazzling-Papaya551@reddit
Your probably aren't learning, but instead c++ or c sharp
Tall-Introduction414@reddit
I think it is useful to look at what programs are still written in C. The entire back-end of your web stack, from the proxies to the servers to your JavaScript engine, to the entire Linux kernel including its networking stack, process management, etc, are probably written in C and/or C++.
In the 80s, 90s and 00s, C was a lingua franca among programmers. It was used as a common language for examples and discussion, a bit like Fortran in the 60s and maybe (?) JavaScript today.
As far as games go, when video games began transitioning from Assembly to higher level languages, C was usually the higher level language. Marble Madness and Doom come to mind. Many 90s games. However, I think in recent decades C++ has pretty much taken over as the main language?
C++ interfaces with C and is mostly a superset. I'm no C++ expert, but I suspect that interacting with C code is a normal and expected skill from a C++ developer on a large project with low-level dependencies.
the_mvp_engineer@reddit
Saying you hate something always makes it worse
The-Oldest-Dream1@reddit
If you've never worked with languages without garbage collectors then yes. Though you don't exactly need C to learn it
SmokyMetal060@reddit
Like a few other people have said, C itself is not that important- I’d wager many younger SWEs (myself included) have never written any C outside of a classroom- but the concepts that learning C forces you to get comfortable with are important in your journey as a programmer/engineer.
FlowerDisastrous4819@reddit
Not important if you want to be a script kiddie. I could write robot software in python just by understanding beginner c and c++.
substance90@reddit
No programming language is important to learn per se. It’s all about best practices and design patterns. Language mechanics and abstractions aren’t really that relevant.
ForlornMemory@reddit
Well, HTML and CSS aren't exactly programming. It's more of way to depict stuff. C, on the other hand, is you telling computer what and how to do. Well, any programming language is like that. To be honest, C itself is quite simple. There isn't much you need to learn. The hardest part is figuring out the algorithms. Which is true for ALL programming languages, not just C. So, it's not strictly necessary to learn C, but the problem is that it's not C itself you have a problems with.
If you can't work with few rules C strictly emposes, you might want to try Python and make some simple apps. You can also try Pico8, if you're interested in game development and want to learn how things actually work on a language that's simpler than C. Be warned though, the algorithm part is present in all of them.
lohkey@reddit
Web development you don't need C. You need the basics of how C works. If you went into something like firmware development, you need to know C inside and out.
countsachot@reddit
Many language syntaxes are derivatives of C at this point. Not to mention you migh learn how processors, memory and interrupts work. Kind of important for everything that isn't a website.
AdDiligent1688@reddit
Your teacher is not saying it a nice way haha. I don't agree with them actually in that you'll have no future without C. That's bs. But what i think they're trying to point out is that C is more-so programming, in the traditional sense, than html / css are. Because if you're able to write C and understand it, then you should be fine writing C++, and if that, then probably Java, and if that then JavaScript or Python or both etc.
TrveLinvxVser@reddit
Any kind of programming that needs to be performant (for example writing a game, an operating system driver, a database engine or a financial trading system) needs the knowledge of manual memory management and algorithm complexity. Programming languages usually used for this purpose are so called "low-level": C, C++ or Rust. In this respect your teacher is correct.
There exist, however, other kinds of programming, where performance-critical code has already been written by others and multiple pieces of software need to be glued together in a non-critical manner. Programming languages usually used for this purpose are so called "high-level": Python, JavaScript, Swift, etc.
You can, of course, have a good programming future with a high-level programming language only, never even touching C/C++, but you will never be able to write low-level software such as a game.
SubstantialListen921@reddit
This is it. You need to understand how the pieces fit together. Even if you don't work at the level of C/C++ all day, you need to understand how modules are handled by the linker, how memory is managed, how instructions are loaded and registers are fetched.
Otherwise the machine will always be a black box to you, and you will be unable to reason at a professional level about how to make it do what you want.
Building-Old@reddit
In games we mostly use cpp, of which c is the foundation. If you don't like C, it is more likely than anything that you're having a hard time understanding logic machines, since html/css are more formatting languages; all C does is get you as close as possible to the logic machine.
No-Present-118@reddit
Why do you think that you cannot wrap your head around it? Pointers? Memory handling?
Joe-Arizona@reddit
If you only know web programming you’ve barely scratched the surface.
You need to learn a systems programming language (C, C++, Java, Rust, Go, Zig) if you’re serious about CS.
throwaway6560192@reddit
The one by Fabrice Bellard?
jqVgawJG@reddit
No
White_C4@reddit
C is just a programming language. Linux is an OS. You don't need one to learn another. You can still write C code on Windows and MacOS as well.
C is a hard language simply because it forces you to learn low level programming. Memory management, OS calls, and weirdly outdated syntax styles. The memory management part is C's biggest strength and weakness since you can have finer control over the layout but at the same time, you're more likely to shoot yourself in the foot with illegal access and leaks.
PoMoAnachro@reddit
You don't need to learn C.
You do need to learn how computers work, and C is probably the most accessible way to learn that.
You know that exhausting mental work you're finding you have to do to learn C? Basically, successful programmers are those who can do that kind of exhausting mental work. Even if they never learn C at all.
HasFiveVowels@reddit
The thing about C is that it’s a fairly small and straight forward language once you learn the data types and how stuff is stored. Definitely a "now that wasn’t so bad" thing because it can be a bit intimidating at first
mr_seeker@reddit
C is the perfect example of « easy to learn, hard to master »
astddf@reddit
Honestly I feel like that’s software dev in general. I started learning python last year and was shocked that I learned the bulk of the syntax in a couple weeks, but it’s a long way off from any complex data analysis.
Solid_Mongoose_3269@reddit
I took C++ and VB6 in college. Havent used them in 20 years since I left.
Depends on the career path you're focusing on
Solid_Mongoose_3269@reddit
I took C++ and VB6 in college. Havent used them in 20 years since I left.
Depends on the career path you're focusing on
Maxlum25@reddit
C is only important if you are going to dedicate yourself to working in an area that uses C. Programming languages are just tools and like any tool, it is good depending on the project in which it will be used.
TheArchist@reddit
c is very useful as a language. considering you also have a game design interest, i highly recommend learning c as a prerequisite, then jumping to c++ when it comes time to practice. you don't necessarily need c/c++ to make games, but the knowledge and memory management skills absolutely transfer so i highly recommend it
now, saying there's no future for programmers as c is a bit... lol if you ask me. web dev still has job listings after all.
rawcane@reddit
I really liked learning C because there's not much to learn in terms of the language but it allows you to implement many programming concepts in a way where you can kind of see what's going on. For ages I struggled with OOP because I felt like I was missing the point or some magic. When I learned about structs with function pointers in c it just made sense because you can kind of split out what's actually happening from the syntactic sugar.
Tall-Introduction414@reddit
I had the same epiphany. I had been playing with C for years, and was learning OO with objective-c and python. One day I realized that a class is basically a struct with some function pointers, and I said, "Why didn't any of these books just explain it that way?"
DrShocker@reddit
In C++ you learn about the "vtable" they use usually. Whether that's the right solution to the problem of course always invites argument, but I wonder if learning about that would make any sense to someone mainly doing C.
cib2018@reddit
Sadly, most “video game design” programs are scams. Programs that start with static Web page building are a red flag as well. What kind of job do expect to get with your degree? Do you expect to design games, build games using an engine, or program a game engine? Have you studied the current state of the game industry? Most people on these programs never get past the QC testing stage, and never earn their tuition back.
JRR_Tokin54@reddit
Many languages today are based on C. You are very unlikely to ever use C in your professional life depending on where you work, but knowing that language will give you a lot of fundamentals that so much else was developed from. Don't go too crazy trying to learn the minutia of C, though.
gdchinacat@reddit
For game dev you will need to learn a programming language. Maybe not C, but something. You will most likely have the same frustrations with that language as with C.
For web design you may not need to know a programming language, but I don't think many pure "design" jobs exist...it looks to me like they all expect you to be able to code in javascript, which again, will make you face the same issues you are having with C.
It sounds like a big part of the problem may be the hurdle of getting over hurdle of questioning whether you really need to learn a programming language. Yes, it is hard. It is also a virtual requirement for any of the directions you say you want to go.
Dive in. It does get easier.
nousernamesleft199@reddit
I learned more about programming by learning C than anything else.
ElectricalRace3260@reddit
If you learned C then you can easily understand java,kotlin, c++,c#, javascript etc..
Turtvaiz@reddit
I don't think C per se is that important to learn but it does teach things that low level languages consider important. Still, it's not the only language that does that.
I would recommend you to either learn a low level language like C or to take a high performance programming course, which probably includes learning a bit of that kind of language
C++ could probably function as a similar learning experience.
YetMoreSpaceDust@reddit
I actually did do professional work with C in the 90's, but nowadays it's not used directly nearly as much.
I think it's still worth learning in the sense that algebra is worth learning. You're never going to factor a quadratic equation on the job, but you do need to know how that's done so that you understand all the stuff that depends on it. If you understand C (and also assembler), you understand how computers actually work and you can infer a lot of what's going on at a glance.
AlSweigart@reddit
It's useful, but you could also go your entire career without it.
I'm always amused by all the people who say you need to learn C because it's "bare metal programming", even though C was the original high-level language and people used to say you really need to learn assembly. (These days, compiler optimizations will almost certainly produce better assembly code than you can.)
Inetro@reddit
Comparitively, learning C is similar to learning mathematics when you're young. You're learning the how to do all of these things the hard way first, so that you can better understand the shortcuts you'll use later. You do long division, you go through each step of multiplication, you break down the formulas and write it all down by hand showing all your steps. Then later on you use a calculator and you know what the formulas you use represent and how you can take shortcuts to get to the same answer.
In C, you handle memory allocation directly, you get a handle on the heap / stack, you use pointers and make arrays, you figure out how variables are associated in memory or by reference and how to pass them around to different classes and functions. All of those things happen in every language, but they're often hidden or handled automatically (for better and worse!). C is just the method of doing this the hard way because its a good foundation for other languages, and its easy to interact with those concepts directly. So when you go to another language and pass variables around and make dynamically sized arrays without having to worry about manually releasing the memory you have a better concept of whats happening behind the scenes.
Fwiw I also didn't like learning C 😅 it was my worst class in college. But the background knowledge of what the computer does behind the scenes has helped me figure out edge case issues in my work in other languages.
singaporestiialtele@reddit
idk man i just hate html and css maybe go full front end since you can work with those nonsense
No_Jacket_9868@reddit
🤣🤣
FastAd543@reddit
Yes.
NuclearScient1st@reddit
I think C# is more important, especially with game design
rdeincognito@reddit
Let's say you're gonna create a business centered in building houses.
You can more or less buy most of the house already done in parts and dedicate yourself to assembling them.
Or you can learn exactly how to build those parts, therefore, being yourself able to build a house from scratch.
Now, the sweet thing, is that once you know how to do it you can buy prefabricated parts and assemble them, but you will always be able to understand how those parts interact, why that part is important because it has to hold the weight of the house, and if you find a trouble your prefabricated parts can't solve, you will be able to solve it.
This is what your professor means.
C in itself is just a good language to learn the core of programming. Having a good base in C will help you when working with other languages and frameworks.
Consistent_Mirror@reddit
You can get far with what you have now, but learning C WILL give you a considerable advantage because you will understand how computers work on a much deeper level than most.
You might not HAVE to do that. You can be a webdev and all that, but should you ever want to he something more or something else then C will basically give you a kickstart to understanding the computer itself and even let you learn a new paradigm while you're at it
oatmealcraving@reddit
Hey, totally get this. C has broken the spirits of many people before you — it’s not you, it’s just hard. It’s like going from using tools (HTML, CSS, JS) to suddenly being asked to build the tools themselves. That mental shift is rough because C makes you think like the computer instead of the human, and that’s not something anyone finds intuitive right away.
But here’s the thing: you don’t have to love C, and you don’t have to become some hardcore systems programmer. Think of C as the “weight training” of programming — you might not enjoy the reps, but it builds strength that makes everything else easier. Once you get through a bit of it, higher-level stuff (like game scripting, shaders, web backend logic) suddenly makes a lot more sense because you’ve seen what’s going on underneath.
And don’t stress about not having Linux or being “behind.” You can practice the basics anywhere — even a web compiler or jslinux is fine. Start with something tiny, like printing your name, doing a number guessing game, or drawing a simple pattern with
printf(). Tiny wins add up and start turning “this makes no sense” into “ohhh, I kind of get this now.”Everyone who’s ever written C has had the I hate this phase. The difference between people who drop out and people who get through it isn’t talent — it’s just who keeps showing up long enough for it to click. You’re already ahead because you’re aware of the struggle instead of pretending it’s fine. Keep going. Future-you, who’s debugging a cool game or building a slick website, will be glad you didn’t bail.
Kaiser_Steve@reddit
If it has some use, it is definitely worth learning, and it does.
ZelphirKalt@reddit
Not in this day and age, no. Unless you want to engage in close to the metal computer programming. But even there it is slowly losing ground to things like Rust.
In my opinion C makes for a bad vehicle for the purpose of learning computer programming. Way too many unnecessary foot guns, that one might not ever have to deal with again in a whole career. Like shitty manual memory management, that is responsible for 70% of vulnerabilities in a huge project like Chromium1. There is no need to put this on top of what beginners already have to learn, when they start out learning how to program a computer.
And don't feel bad for hating C. Many people do, and justifiably so. It's a very annoying language in a way.
One area, where it is still used a lot is in video games. Or its worse cousin C++. Hopefully that will one day have changed. So if you want to go in that direction, you will have to learn that.
Life-Silver-5623@reddit
Understanding C, especially how structs, unions, arrays and pointers work, will vastly improve your understanding of how computers work at a low level. This may or may not be useful to you later on depending on your career and goals.
evpetrovich@reddit
C helped me realize I don’t know programming after a year as a Python junior. That hit me hard to grind
Single_Awareness7995@reddit
I learned by breaking it down to sections, then watching some explain, trying to do what they explained (and usually failing), studying my errors, trying again till success, then repeat with seperate online teacher.
Took me 30hrs of work for 8hrs of lessons but it works, and I understand what why and how by the end
TypeComplex2837@reddit
High level stuff (the stuff that abstracts all that ugly computer science for you) will always evolve quickly. If you never understand whats really happening under the hood you're always at a disadvantage when it comes to.. everything. e.g debugging is infinitely easier if you have a sense of what that fancy syntactic sugar is doing.
onefutui2e@reddit
It definitely forces you to understand the fundamentals because you're working so close to the machine with very little abstraction or conveniences modern languages provide.
I've used C extensively and also for a few hobby projects, even writing my own web server. And there have been times where knowing it has allowed me to better reason about a system's behavior when trying to figure out an issue, or when I read the documentation of certain libraries or frameworks and they get into the nitty gritty details, I understand it a lot more.
My professor used to joke that C is a great language because any bugs in your code are going to be your fault. It's not going to be because you defined a function with a default mutable argument (Python) giving you unexpected state across calls. It's not going to be because you went from Java 7 to Java 8 and now half your code doesn't work anymore (I'm probably making this one up), etc. It might take you months to find it, months to fix it, and in the process you'll likely introduce another but, but it'll all be your fault.
dswpro@reddit
You may encounter the need to manipulate hardware devices in your programming career, and the C language is handy for such things. It is the dominant language for firmware development and used when high speed or small code size are needed as it often supports dropping into assembler for certain optimizations. When a new processor is designed, the first compilers written are generally for the C language. Video games are a great example as their popularity drives new video hardware quite frequently and the card firmware and drivers that provide a uniform interface to operating systems are nearly always written in C. You may never use it for web dev, or business reporting, but C is a tool you should have under your belt.
oatmealcraving@reddit
Chill out about it. Do little experiments with C. There are a wide variety of factors involved in starting with one programming language or another. Advantages, disadvantages.
Mostly I'd advise you to chill out, starting any programming language with no prior experience is difficult. They are all zero tolerance for any mistake at all, myCat is not the same as MyCat. Every symbol has to be exact, and that takes a lot of getting use to, for anyone.
oatmealcraving@reddit
Use chatgpt5 to explain concepts you are failing to understand, you can paste code to gpt and ask what went wrong or ask it to debug.
desrtfx@reddit
Better to learn proper debugging than outsourcing this extremely important skill.
oatmealcraving@reddit
Mainly I meant if a piece of C code doesn't work as expected gpt can give a detailed explanation why.
One or 2 times I've saved time having gpt review quite complicated Java ML code for me to find a bug, found and fixed in a few seconds.
Normally I would debug the code myself, but yeh, you know...
oatmealcraving@reddit
Also there is no SNAP anymore, don't walk out of college.
desrtfx@reddit
For a learner, learning debugging is a vital skill.
kodaxmax@reddit
probably not. But it depends. If you need complete control of threads, resource allocation and stuff like that it might be usefule. Like if your building an engine or operating system. But i honestly wouldn't reccomend learning it unless your career specifically needs it.
For most things, it's kind of like a car emchanic having an engineering degree. It probably does give him an edge in some rare cases and makes you better at understanding why components are designed the way they are, but you certainly don't need one to fix cars.
C isn't used for web dev outside of some very specific cases like high performance media encoders, security/crypto and sometimes game sever tech. none of which is really web dev on 2nd thought. It's pretty rarely used in game dev either.
Your teacher sounds like an arrogant ass that probably hasn't made anything since he finished university himself or just stopped learning in the 90s when ID software was using C for the first FPSs.
The 3 big game engines barley even used C for the engine itself. Most game devs learn C++ or C#. Java and python are fairly popular, but well behind the Cs.
Potential_Copy27@reddit
HTML and CSS is a whole different beast than something like C.
In your case, I'd get into something somewhat similar, but easier - like C#. Once you get comfy with C# and how hardware works, then you can move on to C if you wish.
C# has a similar general syntax for most things and does the memory management for you, and it can be programmed in enough of a "C-way" to perform many of the same tasks. The basic C# data types also work in similar ways to C, including strings being callable as char arrays and more.
C# can also create most of what you can do with C itself, albeit C# has a few more limitations...
The other component is learning about hardware - start off learning binary and hexadecimal counting and conversion as both are important for learning how the processor executes code and for learning how memory works.
C has a lot of usage outside games. Most operating systems are written at least partially in C, and embedded software/firmware for all sorts of hardware is also often made in C.
I learned C# first, and later on some C - I found that many of the concepts could be moved to C, most of my time was learning the different calls (eg. memcpy)) and learning all the pointer and memory management stuff 😊
So tl;dr - get the fundamentals off C# first, then move onto C - walk before you run. As a bonus, you learn a language that can make a pretty good back-end for future web projects.
Leverkaas2516@reddit
To do game programming, you should know C or C++ because so many of the game engines have a C API.
To do web design, you don't need to know C....but that's the same as saying you don't really need to be much of a programmer - you can accomplish a lot even though you don't comprehend a number of very important programming concepts.
If that sounds cruel, it isn't meant to be. It could be that you need time to grasp this stuff (I was programming for years before I was exposed to concepts like pointers and dynamic memory), and yes, it's possible to just concentrate on web design.
Ronin-s_Spirit@reddit
Doing videogames in C is crazy. From what I've heard of C it's too constricted and rigid and you have to either implement or import a bunch of stuff to make your life easier and actually progress somewhere. C holds it's pride in being simple (meaning anything remotely complex has to be made first).
surjeet_6467@reddit
When they say learning C is important, its not like you will not be able to do good in codding without C, but when you use C you get intuition of how things actually work under the hood, how memory is allocated etc. I don't have any idea about game dev but in web design or even in advance web app development you are not gona use C, so don't worry, carry on with what you love
Lotusw0w@reddit
You can just ignore C and be a front-end ejaculator
C is for serious software engineers, those with good fundamentals both low and high level
granadesnhorseshoes@reddit
It's not that C is important, it's that understanding how computers work at a low level is important and C is just the proxy for that.
Don't overcomplicate things in your mind either. C isn't hard, but it can be intensive. "this is going to take forever, there must be a better way and I'm just too stupid..." - NO. It probably IS just gonna take a while and you're doing fine.
"What? So I'm just supposed to write a 1 to this address and the hardware just magically turns on? I must not understand something." - No. It actually IS that stupid and simple.
syklemil@reddit
As a programming language? No, it's no longer as important as it once was, and it's becoming a poorer and poorer abstraction for the actual machines we use. See e.g. David Chisnall's C Is Not a Low-level Language: Your computer is not a fast PDP-11. These days C is still used in some entrenched niches, mainly the Linux kernel and embedded spaces; for general programming it's been succeeded by pretty much any language.
For games it's been succeeded by C++, but there are also games in Java, Javascript, Python and probably more (even Rust). We used to have tons of games written in a dinky lil' language called Flash! It depends on what kind of game you want to make and how resource-intensive it gets.
As a protocol? Yeah, you're gonna see C FFI in lots of places. There's a nice rant about it, Aria Desires' C Isn't A Programming Language Anymore.
All that said, if your coursework is in C, then you definitely need to learn it.
Soft-Butterfly7532@reddit
I would say it is the single most important language any programmer can and should learn, with the exception of maybe assembly.
I don't like the philosophy of learning programming from the top down, because people generally don't go further down once they know some higher level language.
ToThePillory@reddit
C isn't for everyone and the vast majority of programmers will never need it.
Personally I love C, it's a top 3 language for me, but people making out it's some fundamental truth you simply must learn are full of shit.
Your teacher is wrong. Plenty of developers work without ever having used C.
Bear in mind though, you can't really get a job just doing HTML and CSS. You should take a bit of time to look at the jobs available near you, see what employers are asking for, and maybe consider learning some of it.
chaotic_thought@reddit
What other general-purpose programming languages do you know? HTML and CSS do not really count.
I would advise knowing at least one general-purpose language fairly well (e.g. Python) before trying to learn C.
As a reference, the K&R book (The C Programming Language, often seen as "the Bible" of C), often makes reference to programmers having been taught Pascal or perhaps Fortran before having tried to learn C, so I think that was kind of the imagined audience of that book.
Nowadays, the role of Pascal has probably been supplanted by Python (or perhaps Scratch in very young audiences, but I'm not sure how general-purpose Scratch is; also it is probably not really general-purpose strictly speaking because it is not text-based like 99% of languages are).
meowed_at@reddit
the issue with c is that it gives you an advantage of understanding how high level languages work under the hood, which could be useful or gives you confidence in your understanding of programming in general
Dismal_Compote1129@reddit
Just ignore it if you have no reason to use it in the future. My suggestion is to first decide what job position you want to be in, then open a job search in your country and see what languages are mainly used in the current market, pick one or more and understand them from fundamental level. After that move on to learn about the framework and popular tools.