<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="89348" data-post-id="89348">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cdegroot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/120/4644_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cdegroot
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Okies, I was sloppy in my use of words there. It’s a systems language in the sense that it is (apparently) a useful language for building system tooling. Hashicorp, K8s, etcetera, seem to be good examples. It’s low level, doesn’t allow - nor need - a ton of abstractions and generates the sort of tight executables that seem to be important for that sort of stuff. I keep forgetting it actually has some higher level features because all I’ve ever done with it is fix a bug or two in open source projects I used.</p>
<p>Probably shows me the dangers of having opinions on languages I haven’t extensively used. I’ll go back to having opinions on C now <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89348" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-89348" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89348"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="89352" data-post-id="89352">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>It’s a systems language in the sense that it is (apparently) a useful language for building system tooling.</p>
</blockquote>
</aside>
<p>That would be a tooling language then, like bash or python or so.</p>
<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>Hashicorp, K8s, etcetera, seem to be good examples.</p>
</blockquote>
</aside>
<p>Thanks for bringing this up!  Have you seen the horrors that K8s had to do to get Go to work well?  They ended up <em>building</em> a strongly typed system on top of it, making the code look absolutely abhorrant and near unreadable (and slowing it down).</p>
<p>I’ve yet to see any redeeming quality of Go, it’s not faster than C, it’s not more safe than C, and even C has Go-like threading (libmill/libdill) nowadays that also outperforms Go (due to not needing to GC).  Overall I don’t see the point of having such a hard to use, poorly designed language when better things like OCaml (safety, ease-of-use, speed), Python (ease of use, libraries), or Rust (speed, safety, not as easy to use but still easier than, say, haskell, plus no better threading system out currently) exist.</p>
<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>doesn’t allow - nor need - a ton of abstractions</p>
</blockquote>
</aside>
<p>Except those abstractions help make your code readable, and it is not hard to build zero-cost abstractions (like C++ or Rust or most of OCaml), so if it makes your code shorter, easier to read, more maintainable, more reuseable, then why would you ever not want them?!</p>
<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>generates the sort of tight executables that seem to be important for that sort of stuff</p>
</blockquote>
</aside>
<p>In ever test I’ve done so far Go executables are significantly larger than even OCaml’s (which also includes a GC and included pruned runtime), though C/C++/Rust are significantly smaller.</p>
<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>I keep forgetting it actually has some higher level features because all I’ve ever done with it is fix a bug or two in open source projects I used.</p>
</blockquote>
</aside>
<p>What higher level features is that?  It’s barely only <em>now</em> getting a dependency system (where C/C++ has things like Hunter for years now and Rust has had Cargo since near the beginning).  It’s interface system is barely glorified C-like void pointers.  It’s so bad at code that you often even have to generate code externally (woo back to the 1980’s code generators instead of safe and efficient macro systems!).  Really though, I’m not sure what of any feature it has could be considered higher level, even it’s threading is old-style CSP code.</p>
<aside class="quote no-group" data-username="cdegroot" data-post="34" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>Probably shows me the dangers of having opinions on languages I haven’t extensively used. I’ll go back to having opinions on C now <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p>
</blockquote>
</aside>
<p>C generates such wonderfully strong opinions!  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89352" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-89352" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89352"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="89355" data-post-id="89355">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cdegroot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/120/4644_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cdegroot
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="35" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>C generates such wonderfully strong opinions! ^.^</p>
</blockquote>
</aside>
<p>Yup. But at least me having an opinion on C will be based on actual experience.</p>
<p>(love C. I call Rust “C for people who are too easily scared” :P. And that opinion is based on rumours and having read Rust’s language description two years ago)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89355" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-89355" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89355"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="89356" data-post-id="89356">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="NobbZ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/NobbZ/120/27235_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  NobbZ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="35" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>In ever test I’ve done so far Go executables are significantly larger than even OCaml’s (which also includes a GC and included pruned runtime), though C/C++/Rust are significantly smaller.</p>
</blockquote>
</aside>
<p>C and C++ are usually dynamically linked, I’m not sure about rust and OCaml, but Go links everything statically, therefore I’m always cautious with such claims.</p>
<p>Of course, on a user system that runs multiple things that might use the same library it makes a difference, but the companies currently paying my bills do live in a world were that is no difference. Most of the time I get well speced VMs which do only fire up systemd and the tools my team is coding. In this world, were those base images are seldom less than a gigabyte, our customers really do not care if a binary is 3 Megs + deps or 10 Megs without, as long as they can do <code>rpm update</code> (or similar).</p>
<p>This doesn’t mean though that I like Go, but it still pays my bills…</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89356" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-89356" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89356"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="89357" data-post-id="89357">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cdegroot" data-post="36" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>(love C. I call Rust “C for people who are too easily scared” :P. And that opinion is based on rumours and having read Rust’s language description two years ago)</p>
</blockquote>
</aside>
<p>Rust is more like Haskell for C++'ers, it’s about as far away from C as you can get.</p>
<p>(Hmm, this is a good analogy I think actually, need to remember it…)</p>
<aside class="quote no-group" data-username="NobbZ" data-post="37" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nobbz/48/27235_2.png" class="avatar"> NobbZ:</div>
<blockquote>
<p>C and C++ are usually dynamically linked, I’m not sure about rust and OCaml, but Go links everything statically, therefore I’m always cautious with such claims.</p>
</blockquote>
</aside>
<p>For my C/C++ work I’m usually statically linked to everything but system libraries (which you should never ever <em>ever</em> statically link to).  It’s entirely controllable in C/C++/Rust/OCaml and others.  I don’t think dynamic linking is the most common outside of system libraries (which I know Go dynamically links to as well), probably a 50% split in my experience.</p>
<aside class="quote no-group" data-username="NobbZ" data-post="37" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nobbz/48/27235_2.png" class="avatar"> NobbZ:</div>
<blockquote>
<p>Of course, on a user system that runs multiple things that might use the same library it makes a difference, but the companies currently paying my bills do live in a world were that is no difference. Most of the time I get well speced VMs which do only fire up systemd and the tools my team is coding. In this world, were those base images are seldom less than a gigabyte, our customers really do not care if a binary is 3 Megs + deps or 10 Megs without, as long as they can do <code>rpm update</code> (or similar).</p>
</blockquote>
</aside>
<p>When I state executable size for the C++, OCaml, and Rust tests I did prior, that was with static linkage (hence why OCaml built in it’s standard library, OCaml tends to prefer static linkage for most things).</p>
<aside class="quote no-group" data-username="NobbZ" data-post="37" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/nobbz/48/27235_2.png" class="avatar"> NobbZ:</div>
<blockquote>
<p>This doesn’t mean though that I like Go, but it still pays my bills…</p>
</blockquote>
</aside>
<p>If I wanted to use a poor language and pay the bills, I’d program in Cobol (which is not actually that bad of a language to be honest).  ^.^<br>
They get paid <em>well</em>!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89357" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-89357" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89357"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="89364" data-post-id="89364">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="sribe" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  sribe
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="35" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Thanks for bringing this up! Have you seen the horrors that K8s had to do to get Go to work well? They ended up <em>building</em> a strongly typed system on top of it, making the code look absolutely abhorrant and near unreadable (and slowing it down).</p>
</blockquote>
</aside>
<p>I was not aware of that; thanks for pointing it out. It’s like I was almost getting a bit worn down on my low’ish opinion of Go, then you came to my rescue and built it back up <img src="https://forum.elixirforum.com/images/emoji/apple/wink.png?v=15" title=":wink:" class="emoji" alt=":wink:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89364" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-89364" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89364"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="89368" data-post-id="89368">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cdegroot" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/120/4644_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cdegroot
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="35" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>Have you seen the horrors that K8s had to do to get Go to work well?</p>
</blockquote>
</aside>
<p>That just reminded me of that similar system, Mesos, and when I found out that, yes, it was built in C++ but using <code>libprocess</code> which is an attempt to do OTP-in-C++, and I wondered “why didn’t they just pick Erlang?”.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89368" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/40">Post #39</a>
	                </div>
	            </div>
              <div id="likers-container-89368" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89368"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #39"></div>
  </section>
