Principles for C programming
>>Avoid magic. Do not use macros<p>What a put off!!!<p>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).<p>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.<p>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.<p>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.<p>[0]<a href="https://github.com/torvalds/linux/blob/master/include/linux/list.h" rel="nofollow">https://github.com/torvalds/linux/blob/master/include/linux/...</a>