<story><title>On becoming an expert C programmer</title><url>http://www.isthe.com/chongo/tech/comp/c/expert.html</url></story><parent_chain><item><author>informatimago</author><text>Not mentionned, about being an expert C programmer, is knowing the pitfalls of C, (cf. undefined behaviors), and reading and knowing the ANSI C standard.&lt;p&gt;Of course, just knowing the language in and out is not enough, you also have to be a good programmer in general (algorithms, &amp;quot;design patterns&amp;quot;, software architecture, software engineering, etc).&lt;p&gt;But writing C code without undefined behavior, and avoiding its numerous pitfalls is absolutely necessary.</text></item></parent_chain><comment><author>Htsthbjig</author><text>&amp;quot;Not mentionned, about being an expert C programmer, is knowing the pitfalls of C, (cf. undefined behaviors)&amp;quot;&lt;p&gt;I am an expert in C, I had been decades writing on it and other languages, and managing teams of coders. We created a company that used it a lot.&lt;p&gt;I can&amp;#x27;t understand what undefined behaviors C has, because it is the most simple and defined language I do know of. I have lots of experience writing assembler,fortran, Lisp, c++, python, objective C and also use C#, java, javascript and other web languages and functional languages from time to time.&lt;p&gt;c++, java could be extremely undefined because the behavior depends on conventions, committees and implementations. E.g we had to change some code because of different compilers interpretation of the standars.&lt;p&gt;But c? c is basically portable assembler. If you understand how computers work it is extremely reliable bar none. We have ported years of work of dozen programmers in one day. With c++ and &amp;quot;write once, run everywhere marketing&amp;quot; java we spent months.&lt;p&gt;It was also terribly frustrating for the team. Fontforge author had a similar experience writing c++ compilers and  that experience was so traumatic the interface of Fontforge is so ugly as he does not want to use c++ with a ten foot pole.&lt;p&gt;We try to avoid pitfalls more in high level languages because the programmer has the ability to write code without understanding what is really happening in the processor, or even in the program. Recipe programmers population is growing a lot this days.</text></comment>
<story><title>On becoming an expert C programmer</title><url>http://www.isthe.com/chongo/tech/comp/c/expert.html</url></story><parent_chain><item><author>informatimago</author><text>Not mentionned, about being an expert C programmer, is knowing the pitfalls of C, (cf. undefined behaviors), and reading and knowing the ANSI C standard.&lt;p&gt;Of course, just knowing the language in and out is not enough, you also have to be a good programmer in general (algorithms, &amp;quot;design patterns&amp;quot;, software architecture, software engineering, etc).&lt;p&gt;But writing C code without undefined behavior, and avoiding its numerous pitfalls is absolutely necessary.</text></item></parent_chain><comment><author>humanrebar</author><text>&amp;gt; But writing C code without undefined behavior, and avoiding its numerous pitfalls is absolutely necessary.&lt;p&gt;I rarely (as in unicorns) see C code that consistently checks for unsigned integer overflow. Or signed integer overflow for that matter, but that&amp;#x27;s defined behavior.&lt;p&gt;Point being, I also encourage people to avoid undefined behavior, but whether and how one does that has subtleties in practice.</text></comment>