Re:Should you learn C to “learn how the computer works”?
by danso on Tuesday October 02, 2018 @02:34PM
(#18124380)
I can’t make a thorough argument, but u/flyinglizard (in a comment adjacent to mine) mentioned what I was thinking: Ruby/Python almost entirely abstracts the concept of pointers, references, and memory. For beginners and intermediates, it’s not a big deal until you get mutable data structures like lists and dicts. When I learned CS, we were taught C/C++ first, and I remember the concept of mutability and object identity being not at all difficult.
Without being able to refer to fundamental structures and concepts, I usually just exclusively teach students non-mutable patterns (e.g. list.sorted vs list.sort), while pushing them to become much proactive at inspecting and debugging.
Re:Should you learn C to “learn how the computer works”?
by pq0ak2nnd on Tuesday October 02, 2018 @02:28PM
(#18124326)
true. it's like interior decorator vs. interior designer
if you're just going to move couches around and put down throw pillows, who cares about a solid foundation of design fundamentals and architectural psychology.
Re:Should you learn C to “learn how the computer works”?
by gowld on Tuesday October 02, 2018 @03:06PM
(#18124691)
It's also like fluid dynamicist vs quantum physicists. If you're just going to move oil around and put down differential equations, who cares about a solid foundation of quantum gravity and chromodynamics.
Re:Should you learn C to “learn how the computer works”?
by mturmon on Tuesday October 02, 2018 @02:49PM
(#18124514)
Yep. In truth, one can almost never win the argument of, "...but do I really need to know this?" But people should be aware that knowing fundamental things provides insight and advantages.
Re:Should you learn C to “learn how the computer works”?
by greenshackle2 on Tuesday October 02, 2018 @06:06PM
(#18126107)
For sure, but there are diminishing returns. My rule of thumb is that understanding two levels of abstraction below whatever you're doing is usually worth it.
Re:Should you learn C to “learn how the computer works”?
by maxxxxx on Tuesday October 02, 2018 @03:20PM
(#18124836)
Compared to people who know only high level languages I have noticed that with my C background I can figure out performance problems better because I have an idea how the higher languages are implemented.
Re:Should you learn C to “learn how the computer works”?
by Karrot_Kream on Tuesday October 02, 2018 @05:08PM
(#18125716)
Because we haven't figured out a large body of non-leaky
or resilient abstractions yet. If a higher level construct was indeed a true superset of lower level functionality, or was robust enough to be applied to a wide variety of situations, then it would be okay. Right now in web software, because we optimize for development velocity so heavily, the tools a smaller product would reach for are fundamentally different from the tools a very high load service would. Until we can come up with a set of robust higher level abstractions that scale well (or better than they currently do) then we'll be stuck where we're at. Thread pools will saturate, GC will stutter, sockets will timeout, and all sorts of stuff that higher level abstractions do not capture well.
(I kept this post vague but can offer concrete examples of you'd like)
If 99% of what that person does is gluing together APIs and software modules, and they can see their memory usages are well within range, why does it matter?