<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Thanks, Joe and Ulf for those comments. Yes, I was missing that part
    in expressing my point. In my post, there were just two simple
    points I wanted to pass further:<br>
    1. one cannot compare a single thread application written in C with
    multithread application in Erlang (if you do want to compare, the
    comparison should go from multithread Erlang application to
    multithread C application);<br>
    2. as Joe simplified and I was also mentioning that, one doesn't
    need to reinvent Erlang/OTP when you have it already.<br>
    <br>
    Joe, I met cases when those 5% meant a lot (especially in the long
    time consuming physics simulations). In those cases, I would still
    prefer C to Erlang. But, as I said, each language has its own beauty
    and you need to look at it from the correct angle to make the best
    use of it. I would still write a game AI in C and not in Erlang or
    JavaScript (where there is an attempt based on jQuery). Maybe it's
    about me, but I still consider C as being more suitable for that
    task. On the other hand, as I said it before, I wouldn't start
    writing a network application in C when Erlang provides such simple
    ways to do it. But these are just examples and there is much more in
    each of them. So, it's a matter of what you need and where each of
    the languages shows more beauty in approaching the problem. I
    wouldn't just discard C yet, but I wouldn't deny the productivity of
    Erlang. It's the same case with all the languages: they came as a
    need to cover different sectors (and I can give a lot of examples,
    but you already know them).<br>
    <br>
    Cheers,<br>
    CGS<br>
    <br>
    <br>
    <br>
    <br>
    On 10/18/2011 12:26 PM, Ulf Wiger wrote:
    <blockquote
      cite="mid:2D74FD07-C2A5-491C-A102-1690AE10D4F2@erlang-solutions.com"
      type="cite"><br>
      <div>
        <div>On 18 Oct 2011, at 12:20, Joe Armstrong wrote:</div>
        <br class="Apple-interchange-newline">
        <blockquote type="cite">
          <div>On Tue, Oct 18, 2011 at 11:53 AM, Ulf Wiger<br>
            <<a moz-do-not-send="true"
              href="mailto:ulf.wiger@erlang-solutions.com">ulf.wiger@erlang-solutions.com</a>>
            wrote:<br>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">On 18 Oct 2011, at 11:47, Joe
              Armstrong wrote:<br>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">Mutithreaded C implies some kind of
              data exchange between<br>
            </blockquote>
            <blockquote type="cite">different C threads - now there are
              many ways to do this - the<br>
            </blockquote>
            <blockquote type="cite">cleanest alternative<br>
            </blockquote>
            <blockquote type="cite">is by copying message passing. The
              dirtiest - is by shared memory and<br>
            </blockquote>
            <blockquote type="cite">mutexes.<br>
            </blockquote>
            <blockquote type="cite"><br>
            </blockquote>
            <blockquote type="cite">I beg to differ. The dirtiest way is
              by shared memory *without* mutexes.<br>
            </blockquote>
            <br>
            You mean ... I didn't know that was possible - I though
            emacs detected<br>
            this and you were instantly<br>
            fired and your house set on fire, and your bones melted down
            for glue<br>
            and so on …</div>
        </blockquote>
        <br>
      </div>
      <div>Like I said… dirty.</div>
      <div><br>
      </div>
      <div>I recall an admonition from a seminar on programming for
        multicore:</div>
      <div><br>
      </div>
      <div>"You cannot use priorities for mutual exclusion!"</div>
      <div><br>
      </div>
      <div>Presumably, this technique is commonly used, since it was
        deemed necessary to point out especially that this is not safe
        on a multicore machine.</div>
      <div><br>
      </div>
      <div><a moz-do-not-send="true"
href="http://www.chibios.org/dokuwiki/doku.php?id=chibios:guides:mutual_exclusion_guide#priority_boost">http://www.chibios.org/dokuwiki/doku.php?id=chibios:guides:mutual_exclusion_guide#priority_boost</a></div>
      <div><br>
      </div>
      <div>BR,</div>
      <div>Ulf</div>
      <br>
      <div>
        <div>Ulf Wiger, CTO, Erlang Solutions, Ltd.</div>
        <div><a moz-do-not-send="true"
            href="http://erlang-solutions.com">http://erlang-solutions.com</a></div>
        <div><br>
        </div>
        <br class="Apple-interchange-newline">
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
erlang-questions mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-questions@erlang.org">erlang-questions@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-questions">http://erlang.org/mailman/listinfo/erlang-questions</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>