Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The classic example that Joel Spolsky uses is on <a href="http://www.joelonsoftware.com/articles/fog0000000319.html" rel="nofollow noreferrer">misuse of strcat and strlen</a>, and spotting "Shlemiel the painter" algorithms in general.</p> <p>It's not that you need C to solve problems that higher-level languages can't solve, it's that knowing C well gives you a perspective on what's going on underneath all those levels of languages that allows you to write better software. Because just such a perspective helps you avoid writing code which is, unknown to you, actually O(n^2), for example.</p> <p><strong>Edit:</strong> Some clarification based on comments.</p> <p>Knowing C is not a prerequisite for such knowledge, there are many ways to acquire the same knowledge.</p> <p>Knowing C is also not a guarantee of these skills. You may be proficient in C and yet still write horrible, grotty, kludgy code in every other language you touch.</p> <p>C is a low-level language, yet it still has modern control structures and functions so you aren't always getting caught up in the fiddly details. It's very difficult to become proficient at C without gaining a mastery of certain fundamentals (such as the details of memory management and pointers), mastery of which often pays rich dividends when working in any language.</p> <p><strong>It's always about the fundamentals.</strong></p> <p>This is true in many pursuits as well as software engineering. It is not secret incantations that make the best programmers the best, rather it is a greater mastery of the fundamentals. Experience has shown that knowledge of C tends to have a higher correlation to mastery of certain of those fundamentals, and that learning C tends to be one of the easier and more common routes to acquiring such knowledge.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload