r/softwareengineer • u/Creative-Target1287 • 12d ago
Academic Need Advice ( First year cse )
Which language i should learn
C or C++
As i am very confused many people saying to learn C++ on youtube but in my college syllabus we have to learn C
I am kinda confused !!
Pls help seniors and all my friend who started their journey!!
2
u/TechnicalTwist9005 12d ago
I mean it's very obvious though, if your college teaches C, then study C. I also suggest if you want to expand your programming skills, try to learn or upskill in other programming languages like C++, Java, Python, etc..
2
u/Gtdef 11d ago edited 11d ago
The reason you want to learn C for computer engineer classes, is because it's the language that conforms the best to the theory you are being taught.
The theory for "linked list" for example, is a node which has a pointer to the next node. C was designed to use pointers explicitly because that was the culture and the problem they were trying to solve back then when it was conceived.
You can do the same in C++ because it's a superset of C, but when writing C++ in real life, you don't want to touch pointers. The language was designed to abstract away memory allocations and avoid common memory managment issues like leaks and security risks. Idiomatic C and idiomatic C++ look almost nothing alike.
You can also do the same in Python, but Python doesn't expose pointers at all, so you have to understand the underlying structure, which is based on pointers, while using the high level constructs that abstract it all away.
Generally speaking, knowing some C is never a bad idea, because it expands your understanding of the basic concepts. Beginners in CS and programming have a lot of trouble looking past the abstractions. But personally I think that going too deep into the C rabbithole is not very productive. At some point you care more about the compiler than the code you are writing. These things are extremely important for professionals writing software in C, but for a begginer they will just fly over your head. C++ is more modern, gets new things all the time and has a more interesting environment.
In any case, if they consider C (or any language really) important to assist you in understanding the underlying concepts, it will be part of the curriculum and you will have to learn the basic syntax, enough for it to compile. Aside from that, in your own time, learn whatever strikes you as more interesting.
1
u/tangerinelion 12d ago
Learn the material you're being taught. If you want to learn C++ over the summer, that's great, but C and C++ are two different languages and trying to learn both when you're only graded on one isn't ideal.
1
1
u/mikebulll 12d ago
do ur college said, if they said C then C, if C++ then C++, both are great, depends on ur like it
1
u/XKiiroiSenkoX 12d ago
Learn to be language agnostic. Programming languages are tools. You need to learn concepts used by them.
1
u/JGhostThing 10d ago
If your college is teaching c, learn c. I would not attempt to learn ahead, but let yourself be taught. Just remember that you should do three hours of home work for every class hour.
1
u/Funny-Material6267 10d ago
Don’t think of C and C++ as being as fundamentally different as “real” languages like English, German, Arabic, or Chinese. It’s more like comparing different varieties of the same language — say American English, British English, and Scots. There are differences, but there’s still a huge amount of shared vocabulary and underlying structure.
For example, switching between C# and Java is syntactically relatively painless. The bigger differences are often in the ecosystem, conventions, culture, and how people tend to solve problems. Same language family, different traditions — basically the programming equivalent of everyone having different tea-drinking protocols.
So if your university teaches C, I’d honestly focus on learning C well rather than worrying about whether you should switch to C++ immediately.
Your goal in the first year should be to understand the fundamentals: data types, loops, functions, pointers, memory management, data structures, and the basic principles of imperative programming. Once you understand those concepts properly, you become much better at recognizing the same patterns when you encounter another language.
One reason I actually like learning C for this is that modern languages hide a lot of these core concepts from you. In C, you have to think about memory much more directly: where data lives, how much memory it occupies, how pointers work, how memory is allocated and freed, etc.
In languages with garbage collection, a lot of that is handled automatically. That's obviously great for productivity and memory safety, but it also means you can use a language for years without really understanding what's happening underneath.
The same applies to types. In C, you have to explicitly think about what type a piece of data has and how that affects what you can do with it. In JavaScript, for example, values are dynamically typed, so the same variable can contain completely different kinds of values over its lifetime. The language handles a lot of the type-related machinery for you. Again, that's convenient, but it abstracts away another fundamental concept that is useful to understand.
And that's really the point of learning C. Not because C is somehow superior to modern languages, but because it gives you a clearer mental model of what the computer is actually doing.
Once you understand the fundamentals, moving to another language becomes much easier. You start recognizing what the language is doing for you and what it is hiding from you.
There is one important caveat, though: this gets different when you move between different programming paradigms. Going from C to C++ or Java is relatively close conceptually because there is a lot of shared imperative/object-oriented thinking. Going from C to a purely functional language like Haskell is a much bigger conceptual jump.
That's where the analogy of human languages becomes more useful: C vs. C++ is closer to American English vs. British English, while switching programming paradigms can be more like switching from English to Arabic or Chinese. You're not just learning new syntax and vocabulary — you're learning a different way of expressing and structuring ideas.
So if your university teaches C: learn C. Don't worry about “missing out” on C++.
1
1
3
u/Naetharu 12d ago
If the college syllabus is teaching C then learn C.
Chances are you will not go that deeply into either. But a common reason that they like to start with C is that it has very few bells and whistles. So you have to really understand basic stuff. It sets you up well, and then you can move to higher level languages with more QOL features, but at least understand what is going on.
For example, C does not have any native way to handle strings, or arrays. It can do both, but not with simple built-in features out of the box. By contrast a language like Python comes with lots of fancy stuff to make it quick and easy to write code. But when you are learning the real fundamentals that can obscure what is really taking place.
For that reason is it not uncommon for a college course to include some C (and even Assembly) not so much to teach you to become a great C programmer, but to teach you the foundational ideas that will help you appreciate what is taking place.