Scalable C – Writing Large-Scale Distributed C
>The more C++ you know the worse you become at working with others. First, because your particular dialects of C++ tend to isolate you.So why is using something non-standard and non-universal like  not perceived as a "dialect" of C?[1]  Any non-trivial source codebase beyond "printf("hello world")" 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.Also the author's example of,  for (i = List.begin (); i != List.end (); ++i) 
    cout << *i << " ";

is not the same semantics as:  char *fruit = (char *) zlist_first (list);
  while (fruit) {
      printf ("%s ", fruit);
      fruit = (char *) zlist_next (list);
  }

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).[1]possibly because Pieter Hintjens is the programmer & CEO behind ZeroMQ and czmq.h. Therefore, it doesn't feel like a dialect to him?