Scalable C – Writing Large-Scale Distributed C
<i>&gt;The more C++ you know the worse you become at working with others. First, because your particular dialects of C++ tend to isolate you.</i><p>So why is using something non-standard and non-universal like &lt;czmq.h&gt; not perceived as a &quot;dialect&quot; of C?[1]  Any non-trivial source codebase beyond <i>&quot;printf(&quot;hello world&quot;)&quot;</i> will be a &quot;dialect&quot; of the programmer(s).  When looking at the C source files of Linux kernel, Redis, and SQLite, etc, the syntax patterns, helper macros, string manipulations, etc do not look the same.<p>Also the author&#x27;s example of,<p><pre><code>  for (i = List.begin (); i != List.end (); ++i) 
    cout &lt;&lt; *i &lt;&lt; &quot; &quot;;
</code></pre>
is not the same semantics as:<p><pre><code>  char *fruit = (char *) zlist_first (list);
  while (fruit) {
      printf (&quot;%s &quot;, fruit);
      fruit = (char *) zlist_next (list);
  }
</code></pre>
The C++ loop is multithread safe.  The C version is not.  For the zlist_next() to work, the &quot;list&quot; data structure needs to maintain mutable state in between subsequent calls.  (Think of how something like strtok() works by mutating the string).<p>[1]possibly because Pieter Hintjens is the programmer &amp; CEO behind ZeroMQ and czmq.h. Therefore, it doesn&#x27;t feel like a dialect to him?