title: Can knowing C actually hurt the code you write in higher level languages?
body: <p>The question seems settled, beaten to death even. Smart people have said <a href="http://www.joelonsoftware.com/articles/fog0000000319.html" rel="nofollow noreferrer">smart things</a> on the subject. To be a really good programmer, <a href="https://stackoverflow.com/questions/296/should-i-learn-c">you need to know C</a>.</p>
  
  <p>Or do you?</p>
  
  <p>I was enlightened twice this week. <a href="https://serverfault.com/questions/23621/any-benefit-or-detriment-from-removing-a-pagefile-on-an-8gb-ram-machine">The first one</a> made me realize that my assumptions don't go further than my knowledge behind them, and given the complexity of software running on my machine, that's almost non-existent. But what really drove it home was <a href="http://slashdot.org/comments.pl?sid=1650374&amp;cid=32193298" rel="nofollow noreferrer">this Slashdot comment</a>:</p>
  
  <blockquote>The end result is that I notice the many naive ways in which traditional C "bare metal" programmers assume that higher level languages are implemented. They make bad "optimization" decisions in projects they influence, because they have no idea how a compiler works or how different a good runtime system may be from the naive macro-assembler model they understand.</blockquote>
  
  <p>Then it hit me: C is just <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html" rel="nofollow noreferrer">one more abstraction</a>, like all others. Even <a href="http://en.wikipedia.org/wiki/Microarchitecture#Microarchitectural_concepts" rel="nofollow noreferrer">the CPU itself</a> is only an abstraction! I've just never seen it break, because I don't have the tools to measure it.</p>
  
  <p>I'm confused. Has my mind been mutilated beyond recovery, like Dijkstra said about BASIC? Am I living in a constant state of premature optimization? Is there hope for me, now that I realized I know nothing about anything? Is there anything to know, even? And why is it so fascinating, that everything I've written in the last five years might have been fundamentally wrong?</p>
  
  <p>To sum it up: is there any value in knowing more than the API docs tell me?</p>
  
  <p>EDIT: Made CW. Of course this also means now you must post examples of the interpreter/runtime optimizing better than we do :)</p>