hmn/src/templates/src/fishbowls/metaprogramming/metaprogramming.html

12949 lines
499 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="chatlog">
<!-- Emojis by Twitter's Twemoji https://twemoji.twitter.com/ -->
<div class="chatlog__message-group">
<div id="chatlog__message-container-724995048021950466" class="chatlog__message-container " data-message-id="724995048021950466">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:31 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><img loading="lazy" class="chatlog__emoji chatlog__emoji--large" alt="👋" title="wave" src="files\twemoji_1f44b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724995160714510356" class="chatlog__message-container " data-message-id="724995160714510356">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:31 AM">07:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what's good fishbowl peeps</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724995849695920169" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="724995849695920169">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:34 AM">07:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>Topic:</strong> Compile-Time Introspection and <a class="inserted-after" href="https://en.wikipedia.org/wiki/Metaprogramming" target="_blank">Metaprogramming</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724995358316298340" class="chatlog__message-container " data-message-id="724995358316298340">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:32 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I have one comment to start things off:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Duck_typing" target="_blank">duck typing</a> is horrible</div></div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724995945628041226" class="chatlog__message-container " data-message-id="724995945628041226">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for compile-time introspection?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996038989185095" class="chatlog__message-container " data-message-id="724996038989185095">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996066793095229" class="chatlog__message-container " data-message-id="724996066793095229">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think that's probably more of a tools problem than an intrinsic one</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996124330557492" class="chatlog__message-container " data-message-id="724996124330557492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">no it's related to <a class="inserted-after" href="https://en.wikipedia.org/wiki/Template_(C%2B%2B)" target="_blank">templates</a> and all that jazz</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996208376021082" class="chatlog__message-container " data-message-id="724996208376021082">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for example, with an intelligent editor you could replace all instances of the duck type parameter with the instanced type</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724996243306315937" class="chatlog__message-container " data-message-id="724996243306315937">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:36 AM">07:36</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">when you're introspecting</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724996291456794696" class="chatlog__message-container " data-message-id="724996291456794696">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:36 AM">07:36</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(and ofc compile-time introspection is not limited to just debugging)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724996497216634971" class="chatlog__message-container " data-message-id="724996497216634971">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:37 AM">07:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so I think this is more of a where-we're-at-right-now problem that's solvable with a better toolchain, though I agree that for what we have available at the moment to work with it's terrible</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996636169732136" class="chatlog__message-container " data-message-id="724996636169732136">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but with ducktyping I mean that template params are checked by the api they expose matching some pattern</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724996888453185618" class="chatlog__message-container " data-message-id="724996888453185618">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:38 AM">07:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which results in horrible error messages when hit somewhere down the instantiation stack and kicked upstream</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724996946321735801" class="chatlog__message-container " data-message-id="724996946321735801">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I see what you mean, yeah</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724997099200184372" class="chatlog__message-container " data-message-id="724997099200184372">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:39 AM">07:39</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so you don't realize that you used an invalid type until something 32 calls down the stack tries to subscript it or whatever</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724997487030698086" class="chatlog__message-container " data-message-id="724997487030698086">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://odin-lang.org/" target="_blank">Odin</a> tries to address this problem with type constraints on procedure declarations</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724997496572739644" class="chatlog__message-container " data-message-id="724997496572739644">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:41 AM">07:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so for instance</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724997635706191902" class="chatlog__message-container " data-message-id="724997635706191902">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:41 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">foo :: proc($T: typeid) -&gt; bool where intrinsics.is_type_int(T) {
...
}</div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724997690391396362" class="chatlog__message-container " data-message-id="724997690391396362">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:41 AM">07:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which would error right on the definition if you passed say a float</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724998724249583616" class="chatlog__message-container " data-message-id="724998724249583616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hello</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724998798429913118" class="chatlog__message-container " data-message-id="724998798429913118">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:46 AM">07:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Duck typing is bad because they have wings and not fingers.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724998860849676288" class="chatlog__message-container " data-message-id="724998860849676288">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:46 AM">07:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But in all seriousness...</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724998877685612685" class="chatlog__message-container " data-message-id="724998877685612685">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">one of the solutions I've seen in the while regarding that is traits that let implementers add in fail-early checks</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724999043972857996" class="chatlog__message-container " data-message-id="724999043972857996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:47 AM">07:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but that is only half the solution because the template can use things not specified in the check</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724999135886966844" class="chatlog__message-container " data-message-id="724999135886966844">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:47 AM">07:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so there is no way to know whether you covered all your bases</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724999261187604610" class="chatlog__message-container " data-message-id="724999261187604610">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In general, you are complaining about the problems of structural typing. The two broad categories are <a class="inserted-after" href="https://en.wikipedia.org/wiki/Nominal_type_system" target="_blank">nominal</a> and <a class="inserted-after" href="https://en.wikipedia.org/wiki/Structural_type_system" target="_blank">structural</a>.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-724999693616021654" class="chatlog__message-container " data-message-id="724999693616021654">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:49 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are two pretty decent solutions as far as I can tell, one of which <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> implements in Odin and could elaborate on (early-out type constraints)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724999737237045330" class="chatlog__message-container " data-message-id="724999737237045330">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:50 AM">07:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the other solution would be static analysis</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-724999782401310751" class="chatlog__message-container " data-message-id="724999782401310751">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:50 AM">07:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which, of course, has its associated costs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725000005643141272" class="chatlog__message-container " data-message-id="725000005643141272">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:51 AM">07:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but it would allow you to e.g. recursively gather all possible usage types of the ducktyped variable, and use that at the instantiation site to evaluate whether or not the usage is valid</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725000215626776636" class="chatlog__message-container " data-message-id="725000215626776636">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">or define a set of traits that the user can fill in which the compiler in turn can substitute in the template</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725000306517344258" class="chatlog__message-container " data-message-id="725000306517344258">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but that will very quickly explode in complexity</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725000409726320713" class="chatlog__message-container " data-message-id="725000409726320713">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure how different traits would be from type constraints in this capacity, could you elaborate?</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725000305074241557" class="chatlog__message-container " data-message-id="725000305074241557">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Odin's solution is where clauses. It's not unique but exists in many languages in different forms. It's kind of like a contract between the caller and the polymorphic signature.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725000615801126983" class="chatlog__message-container " data-message-id="725000615801126983">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But in general, I think highly generic things with these forms of constraints are only useful for certain things like mathematical procedures.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725000649032597576" class="chatlog__message-container " data-message-id="725000649032597576">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:53 AM">07:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Usually you want a specific kind of type</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725000754170953778" class="chatlog__message-container " data-message-id="725000754170953778">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> that's what I meant with early fail</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725000936270987325" class="chatlog__message-container " data-message-id="725000936270987325">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:54 AM">07:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">with where-clauses you fail early enough that another overload can still be picked (this is what <a class="inserted-after" href="https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error" target="_blank">sfinae</a> actually is)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725001052625043558" class="chatlog__message-container " data-message-id="725001052625043558">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Correct. It also allows for two overloads with the same signature but with different clauses</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725001133436829767" class="chatlog__message-container " data-message-id="725001133436829767">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:55 AM">07:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you have overloads that is</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725001509993185333" class="chatlog__message-container " data-message-id="725001509993185333">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which if you have templates you will need on some level</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725001675449958461" class="chatlog__message-container " data-message-id="725001675449958461">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In C++, template specialization is usually this method.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725001761001308172" class="chatlog__message-container " data-message-id="725001761001308172">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The question I usually ask myself is what times do I truly need something this generic?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725001860259512340" class="chatlog__message-container " data-message-id="725001860259512340">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">simple data structure and mathy types</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725001862276972604" class="chatlog__message-container " data-message-id="725001862276972604">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Data structures like an array, hash table, etc, sure.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725001897601138728" class="chatlog__message-container " data-message-id="725001897601138728">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Exactly</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725001959999799368" class="chatlog__message-container " data-message-id="725001959999799368">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 07:58 AM">07:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Everything else is pretty much very not generic</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725002164803600396" class="chatlog__message-container " data-message-id="725002164803600396">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 07:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the other ways I have seen templates used is optimizing out a function pointer</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725002525853483048" class="chatlog__message-container " data-message-id="725002525853483048">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 08:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is the problem of being overly generic a lot of the time.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725002558795546665" class="chatlog__message-container " data-message-id="725002558795546665">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 08:01 AM">08:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Which leads lovely into the main topic.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725002948823875786" class="chatlog__message-container " data-message-id="725002948823875786">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 08:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">last I looked into it llvm had a lot of templates</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725003125030912150" class="chatlog__message-container " data-message-id="725003125030912150">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 08:03 AM">08:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">most parameters got most of the time only 1 specific type as input</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725004079117500606" class="chatlog__message-container " data-message-id="725004079117500606">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 08:07 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's a common affliction people have. I have done it before. Trying to be more generic thinking about possible problems I might have rather than problems I actually have</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725020029980114944" class="chatlog__message-container " data-message-id="725020029980114944">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Meta-programming also allows you to chase down a "generic" solution, which is why it's both powerful and a possibly dangerous tool to get comfortable with, I think.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725020517962088448" class="chatlog__message-container " data-message-id="725020517962088448">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">being flexible is important when exploring a solution, but you can do that without adding compile-time metaprogramming into it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725020696362876969" class="chatlog__message-container " data-message-id="725020696362876969">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well whether you can or not depends on the features you've already got in the language, and the set of hard constraints you're trying to explore.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725020982787571732" class="chatlog__message-container " data-message-id="725020982787571732">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:14 AM">09:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If your language doesn't give you the modeling tool to iterate quickly on the structure of your solution without - for instance - prohibitively expensive extra run time work, then metaprogramming starts to look like a more attractive way to get flexibility.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 09:15 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725021897510617098" class="chatlog__message-container " data-message-id="725021897510617098">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I agree, Allen. I have found that the less I use metaprogramming, the better of a solution I produce. Metaprogramming is playing with fire. Sometimes I just need scissors.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725022186640769106" class="chatlog__message-container " data-message-id="725022186640769106">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">leave the footguns at home</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725022406300794961" class="chatlog__message-container " data-message-id="725022406300794961">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And to make my thinking clearer too, I usually separate out the categories of "metaprogramming":
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Run-time_type_information" target="_blank">Runtime Type Information</a>
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Parametric_polymorphism" target="_blank">Parametric Polymorphism</a> (Generics, Templates, etc)
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Compile-time_function_execution" target="_blank">Compile Time Execution</a>
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Reflective_programming" target="_blank">Code Introspection</a>
<a class="inserted-after" href="https://en.wikipedia.org/wiki/Code_generation" target="_blank">Code Generation</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725022739651362836" class="chatlog__message-container " data-message-id="725022739651362836">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the interesting part of the topic is trying to come up with a useful method or criteria for when to make the switch to doing something "meta".</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725022814817747005" class="chatlog__message-container " data-message-id="725022814817747005">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And that's the thing I have been trying to figure out myself lately.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725022844391784489" class="chatlog__message-container " data-message-id="725022844391784489">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't have an extremely well defined line for this myself and have crossed it and been burned on plenty of occasions, but other times it has absolutely paid off.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725023295044583425" class="chatlog__message-container " data-message-id="725023295044583425">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I do prefer not resorting to anything like code introspection or code generation when I can.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725023425088848024" class="chatlog__message-container " data-message-id="725023425088848024">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:24 AM">09:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Metaprogramming still feels "wrong" to me a lot of the time, and 80% of the time when people think they need it, they don't.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725023802286932078" class="chatlog__message-container " data-message-id="725023802286932078">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:25 AM">09:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When I was purely in C, my metaprogramming tools where to fix/add the features lacking in the language rather than solve other problems per se.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725024050233213009" class="chatlog__message-container " data-message-id="725024050233213009">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure I'm quite as put off by it - but I will say that I have found over time my preference is to generate tables rather than actual executable. For instance instead of printing 20 "log entity" cases, print 20 "entity metadata" tables and write a single log entity loop that is driven by the table.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725024164649369693" class="chatlog__message-container " data-message-id="725024164649369693">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:27 AM">09:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In a way it's more like making up for lack of <em>runtime</em> introspection in C in a lot of places.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 09:27 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725024209150935211" class="chatlog__message-container " data-message-id="725024209150935211">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah. That's usually my main case for code generation: producing lookup tables.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725025978149109812" class="chatlog__message-container " data-message-id="725025978149109812">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What features are worthwhile to support data generation? 90% of my needs are covered by using the <a class="inserted-after" href="https://en.wikipedia.org/wiki/X_Macro" target="_blank">X-Macros</a> trick in C. It's not nice but I don't know any other tool that would be a better tradeoff (maybe Lisp?)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725026625921613977" class="chatlog__message-container " data-message-id="725026625921613977">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:36 AM">09:36</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The other approach I use in rare situations is just making a Python program. Though that requires introspection into (or generation of) the data structures used in the program</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725026701620281434" class="chatlog__message-container " data-message-id="725026701620281434">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are two forms of code generations:
Data types
Lookup tables
The former is <em>usually</em> solved with something like: having more fundamental data structures built into the language itself or parametric polymorphism in the language, or just trying to reuse things
The latter is sadly not always doable with X-Macros, especially when you need to generate lookup tables from other source data.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725028046419132508" class="chatlog__message-container " data-message-id="725028046419132508">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What are concrete examples you're thinking of where X-Macros are not sufficient for data generation / lookup tables?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725028263843463238" class="chatlog__message-container " data-message-id="725028263843463238">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:43 AM">09:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is it for example preparing a hashmap or something of that ilk? Or did you think of something else?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725028599341514893" class="chatlog__message-container " data-message-id="725028599341514893">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:44 AM">09:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I believe a very powerful approach to data generation is to prepare the final representation/indexes <em>at runtime</em> <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725029110212198482" class="chatlog__message-container " data-message-id="725029110212198482">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The thing is, if you are designing your own language, you don't need to use X-Macros as a crutch solve the lack of decent data types in a language and the lack of RTTI.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725029166688239616" class="chatlog__message-container " data-message-id="725029166688239616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:47 AM">09:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So all my main cases for X-Macros in C disappear in a saner language</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725030946608513094" class="chatlog__message-container " data-message-id="725030946608513094">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 09:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I think doing data generation at runtime does sense in some cases, but there are absolutely cases of data I want packaged into my program that I wouldn't want to initially represent as X-Macros in the first place. So even if I was going to say let's build my hashmaps at runtime from the X-Macros, I would still have precompilation data generation to do.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725031377376116777" class="chatlog__message-container " data-message-id="725031377376116777">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:55 AM">09:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For instance <a class="inserted-after" href="https://en.wikipedia.org/wiki/Serialization" target="_blank">serializing</a> a set of structs is one case, because if I did them as X-Macros I'd have to define my data in a very alien looking way - maybe this is just an example of taste I suppose.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725031575812833341" class="chatlog__message-container " data-message-id="725031575812833341">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 09:56 AM">09:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Another example is any data type that forms a tree or graph which doesn't come up as often but when it has I am not sure I would even know how to represent it as X-Macros without a lot of duplication of the coupling of things.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 09:57 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725032473985155132" class="chatlog__message-container " data-message-id="725032473985155132">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's another good point you bring up. The difference between compile time and run time, and the costs of both of them. Sometimes I just don't mind generating the lookup tables at runtime because it's easier to write, easier to manage, and doesn't require a more complex build system. Sometimes I really need to do it at compile time, but usually only use and never every time. And this is the complaint I have about languages with compile time execution, it does make people recompute a lot of things every time you rebuild.
There is not hard rule for this that I can think of, just general trends.
From a language designer standpoint, I don't want to enable/encourage silly things but I also don't want to prevent people from getting the job done, but I don't want to enable/encourage a certain style by default either.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725035748507648170" class="chatlog__message-container " data-message-id="725035748507648170">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is something we're looking at in <a class="inserted-after" href="https://dion.systems/" target="_blank">Dion</a> as we are thinking about the scope of how code is written expanded outside of just the compiler. I have been thinking for a while that the fairly fixed ideas of "compile-time" and "run-time" are not super helpful. I mean things like AAA game engines already embrace this by having offline <a class="inserted-after" href="http://graphics.cs.cmu.edu/courses/15-466-f19/notes/asset-pipelines.html" target="_blank">asset baking</a> processes that don't run every build for example.
It does raise the question of when are you no longer talking about metaprogramming and just talking about data processing, but I feel like these things aren't that distinct. I think they form some kind of a spectrum and we've ended up with a fairly course grained look at that spectrum by the fact that all our systems really formalize are "pre-compilation-time" (i.e. un-formalized, you manage the whole thing and make it up yourself) "compile-time" and "run-time".</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725036218349518999" class="chatlog__message-container " data-message-id="725036218349518999">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:15 AM">10:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And even with just "compile-time" and "run-time" a language like C does a very poor job of letting you glide your computations around that spectrum freely.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725036539951972443" class="chatlog__message-container " data-message-id="725036539951972443">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:16 AM">10:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For instance you'd probably want to debug compile time code in a more sane system.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725036602472267817" class="chatlog__message-container " data-message-id="725036602472267817">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:16 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Just-in-time_compilation" target="_blank">JIT</a> has been another factor to blur the line between compilaiton time and runtime</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725036780608421914" class="chatlog__message-container " data-message-id="725036780608421914">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:17 AM">10:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ugh that's another thing that annoys me with compile time, no very hard debugging</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725037324064260147" class="chatlog__message-container " data-message-id="725037324064260147">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is one reason why I like the option of having literally another C executable that can introspect on an <a class="inserted-after" href="https://en.wikipedia.org/wiki/Abstract_syntax_tree" target="_blank">AST</a> and generate information in a straightforward way (via <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">fprintf</span> or whatever), and output tables or code. This allows you to debug things a little bit easier. This isn't the best option ever I suspect but it seems like a good idea while we're stuck with C at least.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725037467736080437" class="chatlog__message-container " data-message-id="725037467736080437">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:20 AM">10:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's definitely preferable, debuggability-wise, to something that's opaquely implemented in the compiler, like C++ templates or what have you.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725038237948706907" class="chatlog__message-container " data-message-id="725038237948706907">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:23 AM">10:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Also the distinction between compile-time and run-time you guys brought up is super interesting. I really do think the distinction is purely a result of the structure of the tools we're used to, and it's made harder to break out of because of the fact that to do any kind of code analysis you need a parse of your code which, even if not super difficult (in the case of C), it's a nontrivial problem, or in the case of C++, it's a complete nightmare. Maybe people have made good use of <a class="inserted-after" href="https://en.wikipedia.org/wiki/Clang#Interface" target="_blank">Clang</a> here?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725042696825208884" class="chatlog__message-container " data-message-id="725042696825208884">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">clang is a huge mess</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725042772259897435" class="chatlog__message-container " data-message-id="725042772259897435">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:41 AM">10:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there have been a couple attempts to make Odin bindings generators for C with it</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725042921702817822" class="chatlog__message-container " data-message-id="725042921702817822">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:41 AM">10:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it does not seem like it was ever geared toward enabling new tooling to be built around a common denominator</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725043103249203230" class="chatlog__message-container " data-message-id="725043103249203230">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:42 AM">10:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">unless anyone has anything to add re: clang, now that ryan is here, maybe we should move on to future-forward ideas around the topic since we've identified several problems that exist in the current toolchains</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725043364755538000" class="chatlog__message-container " data-message-id="725043364755538000">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:43 AM">10:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'll start off with a basic question, what are some metaprogramming or introspection features that people want, but don't exist in any reasonable form in current mainstream languages?</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 10:44 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725044103980777512" class="chatlog__message-container " data-message-id="725044103980777512">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:46 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think I can summarize a lot of what I want by just being able to treat code as data, in the form of the semantic structure of the code (as the abstract syntax tree that the compiler backend would see). It should come to no surprise that I think this, though...
I also think compilers ignore the idea of "tuning the knob of unstructuredness". In text languages, this is sort of accomplished by having arbitrary text (completely unstructured), and rigid language constructs (very structured). When really, you want the ability to go anywhere inbetween also, and put that data anywhere.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044312982814771" class="chatlog__message-container " data-message-id="725044312982814771">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Data being <em>less</em> structured is in fact what's useful about X-Macros, because it's a much looser structuring than a <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">struct</span> for example.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044353067646978" class="chatlog__message-container " data-message-id="725044353067646978">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But it's still <em>some</em> structure.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725044563546472558" class="chatlog__message-container " data-message-id="725044563546472558">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">applying your transformations at the right level of structure changes a lot</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044633071124540" class="chatlog__message-container " data-message-id="725044633071124540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:48 AM">10:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">like you examples of adding parenthesis to an expression</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044692198096986" class="chatlog__message-container " data-message-id="725044692198096986">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:48 AM">10:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">first flatten out to tokens, then add the parens, then reparse</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044744920498299" class="chatlog__message-container " data-message-id="725044744920498299">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:48 AM">10:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's much easier than doing a AST shuffle</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725044820300660867" class="chatlog__message-container " data-message-id="725044820300660867">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:49 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's an extremely interesting connection, I hadn't really thought of it that way but you're so right. Yeah this is a great example—it was more convenient for us to write that code in terms of manipulating what we call a "linearized render"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725044872079474779" class="chatlog__message-container " data-message-id="725044872079474779">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:49 AM">10:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It isn't <em>quite</em> the same as tokens but it's similar in principle</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725045018297106542" class="chatlog__message-container " data-message-id="725045018297106542">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:50 AM">10:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The "linearized render" is a buffer of "symbols". Some of those symbols have no direct equivalent in the AST—for example, a paren or a selection marker—but they can also be AST nodes (which can be full sub-trees or a leaf).</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 10:50 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725045076702658560" class="chatlog__message-container " data-message-id="725045076702658560">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:50 AM">10:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And then we use a forgiving parse to reconstruct the AST.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725045127457800243" class="chatlog__message-container " data-message-id="725045127457800243">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:50 AM">10:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(The parse is also dramatically simplified when compared to arbitrary text)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725045703700906095" class="chatlog__message-container " data-message-id="725045703700906095">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but then when we look at current meta programming features they are usually stuck on a single level of structure</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725045819878801418" class="chatlog__message-container " data-message-id="725045819878801418">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:53 AM">10:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which means that the things you want to do end up being awkward to do</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725045902489944135" class="chatlog__message-container " data-message-id="725045902489944135">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right. In Dion we've been playing with the idea of "unstructured sets" for this exact reason.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725046023730364477" class="chatlog__message-container " data-message-id="725046023730364477">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:54 AM">10:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Basically giving a path to do graph-like structure, without also implying some kind of operation or semantic information.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 10:54 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725046133939765269" class="chatlog__message-container " data-message-id="725046133939765269">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:54 AM">10:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(And of course we have strings in nodes so you can also have arbitrary text, but the usefulness of that goes down when you have things like unstructured sets)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725046431056134205" class="chatlog__message-container " data-message-id="725046431056134205">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So another point about this level of structure thing is the idea of code tags. I first saw this idea in <a class="inserted-after" href="https://github.com/Jai-Community/Jai-Community-Library/wiki" target="_blank">JAI</a> and then got to play with it in <a class="inserted-after" href="https://en.wikipedia.org/wiki/Data_Desk" target="_blank">DataDesk</a>, and what I started to realize is that what they really offer are key-value pairs of information. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">@ParticularTagIsAKey(Parameters, Are, The, Value)</span>. This isn't as unstructured as say a comment, but it's a very loose form of structure in the sense that I have a really hard time thinking of anything you couldn't sort of represent with it, if you're willing to accept a lot of slop.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725046795515723887" class="chatlog__message-container " data-message-id="725046795515723887">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:57 AM">10:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Once you can encode data at that level of structuredness into your code, if you can then introspect and do work with it, there are a whole lot of new things you can do.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725047251663061153" class="chatlog__message-container " data-message-id="725047251663061153">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't know if this is something that is present or not in mainstream languages - but I definitely miss it in C.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725047411436945480" class="chatlog__message-container " data-message-id="725047411436945480">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah. I guess another way of saying this is C gives us a very coarse view of structuredness, and we really want something more granular.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725054124273696768" class="chatlog__message-container " data-message-id="725054124273696768">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/27b01e70e3529dab5b396df328df2dee-B7306.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Justas#0427" data-user-id="131467025456300032">Justas (audience)</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">re code tags:
They&#39;ve been an important part of some of the metaprogramming stuff in lua that I&#39;ve been trying out.
I&#39;ve set up a path to generate a C enum definition from:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">enum(&quot;Grid_Rotation&quot;, &quot;u8&quot;,
enum_val(0, &quot;NONE&quot;),
enum_val(1, &quot;R90&quot;),
enum_val(2, &quot;R180&quot;),
enum_val(3, &quot;R270&quot;)
),</div>
With code tags, I can add new nodes to the AST after the enum values have been defined such that it will emit the enum as well as an aux count variable and an array of strings:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">enum(&quot;Grid_Rotation&quot;, &quot;u8&quot;,
create_struct(),
enum_has_pretty_names(),
enum_has_count(),
enum_val(0, &quot;NONE&quot;, pretty_name(&quot;None&quot;)),
enum_val(1, &quot;R90&quot;, pretty_name(&quot;90&quot;)),
enum_val(2, &quot;R180&quot;, pretty_name(&quot;180&quot;)),
enum_val(3, &quot;R270&quot;, pretty_name(&quot;270&quot;))
),</div></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 11:26 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054829227147324" class="chatlog__message-container " data-message-id="725054829227147324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:29 AM">11:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The heavier workload that I&#39;m using this for is a versioned entity system which generates a lot of boilerplate I/O and version upgrading code from a statement in the form of:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">struct(&quot;Exit&quot;,
version(1),
is_entity(),
serializable(),
using_entity_base(),
-- bunch of fields
field(&quot;u8&quot;, &quot;exit_flags&quot;),
to_next_version([[
if(from-&gt;exit_flags &amp; (1 &lt;&lt; 0)) {
to-&gt;base.flags |= OBJECT_IS_UNATTACHED;
}
]])
),</div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725062547090440212" class="chatlog__message-container " data-message-id="725062547090440212">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="Justas#0427">@Justas</span> I love this. I want to see more!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725065910041182318" class="chatlog__message-container " data-message-id="725065910041182318">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/27b01e70e3529dab5b396df328df2dee-B7306.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="Justas#0427" data-user-id="131467025456300032">Justas (audience)</span>
<span class="chatlog__timestamp">Jun 23, 2020 12:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well another interesting feature of this is that you can create functions which return new definitions. One of the things I use this for is a very simple component system:
Entities that have visual interpolation will call the following function in their body:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">local function component_visual_interpolation()
return field(&quot;Visual_Interpolation&quot;, &quot;visual_interpolation&quot;,
is_component(),
dont_serialize()
)
end</div>
The <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">is_component</span> marker is then used in a late <s>AST</s> tree pass which generates giant switch statement functions in the form of:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">static force_inline
Visual_Interpolation * try_get_visual_interpolation(
Ent_Base * ent
) {
switch(ent-&gt;id.type) {
case Ent_Type::ground: {
return &amp;(reinterpret_cast&lt;Ent_Ground_3*&gt;(ent))-&gt;visual_interpolation;
}
case Ent_Type::grid_bucket: {
return 0;
}
etc ...
}
}</div></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 12:31 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725066407850803241" class="chatlog__message-container " data-message-id="725066407850803241">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 12:15 PM">12:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">At the core of this all is just a duck typed <s>AST</s> tree which lets me add nodes with arbitrary data and then operate on them.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 12:31 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725066478277361755" class="chatlog__message-container " data-message-id="725066478277361755">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 12:15 PM">12:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Past this it&#39;s mostly lua code for performing the rewriting and emitting the final code (definitions, editor integration, i/o etc)</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 12:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725047458186395650" class="chatlog__message-container " data-message-id="725047458186395650">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 10:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">java's annotations are essentially like that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725047524007870546" class="chatlog__message-container " data-message-id="725047524007870546">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:00 AM">11:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but then that's java</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725047590751698954" class="chatlog__message-container " data-message-id="725047590751698954">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a fatal flaw</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725047703532339290" class="chatlog__message-container " data-message-id="725047703532339290">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:00 AM">11:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">java's biggest mistake: being java</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725048027227619399" class="chatlog__message-container " data-message-id="725048027227619399">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">also the way I've seen them used sometimes I just wonder, why they didn't just use an interface to expose those annotated functions instead</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725048373899690114" class="chatlog__message-container " data-message-id="725048373899690114">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the one place where I agree with their use is when I was making an xml parser where I could link each member with which attribute/child element they matched up to</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725048452911988747" class="chatlog__message-container " data-message-id="725048452911988747">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that kind of introspection you cannot do with just an interface</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725052994101575690" class="chatlog__message-container " data-message-id="725052994101575690">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This ties into some earlier comments made about genericism—the most generic things are less structured. One problem with many generic systems is that while they specify less structured data, or data with missing information, the missing information is filled in by predefined paths, whereas there's a lot of power in specifying some high level pieces of information, then being able to specify <em>how</em> those get mapped to more specific things</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725053391838904360" class="chatlog__message-container " data-message-id="725053391838904360">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:23 AM">11:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it's useful in constructing sets of high-level data that you specify and tweak over-time, without having to do a lot of the plumbing work—it makes it easier to design things as a programmer</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725053568922550342" class="chatlog__message-container " data-message-id="725053568922550342">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:24 AM">11:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">X-Macros are the simplest example of this, I think: Here's a list of associated data, I'll <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">#define</span> the macro and generate this list to generate some code, and then in the future all I need to do is change this list</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 11:24 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725053959651196969" class="chatlog__message-container " data-message-id="725053959651196969">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Genericism a good term for it. Many people suffer from it; I bet there's a pill which can help people suffering from it.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="smile">
<img class="chatlog__emoji chatlog__emoji--small" alt="😄" src="files/1f604-6061B.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725054132427292732" class="chatlog__message-container " data-message-id="725054132427292732">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think genericism can be very useful, but it depends on what you're being generic about</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725054212953604126" class="chatlog__message-container " data-message-id="725054212953604126">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you're being generic about generic stuff, sure.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054334424973332" class="chatlog__message-container " data-message-id="725054334424973332">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:27 AM">11:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But generic things rarely exist</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054399440879616" class="chatlog__message-container " data-message-id="725054399440879616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:27 AM">11:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And generalities are usually "truths"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725054521088409680" class="chatlog__message-container " data-message-id="725054521088409680">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it really depends on the thing you're trying to generalize for</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054687174197310" class="chatlog__message-container " data-message-id="725054687174197310">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:28 AM">11:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it's very important to acknowledge problem constraints and the reality of your problem, though I've been finding recently, for example, that programming things in terms of more generic "lego bricks" that may be able to represent a wide variety of data makes the "plumbing" of a system much easier</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054783375015996" class="chatlog__message-container " data-message-id="725054783375015996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:28 AM">11:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are things that are just not useful to try to generalize for</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054837921677462" class="chatlog__message-container " data-message-id="725054837921677462">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:29 AM">11:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. "What if my machine had X bits per byte instead of Y?!"</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 11:31 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725054965319598111" class="chatlog__message-container " data-message-id="725054965319598111">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:29 AM">11:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But I think saying something like "I just want to consider this kind of data generically, even though it might be in different forms, and maybe I'm being a little bit wasteful but that's fine, because it makes all of my code uniform" can be a very great choice</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 11:29 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725056533779447908" class="chatlog__message-container " data-message-id="725056533779447908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:35 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I think a big problem here in this conversation is going to be that to say that something is generic isn't exactly a well defined thing.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725056709260869694" class="chatlog__message-container " data-message-id="725056709260869694">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is a very old problem</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725056744455405588" class="chatlog__message-container " data-message-id="725056744455405588">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is a C function generic? What about a function in a language with parametric types? To say you're making something generic doesn't really tell us at all where we are.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725056785450401852" class="chatlog__message-container " data-message-id="725056785450401852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And well known to philosophers</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725057013540716644" class="chatlog__message-container " data-message-id="725057013540716644">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">C functions generalize over architectures. Parametric functions generalize over a set of similarly structured functions in the same language with a particular rule about how those functions are allowed to different from each other etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725057082126106785" class="chatlog__message-container " data-message-id="725057082126106785">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:37 AM">11:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To say generic things don't exist isn't really helpful until we point out what things we're talking about generalizing over.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725057159523729469" class="chatlog__message-container " data-message-id="725057159523729469">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:38 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I don't know if this is a technically correct conception, but I think of "making something generic" as choosing a variable to let vary.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725057355724882061" class="chatlog__message-container " data-message-id="725057355724882061">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is why I'd put forward that the language of "compression" works better than "genericism". If you look at your problem space, identify a bunch of repeated patterns and then have a way to compress them, hopefully losslessly that's about roughly what we mean by being generic.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725057363845054494" class="chatlog__message-container " data-message-id="725057363845054494">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">generic/specific distinction is an old problem and navigating between the two is hard</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725057682918211698" class="chatlog__message-container " data-message-id="725057682918211698">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Going towards one means you lose something</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725057634524332082" class="chatlog__message-container " data-message-id="725057634524332082">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The reason I like this language is it forces you to be more literal about <em>what</em> you're compressing, and if you're really getting good compression with reasonable lossiness.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725057703977812069" class="chatlog__message-container " data-message-id="725057703977812069">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Whereas just talking about "abstractions" or "genericness" doesn't really come with those intuitions built in.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725058221244547218" class="chatlog__message-container " data-message-id="725058221244547218">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:42 AM">11:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Language features just define a compression algorithm over software. The programs that will tend to come from that language are the programs that compress well with it's features. Metaprogramming then is what happens when the predictions the language made about what is likely in a program don't quite match your entire scope, and so you have to define your own compression.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 11:42 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725058269210607627" class="chatlog__message-container " data-message-id="725058269210607627">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think one interesting property of genericism/compression is that it, by virtue of being generic/compressed, has many possible paths—the most generic thing is just a parent to many ideas, so you have a tree of "genericism" formed, with the leaves being the least generic thing, and the root being the most generic thing.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725058283773362309" class="chatlog__message-container " data-message-id="725058283773362309">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:42 AM">11:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Also yeah this is a good point. I've been learning to like the "compression" language quite a bit more.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725058410592338002" class="chatlog__message-container " data-message-id="725058410592338002">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or just not compress - which is often the right call - but now there's no confusion about what your costs and benefits are to each option (in my mind at least).</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725059411965640744" class="chatlog__message-container " data-message-id="725059411965640744">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:47 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think that language does help a lot. Because you're not just making something more generic, you are picking something to compress about something.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725059492785684541" class="chatlog__message-container " data-message-id="725059492785684541">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 11:47 AM">11:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The term "generic" is a... well, generic term that includes something like compression.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725060238499381309" class="chatlog__message-container " data-message-id="725060238499381309">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:50 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Related: <a href="https://plato.stanford.edu/entries/generics/" target="_blank">https://plato.stanford.edu/entries/generics/</a>
(Warning <img loading="lazy" class="chatlog__emoji " alt="⚠" title="⚠" src="files\twemoji_26a0.svg"> , this site is a rabbit hole)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725060363149901866" class="chatlog__message-container " data-message-id="725060363149901866">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 11:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><em>gulp</em>... <em>clicks</em></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725084890319683614" class="chatlog__message-container " data-message-id="725084890319683614">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 01:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess the more a language gives me, the less I need something like metaprogramming.
I'm not sure how to define it.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725085555125387294" class="chatlog__message-container " data-message-id="725085555125387294">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 01:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you get the batteries there is no need to build a generator</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 01:31 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725085855236096000" class="chatlog__message-container " data-message-id="725085855236096000">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 01:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes. That.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725085972986855475" class="chatlog__message-container " data-message-id="725085972986855475">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 01:32 PM">13:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't want to build the battery from its raw components.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725087421523296286" class="chatlog__message-container " data-message-id="725087421523296286">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 01:38 PM">13:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even if I enjoy that process, it's not practical</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725094097504829530" class="chatlog__message-container " data-message-id="725094097504829530">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There's value in keeping the core reality of a tool small and simple, though, right?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725094219961860166" class="chatlog__message-container " data-message-id="725094219961860166">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:05 PM">14:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A language surely shouldn't expose all possible models you might want to specify data in.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725094262018146324" class="chatlog__message-container " data-message-id="725094262018146324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:05 PM">14:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But should those models be excluded?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725094578100764812" class="chatlog__message-container " data-message-id="725094578100764812">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">no because sometimes those models or a new model that gets invented are useful</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725094932632698982" class="chatlog__message-container " data-message-id="725094932632698982">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right, so I guess in that sense I think metaprogramming is necessary</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725095067722842263" class="chatlog__message-container " data-message-id="725095067722842263">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:08 PM">14:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You always want a backdoor that allows someone to get around a limitation of the models that the core language provides.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725097294273183756" class="chatlog__message-container " data-message-id="725097294273183756">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:17 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Simplicity is complicated</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 02:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725098509220708433" class="chatlog__message-container " data-message-id="725098509220708433">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, this is where I think non-textual code representations really have an advantage</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725098592456540280" class="chatlog__message-container " data-message-id="725098592456540280">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:22 PM">14:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">to shill dion for a moment</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725098704432005170" class="chatlog__message-container " data-message-id="725098704432005170">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:23 PM">14:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because textual languages can only have one representation</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725098817397194795" class="chatlog__message-container " data-message-id="725098817397194795">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:23 PM">14:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's best for that representation to be consistent and thorough with a specific set of design principles which are prioritized above others</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725098931117228063" class="chatlog__message-container " data-message-id="725098931117228063">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:24 PM">14:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. statically typed systems programming, versus garbage-collected dynamic functional scientific computing</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725099107777118279" class="chatlog__message-container " data-message-id="725099107777118279">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:24 PM">14:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you decouple the primary representation from the final frontend, and you keep that representation simple but flexible, you can have multiple frames of reference within which to operate</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725099358361485402" class="chatlog__message-container " data-message-id="725099358361485402">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:25 PM">14:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. dion could have (and will by all indications) a statically typed, low-level systems programming frontend, and also the dynamically typed and garbage collected functional frontend</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725099470919827456" class="chatlog__message-container " data-message-id="725099470919827456">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:26 PM">14:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which could both be complete, tightly designed packages with a reasonable set of constraints for the problem space</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725099740953444372" class="chatlog__message-container " data-message-id="725099740953444372">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:27 PM">14:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but they would be interoperable, and there would still be a "metaspace" outside of those frontend representations in which you could perform manipulations over them that defy their constraints, and even define your own frontend with its own well-thought-out constraints</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725099943265697812" class="chatlog__message-container " data-message-id="725099943265697812">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:28 PM">14:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and while I'm shilling dion here because everyone here is familiar with it, and I'm excited for the project, this applies to any future-forward toolchain that's designed with this consideration in mind</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725100210006786200" class="chatlog__message-container " data-message-id="725100210006786200">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:29 PM">14:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">jai also exposes something like this to a much lesser degree</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725100336435691571" class="chatlog__message-container " data-message-id="725100336435691571">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:29 PM">14:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">where Jon has shown for example the ability to write a compile-time <a class="inserted-after" href="https://en.wikipedia.org/wiki/MISRA_C" target="_blank">MISRA</a> compliance verifier in native Jai code</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725100514420850839" class="chatlog__message-container " data-message-id="725100514420850839">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:30 PM">14:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and also the ability to write a compile-time <a class="inserted-after" href="https://en.wikipedia.org/wiki/Lisp_(programming_language)" target="_blank">lisp</a> parser in native Jai code that outputs the resulting lisp program through the Jai backend</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725100948879310881" class="chatlog__message-container " data-message-id="725100948879310881">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:32 PM">14:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(of course, to be clear here, because there has been quite a bit of confusion over "non-textual" as it relates to dion, the key difference is that the simple AST representation is the primary code representation in dion rather than text, which means it's very easy to construct custom toolchains around with first-class support)</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 02:32 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725107480836833420" class="chatlog__message-container " data-message-id="725107480836833420">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 02:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd like to back up to something <span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> was saying and point out that you don't <em>need</em> metaprogramming even in C, then swing back to this question of mixing models.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725107735674224772" class="chatlog__message-container " data-message-id="725107735674224772">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 02:59 PM">14:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Any programming language that is complete, basically in the "Turing Complete" sense can get you to a piece of software that computes and computable function.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725107993833635901" class="chatlog__message-container " data-message-id="725107993833635901">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:00 PM">15:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's not the same as saying that all possible programs are covered by the language. There are many more programs that could exist that C will never generate, than vice versa, and the same is true for any language that doesn't have an escape hatch for going back to the lower level.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725108217029591100" class="chatlog__message-container " data-message-id="725108217029591100">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the main <em>real</em> problem that metaprogramming solves imo is where your turing complete program, in the language-native representation, would take an unreasonably massive amount of code and in particular repetitive boilerplate to accomplish</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:01 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725108266329309206" class="chatlog__message-container " data-message-id="725108266329309206">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The whole point is that if you bring in the constraint of maintenance, the fixed budget of what you'll be able to deal with over time as you try to polish and include additional features, you start having to ask yourself how you're going to fit more in.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725108286612832316" class="chatlog__message-container " data-message-id="725108286612832316">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Turing_tarpit" target="_blank">turing tarpit</a> problem</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725108451088400485" class="chatlog__message-container " data-message-id="725108451088400485">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">right</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725108592843161710" class="chatlog__message-container " data-message-id="725108592843161710">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:02 PM">15:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">another thing that macros frequently solve is where you want to define multiple things with one single consistent interface</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725108634383679561" class="chatlog__message-container " data-message-id="725108634383679561">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:02 PM">15:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. a struct and an associated union tag</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725108784837558296" class="chatlog__message-container " data-message-id="725108784837558296">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:03 PM">15:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">things that, with enough code, could become absolute maintenance or revision nightmares if you didn't use metaprogramming techniques</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725109396144652381" class="chatlog__message-container " data-message-id="725109396144652381">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So if you look at the program you're trying to make and see that the modeling tools of language X alright fit your target really well you're in good shape.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725109710226718742" class="chatlog__message-container " data-message-id="725109710226718742">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:07 PM">15:07</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You can use language X, and it's probably never going to generate the program you would have written by hand with an assembler, but you're willing to take that lossiness because writing the compressed thing and having the compiler decompress it means you can afford to maintain the program.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725109941144387676" class="chatlog__message-container " data-message-id="725109941144387676">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:08 PM">15:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The issue that I tend to find, is that you never know exactly what models would fit well ahead of time when you're doing any sort of experimental or research type work.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725110255708536943" class="chatlog__message-container " data-message-id="725110255708536943">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:09 PM">15:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Instead the language selection process is a lot more about if you happen to think - for probably no reason better than experience or observation - that a particular language has "really good" models that will surely be good enough for anything you might want.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725110851035463681" class="chatlog__message-container " data-message-id="725110851035463681">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:11 PM">15:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ultimately though, I think we're sort of stuck where this is never actually true. Some days the problem before you would be well suited to a model like a C/Odin/JAI/Rust whatever, but other times the task in front of you has a lot more in common with something else.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111050332143616" class="chatlog__message-container " data-message-id="725111050332143616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and sometimes you have a project that needs multiple things each needing a different model</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111116283510786" class="chatlog__message-container " data-message-id="725111116283510786">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">From there I guess you have three choices:
1. Accept the current range each language is capable of covering and live with that limitation - perhaps that's the way that's best
2. Try to make new languages that cover wider ranges
3. Try to go meta so that users can adapt the modeling tools more specifically to their problems</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725111151121399848" class="chatlog__message-container " data-message-id="725111151121399848">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">At least those are the three I can see.</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725111271590199376" class="chatlog__message-container " data-message-id="725111271590199376">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">scripting languages is a common solution for that</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725111144397930567" class="chatlog__message-container " data-message-id="725111144397930567">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah <span class="chatlog__markdown-mention" title="demetrispanos#5588">@demetrispanos</span> has elaborated at times on his plastics vs metals metaphor</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111278737293333" class="chatlog__message-container " data-message-id="725111278737293333">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">where programming in python for rapid prototyping, sketching out high-level design, etc is the flexible and cheap "plastic manufacturing" process</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111359628378142" class="chatlog__message-container " data-message-id="725111359628378142">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Different problems require different tools to solve them.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725111420840050821" class="chatlog__message-container " data-message-id="725111420840050821">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:13 PM">15:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am actually really happy with all the new languages coming about.</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725111500079104050" class="chatlog__message-container " data-message-id="725111500079104050">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and then lowering performance- or robustness-critical sections of code to C is the rigid but durable metal process</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725111682069954705" class="chatlog__message-container " data-message-id="725111682069954705">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:14 PM">15:14</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes but I think the problem that Allen is addressing is that the specific strengths and weaknesses of a given tool rarely fit the entire problem domain</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111745449951334" class="chatlog__message-container " data-message-id="725111745449951334">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Of the C/Odin/JAI/Rust list alone, I wouldn't use them all for the same things, even if they are of the imperative category.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111812202299444" class="chatlog__message-container " data-message-id="725111812202299444">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they're usually ideal for certain pieces of your problem domain, and you choose the tool that covers the majority or largest minority of your problem domain</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725111947414077440" class="chatlog__message-container " data-message-id="725111947414077440">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There is no silver bullet, even for a specific domain. This is nature of the problem, the intersection between humans, hardware, and the problem at hand.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725112031342231674" class="chatlog__message-container " data-message-id="725112031342231674">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">whereas if you could use multiple tools (programming languages in this case) as part of the same process without any friction, as well as being able to step outside of them and define meta-abstractions, you'd be in a much more advantageous position</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725112050467995709" class="chatlog__message-container " data-message-id="725112050467995709">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right. Usually if I split my problem down enough I can find a good tool for each problem, but we don't have a story that let's my one single actual problem be served by multiple tools at the same time.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112164804853790" class="chatlog__message-container " data-message-id="725112164804853790">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:16 PM">15:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Err I mean "I can find a good tool for each sub-problem"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112239182577686" class="chatlog__message-container " data-message-id="725112239182577686">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:17 PM">15:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Although sometimes I also feel I can't "find" one actually, and still have to make one.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725112484004102275" class="chatlog__message-container " data-message-id="725112484004102275">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, and the lack of a simple, robust and flexible common representation for all of these tools to target is a big problem</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112554644439101" class="chatlog__message-container " data-message-id="725112554644439101">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:18 PM">15:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/LLVM" target="_blank">llvm</a> is the closest we have, and it's not even close to meeting any of those criteria</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112593655529482" class="chatlog__message-container " data-message-id="725112593655529482">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:18 PM">15:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's also far too low-level for what I'm talking about</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725112937370484766" class="chatlog__message-container " data-message-id="725112937370484766">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">Although sometimes I also feel I can't "find" one actually, and still have to make one.
</div></div>And that's because we are <u>still</u> in the discovery phase of this discipline. No huge "truths" have been discovered and practiced for a long time yet. No traditions carrying wisdom. We are still having to discover the wheel ourselves all the time.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112963198878050" class="chatlog__message-container " data-message-id="725112963198878050">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:20 PM">15:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And this is the case for things like metaprogramming.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725112976138436742" class="chatlog__message-container " data-message-id="725112976138436742">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:20 PM">15:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The concept is old.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725113043847217223" class="chatlog__message-container " data-message-id="725113043847217223">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:20 PM">15:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But it's still one of those things which should be wielded carefully.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725113562741080176" class="chatlog__message-container " data-message-id="725113562741080176">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The fact that tools are usually pre-made for you (for practical reasons) means also that you don't have a lot of control over them. They're more black than white boxes. Which leads to a natural insulation - like in the previous example where binding a C library to Odin is not a smooth experience</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:27 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725113657499058267" class="chatlog__message-container " data-message-id="725113657499058267">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:22 PM">15:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Maybe it's worthwhile to identify little boxes that can be black</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725113819998978058" class="chatlog__message-container " data-message-id="725113819998978058">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:23 PM">15:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Not everybody is going to write a new compiler for each project</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725113831692566548" class="chatlog__message-container " data-message-id="725113831692566548">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">like in the previous example where binding a C library to Odin is not a smooth experience
</div></div>It's smoother than most other languages. <em>But</em> it's not as if it was programming in C or it automatically generated the bindings from the source code.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725113894791544843" class="chatlog__message-container " data-message-id="725113894791544843">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:23 PM">15:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And that's not going to be solved easily.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725113948860317756" class="chatlog__message-container " data-message-id="725113948860317756">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:23 PM">15:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">C and Odin are not actually that similar in terms of their type systems.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725113975896932443" class="chatlog__message-container " data-message-id="725113975896932443">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes - not meant as a criticism (I haven't tried myself)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725113988362403880" class="chatlog__message-container " data-message-id="725113988362403880">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I know.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725114648143200366" class="chatlog__message-container " data-message-id="725114648143200366">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:26 PM">15:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are many problems, and many not "ideal". There is the problem when using multiple languages (including meta-languages) to solve a collection of problems, since there is a high chance they will need to communicate with one another. And that communication can be very difficult.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:28 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725115157612724244" class="chatlog__message-container " data-message-id="725115157612724244">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So another reason I like to look at these things as compression is that it fits my intuition that there is never going to be a "huge truth" that covers all the problems you could ever end up researching. Yes the things we're researching today might be boiled down into a much better model, but the research will always be happening at the edges of what we know how to do.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725115375917727796" class="chatlog__message-container " data-message-id="725115375917727796">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even if there was a "huge truth", you will never reach the top of the hill.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725115475469795478" class="chatlog__message-container " data-message-id="725115475469795478">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:30 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Instead of trying to make a compression scheme for code (a language) that is fundamentally great enough to handle the future, I see it as more practical to embrace the fact that new models need to be easy to iterate on, hence why I don't shy away from metaprogramming.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725115822401650719" class="chatlog__message-container " data-message-id="725115822401650719">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:31 PM">15:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If we could rapidly build programming language extensions, or whole new programming languages (and solved the language mixing problem), then I might not see it as all that interesting to do "metaprogramming" as we do it today.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725116787498156113" class="chatlog__message-container " data-message-id="725116787498156113">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For me, the way to "experiment in metaprogramming" already exists, but is rarely done. You effectively just need to have a compiler for the language in your core library of that language. Coupled with the added benefit of RTTI in a language, this is the "goldmine".</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117064582397993" class="chatlog__message-container " data-message-id="725117064582397993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1-B2132.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="ratchetfreak#1181" data-user-id="269884325082693632">ratchetfreak</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">with some tweaking you can do that with java, it's classloading only looks for a binary blob and doesn't really care where it comes from</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117336129896590" class="chatlog__message-container " data-message-id="725117336129896590">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If a compiler was written as if it was to be used as a library, then we could do this really easily ANYWHERE. We'd only need the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Compiler#Front_end" target="_blank">frontend</a> (maybe up to the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Static_single-assignment_form" target="_blank">SSA</a> bit if you need to do a bit more analysis)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725117438940807179" class="chatlog__message-container " data-message-id="725117438940807179">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:37 PM">15:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But if you need simple introspection on the typed AST and other checker info tables, that is already damn useful.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117486936358993" class="chatlog__message-container " data-message-id="725117486936358993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not particularly convinced why RTTI is needed? I'm more like, we should have this RTI thing :-). I've tried for some time but I ended up thinking that types are not a good tool to "tag" things and do computation on them. Because using many types leads to incompatibilities and a lot of wrapping and unwrapping</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117584495869983" class="chatlog__message-container " data-message-id="725117584495869983">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">RTTI is the bootstrapping stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117589826830367" class="chatlog__message-container " data-message-id="725117589826830367">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it would be great to be able to produce that data (the RTI that I mean) by being able to treat types as values <em>at compile time</em></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725117702825574483" class="chatlog__message-container " data-message-id="725117702825574483">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't want to have to run a program, to generate the RTTI in order to run the metaprogrammer in order to compile the final program</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:40 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725117805879492618" class="chatlog__message-container " data-message-id="725117805879492618">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:39 PM">15:39</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">RTTI has a lot of uses!!!!</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725118339780706335" class="chatlog__message-container " data-message-id="725118339780706335">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:41 PM">15:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Most of the cases I have seen many people use their metaprogramming tools for are to generate lookup tables containing type information for that program.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725118420449886269" class="chatlog__message-container " data-message-id="725118420449886269">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:41 PM">15:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If that's part of the language already, it doesn't need to be a separate stage.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725118492990242941" class="chatlog__message-container " data-message-id="725118492990242941">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:42 PM">15:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And I mean, I want to use RTTI in the metaprogrammer itself, not just the final program</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725118601660596294" class="chatlog__message-container " data-message-id="725118601660596294">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Types aren't the only thing worth Introspecting on however.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725118733722320957" class="chatlog__message-container " data-message-id="725118733722320957">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But I'd argue you don't need to introspect more in your metaprogrammer itself.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725118983468089375" class="chatlog__message-container " data-message-id="725118983468089375">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:43 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I wouldn't agree with that. In fact, many editor features are literally introspection on much more than just types.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725119067609890897" class="chatlog__message-container " data-message-id="725119067609890897">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:44 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The editor IS the metaprogrammer, which is my point.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119132923723798" class="chatlog__message-container " data-message-id="725119132923723798">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:44 PM">15:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The metaprogrammer in my view is a compiler effectively, which you can modify the behaviour of.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119190897262644" class="chatlog__message-container " data-message-id="725119190897262644">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:44 PM">15:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So it can introspect the target code it is working on.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119256106238054" class="chatlog__message-container " data-message-id="725119256106238054">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:45 PM">15:45</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But the metaprogrammer itself probably does not need any more introspect beyond the RTTI of its internal types.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119630904918126" class="chatlog__message-container " data-message-id="725119630904918126">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:46 PM">15:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is that clearer?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725119725733937233" class="chatlog__message-container " data-message-id="725119725733937233">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:46 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You mean to say that no metaprogram ever would need to introspect on more than its types?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119787377754145" class="chatlog__message-container " data-message-id="725119787377754145">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:47 PM">15:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Probably)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119834492239943" class="chatlog__message-container " data-message-id="725119834492239943">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:47 PM">15:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Because I don't think I agree with that either, really.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725119845275926689" class="chatlog__message-container " data-message-id="725119845275926689">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am to say that you don't need a metaprogrammer to introspect your metaprogrammer.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725119894928097301" class="chatlog__message-container " data-message-id="725119894928097301">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:47 PM">15:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or at least I have not yet seen a case for this.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:47 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725119937156481066" class="chatlog__message-container " data-message-id="725119937156481066">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Why shouldn't the programmer make just the data that he needs and use that at runtime? Why must there be this RTTI system in the compiler/language which has a very fixed view what types are? There's literally a <em>type</em> called <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">TypeInfo</span> in many languages. And it might be a bad idea to depend on this type in the source code - this type is unlikely to contain the actually needed information, and it's not unlikely to change, and such changes are out of control for the user</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120031750357102" class="chatlog__message-container " data-message-id="725120031750357102">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:48 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess my point was to say that editors are the "original" metaprogram. And they have to worry about a lot more than types.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:48 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120064407207936" class="chatlog__message-container " data-message-id="725120064407207936">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:48 PM">15:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And editors themselves are applications and programs, and as such face the same problems that other programs do, thus requiring introspection in the same ways.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:48 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120257584267297" class="chatlog__message-container " data-message-id="725120257584267297">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And I am not disagreeing with your point, Ryan. Editors need to introspect a lot more than just types.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120317785243808" class="chatlog__message-container " data-message-id="725120317785243808">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hmm okay I might be misunderstanding then.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120373477212180" class="chatlog__message-container " data-message-id="725120373477212180">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:49 PM">15:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Honestly <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">metaprogrammer</span> might be throwing me off because I've always used the term <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">metaprogram</span> :P</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120430184202353" class="chatlog__message-container " data-message-id="725120430184202353">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It probably is.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120510760845404" class="chatlog__message-container " data-message-id="725120510760845404">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:50 PM">15:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It might be a "Billism" because the terminology doesn't exist yet.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120628461666345" class="chatlog__message-container " data-message-id="725120628461666345">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:50 PM">15:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A "metaprogrammer" is a program which analyses another program and generates new code for it.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120646354305026" class="chatlog__message-container " data-message-id="725120646354305026">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Gotcha. Right okay.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120710128697354" class="chatlog__message-container " data-message-id="725120710128697354">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:50 PM">15:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So, I think you know how Data Desk works, you're effectively saying that you wouldn't need introspection on a Data Desk custom layer?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725120710841729099" class="chatlog__message-container " data-message-id="725120710841729099">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In this case, the editor of Dion is a "metaprogrammer"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120778185474088" class="chatlog__message-container " data-message-id="725120778185474088">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:51 PM">15:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It introspects the language directly. It's a form of compiler.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725120960914522174" class="chatlog__message-container " data-message-id="725120960914522174">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:51 PM">15:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So a "metaprogrammer" in eyes is effectively a partial compiler.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121034109321307" class="chatlog__message-container " data-message-id="725121034109321307">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't know—I mean a "metaprogrammer" is just a program.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121052513927179" class="chatlog__message-container " data-message-id="725121052513927179">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It is!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121091068231700" class="chatlog__message-container " data-message-id="725121091068231700">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And as such, can require introspection as well.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121101319110688" class="chatlog__message-container " data-message-id="725121101319110688">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">And that communication can be very difficult.
</div></div>this is exactly the case for having a common, well-defined interop layer</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121118238670989" class="chatlog__message-container " data-message-id="725121118238670989">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But do you need a metaprogrammer for your metaprogrammer, dawg?</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="smile">
<img class="chatlog__emoji chatlog__emoji--small" alt="😄" src="files/1f604-6061B.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725121179328970794" class="chatlog__message-container " data-message-id="725121179328970794">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:52 PM">15:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's a serious question too <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121204440137819" class="chatlog__message-container " data-message-id="725121204440137819">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To put it simply yes, I think I do.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121243459747892" class="chatlog__message-container " data-message-id="725121243459747892">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And my answer is, probably not.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121314297479179" class="chatlog__message-container " data-message-id="725121314297479179">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I would agree with Allen. Compilers or partial compilers are very complicated programs and as such probably require the same things other complicated programs do.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725121420773949462" class="chatlog__message-container " data-message-id="725121420773949462">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:53 PM">15:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Like I don't see a <em>principled</em> difference between compilers and other complicated programs <em>in this respect</em>, is what I'm saying.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121489577443388" class="chatlog__message-container " data-message-id="725121489577443388">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But once the compiler is created (maybe with the aid of a metaprogrammer), do you still need a metaprogrammer to use it?</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:54 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121538382102618" class="chatlog__message-container " data-message-id="725121538382102618">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:54 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The reason I want meta-on-meta is that I want to glide my code freely along the spectrum of schedules when I might run it ("run-time" "compile-time" "pre-compile-time" "asset-pack" etc).</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725121632229916834" class="chatlog__message-container " data-message-id="725121632229916834">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:54 PM">15:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If there is ever a distinction between what a compiler, a metaprogrammer, and plain code are, then that can't happen.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:54 PM">(edited)</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="thumbsup">
<img class="chatlog__emoji chatlog__emoji--small" alt="👍" src="files/1f44d-B3F5F.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121739318755461" class="chatlog__message-container " data-message-id="725121739318755461">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:54 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I like to think of the whole spectrum of edit-build-run as one huge program.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725121791986499726" class="chatlog__message-container " data-message-id="725121791986499726">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:55 PM">15:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The edit program is probably the programmer's brain</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121836182142976" class="chatlog__message-container " data-message-id="725121836182142976">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think we are probably not actually disagreeing with one another here.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725121862841139266" class="chatlog__message-container " data-message-id="725121862841139266">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:55 PM">15:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the problem here is terminology.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725121998086471701" class="chatlog__message-container " data-message-id="725121998086471701">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The way I'm conceptualizing this is basically this way: Sometimes I reach the limits of my language, and I prefer it that way because my language should be simple enough for me to understand well, and I should have the ability to extend the language with my own models if possible. There is no reason to assume that can't happen in a compiler (or a "metaprogrammer") also.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:56 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725122160712220683" class="chatlog__message-container " data-message-id="725122160712220683">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 03:56 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">mp = metaprogrammer
1) mp#1 used to make a compiler
2) compiler is used in a mp#2
3) mp#2 is used to build program#1</div></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 03:56 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725122330279280750" class="chatlog__message-container " data-message-id="725122330279280750">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:57 PM">15:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(1) is two stages
(2) is one stage
(3) is two stages
but these are all separate paths.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725122513788600431" class="chatlog__message-container " data-message-id="725122513788600431">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:57 PM">15:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(1) is the "asset-pack
(2) is the "pre-compile-time"
(3) is the "compile time"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725122887379451904" class="chatlog__message-container " data-message-id="725122887379451904">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:59 PM">15:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I am not saying we cannot have a cyclic view of (1, 2, 3). In my example above, i have <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">mp#1</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">mp#2</span> but they are used to <u>produce</u> different things</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725123004220178432" class="chatlog__message-container " data-message-id="725123004220178432">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 03:59 PM">15:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For my normal project (3), I only use <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">mp#2</span>, and I would state that I don't use <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">mp#1</span> in that process</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725123028647804938" class="chatlog__message-container " data-message-id="725123028647804938">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:00 PM">16:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> Am I clearer now?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725123574809100358" class="chatlog__message-container " data-message-id="725123574809100358">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hmm. So I think I generally understand what you just said, but within this model what was your original point? That you wouldn't use an mp#3 to generate an mp#4?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725123753465348189" class="chatlog__message-container " data-message-id="725123753465348189">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">No. That in (3), I don't require using multiple <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">mp</span>s (or at least I have not required one yet)</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:03 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124013806059561" class="chatlog__message-container " data-message-id="725124013806059561">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You mean you wouldn't have two different model extensions?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124176129687563" class="chatlog__message-container " data-message-id="725124176129687563">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Let me think for a second to see if I grok what you mean</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124187085078659" class="chatlog__message-container " data-message-id="725124187085078659">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Because that seems a bit abstract, I guess I'm not sure what you mean; the line seems blurry.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124431445229708" class="chatlog__message-container " data-message-id="725124431445229708">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah I'll go ahead and say that I have no idea where we've ended up here <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725124506787512350" class="chatlog__message-container " data-message-id="725124506787512350">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:05 PM">16:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If I may back it up, I believe this started when Ryan threw out the idea of introspecting on more than just types.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124674715123733" class="chatlog__message-container " data-message-id="725124674715123733">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, introspection on more than types is good. AST, entities (named declarations), expressions, constants, etc. These are all really useful things.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725124712216133743" class="chatlog__message-container " data-message-id="725124712216133743">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:06 PM">16:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think I went straight the conclusion of that.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725124767883067452" class="chatlog__message-container " data-message-id="725124767883067452">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:06 PM">16:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you are doing that introspection, you are effectively using a compiler.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124911319744686" class="chatlog__message-container " data-message-id="725124911319744686">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hmm okay. Yeah I was specifically saying that in response to RTTI.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725124991116509254" class="chatlog__message-container " data-message-id="725124991116509254">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would like to interject quickly and focus on the issue with stages. Not sure if everybody is already agreeing on this, but the biggest issue with metaprogramming is when it is staged</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725125038587772929" class="chatlog__message-container " data-message-id="725125038587772929">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:08 PM">16:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I believe a practical build graph is not linear but DAG-shaped</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725125099908235314" class="chatlog__message-container " data-message-id="725125099908235314">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I.e. tools must be able to consume language A and produce A again.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:08 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725125249716322378" class="chatlog__message-container " data-message-id="725125249716322378">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:08 PM">16:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And it should be in a way that tools can be arbitrarily plugged into the build pipeline</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725125090928492634" class="chatlog__message-container " data-message-id="725125090928492634">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'll ask a question, have you used a language that has built-in RTTI support? (Rather than generating the RTTI yourself like in C(++))</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725125279542149146" class="chatlog__message-container " data-message-id="725125279542149146">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are HUGE advantages of me being able to do this:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">fmt.println(foo);</div>
and it just works on any machine with a simple command.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725125452120850547" class="chatlog__message-container " data-message-id="725125452120850547">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:09 PM">16:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't require the user having to set up a second build stage to generate the RTTI, and it's well defined and part of the language itself.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725125745667473418" class="chatlog__message-container " data-message-id="725125745667473418">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:10 PM">16:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This ability alone is extremely powerful, and has allowed me to create many powerful tools which in other instances require another build stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725125760351731762" class="chatlog__message-container " data-message-id="725125760351731762">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't know why you would assume that a hypothetical metaprogramming system requires setting up a second build stage</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725125785626869852" class="chatlog__message-container " data-message-id="725125785626869852">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:10 PM">16:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">versus handling it itself</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725125856967786586" class="chatlog__message-container " data-message-id="725125856967786586">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this seems to be a core disconnect in this conversation</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725125838768701463" class="chatlog__message-container " data-message-id="725125838768701463">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Wait...</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725125869277806594" class="chatlog__message-container " data-message-id="725125869277806594">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I was getting to that part <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725125935531163679" class="chatlog__message-container " data-message-id="725125935531163679">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ah, okay, continue <img loading="lazy" class="chatlog__emoji " alt="😅" title="sweat_smile" src="files\twemoji_1f605.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126192528752681" class="chatlog__message-container " data-message-id="725126192528752681">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Effectively, my vision is that your "metaprogrammer" is just a modified compiler. When it runs, it compiles the main project's code.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725126274867134485" class="chatlog__message-container " data-message-id="725126274867134485">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:12 PM">16:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There is a separation between the main project's code and the metaprogrammer's code (i.e your modified compiler).</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126456124112990" class="chatlog__message-container " data-message-id="725126456124112990">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but isn't this a staged model again? I mean the <em>separation</em></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:13 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126575460450355" class="chatlog__message-container " data-message-id="725126575460450355">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes. It's still a staged model.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126874598211656" class="chatlog__message-container " data-message-id="725126874598211656">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I think we should discuss picking apart several aspects of "stages".</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126946823995463" class="chatlog__message-container " data-message-id="725126946823995463">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I am assuming that the metaprogrammer is separate from main programmer</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725126985763913728" class="chatlog__message-container " data-message-id="725126985763913728">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Stages could mean I hit build button 1, then hit build button 2. If I don't change anything about [1] sometimes, I can skip it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127097588252724" class="chatlog__message-container " data-message-id="725127097588252724">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:16 PM">16:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Another aspect of stages is that they are ordered: stage 1, stage 2, stage 3</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127359375736863" class="chatlog__message-container " data-message-id="725127359375736863">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:17 PM">16:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And finally there's the idea that they create groups of code that either all run together or not. Sometimes I skip stage 1, but either I skip it or I don't, there is no in between.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127466787667969" class="chatlog__message-container " data-message-id="725127466787667969">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:17 PM">16:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So for instance if the idea of staging is to avoid the problem where all of everything gets recomputed every time, then I am in agreement that staging is important.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127662762328157" class="chatlog__message-container " data-message-id="725127662762328157">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:18 PM">16:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If we're talking about me, the programmer, specifying a build process with the order of stages, manually managing the scheduling for these stages, or manually defining the boundaries between them, then I think that's just not going as far as a metaprogramming system could go.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725127759101427723" class="chatlog__message-container " data-message-id="725127759101427723">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For me, a 1 stage build system is this:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin build foo.odin</div>
A two stage system in this
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin build metaprogrammer.odin
metaprogrammer foo.odin</div>
This is technically still two but simplified
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin run metaprogrammer.odin -- foo.odin</div>
And this is a two/three stage compiler
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin build metaprogrammer.odin
metaprogrammer foo-custom.odin -out:foo.odin
odin build foo.odin</div></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:21 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127895671898112" class="chatlog__message-container " data-message-id="725127895671898112">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:19 PM">16:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You could have a single stage for this, by having arbitrary compile time execution, but then the design of the language has to very specific.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725127933756440699" class="chatlog__message-container " data-message-id="725127933756440699">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:19 PM">16:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i was speaking about how ANY language could work.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725128040795078667" class="chatlog__message-container " data-message-id="725128040795078667">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">So for instance if the idea of staging is to avoid the problem where all of everything gets recomputed every time, then I am in agreement that staging is important.
</div></div>In general I think the work to re-build must be kept small. I believe this is not really related to staging per se</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725128116649066496" class="chatlog__message-container " data-message-id="725128116649066496">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:20 PM">16:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you can linearize a build process (and I hope that's possible) then you can always save work on re-build</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725128237432307754" class="chatlog__message-container " data-message-id="725128237432307754">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span> I agree, but would also say that just means you're redefining all your heavy work as not a "build" or you're just avoiding problems that require heavy pre-baking of anything.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725128516999315559" class="chatlog__message-container " data-message-id="725128516999315559">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And again, I am not disagree with anything you are stating.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725128679465812009" class="chatlog__message-container " data-message-id="725128679465812009">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I also think we are very much discussing within the model of <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">text -&gt; compiler -&gt; exe</span>, but that isn't necessarily the only model.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725128791722295396" class="chatlog__message-container " data-message-id="725128791722295396">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I was explicitly stating the current languages.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725128887108894861" class="chatlog__message-container " data-message-id="725128887108894861">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:23 PM">16:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But let's say you have the Dion approach.
AST -&gt; Editor -&gt; Exe</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725128904695742557" class="chatlog__message-container " data-message-id="725128904695742557">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:23 PM">16:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's still the same idea.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725128976850485278" class="chatlog__message-container " data-message-id="725128976850485278">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:23 PM">16:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A compiler is something that transforms from one language to another,</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129242718765156" class="chatlog__message-container " data-message-id="725129242718765156">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For example, you might have:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"> AST
/ | \
v v v
C C&lt;---C
| |
EXE /
| /
RUN</div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725129273870123069" class="chatlog__message-container " data-message-id="725129273870123069">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:24 PM">16:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Look at me making ASCII diagrams...</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="rofl">
<img class="chatlog__emoji chatlog__emoji--small" alt="🤣" src="files/1f923-1D049.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129282585755688" class="chatlog__message-container " data-message-id="725129282585755688">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And this is my point about terminology. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">build.bat</span> is not necessarily a one stage build system, it's just a trivial to use build system.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725129544712978514" class="chatlog__message-container " data-message-id="725129544712978514">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:25 PM">16:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Where <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">C</span> is compiler, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129572844175391" class="chatlog__message-container " data-message-id="725129572844175391">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ah yes correct, I forgot to specify that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725129593874415706" class="chatlog__message-container " data-message-id="725129593874415706">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:26 PM">16:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I didn't have enough room to write <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Compiler</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129743275655320" class="chatlog__message-container " data-message-id="725129743275655320">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So something is a "stage" in my mind if it's possible to run it and not any other stage, and it's not possible to break down into smaller stages.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129773365329934" class="chatlog__message-container " data-message-id="725129773365329934">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">AST -&gt; C -&gt; EXE -&gt; Run
|--&gt; C ----------^
| ^
|--&gt; C</div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129776557195285" class="chatlog__message-container " data-message-id="725129776557195285">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To me staging means a REQUIRED linearization of the build process. A staged build is not only less flexible in terms of building the project. It also puts heavy constraints on how the software is structured</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725129797797412924" class="chatlog__message-container " data-message-id="725129797797412924">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:26 PM">16:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">exactly <span class="chatlog__markdown-mention" title="Allen4th#9584">@Allen4th</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129805208486092" class="chatlog__message-container " data-message-id="725129805208486092">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">From that point of view "compile-time" is a stage "run-time" is a stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129864432189562" class="chatlog__message-container " data-message-id="725129864432189562">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that can be very gnarly to use</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725129940843888730" class="chatlog__message-container " data-message-id="725129940843888730">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:27 PM">16:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">like, if you want to run some metaprogramming on that type you quickly defined in the middle of your file</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129971064111118" class="chatlog__message-container " data-message-id="725129971064111118">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For me, "run time" of the final thing is not a stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129979238809680" class="chatlog__message-container " data-message-id="725129979238809680">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">then you will have to move it out to a separate file to do that</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725129996024414248" class="chatlog__message-container " data-message-id="725129996024414248">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are separate questions such as <em>what system/who</em> is responsible for scheduling the runs of each stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725130126605680712" class="chatlog__message-container " data-message-id="725130126605680712">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-pre chatlog__markdown-pre--inline">build.bat</span> is: the programmer schedules the run of all these at once with a single "button" and statically linearizes them.</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725130094464598098" class="chatlog__message-container " data-message-id="725130094464598098">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">AST -&gt; C -&gt; EXE -&gt; RUN</div>
For me that is <em>one stage</em> build system still. Because there is only one use of a "~C"</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:28 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725130340355539019" class="chatlog__message-container " data-message-id="725130340355539019">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A two stage would be this:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">AST#1 -&gt; C -&gt; EXE#1
AST#2 -&gt; EXE#1 -&gt; EXE#2</div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130127503261807" class="chatlog__message-container " data-message-id="725130127503261807">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The thing that worries me about <em>forcing</em> the separation of stages is that when we write a metaprogram, we specify data, and in my experience data is rarely useful in only one place.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725130303219302420" class="chatlog__message-container " data-message-id="725130303219302420">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:28 PM">16:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think a lot of the time it can fall into buckets cleanly, so certainly not <em>all</em> data is shared <em>everywhere</em>, but there are <em>some</em> connections.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130501509349396" class="chatlog__message-container " data-message-id="725130501509349396">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can see why you might not want to include final run-time as a stage <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span>, but I think it's a useful way to phrase things. Going back to the much early talk about filling in data tables, and whether you choose to do that at compile-time run-time or some "pre-compile-time", it's clear that run-time is an option for solving problems.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725130627229417624" class="chatlog__message-container " data-message-id="725130627229417624">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:30 PM">16:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So when analyzing where to solve a problem, i.e. what stage to put it in, I find it more useful to consider that on the table i.e. call it a stage.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130633830989824" class="chatlog__message-container " data-message-id="725130633830989824">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:30 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The reason I don't include it is purely because of what people custom think of it. The run stage is not <em>building</em>, it is already <em>built</em></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725130742291759205" class="chatlog__message-container " data-message-id="725130742291759205">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:30 PM">16:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In the building stage(s), the purpose is to <em>build</em> [compile] the program.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130836449689692" class="chatlog__message-container " data-message-id="725130836449689692">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right and I'm arguing, specifically, that that rigid view isn't helpful <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src="files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130927264759888" class="chatlog__message-container " data-message-id="725130927264759888">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I personally don't view it that as being at all rigid <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725130958256472134" class="chatlog__message-container " data-message-id="725130958256472134">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:31 PM">16:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But rather "that's how it works"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725130994784665611" class="chatlog__message-container " data-message-id="725130994784665611">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's the idea that there's a build time that's special.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725131073536786492" class="chatlog__message-container " data-message-id="725131073536786492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:32 PM">16:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But anything you do there could be done at run time. And vice versa anything you do at run time could be done at compile time.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131171775905843" class="chatlog__message-container " data-message-id="725131171775905843">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">And vice versa anything you do at run time could be done at compile time.
</div></div>And that's where I disagree.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725131266407530551" class="chatlog__message-container " data-message-id="725131266407530551">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:32 PM">16:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If it could be done at "compile time", there would be no need for it to be done at "run time".</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131271742685289" class="chatlog__message-container " data-message-id="725131271742685289">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean it depends on your language I suppose, and if you count pre-compile-time as an extension of compile time.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131540794966086" class="chatlog__message-container " data-message-id="725131540794966086">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:33 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think we should use "build" here to mean "everything that needs to be done until the final result of the computation is produced". Like displaying an image on screen or whatever. Because ultimately that's what we're interested in</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725131625700261919" class="chatlog__message-container " data-message-id="725131625700261919">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:34 PM">16:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are many orders of the individual steps that are needed to achieve producing the computation, but some data dependencies put constraints on the way that we can order things</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:34 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131651679518720" class="chatlog__message-container " data-message-id="725131651679518720">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:34 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The purpose of a program is to transform data into different forms of data.
When creating a program, you use another "program" to create it. The code you give (be it text or AST or whatever) is your input data, you then pass it to a program (the compiler) to transform it into the output data.
I don't see how any of this is "rigid". It's how all of this works</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131850032611339" class="chatlog__message-container " data-message-id="725131850032611339">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But when programmers create code to transform data, they are also creating data.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725131868688744569" class="chatlog__message-container " data-message-id="725131868688744569">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So a build system is effectively "a process that uses programs to convert input data into a built product"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725131929929646092" class="chatlog__message-container " data-message-id="725131929929646092">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:35 PM">16:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span> No disagreement there.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725131986120998923" class="chatlog__message-container " data-message-id="725131986120998923">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:35 PM">16:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's literally what I just wrote.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:36 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132307392102461" class="chatlog__message-container " data-message-id="725132307392102461">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well my point is that code is not inherently special and could be transformed at any stage after it is created.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132316103409764" class="chatlog__message-container " data-message-id="725132316103409764">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's rigid to assume that's how it has to work.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132335376367696" class="chatlog__message-container " data-message-id="725132335376367696">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So your build system actually uses run-time as part oft he build process! <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132431589638195" class="chatlog__message-container " data-message-id="725132431589638195">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="Allen4th#9584">@Allen4th</span> How else could it work? That's literally what computers do.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132488082456628" class="chatlog__message-container " data-message-id="725132488082456628">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:37 PM">16:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Data -&gt; program -&gt; Other data</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132499973570561" class="chatlog__message-container " data-message-id="725132499973570561">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:37 PM">16:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Code == data</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132547264217098" class="chatlog__message-container " data-message-id="725132547264217098">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:37 PM">16:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Code -&gt; program -&gt; other code</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132651178098730" class="chatlog__message-container " data-message-id="725132651178098730">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes I agree with that principle.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132699207204907" class="chatlog__message-container " data-message-id="725132699207204907">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:38 PM">16:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's not the same thing as saying compile-time != run-time</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132725639708744" class="chatlog__message-container " data-message-id="725132725639708744">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:38 PM">16:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">They are both <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">-&gt; program -&gt;</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725132942002749490" class="chatlog__message-container " data-message-id="725132942002749490">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:39 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For me:
Run Time == RUNNING OF PRODUCT
Compile Time == BUILDING OF PRODUCT</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725132983404724274" class="chatlog__message-container " data-message-id="725132983404724274">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:39 PM">16:39</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Both <em>run</em></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725133101054951425" class="chatlog__message-container " data-message-id="725133101054951425">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:40 PM">16:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And to pre-empt your next point:</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725133107472105513" class="chatlog__message-container " data-message-id="725133107472105513">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Sure, I agree with that as being the terminology we tend to use.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725133194260643910" class="chatlog__message-container " data-message-id="725133194260643910">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Why not have the compile time stage run code as if it was a run time stage?</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:40 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725133241073270814" class="chatlog__message-container " data-message-id="725133241073270814">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:40 PM">16:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Correct?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725133433449480192" class="chatlog__message-container " data-message-id="725133433449480192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:41 PM">16:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or....</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:41 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725133497899155556" class="chatlog__message-container " data-message-id="725133497899155556">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean I agree with that, but it's not exactly the point I'm driving at.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725133538441166898" class="chatlog__message-container " data-message-id="725133538441166898">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Then could you explain further?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725133568384172044" class="chatlog__message-container " data-message-id="725133568384172044">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:41 PM">16:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because this is where I am confused.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725134059050893332" class="chatlog__message-container " data-message-id="725134059050893332">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:43 PM">16:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Because if your framing is that "compile time" is just another form of "run time" but for your code, sure.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134127569043467" class="chatlog__message-container " data-message-id="725134127569043467">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:44 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Sure. What I'm interested in is looking at, given any computation you want to complete:
When can you do it? - You can't finish it until the input information is available
How often can you afford to do it?
How often do you change the inputs?
Can you (and how) do you maintain cached results?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725134248314404916" class="chatlog__message-container " data-message-id="725134248314404916">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:44 PM">16:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Certain computations have to be at "run time" because they are downstream of data the user will be inputing.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134266941571216" class="chatlog__message-container " data-message-id="725134266941571216">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:44 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Sure.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134306414166077" class="chatlog__message-container " data-message-id="725134306414166077">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:44 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Besides that there's nothing different about any "stage"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134464539426908" class="chatlog__message-container " data-message-id="725134464539426908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:45 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Okay.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134573532610673" class="chatlog__message-container " data-message-id="725134573532610673">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:45 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hence, I see each stage as essentially a cache leading up to a final result in the final stage where the user is served a particular computation.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725134846501978206" class="chatlog__message-container " data-message-id="725134846501978206">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:46 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So your argument is that theoretically, everything could be done in one swoop at "compile time", but that is useful, so we split up the "compile time" bit into different stages to aid us. Where these different stages are ran in particular orders with different frequencies.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135010541338657" class="chatlog__message-container " data-message-id="725135010541338657">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah basically.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135038756159578" class="chatlog__message-container " data-message-id="725135038756159578">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Okay, that's what I've been saying then <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725135125221736470" class="chatlog__message-container " data-message-id="725135125221736470">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:48 PM">16:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Stupid English language</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135136345161748" class="chatlog__message-container " data-message-id="725135136345161748">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:48 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The only other thing I'm saying is that you could also do a lot of stuff at run time that we usually pull into the compile time.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725135275457773679" class="chatlog__message-container " data-message-id="725135275457773679">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:48 PM">16:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For instance even if you don't have metaprogramming a modern language probably evaluates a bunch of constant expressions (does the computations ahead of time) rather than export the symbolic representation of the unfinished expressions for the run time.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135383079419976" class="chatlog__message-container " data-message-id="725135383079419976">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would agree to that too. There are different costs to take into account, and sometimes having it at run time rather than compile time is a lot better, e.g. it's better for compile times (when developing)</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:49 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135406244560998" class="chatlog__message-container " data-message-id="725135406244560998">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Flip-side: we sometimes build tables at init that will be the same every time simply because it doesn't cost much and is easier to maintain.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725135584129056779" class="chatlog__message-container " data-message-id="725135584129056779">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:49 PM">16:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Anyway that's it. In a nutshell run-time is about as much a stage as everything else.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135618560229417" class="chatlog__message-container " data-message-id="725135618560229417">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">All my point was that making something that does "metaprogramming" is effectively just writing a custom compiler, which you then use to be the "compile time" stuff.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725135777826209822" class="chatlog__message-container " data-message-id="725135777826209822">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:50 PM">16:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And yes, I agree to that argument too.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135804795584583" class="chatlog__message-container " data-message-id="725135804795584583">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, I'm not disagreeing with any of that. I'm expanding on my notion that a compile-time run-time distinction doesn't strike me as being as helpful as a lot of others seem to think.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725135891873660950" class="chatlog__message-container " data-message-id="725135891873660950">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:51 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it's useful to know where the <em>costs</em> of the decisions reside.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:51 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136008949006387" class="chatlog__message-container " data-message-id="725136008949006387">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:51 PM">16:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">e.g. do you generate the lookup table whilst compiling or do you generate it on the fly (e.g. at the start) when the final program runs?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136053786378340" class="chatlog__message-container " data-message-id="725136053786378340">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:51 PM">16:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are advantages and disadvantages to both of them.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:51 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725136097725775903" class="chatlog__message-container " data-message-id="725136097725775903">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:51 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but that's introducing sort of a staging, because you have to build the "metaprogrammer" first before you can build anything that depends only on small parts of the metaprogrammer. Maybe better phrased, a separate compiler introduces a very coarse-grained staging</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136180445708288" class="chatlog__message-container " data-message-id="725136180445708288">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:52 PM">16:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">of course you can opt to write multiple metaprogrammers for more fine-grained staging</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725136233478750258" class="chatlog__message-container " data-message-id="725136233478750258">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">100% agree. I don't mean to blur the line as if it doesn't matter where you put things, I just mean to say they aught to be conceptualized as both being "just computations" that need to happen, and that there may be more ways to organize things than just the basic "build" "run"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725136251904196632" class="chatlog__message-container " data-message-id="725136251904196632">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span> Correct. But if the metaprogrammer is "built" and never modified (i.e. "baked"), then it's just a new compiler.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725136349291741195" class="chatlog__message-container " data-message-id="725136349291741195">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but I don't find that very practical. That's hardly "metaprogramming" anymore to me</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725136378953859173" class="chatlog__message-container " data-message-id="725136378953859173">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's just making a new language maybe</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725136352617824286" class="chatlog__message-container " data-message-id="725136352617824286">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Then I 100% agree already <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg">, Allen</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:53 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725136420859281495" class="chatlog__message-container " data-message-id="725136420859281495">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's metaprogramming, <span class="chatlog__markdown-mention" title="jfs#4668">@jfs</span></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136577654816779" class="chatlog__message-container " data-message-id="725136577654816779">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:53 PM">16:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A compiler is just something that transfers one language into another language, be it C into <a class="inserted-after" href="https://en.wikipedia.org/wiki/Machine_code" target="_blank">machine code</a> or Java into <a class="inserted-after" href="https://en.wikipedia.org/wiki/Bytecode" target="_blank">bytecode</a></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136687096922123" class="chatlog__message-container " data-message-id="725136687096922123">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:54 PM">16:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Generating new code from other code is effectively a new language.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725136835373826120" class="chatlog__message-container " data-message-id="725136835373826120">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:54 PM">16:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It might not be something "new", but it's technically not the standard language; it cannot be used by the default compiler.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137026659254353" class="chatlog__message-container " data-message-id="725137026659254353">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:55 PM">16:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So maybe this is my general idea:
Writing a metaprogrammer is writing a custom compiler
Using a metaprogrammer is using a custom compiler
A metaprogrammer is a custom compiler</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:55 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137060859609110" class="chatlog__message-container " data-message-id="725137060859609110">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Okay yeah I don't actually see any disagreement :)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137080673370143" class="chatlog__message-container " data-message-id="725137080673370143">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137107349143552" class="chatlog__message-container " data-message-id="725137107349143552">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:55 PM">16:55</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Told you terminology confusion <img loading="lazy" class="chatlog__emoji " alt="😛" title="stuck_out_tongue" src="files\twemoji_1f61b.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137252455415848" class="chatlog__message-container " data-message-id="725137252455415848">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:56 PM">16:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Because this is actually quite a new field, if you don't realise it.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137279794020472" class="chatlog__message-container " data-message-id="725137279794020472">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:56 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I agree with Allen's point that there is more than just "build" and "run", though. The editor <em>is</em> running in one of these stages, which is "edit time"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137393786552382" class="chatlog__message-container " data-message-id="725137393786552382">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:57 PM">16:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't think we disagree there, just a comment.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137440137936918" class="chatlog__message-container " data-message-id="725137440137936918">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And in the case of the "editor", is a form of "compiler".</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137512133296169" class="chatlog__message-container " data-message-id="725137512133296169">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:57 PM">16:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Which is both "compile time" and "run time" depending on the reference frame.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137527316545576" class="chatlog__message-container " data-message-id="725137527316545576">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right—where the <em>human</em> is doing the compilation</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:57 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137554289983540" class="chatlog__message-container " data-message-id="725137554289983540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:57 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Exactly.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725137667762815047" class="chatlog__message-container " data-message-id="725137667762815047">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:58 PM">16:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's quite an amazing thing to realize once you understand all this. It's really simple, but overlooked if not known.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 04:59 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137904573087755" class="chatlog__message-container " data-message-id="725137904573087755">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yet again, we are all compressing information in our brains that is itself about compression!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137950702174209" class="chatlog__message-container " data-message-id="725137950702174209">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yo dawg!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725137993467297803" class="chatlog__message-container " data-message-id="725137993467297803">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 04:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><img loading="lazy" class="chatlog__emoji chatlog__emoji--large" alt="😆" title="laughing" src="files\twemoji_1f606.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138093673414658" class="chatlog__message-container " data-message-id="725138093673414658">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 04:59 PM">16:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We have to go deeper!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725138176770965575" class="chatlog__message-container " data-message-id="725138176770965575">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We cannot deal with all of reality, we must use and build models of reality in order interpret reality.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138251068997644" class="chatlog__message-container " data-message-id="725138251068997644">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:00 PM">17:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To interpret anything requires having a model <em>of</em> interpretation.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:00 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138292437155850" class="chatlog__message-container " data-message-id="725138292437155850">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:00 PM">17:00</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">DUUUDE</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138419751190549" class="chatlog__message-container " data-message-id="725138419751190549">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:01 PM">17:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And we need to realize what is relevant to the task at hand.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138464927907922" class="chatlog__message-container " data-message-id="725138464927907922">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:01 PM">17:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is the "compression" aspect.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725138470770835496" class="chatlog__message-container " data-message-id="725138470770835496">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">alright where did all the shrooms g-</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138475892080672" class="chatlog__message-container " data-message-id="725138475892080672">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:01 PM">17:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">BILL</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725138513036836905" class="chatlog__message-container " data-message-id="725138513036836905">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The relevance realization.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725138517495119982" class="chatlog__message-container " data-message-id="725138517495119982">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">not again</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725138728422735932" class="chatlog__message-container " data-message-id="725138728422735932">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a href="https://www.youtube.com/watch?v=G2jUhnCU9iA" target="_blank">https://www.youtube.com/watch?v=G2jUhnCU9iA</a></span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:02 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725138956890538095" class="chatlog__message-container " data-message-id="725138956890538095">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:03 PM">17:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Anyways, I am not sure if this is what you were suggesting earlier Bill, but basically the existing pipeline of programming environments requires us to "bucket" our code into these stages, and I think that is potentially harmful.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725139118819901520" class="chatlog__message-container " data-message-id="725139118819901520">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:03 PM">17:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And I think this is what is often meant by letting code "flow" between compile time and run time.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725139149623001138" class="chatlog__message-container " data-message-id="725139149623001138">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I personally don't think it is harmful, necessarily, but important to note where things lie.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725139296574504982" class="chatlog__message-container " data-message-id="725139296574504982">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But I also think that compiling code shouldn't imply it cannot be used in other stages.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725139456268435532" class="chatlog__message-container " data-message-id="725139456268435532">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:05 PM">17:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Like if I compile some code that runs for some entities in my game, maybe I can select those entities and see the code being rendered as it runs.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:06 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725139477080834089" class="chatlog__message-container " data-message-id="725139477080834089">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:05 PM">17:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean in general this extends to debuggers in general.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725139624124612619" class="chatlog__message-container " data-message-id="725139624124612619">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="gingerBill#9999" data-user-id="239738952779563008">gingerBill</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Here's a simple example:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin build foo.odin -out:res.exe
res.exe foo.odin</div>
or
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">odin run foo.odin -- foo.odin</div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725139677471965274" class="chatlog__message-container " data-message-id="725139677471965274">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:06 PM">17:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You are passing your original code into the program that built it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725139689761406977" class="chatlog__message-container " data-message-id="725139689761406977">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:06 PM">17:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Now that's meta <img loading="lazy" class="chatlog__emoji " alt="😉" title="wink" src="files\twemoji_1f609.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725139822544552008" class="chatlog__message-container " data-message-id="725139822544552008">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Haha, yeah I think that is what I mean, basically</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725140369120952442" class="chatlog__message-container " data-message-id="725140369120952442">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:08 PM">17:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So I just think that even if the pipeline <em>looks like</em> this:
<span class="chatlog__markdown-pre chatlog__markdown-pre--inline">AST -&gt; Compiler -&gt; EXE</span>
It very well might actually look like this:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight"> _________________
/ v
AST -&gt; Compiler -&gt; EXE
^ ^
\_______/</div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725140772546019419" class="chatlog__message-container " data-message-id="725140772546019419">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:10 PM">17:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I've really got to stop it with these ASCII diagrams.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725141064989540383" class="chatlog__message-container " data-message-id="725141064989540383">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e5e2a49a0e3cc3c43b4b79168dcb4da1-B0325.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="Allen4th#9584" data-user-id="273134589000810496">Allen4th</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Not to mention that if your editor is pretty close to the <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">AST</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Compiler</span> then you can add in:
<div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">AST &lt;-&gt; Human
^ ^
| /
v v
Compiler</div></span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="open_mouth">
<img class="chatlog__emoji chatlog__emoji--small" alt="😮" src="files/1f62e-B0B43.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
<div class="chatlog__reaction" title="regional_indicator_d">
<img class="chatlog__emoji chatlog__emoji--small" alt="🇩" src="files/1f1e9-F2566.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725141214822793337" class="chatlog__message-container " data-message-id="725141214822793337">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:12 PM">17:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I don't know, I could go for some more ASCII diagrams in my life personally.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725141474911715380" class="chatlog__message-container " data-message-id="725141474911715380">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah... I don't know that I can justify making them given the fact that I have a drawing tablet on my desk also :/</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:13 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725143167430688828" class="chatlog__message-container " data-message-id="725143167430688828">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ultimately a build process is something that you should be able to describe as a DAG, with a fixed and well understood number of build steps as vertices, <span class="chatlog__markdown-mention" title="ryanfleury#4528">@ryanfleury</span></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725143338583457935" class="chatlog__message-container " data-message-id="725143338583457935">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So if there is recursion between <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">AST</span> and <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Compiler</span> in your diagram, I think that means that you could split up <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">AST</span> into smaller partitions. I.e. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">AST</span> is not a proper build step.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725143578971603014" class="chatlog__message-container " data-message-id="725143578971603014">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:21 PM">17:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it absolutely should be a pipeline. Or well, a DAG. I guess that can be viewed as a pipeline too. Using topological sort</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-725143326105403402" class="chatlog__message-container " data-message-id="725143326105403402">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess the thing that throws me off is that it isn't really a "build process", it's just a "computation pipeline". What we describe as "building" in C is really just a certain subset of computations.</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:21 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725143754872193034" class="chatlog__message-container " data-message-id="725143754872193034">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right. I think of it as some ultra data-oriented parallel pipeline in a game engine or something, where you have some tasks with some dependencies, and you make a dependency graph to solve for what can be done in parallel</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725143923068108850" class="chatlog__message-container " data-message-id="725143923068108850">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:23 PM">17:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In principle it is no different, really, it's just the classes of computations you're dealing with in compilers/metaprogramming is different than those you are dealing with in a game.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725143995256406076" class="chatlog__message-container " data-message-id="725143995256406076">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:23 PM">17:23</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But it's still fundamentally a set of data transforms that depend on the output of some other data transforms.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144238680965162" class="chatlog__message-container " data-message-id="725144238680965162">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes. As is all computing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144463717957662" class="chatlog__message-container " data-message-id="725144463717957662">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My resumee of sorts is that metaprogramming should be done in a way that doesn't put too many constraints on the ordering of the build steps. Because that might require rearchitecting the software project to accomdate new metaprogramming</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:25 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-725144440217403395" class="chatlog__message-container " data-message-id="725144440217403395">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure you'd really describe it as a DAG</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144489978757123" class="chatlog__message-container " data-message-id="725144489978757123">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there might be cycles, certainly</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144593519345737" class="chatlog__message-container " data-message-id="725144593519345737">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Everything is a DAG <span class="chatlog__markdown-mention" title=".bmp#5134">@.bmp</span> . Your life is a DAG</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144665820495984" class="chatlog__message-container " data-message-id="725144665820495984">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/8bbce81d74ba142434988d9baee7f26e-1DC70.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title=".bmp#5134" data-user-id="327294362134511619">.bmp</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><video autoplay muted loop src="files/wow-oh.mp4" width="320"></video>
haha I see what you mean though, you can decompose the "conceptual" graph into an acyclic one if you're strict about discrete steps</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725144932364320860" class="chatlog__message-container " data-message-id="725144932364320860">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3-FB033.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="jfs#4668" data-user-id="553229754027868173">jfs</span>
<span class="chatlog__timestamp">Jun 23, 2020 05:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There might be a cycle in your code, but each time you execute the same instruction again, you're doing (hopefully) new work. That's the sense by which I mean "it should be possible to describe your build as a DAG"</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:32 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725145073695850497" class="chatlog__message-container " data-message-id="725145073695850497">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:27 PM">17:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so in a sense that is a truism and not very interesting</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725145149398843452" class="chatlog__message-container " data-message-id="725145149398843452">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:27 PM">17:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What I mean though is that it should be a DAG that is meaningful and insightful to humans</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725145232361914398" class="chatlog__message-container " data-message-id="725145232361914398">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:28 PM">17:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you should be able to understand precisely how the build goes</span>
<span class="chatlog__edited-timestamp" title="23-Jun-20 05:28 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725145453313917038" class="chatlog__message-container " data-message-id="725145453313917038">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:29 PM">17:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yep</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-725147008196673628" class="chatlog__message-container " data-message-id="725147008196673628">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="23-Jun-20 05:35 PM">17:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Another way by which you can turn a perceived loop between 2 or more things into a linear sequence is by looking at them as a single unit. I.e. you can zoom in and also <em>out</em>.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725279161538576384" class="chatlog__message-container " data-message-id="725279161538576384">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/e666f2aa4fa50eade7484de6a45639dc-A5D0D.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(52, 152, 219)" title="ryanfleury#4528" data-user-id="137051765328576512">ryanfleury</span>
<span class="chatlog__timestamp">Jun 24, 2020 02:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>End of Fishbowl Day 2, thanks everyone for participating!</strong>
If you have an idea for a Fishbowl conversation, throw it in <span class="chatlog__markdown-mention">#network-meta</span> or DM me!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-725331436965593099" class="chatlog__message-container " data-message-id="725331436965593099">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(250, 186, 71)" title="bvisness#0001" data-user-id="132715550571888640">bvisness</span>
<span class="chatlog__timestamp">Jun 24, 2020 05:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">If you want to read the whole conversation from the beginning, check the pinned messages!</span>
</div>
</div>
</div>
</div>
</div>
</div>