</div>
    <div class="postbit" id="89390" data-post-id="89390">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cdegroot" data-post="40" data-topic="15239">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cdegroot/48/4644_2.png" class="avatar"> cdegroot:</div>
<blockquote>
<p>That just reminded me of that similar system, Mesos, and when I found out that, yes, it was built in C++ but using <code>libprocess</code> which is an attempt to do OTP-in-C++, and I wondered “why didn’t they just pick Erlang?”.</p>
</blockquote>
</aside>
<p>If you don’t need multi-node and you <em>do</em> need intense speed, not a bad option to go.  Remember the BEAM is best with heavy IO, not with heavy CPU work.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Though if you do need multi-node and you focus on IO, should go with the BEAM.  ^.^</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89390" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/41">Post #40</a>
	                </div>
	            </div>
              <div id="likers-container-89390" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89390"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #40"></div>
  </section>
</div>
    <div class="postbit" id="89626" data-post-id="89626">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="AstonJ" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/AstonJ/120/15_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  AstonJ
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi all, please note we have posted a dedicated <a href="https://forum.elixirforum.com/t/go-vs-elixir/15333" class="inline-onebox" rel="nofollow">Go vs Elixir</a> thread - if you can, please take part in that for all your Go related discussions <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>We’ll leave the Go related posts in this thread for a few more hours, then split them into a new thread and move it to the off-topic section where threads get auto-closed - so if you have any important points relating to this specific discussion feel free to make them before then <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89626" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/56">Post #55</a>
	                </div>
	            </div>
              <div id="likers-container-89626" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89626"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #55"></div>
  </section>
