Scalable C – Writing Large-Scale Distributed C
<i>>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 <czmq.h> not perceived as a "dialect" of C?[1]  Any non-trivial source codebase beyond <i>"printf("hello world")"</i> will be a "dialect" 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's example of,<p><pre><code>  for (i = List.begin (); i != List.end (); ++i) 
    cout << *i << " ";
</code></pre>
is not the same semantics as:<p><pre><code>  char *fruit = (char *) zlist_first (list);
  while (fruit) {
      printf ("%s ", 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 "list" 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 & CEO behind ZeroMQ and czmq.h. Therefore, it doesn't feel like a dialect to him?