If you are programming in C in the 21st century then you better know what you are doing. And this whole advice is for dilettantes (no offense).
C is no longer a choice language to demonstrate high level programming principles (not that you can't do it but it's not for the lazy), there's a host of other languages that do that better. But if you are interested to reach close to the machine (eg: you program needs a direct view of memory) then C is 'the' choice even today.
Look at the kernel list.h [0], it's a beautiful piece of code, and how concisely it uses macros. So the real advice to those starting out in C is to be bold and get immersed in all the things that people say you should not do and then let simplicity emerge.
In other words, 'simplicity' of the novice and of the experienced share the same word but are two different concepts from two different points of view.
What a put off!!!
If you are programming in C in the 21st century then you better know what you are doing. And this whole advice is for dilettantes (no offense).
C is no longer a choice language to demonstrate high level programming principles (not that you can't do it but it's not for the lazy), there's a host of other languages that do that better. But if you are interested to reach close to the machine (eg: you program needs a direct view of memory) then C is 'the' choice even today.
Look at the kernel list.h [0], it's a beautiful piece of code, and how concisely it uses macros. So the real advice to those starting out in C is to be bold and get immersed in all the things that people say you should not do and then let simplicity emerge.
In other words, 'simplicity' of the novice and of the experienced share the same word but are two different concepts from two different points of view.
[0]https://github.com/torvalds/linux/blob/master/include/linux/...