</div>
    <div class="postbit" id="89762" data-post-id="89762">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Joseph" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Joseph/120/5609_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Joseph
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>I think the discussion neglects a lot of important BEAM centric points.</p>
<p>We might liken primitive BEAM processes, as spun up by <code>Process.spawn</code>, to actors. It’s hard to do anything meaningful when processes are isolated to the extent that you don’t know about their failure. BEAM processes remedy this with the <code>link</code> and the <code>monitor</code>. OTP builds on top of these primitives to give us the Application, Supervisor, and Generic Server. That’s how we design and structure Elixir projects around concurrency and falt-tolerance. There’s a lot of value there. OTP brought Elixir’s concurrency model to a conclusion a long time ago by building on these primitives [1].</p>
<p>STM doesn’t offer any concurrency (it’s about data). What exactly constitutes STM aside… Erlang/Elixir have ETS so we have those efficiencies. They’ve had it for a very long time. Perhaps before STM had a name.</p>
<p>CSP is interesting but I’m not sure how much it (I presume the <em>channel</em>) helps w/ clarity. There are a couple of points to consider:</p>
<ol>
<li>
<p>OTP is the vehicle we use in practice. It makes for much better code structure than our primitives. The Actor Model and CSP are theoretical. If CSP is just as theoretical as the Actor Model… and we liken BEAM processes to actors… then <em>Go</em>’s concurrency model may only be as useful in practice, or there about, as primitive BEAM processes. Perhaps something analogous to OTP will be built on top of Go’s go-routine and channel [2].</p>
</li>
<li>
<p>Erlang made a practical choice. They opted away from a channel-like pipe and pipe algebra because it wasn’t as useful for their users as the model that we have today. That might have been their application area, the details, their users, their particular implementation, their times, or the BEAM model might in-fact have a more general practical advantage (<strong>or not</strong>).</p>
</li>
</ol>
<p>Let’s not conflate the Actor Model w/ the way we build Elixir projects because OTP makes them sufficiently different to warrant a distinction.</p>
<p>[1]: Kubernetes’ and similar projects are quite like OTP but extended to more than one machine.<br>
These projects are for building distributed systems beyond a small number of machines not a language alone.</p>
<p>[2]: I can’t see them using the Actor Model because they’re using CSP.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="89762" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/where-is-elixir-and-the-actor-model-heading/15239/57">Post #56</a>
	                </div>
	            </div>
              <div id="likers-container-89762" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="89762"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #56"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/15239/load_more?page=5">Load more posts (6 remaining)</a>
</div></template></turbo-stream>