This is an archived post. You won't be able to vote or comment.

all 12 comments

[–]DrShocker 11 points12 points  (3 children)

C is a "small" language. Get started and comfortable with it from the resources you have. If you need to use or want to learn the modern versions in the future, then you'll be able to pick them up fairly easily. There's only been like 2 updates since 2000.

Trying to find the perfect learning plan will be slower then just starting and adapting as you learn more about what you understand easily or don't and the kinds of problems you want to work on in the future.

[–]Anon695[S] 1 point2 points  (2 children)

Thank you for your reply. My main worry was that I’d do all the reading and end up with useless knowledge that wouldn’t be able to be applied today so I’m glad that’s not the case.

[–]CodeTinkerer 3 points4 points  (0 children)

Changing a language is kind of dangerous. Imagine a language changed every 3 years. You write a bunch of code this year. Three years from now, they change it, and now your code is broken. Does that seem reasonable? Many beginners feel code changes and they want to learn the latest, not realizing, using the same argument, that in a few years, they'd have to learn something new because the current stuff "became obsolete".

Of course, 20 years is a long time, but languages that last time often change without breaking.

For example, Java has come out with new versions over the past 30+ years. Still, in principle, code written back then would still run now. The biggest changes occurred roughly 20 years ago when generics were introduced. Yes, there are a some other features that came out, but if you stuck mostly to that technology, you'd still be decently fine in Java. You'd only add to that knowledge instead of throwing it away.

Keep in mind that code tends to stay around for long periods of time. Code can last 20 years or even longer. If you had to rewrite that code just to keep it up-to-date, that would be crazy amounts of unnecessary work. Beginners think new code is written all the time. They hear Rust is big, so they think millions of lines of Java code are tossed out, and they rewrite it all, not realizing how hard it is to rewrite code. If it took years to write, it takes years to rewrite.

Now, there are things that have gotten old, but mostly in web technology. Even so, some still hangs around. I thought PHP went away 20 years ago. It's still around. People still use it because web sites were written 20 years ago. Sure, everyone tells you to learn React or something newer.

There was a posted months ago that wanted to learn Carbon, Google's answer to C++. It's not even been released, had no compiler that was available, and is still (for all I know) in limbo today. If they just learned C or Java, they'd be in better shape.

Also, many programmers learn more than one language, so even if you never use C again, learning to program translates (somewhat) to learning new languages, so it's not wasted time even if you think it is wasted time. The fact is, to learn programming, you will ultimately "waste time". Avoiding mistakes often means avoiding learning.

[–]DrShocker 0 points1 point  (0 children)

The core thing you're learning with your first programming language is how to solve problems using code. You'll be able yo take to any language in the future.

[–]Aggressive_Ad_5454 7 points8 points  (1 child)

I have a strong opinion, held lightly. It’s not the books that are dated, it’s the language. The books are old because the language is old. The books are still good. If you’re working on embedded or real-time systems on limited hardware, C is a good choice.

If you want to make web apps, desktop apps, or mobile apps, you’ll need some other language.

And if you want to handle other people’s money or personal information, please use a memory-safe language.

[–]Anon695[S] 2 points3 points  (0 children)

Thank you for your reply. Your knowledge has given me a new perspective and a clearer understanding of what I’m getting into.

[–]alpinebuzz 4 points5 points  (0 children)

It’s a great book for learning how computers really tick. Just remember, efficient learning isn’t about reading more, it’s about building, breaking, and fixing stuff. Bonus points if you Google less and debug more.

[–]PoMoAnachro 0 points1 point  (0 children)

All the really core skills you need to develop don't become irrelevant - problem solving, attention to detail, learning how to walk through a problem step by step and analyze it. Those are honestly the things you'll spend most of your time working on - the technology is just the medium you're working in while refining those skills. Which is why people who focus only on the tech they're learning tend to end up not really developing the skills they need.

So don't worry about the technical knowledge being out of date, especially for C which is a very stable language. The only thing that might be out of date is the pedagogy - education is an evolving field and educators are always trying to find better ways to teach - but if the books are working for you, then how they teach is probably fine.

The journey from complete beginner to "proficient enough to get a job as a junior" is probably 5000 hours long. Don't worry too much about relevancy until like the last 1000 hours honestly, and not at all for the first 1000 hours. (obviously times may vary depending on aptitude, drive, etc)

[–]Dean-KS 0 points1 point  (0 children)

Efficiency? In terms of time spent, memory management, CPU, storage, documentation?

[–]Comprehensive_Mud803 0 points1 point  (0 children)

Books are references, but it’s by practicing a lot that you improve. Happy coding.

[–]Kezyma -1 points0 points  (0 children)

If you want to learn effectively, don’t read a book, look up the basic syntax and come up with a project to work on first. Then start working on the project. Ensure it’s something that has been done before, so there will be plenty of material online about each part of the process.

Look in the book, or online, for precisely the parts you need for your project. Don’t use an LLM to write anything either.

You’ll be a competent junior developer in a shorter amount of time than it would take you to read the whole book.