It is always "worth it" to understand the machine you are manipulating, and no matter what you think about the C virtuel machine, the very real machine in front of me has been shaped by its relationship to C.
> It is always "worth it" to understand the machine you are manipulating
Why is it always worth it? If I want to be a product/creative developer how does learning C specifically help me?
It's like knowing how your car works will make you a better driver. You'll be able to get more out of the car, it will last longer, and when it breaks you'll know if you can't move another inch or you'll know how to nurse it home.
I'm not sure what you mean by this. I know what pointers are and I have not written C before. What understanding will C specifically give me which will help me understand reference types better?
> It'll also give you a good feel for what kinds of operations are costly and what kinds are not
Does this matter though? For most applications you don't need to understand what kind of operations are costly.
I am unusually curious so I'll probably learn about Assembly and low level operations out of curiosity at some point, but it's easy to imagine that I may not work on something where this would be useful knowledge or I would use this knowledge so rarely that the opportunity cost is not worth it.
For the vast majority of developers the opportunity cost for learning C seems quite high.
I am going answer you with some questions!
What is a product for you?
Are a dishwater, a car, a keyboard, a smart LED lightbulb some kind of product a human can build? A product with some sort of microcontroller?
How many products like that there are in your room, house and office right now?
What about in the whole world for the past 20 years?
In all of those products there is probably C running!
This is what I mean by a product developer: https://blog.pragmaticengineer.com/the-product-minded-engine...
I'm sure that type of developer exists for the kinds of products you are talking about, deep tech products, etc but that seems a lot less common.
also c is fun!
I would argue that assembly language and hence C has been shaped that way it has because of the underlying structures of the processor and the way binary numbers are manipulated and stored. C and for that matter assembly, becomes quite trivial if you know enough to make your own simple CPU with decoder, instruction set, memory, ALU, FPU, etc.
Verilog is of course C-like (much as VHDL is Ada-like.)
Do you learn how to fly when you book a flight? Do you learn how to build cars when you get your driving license? Do you learn how water is cleaned when you drink? There is infinite regress.
In the end it is about trust and abstractions. Most algorithms have nothing to do with C. They are implemented in C.
C is a great language, but as someone said here, there is only so much time.
You don't need to know how to heel-toe to drive to the market, but pretending that it's not a useful skill to master driving is ridiculous.
Are you driving to the market, or are you a serious professional?
And how many people who can't even be bothered to learn C will dive even deeper into assembly?
And yes, I would think anyone who books flights/drives/drinks water for a living would be well served by learning something of the tools of their trade.