I think the main practical advantage of learning low-level things, such as assembly language, pointers, and memory management, is that when you write or review high-level code, you can instinctively or subconsciously identify performance problems or other pitfalls.
An average developer might write a simple loop and think: “This code iterates over a set of integers and writes each to the console.”
An expert developer can write the same loop and think: “This code iterates over a set of integers and must put each element to call the ToString method, and ToString must format the string in base 10, trivially, and then the integer in piece the packaging, and the formatted string will soon have the right to garbage collection, because the links will not remain, and the first time you run this method it should be JIT'ed ... ", etc.
9 times out of 10, it does not matter. But this is 1 time out of 10, an expert developer will probably notice a problem with the code that the average developer would never have thought to consider.
C. Dragon 76
source share