hmn/src/templates/src/fishbowls/oop/OOP.html

12127 lines
494 KiB
HTML

<div class="chatlog">
<!-- Emojis by Twitter's Twemoji https://twemoji.twitter.com/ -->
<div class="chatlog__message-group">
<div id="chatlog__message-container-980153084175056936" class="chatlog__message-container " data-message-id="980153084175056936">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980152876846428221')">
<strong>Topic:</strong> What, if anything, is OOP? </span>
</div>
</div>
<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">May 28, 2022 09:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Welcome to yet another fishbowl, everyone! Just setting things up here. The main conversation is here in this thread, and the <span class="chatlog__markdown-mention">#fishbowl-audience</span> conversation starts here: <a href="https://discord.com/channels/239737791225790464/708458209131757598/980155512412864552" onclick="scrollToMessage(event, '980155512412864552')">https://discord.com/channels/239737791225790464/708458209131757598/980155512412864552</a>
The pinned messages are some "checkpoints" in the discussion; chapter markers of sorts. Check them out if there's a specific aspect of the discussion you'd like to see.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980153447724752996" class="chatlog__message-container " data-message-id="980153447724752996">
<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">May 28, 2022 09:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Welcome, everyone!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980153487885221939" class="chatlog__message-container " data-message-id="980153487885221939">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Hi!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980153935820120064" class="chatlog__message-container " data-message-id="980153935820120064">
<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">May 28, 2022 10:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So, this fishbowl is a long time coming. Since the dawn of the network, many people have asked the question: Is object-oriented programming bad, or what?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980153986726395985" class="chatlog__message-container " data-message-id="980153986726395985">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:02 AM">10:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That is, unfortunately, not a very nuanced question. <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src=".\files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154140355334215" class="chatlog__message-container " data-message-id="980154140355334215">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:02 AM">10:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Our conversations about OOP often veer in a lot of different directions, and the subject is hard to discuss productively because it means so many different things to different people.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154514285944872" class="chatlog__message-container " data-message-id="980154514285944872">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:04 AM">10:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There are many different ideas that are bundled into the modern concept of "object-oriented programming". There are also many languages that have taken on these ideas with different decisions and tradeoffs. Our goal in this fishbowl is to break this subject down and discuss these different concepts with more nuance.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154690719338496" class="chatlog__message-container " data-message-id="980154690719338496">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:04 AM">10:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To that end, we're doing things just a little bit differently for this one. Each of our esteemed participants have picked a particular aspect of "OOP" to present, and we'll be working through those over the course of the conversation here.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154730279993365" class="chatlog__message-container " data-message-id="980154730279993365">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:04 AM">10:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">On that note, let me introduce our participants:</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154750769197117" class="chatlog__message-container " data-message-id="980154750769197117">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:05 AM">10:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">- me (hi)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980154968675852288" class="chatlog__message-container " data-message-id="980154968675852288">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:05 AM">10:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">- <span class="chatlog__markdown-mention" title="demetrispanos#5588">@demetrispanos</span>, general wise elder of the community with particular expertise in machine learning and artificial intelligence</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980155036304810004" class="chatlog__message-container " data-message-id="980155036304810004">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:06 AM">10:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">- <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span>, creator of the Odin programming language</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980155241871839282" class="chatlog__message-container " data-message-id="980155241871839282">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:07 AM">10:07</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">- <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span>, creator of creative and very low-level programming systems / operating systems such as Mu and Teliva (look them up!)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980155512496746516" class="chatlog__message-container " data-message-id="980155512496746516">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:08 AM">10:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">- <span class="chatlog__markdown-mention" title="SirWhinesalot#7124">@SirWhinesalot</span>, a community member whose comments were instrumental to the planning process for this fishbowl (if there are projects you've worked on that I'm not aware of, let me know and I'll update this introduction <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-980155558898315365" class="chatlog__message-container " data-message-id="980155558898315365">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">none public <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src=".\files\twemoji_1f642.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980155665836294155" class="chatlog__message-container " data-message-id="980155665836294155">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:08 AM">10:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but my expertise is in Domain-Specific Languages and Constraint Solving</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980155695297101925" class="chatlog__message-container " data-message-id="980155695297101925">
<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">May 28, 2022 10:08 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="thumbsup" src=".\files\twemoji_1f44d.svg"></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980155971508781077" class="chatlog__message-container " data-message-id="980155971508781077">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:09 AM">10:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Before we get into the various modern conceptions of OOP, I think it would be good to take a look back at the history of object-oriented programming, and the path that we took to get to where we are today. <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> has graciously volunteered to walk us through that history, so - take it away, Kartik!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980156180724875324" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980156180724875324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is this thing on? Ok, let me paste in some prepared remarks. A quick, opinionated timeline of the major ideas that make up OO.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980156237163421726" class="chatlog__message-container " data-message-id="980156237163421726">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:10 AM">10:10</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">1958-1966: A few different people gradually come up with the notion of structured data. Conventions for managing compound data made of multiple words in memory. If you have two points, you want their x and y coordinates close together and in the same relative order. Seems obvious, but wasn't! See <a href="http://akkartik.name/sketchpad-oo.png" target="_blank">http://akkartik.name/sketchpad-oo.png</a> from the Sketchpad thesis [1].
1960-1962: Ivan Sutherland works on Sketchpad. It presages many OO ideas, but they're all in the programmer's mind and prose (thesis) because the code is all machine code.
1961-1962: Simula provides language support for many OO ideas: objects, classes, inheritance, dispatch based on the precise class of an object (virtual methods).[2]
1960-1975: Data first. This was mostly a mindset thing, but led eventually to notation like <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">obj.method</span>. Had spread fairly wide by around 1975, when Fred Brooks said, "show me your code and I'll be mystified. Show me your data structures and the code will be obvious." [3]
1973-1975: Abstract data types by Barbara Liskov. Ignore internal details of how objects are laid out in memory. Focus instead on a small vocabulary of operations that can be performed using them. Interfaces, basically.[4]
1966-1975: Alan Kay coins OO after working on Smalltalk. (The first chapter of <a href="http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html" target="_blank">http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html</a> is better than my history above.) "Did not have C++ in mind." However, we're only halfway done.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 10:12 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980156287075618816" class="chatlog__message-container " data-message-id="980156287075618816">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:11 AM">10:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">1970-1975: Lexical scope comes into its own, and leads naturally to closures.[5]
1980-1994: Lisp has been evolving largely in parallel, but now starts to cross-pollinate with OO. MIT Flavors (1982), CommonLOOPS (1986), CLOS (1994). OO is big on late binding. Lisp takes late binding to 11, with before/after advice and dispatch based on the types of multiple arguments. In 1994, Common Lisp decides to adopt lexical scope by default.
1992: It becomes clear that there's a yin-yang duality between objects and closures.[6] Though objects have the benefit of putting data first.
1994: The "gang of four" writes the Design Patterns book, based on ideas by the architect Christopher Alexander. Kicks off the field of OO design.
2001: Joel Spolsky coins "architecture astronauts,"[7] peak of hype cycle for design patterns. (OO design remains in vogue to this day, though.)
2007: Clojure arrives. Built on an OO foundation (the JVM) but determinedly anti-OO. Peak of the hype cycle for OO? Functional programming is now ascendant, impelled by the value of immutability.
2008-2014: Growing anti-OO sentiment[8], anti-design-patterns sentiment[9], awareness that composition is superior to inheritance[10].
2020: Richard Feldman crystallizes the case against OO[11]: OO wants to make every object a little computer. But why do we want to make <em>all</em> programs distributed?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980156330293755935" class="chatlog__message-container " data-message-id="980156330293755935">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:11 AM">10:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">References
[1] <a href="https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-574.pdf" target="_blank">https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-574.pdf</a>
[2] <a href="https://hannemyr.com/cache/knojd_acm78.pdf" target="_blank">https://hannemyr.com/cache/knojd_acm78.pdf</a>
[3] <a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month" target="_blank">https://en.wikipedia.org/wiki/The_Mythical_Man-Month</a>
[4] <a href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.136.3043" target="_blank">https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.136.3043</a>
[5] <a href="https://dspace.mit.edu/bitstream/handle/1721.1/5794/AIM-349.pdf" target="_blank">https://dspace.mit.edu/bitstream/handle/1721.1/5794/AIM-349.pdf</a>
[6] <a href="https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/oop/yasos/swob.txt" target="_blank">https://www.cs.cmu.edu/afs/cs/project/ai-repository/ai/lang/scheme/oop/yasos/swob.txt</a>
[7] <a href="https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you" target="_blank">https://www.joelonsoftware.com/2001/04/21/dont-let-architecture-astronauts-scare-you</a>
[8] <a href="https://news.ycombinator.com/item?id=785601" target="_blank">https://news.ycombinator.com/item?id=785601</a>
[9] <a href="https://blog.plover.com/prog/design-patterns.html" target="_blank">https://blog.plover.com/prog/design-patterns.html</a>
[10] First HN submission that composition &gt; inheritance: <a href="https://web.archive.org/web/20080508155333/http://www.eflorenzano.com/blog/post/inheritance-vs-composition" target="_blank">https://web.archive.org/web/20080508155333/http://www.eflorenzano.com/blog/post/inheritance-vs-composition</a>.
[11] <a href="https://www.youtube.com/watch?v=6YbK8o9rZfI" target="_blank">https://www.youtube.com/watch?v=6YbK8o9rZfI</a></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980156537865637968" class="chatlog__message-container " data-message-id="980156537865637968">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:12 AM">10:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ok I'm done <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src=".\files\twemoji_1f642.svg"> Summary: there's a lot of ideas baked into "OO". Most of them are great. Some of them are showing their age. And unbundling them all feels more useful than treating them monolithically. End prepared remarks <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-980157188586766386" class="chatlog__message-container " data-message-id="980157188586766386">
<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">May 28, 2022 10:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Excellent, this is a wonderful place to start. I appreciate that you included a lot of the recent takes on OO; I think we'll especially be revisiting a lot of the 2001-present takes as we go along.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980157560600547338" class="chatlog__message-container " data-message-id="980157560600547338">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:16 AM">10:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For some more context, what languages were in use around the 60s-70s when Brooks said that quote about data structures, and when Liskov was pioneering abstract data types?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980157733561073764" class="chatlog__message-container " data-message-id="980157733561073764">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:16 AM">10:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In general I'm curious how some of these early ideas manifested in the tools that we now use today. (I know Java was a big one along the way, and we'll have a nice long section dedicated just to that...)</span>
<span class="chatlog__edited-timestamp" title="28-May-22 10:17 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980158122259775579" class="chatlog__message-container " data-message-id="980158122259775579">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I know <a class="inserted-after" href="https://en.wikipedia.org/wiki/CLU_(programming_language)" target="_blank">CLU</a> (Barbara Liskov's language) came out in 1973</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980158231525613598" class="chatlog__message-container " data-message-id="980158231525613598">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:18 AM">10:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Interestingly it was the first language with built-in <a class="inserted-after" href="https://en.wikipedia.org/wiki/Tagged_union" target="_blank">Tagged Unions</a> as far as I know</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980158276681465917" class="chatlog__message-container " data-message-id="980158276681465917">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:19 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Oh gosh. I wasn't around then <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src=".\files\twemoji_1f642.svg"> but my weak sense is that while there were a few different programming languages being researched, the vast majority of people were programming in machine code and Assembly back then. Big ones: Fortran, COBOL, Algol (still getting refined), Lisp 1.5.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980158539161014292" class="chatlog__message-container " data-message-id="980158539161014292">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:20 AM">10:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-mention" title="SirWhinesalot#7124">@SirWhinesalot</span> Yes, I think so! Too bad it took so long for them to go "mainstream".</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980158804404629565" class="chatlog__message-container " data-message-id="980158804404629565">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:21 AM">10:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Going back to that <a class="inserted-after" href="https://en.wikiquote.org/wiki/Fred_Brooks#:~:text=Show%20me%20your%20flowcharts%20and%20conceal%20your%20tables%2C%20and%20I%20shall%20continue%20to%20be%20mystified.%20Show%20me%20your%20tables%2C%20and%20I%20won%E2%80%99t%20usually%20need%20your%20flowcharts%3B%20they%E2%80%99ll%20be%20obvious." target="_blank">Brooks quote</a>. I think he was mostly talking about how programmers communicate. Languages and compilers weren't really the dominant gatekeepers of notation back then.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980158853339545650" class="chatlog__message-container " data-message-id="980158853339545650">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:21 AM">10:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It was paper, in some form.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980158878476017704" class="chatlog__message-container " data-message-id="980158878476017704">
<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">May 28, 2022 10:21 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That makes sense, I suppose that would be the case</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980159108181295104" class="chatlog__message-container " data-message-id="980159108181295104">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:22 AM">10:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The sense that I get (which may not be very accurate) is that in the 60s and 70s, there was a lot of pioneering work in the field happening mostly in parallel, but that the ideas hadn't really taken hold in "industry" yet. At what point would you say that began to occur?</span>
<span class="chatlog__edited-timestamp" title="28-May-22 10:22 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980159216708882452" class="chatlog__message-container " data-message-id="980159216708882452">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:22 AM">10:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Certainly from what I've seen of e.g. FORTRAN, the "practical tools" of the day didn't have any such concepts.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980159810999844914" class="chatlog__message-container " data-message-id="980159810999844914">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:25 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That's a good question. I have a hard time thinking of descriptions of production systems and languages used by industry. Even though Bell Labs and PARC came from industry, I think a lot of their work was fed by govt. grants and so tightly coupled with govt. rather than commercial considerations.
The software industry took off around late 70s? And then it took a while to rediscover the value of programming languages as the PC revolution took off and computers got fast enough to manage HLLs.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980159949227311144" class="chatlog__message-container " data-message-id="980159949227311144">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:25 AM">10:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Turbo Pascal was 1983. That was really my introduction to high-level languages.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980160104286523472" class="chatlog__message-container " data-message-id="980160104286523472">
<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">May 28, 2022 10:26 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I know <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> is quite a Pascal fan; I don't know if he would know any more about the history there</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980160159777189958" class="chatlog__message-container " data-message-id="980160159777189958">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:26 AM">10:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">or at least a Wirth fan <img loading="lazy" class="chatlog__emoji " alt="🙂" title="slight_smile" src=".\files\twemoji_1f642.svg"></span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="heart">
<img class="chatlog__emoji chatlog__emoji--small" alt="❤️" src="files/2764-02CD4.svg" loading="lazy">
<span class="chatlog__reaction-count">3</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980160322071592990" class="chatlog__message-container " data-message-id="980160322071592990">
<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">May 28, 2022 10:27 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The first <em>Pascal</em> was created by Niklaus Wirth in 1970 as a teaching tool.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980160464841506889" class="chatlog__message-container " data-message-id="980160464841506889">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:27 AM">10:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It mostly became popular because of its simplicity and that it was easy to learn, especially amongst many of the minicomputer buyers in the 1970s.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980160620542427206" class="chatlog__message-container " data-message-id="980160620542427206">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:28 AM">10:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Pascal (along with C) are part of a language family called ALGOL, specifically ALGOL 60.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980160745058742272" class="chatlog__message-container " data-message-id="980160745058742272">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:28 AM">10:28</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ALGOL is the basis of pretty much every imperative (procedural) programming language to date.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161144163549214" class="chatlog__message-container " data-message-id="980161144163549214">
<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">May 28, 2022 10:30 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It's honestly pretty crazy to me to look at the timeline here and see that nearly all these fundamental OOP-y designs were all developed independently at around the same time.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161358500859984" class="chatlog__message-container " data-message-id="980161358500859984">
<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">May 28, 2022 10:31 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ALGOL 60 was created by many designers with many famous names too:
John Backus, Peter Naur (yes, those two of Backus-Naur Form), Friedrich Bauer (discovered the stack data structure), Charles Katz (you'll see his name in many papers), John McCarthy (AI, Lisp, etc), Alan Perlis (APL), and many many more.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161396220235836" class="chatlog__message-container " data-message-id="980161396220235836">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:31 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And then the whole academic side runs out of steam in the 2000s, in my mind..</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161559525474335" class="chatlog__message-container " data-message-id="980161559525474335">
<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">May 28, 2022 10:32 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There's the basic history lesson for the roots of all imperative programming languages, as well as some others like Lisp and APL.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161805705957386" class="chatlog__message-container " data-message-id="980161805705957386">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:33 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The 1980s to early 1990s is when OOP really starts picking up steam, Object Pascal, Objective-C, C++, COM, all culminating in Java in 1995</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980161861381144657" class="chatlog__message-container " data-message-id="980161861381144657">
<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">May 28, 2022 10:33 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think I can see traces of all these historical ideas in the languages we use today, and perhaps we can refer back to this list as we go</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980161887545229332" class="chatlog__message-container " data-message-id="980161887545229332">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:33 AM">10:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What Bill is saying about imperative programming languages may accidentally be a good segue into the first major concept of OOP that I have on my list...</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980162118114508840" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980162118114508840">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:34 AM">10:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Which is that <strong>OOP is when you associate behavior with data</strong>, in a sense just the idea of a "method". (I am not saying this is a completely correct concept, but it is one that I see frequently discussed.)</span>
<span class="chatlog__edited-timestamp" title="28-May-22 10:35 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980162181687566348" class="chatlog__message-container " data-message-id="980162181687566348">
<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">May 28, 2022 10:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One really important thing that I would love to bring up before we dive deep into the philosophy questions is the distinction between <em>Object-Oriented Programming (OOP)</em> and <em>Methods</em>, and why I think this is at the heart of the discussion.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 10:34 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980162309630611466" class="chatlog__message-container " data-message-id="980162309630611466">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:35 AM">10:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd argue that 99% of the reasons people want <em>methods</em> (and what many mean by "OOP" in a weird sense) are for the following reasons:
(1) Organizing procedures under a data type
(2) Allowing methods as a form syntactic sugar for writing calls in a <em>subject verb object</em> manner, e.g. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">do_thing(x, y)</span> vs <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">x.do_thing(y)</span>
(3) Searching for procedures/methods by a data type, especially with the aid of tools such as an IDE
Regarding (1), I personally believe this is much better solved with a well designed package/module/library system as part of the language. Most OOP languages <em>do not</em> have such a system and usually use classes as a means to organize code. For my programming language <a class="inserted-after" href="https://odin-lang.org/" target="_blank">Odin</a>, packages have really aided us in terms of organization a lot better than
Regarding (2), this is a weird linguistic typology thing which I doubt most people will even know unless they speak multiple languages. If you want to learn more about word orders in different languages, I recommend reading the following:
* <a href="https://en.wikipedia.org/wiki/Subject%E2%80%93verb%E2%80%93object_word_order" target="_blank">https://en.wikipedia.org/wiki/Subject%E2%80%93verb%E2%80%93object_word_order</a>
* <a href="https://en.wikipedia.org/wiki/Verb%E2%80%93subject%E2%80%93object_word_order" target="_blank">https://en.wikipedia.org/wiki/Verb%E2%80%93subject%E2%80%93object_word_order</a>
Regarding (3), this is purely a tooling issue. It comes down to two main aspects:
* Many people just want to use the tools that they have and how they currently work (there is nothing wrong with that, per se)
* Many people cannot think outside of the current paradigm and think what is being asked for is not possible
Doing <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">foo.</span> and waiting for the IDE to autocomplete what is available for that value of a specific data type is extremely useful to many people, but there is not reason it could not work for something that was purely procedural, it is that many languages nowadays do support some form of methods and thus the general need has not arisen.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980162561511149678" class="chatlog__message-container " data-message-id="980162561511149678">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Like Common Lisp's generic methods.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980162693329731594" class="chatlog__message-container " data-message-id="980162693329731594">
<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">May 28, 2022 10:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So in your opinion, is it not correct to say that "associating behavior with data" is essential to OOP, because all functions are associated with some form of data? (Regardless of syntax?)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980162872921436260" class="chatlog__message-container " data-message-id="980162872921436260">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"mere methods" (Lua is a good example of this, where they're just sugar for passing in the "subject" pointer) are IMO roughly analogous to for-loops or if-blocks, i.e. a syntactic standardization of a widespread common practice</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980162975304392704" class="chatlog__message-container " data-message-id="980162975304392704">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:37 AM">10:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"procedural programming" could be seen as just standardizing a handful of assembly language idioms into language constructs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980162998750548020" class="chatlog__message-container " data-message-id="980162998750548020">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:37 AM">10:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"mere methods" are, for me, just more of this</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980163176983322664" class="chatlog__message-container " data-message-id="980163176983322664">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:38 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they standardize the pattern <div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">struct mything {
// whatever
}
void mything_do_cool_stuff (struct mything *m, int x) {
// whatever
}</div></span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980163127670890567" class="chatlog__message-container " data-message-id="980163127670890567">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:38 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would agree with <span class="chatlog__markdown-mention" title="demetrispanos#5588">@demetrispanos</span> and <span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> , methods as in the little . notation and OOP are independent concerns</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980163440335278110" class="chatlog__message-container " data-message-id="980163440335278110">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588">demetrispanos</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980163176983322664')">
they standardize the pattern <div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">struct mything {
// whatever
}
void mything_do_cool_stuff (struct mything *m, int x) {
// whatever
}</div> </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">importantly, note how in the pattern above the function is not tied to struct, you can keep adding as many functions as you want</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980163526243004456" class="chatlog__message-container " data-message-id="980163526243004456">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in OOP, classes have a <em>fixed</em> set of methods, usually</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980163548074356777" class="chatlog__message-container " data-message-id="980163548074356777">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="" title="SirWhinesalot#7124">SirWhinesalot</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980163440335278110')">
importantly, note how in the pattern above the function is not tied to struct, you can keep adding as many functions as you want </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes exactly, that's part of what I mean by "mere" (i.e. they're not wound up in some other concept like a class)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980163391865905234" class="chatlog__message-container " data-message-id="980163391865905234">
<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">May 28, 2022 10:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Lua is an example of something I'd like to call an <em>Emergent OO Programming Language</em> , but I'll leave that for a little later to reduce confusion.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980163662524342362" class="chatlog__message-container " data-message-id="980163662524342362">
<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">May 28, 2022 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Lua after all is a table oriented language.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980163440352059443" class="chatlog__message-container " data-message-id="980163440352059443">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:39 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There's a few of those <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src=".\files\twemoji_1f604.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980163664453722172" class="chatlog__message-container " data-message-id="980163664453722172">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="" title="SirWhinesalot#7124">SirWhinesalot</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980163526243004456')">
in OOP, classes have a <em>fixed</em> set of methods, usually </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"<a class="inserted-after" href="https://en.wikipedia.org/wiki/Open%E2%80%93closed_principle" target="_blank">open to extension</a>" is another wonderful idea we should discuss at some point. ❤️ Ruby</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980163715682942976" class="chatlog__message-container " data-message-id="980163715682942976">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Smalltalk as well</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="bulb">
<img class="chatlog__emoji chatlog__emoji--small" alt="💡" src="files/1f4a1-26401.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-980163773379780628" class="chatlog__message-container " data-message-id="980163773379780628">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588">demetrispanos</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980163548074356777')">
yes exactly, that's part of what I mean by "mere" (i.e. they're not wound up in some other concept like a class) </span>
</div>
</div>
<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">May 28, 2022 10:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Would you elaborate on what extra ideas a "class" adds to the picture?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980164103249223680" class="chatlog__message-container " data-message-id="980164103249223680">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd say a "mere class" is a struct with a fixed set of "mere methods" (echoing some comments from above)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980164183251378186" class="chatlog__message-container " data-message-id="980164183251378186">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:42 AM">10:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but classes as practiced add more ideas like visibility, inheritance, etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980164325320835102" class="chatlog__message-container " data-message-id="980164325320835102">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:43 AM">10:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd note that while "mere methods" are IMO definitely useful, it's not clear to me what you get from a "mere class"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980164511057190962" class="chatlog__message-container " data-message-id="980164511057190962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think a mere class only becomes useful when subtype polymorphism is involved (i.e., a <a class="inserted-after" href="https://en.wikipedia.org/wiki/Virtual_method_table" target="_blank">vtable</a> of some sort)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980164545169473556" class="chatlog__message-container " data-message-id="980164545169473556">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ah yes, good point</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980164548654956624" class="chatlog__message-container " data-message-id="980164548654956624">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:43 AM">10:43</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I agree</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980164790183948298" class="chatlog__message-container " data-message-id="980164790183948298">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:44 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The evolution I tend to see is:
* Putting the primary data type first is a nice way to organize vocabularies in people's minds. (I think this is what y'all mean by "mere methods")
* Once you do that, you can also generalize and allow different types to do different things. That pulls in inheritance and static dispatch.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980164970979397662" class="chatlog__message-container " data-message-id="980164970979397662">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:45 AM</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">* Putting the primary data type first is a nice way to organize vocabularies in people's minds. (I think this is what y'all mean by "mere methods")
</div></div>yes</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165269441876059" class="chatlog__message-container " data-message-id="980165269441876059">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:46 AM">10:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but importantly, the generalization of mere methods has consequences</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165370151317564" class="chatlog__message-container " data-message-id="980165370151317564">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because the set of methods is usually fixed</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165423112814633" class="chatlog__message-container " data-message-id="980165423112814633">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the moment you do so</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165437981622314" class="chatlog__message-container " data-message-id="980165437981622314">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for implementation reasons</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165508986986586" class="chatlog__message-container " data-message-id="980165508986986586">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:47 AM">10:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are alternative formulations but they tend to have severe performance penalties</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980165731629010954" class="chatlog__message-container " data-message-id="980165731629010954">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:48 AM">10:48</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is why I think mere methods and OOP are separate concerns. Having a nice . notation is one thing, introducing the extra machinery is another (and OOP only starts manifesting when the extra machinery comes into play)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980166096655106149" class="chatlog__message-container " data-message-id="980166096655106149">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:50 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I guess re: methods and subtypes, we should also mention prototype-style ideas because that gives a related view on what "mere classes" would do</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980166282072719440" class="chatlog__message-container " data-message-id="980166282072719440">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:50 AM">10:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in self (<a href="https://en.wikipedia.org/wiki/Self_(programming_language)" target="_blank">https://en.wikipedia.org/wiki/Self_(programming_language)</a>) you have the idea of a prototype as the unit of implementation delegation</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980166398133297152" class="chatlog__message-container " data-message-id="980166398133297152">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:51 AM">10:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(and of course this carried over into the original version of Javascript OO)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980166581889941564" class="chatlog__message-container " data-message-id="980166581889941564">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 10:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah. There's definitely class- and prototype-based OO out there. Also extensible vs closed to extension.
Trying to demarcate precisely the boundaries of "OOP" might be a time sink. I'd much rather chop OOP up into its component pieces, and then we can discuss each separately. And then the question of, "is there anything we missed?" becomes fruitful.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980166772743340083" class="chatlog__message-container " data-message-id="980166772743340083">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:52 AM">10:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In a game you can have a performance-focused substrate that is closed to extension, and a command language like Lua that is open to extension. Both use OO ideas.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980166795027685497" class="chatlog__message-container " data-message-id="980166795027685497">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:52 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it's important to address how people think about OO though</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980166899423936542" class="chatlog__message-container " data-message-id="980166899423936542">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:53 AM">10:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because just chopping up the pieces leads to talking about various pieces in isolation and that's not what gets people confused (or irate)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167038964232283" class="chatlog__message-container " data-message-id="980167038964232283">
<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">May 28, 2022 10:53 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Let's talk about some of those pieces though, because getting a more nuanced idea of them will allow us to come back to what <em>does</em> get people confused and irate</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167296892936242" class="chatlog__message-container " data-message-id="980167296892936242">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="" title="SirWhinesalot#7124">SirWhinesalot</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980165731629010954')">
this is why I think mere methods and OOP are separate concerns. Having a nice . notation is one thing, introducing the extra machinery is another (and OOP only starts manifesting when the extra machinery comes into play) </span>
</div>
</div>
<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">May 28, 2022 10:54 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think we should start discussing this "extra machinery". I'm not sure what angle to discuss first; there's the more nuts-and-bolts ideas such as inheritance and polymorphism, but there's also the very hairy subject of object-oriented <em>design</em>. <span class="chatlog__markdown-mention" title="SirWhinesalot#7124">@SirWhinesalot</span> is our point person for that, but I'd like to make sure we feel we've covered our bases first.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167539730563143" class="chatlog__message-container " data-message-id="980167539730563143">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Right, might be worth posting that meme making fun of GeeksForGeeks here <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src=".\files\twemoji_1f604.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167592352288858" class="chatlog__message-container " data-message-id="980167592352288858">
<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">May 28, 2022 10:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">heh</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167640360312862" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980167640360312862">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So what we're talking about here is the idea that "OOP models the real world".</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167806769332304" class="chatlog__message-container " data-message-id="980167806769332304">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's indeed the most important meme to address IMO</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167809457864774" class="chatlog__message-container " data-message-id="980167809457864774">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Should we tackle that now? or after we split OOP up first?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167846640365619" class="chatlog__message-container " data-message-id="980167846640365619">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 10:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it links up to almost everything else</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980167873731391518" class="chatlog__message-container " data-message-id="980167873731391518">
<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">May 28, 2022 10:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Let's just get into it.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168003167592508" class="chatlog__message-container " data-message-id="980168003167592508">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:57 AM">10:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">We can branch from there into everything else, like Demetri says</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980168012701245480" class="chatlog__message-container " data-message-id="980168012701245480">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 10:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What does it mean for OOP to model the real world? Here's what Wikipedia has to say (technically from the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Domain-driven_design" target="_blank">Domain-Driven Design</a> page, but the two are intimately related):
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">In terms of object-oriented programming it means that the structure and language of software code (class names, class methods, class variables) should match the business domain. For example, if a software processes loan applications, it might have classes like LoanApplication and Customer, and methods such as AcceptOffer and Withdraw.</div></div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168066354778162" class="chatlog__message-container " data-message-id="980168066354778162">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:57 AM">10:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would like to focus on that <strong>Customer class</strong>. Think of a website like Amazon, what does a Customer do? They can login/logout, purchase items, review items, contact customer support, etc. They also have a lot of data about them like their user-info, preferences, purchases, support tickets, etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168132431847455" class="chatlog__message-container " data-message-id="980168132431847455">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><strong>What data and methods should the Customer class have?</strong></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168172881735710" class="chatlog__message-container " data-message-id="980168172881735710">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Really think about this and the consequences it has on the structure of the codebase. All of the above? Classes should have a "single-responsibility" (supposedly). What should the single responsibility of the Customer class be?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168228108124282" class="chatlog__message-container " data-message-id="980168228108124282">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">You see how we immediatelly start getting into trouble?</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 id="chatlog__message-container-980168266834133002" class="chatlog__message-container " data-message-id="980168266834133002">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Then there's the issue of structuring your code into <strong>class hierarchies</strong> based on real-world concepts, e.g. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Customer : Person</span>, <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Seller : Person</span>, <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">Employee : Person</span>.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168317849456720" class="chatlog__message-container " data-message-id="980168317849456720">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:58 AM">10:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The problem of course is that the same person can not only be all three, they can be different subsets at different times! Even real-world taxonomies need to be updated from time to time, and this modeling style is imposing that kind of rigid structure, with far less certainty, on your data <em>and</em> behavior.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168393321766962" class="chatlog__message-container " data-message-id="980168393321766962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:59 AM">10:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This style is considered bad practice these days, but even without the taxonomy nonsense the core issue remains, which is trying to model real-world concepts as bundles of encapsulated data + behavior. It just doesn't work well in practice, that idea is the fundamental mistake.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980168437781368962" class="chatlog__message-container " data-message-id="980168437781368962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 10:59 AM">10:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">IMO of course</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980168630580948993" class="chatlog__message-container " data-message-id="980168630580948993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:00 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One wonderful book that made the rounds last year: <a href="https://buttondown.email/hillelwayne/archive/why-you-should-read-data-and-reality" target="_blank">https://buttondown.email/hillelwayne/archive/why-you-should-read-data-and-reality</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980169025332051969" class="chatlog__message-container " data-message-id="980169025332051969">
<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">May 28, 2022 11:01 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My personal view that thinking "OOP models the real world" is wrong because it is a category error. You cannot treat [programming objects] as "real objects" since "real objects" and "programming objects" have little connection to each other ontologically. This is why I've previously called OOP a form of misinterpreted and misapplied Aristotelian Metaphysics applied to a domain it was never meant to model[2].
By this statement, I mean that <em>artificially</em> conforming to any/all relations between data and types to an artificial hierarchy of <em>agency</em> is a form of naïve-Aristotelian metaphysics. Since there is no actual <em>agency</em> in the programming objects, it is a partial fallacy (and as previously stated, category error). When trying to conform a program to have a particular structure when it does not naturally, the absence of a structure in a program in more useful than a bad structure.
[1] <a href="https://en.wikipedia.org/wiki/Category_mistake" target="_blank">https://en.wikipedia.org/wiki/Category_mistake</a>
[2] <a href="https://www.gingerbill.org/article/2020/05/31/progamming-pragmatist-proverbs/" target="_blank">https://www.gingerbill.org/article/2020/05/31/progamming-pragmatist-proverbs/</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980169272468844664" class="chatlog__message-container " data-message-id="980169272468844664">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://en.wikipedia.org/wiki/Map%E2%80%93territory_relation" target="_blank">Map vs territory</a> confusion, right?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980169273102196777" class="chatlog__message-container " data-message-id="980169273102196777">
<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">May 28, 2022 11:02 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There is also the other aspect that in an actual Aristotelian metaphysics, an object can belong to an infinite amount of "classes" in any moment and even change depending on the situation.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169296565117030" class="chatlog__message-container " data-message-id="980169296565117030">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:02 AM">11:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In a way, yes.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169431974035486" class="chatlog__message-container " data-message-id="980169431974035486">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When we discuss of an object, we are speaking of it about what is <em>relevant</em> to us in that situation.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169472629411930" class="chatlog__message-container " data-message-id="980169472629411930">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Let's take a random object off my table right now: a lens cap.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169532758982676" class="chatlog__message-container " data-message-id="980169532758982676">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">A lens cap could be in the class of objects that cover a lens.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169558436507729" class="chatlog__message-container " data-message-id="980169558436507729">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:03 AM">11:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But it could also be used a coaster for my drink.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169591894474792" class="chatlog__message-container " data-message-id="980169591894474792">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:04 AM">11:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It could also be used as an eye patch.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="pirate_flag">
<img class="chatlog__emoji chatlog__emoji--small" alt="🏴&zwj;☠️" src="files/1f3f4-200d-2620-6E400.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169609384693841" class="chatlog__message-container " data-message-id="980169609384693841">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:04 AM">11:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or a weird weapon.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="dagger">
<img class="chatlog__emoji chatlog__emoji--small" alt="🗡️" src="files/1f5e1-9D0D3.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
<div class="chatlog__reaction" title="black_circle">
<img class="chatlog__emoji chatlog__emoji--small" alt="⚫" src="files/26ab-FC554.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
<div class="chatlog__reaction" title="camera">
<img class="chatlog__emoji chatlog__emoji--small" alt="📷" src="files/1f4f7-B9213.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169718990250005" class="chatlog__message-container " data-message-id="980169718990250005">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:04 AM">11:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Or a one of an infinite number of things with infinite uses.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980169795125272616" class="chatlog__message-container " data-message-id="980169795125272616">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:04 AM">11:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The question is realizing what is relevant for the situation.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980169968597487687" class="chatlog__message-container " data-message-id="980169968597487687">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:05 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Now you've got me thinking about what a computer that can fluidly move between ontologies would look like..</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170151708217354" class="chatlog__message-container " data-message-id="980170151708217354">
<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">May 28, 2022 11:06 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is why, in my personal opinion, a huge issue with force something to an "object"/"class"/etc has issues with. Things belong to more than just one <em>class</em> and trying to force it into one category can be very bad, especially when there is no "object" to speak of in the first place, only algorithms and data structures.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170204208308324" class="chatlog__message-container " data-message-id="980170204208308324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:06 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The relational/logical model tends to be much better at this, since you can add/retract facts about an object</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980170258931413084" class="chatlog__message-container " data-message-id="980170258931413084">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:06 AM">11:06</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/Entity_component_system" target="_blank">Entity-Component Systems</a> are a form of relational model btw</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980170331392188436" class="chatlog__message-container " data-message-id="980170331392188436">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:06 AM">11:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Some people think they are a form of OO, that's incorrect</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170601379528797" class="chatlog__message-container " data-message-id="980170601379528797">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think whether or not it is wrong, "OO solves problem by modeling the real world" is both believed and practiced, and indeed it is widely used to advertise and teach OO</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170658111713341" class="chatlog__message-container " data-message-id="980170658111713341">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Indeed, that's how I was taught in university</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170687719305288" class="chatlog__message-container " data-message-id="980170687719305288">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is what I mean about talking about how people think about it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980170817583325235" class="chatlog__message-container " data-message-id="980170817583325235">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:08 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The best defense I've heard for OO design is to limit your ambitions to modeling <em>solutions</em>, not problems. That avoids the issues<span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> raises, but it's also a much more modest goal. OO design books seem to pay this idea lip service, but quickly go back to thinking symbols are the thing they represent. It's a very easy mental trap to fall into.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171074350227626" class="chatlog__message-container " data-message-id="980171074350227626">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:09 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">modeling solutions is antithetical to OO-best practices (as taught), because the right solution often involves some sort of "Manager" class that handles the data, and these are "frowned upon" because they don't bundle the data and behavior</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171206269489192" class="chatlog__message-container " data-message-id="980171206269489192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980170817583325235')">
The best defense I've heard for OO design is to limit your ambitions to modeling <em>solutions</em>, not problems. That avoids the issues<span class="chatlog__markdown-mention" title="gingerBill#9999">@gingerBill</span> raises, but it's also a much more modest goal. OO design books seem to pay this idea lip service, but quickly go back to thinking symbols are the thing they represent. It's a very easy mental trap to fall into. </span>
</div>
</div>
<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">May 28, 2022 11:10 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The irony of that statement is that is kind of the opposite of the point. Programming is a form of problem solving. If you have already solved the problem, then redesigning it to be OOP is really weird, and borderline masturbation.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171306949570560" class="chatlog__message-container " data-message-id="980171306949570560">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:10 AM</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"> limit your ambitions to modeling solutions, not problems.
</div></div>I would phrase this as "[90s style C++/Java] OO offers the ability to form hierarchies of <em>data structures and functions</em> but that this is usually misinterpreted to mean that it will be useful to model hierarchies of concepts in the world outside the program"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171401002647622" class="chatlog__message-container " data-message-id="980171401002647622">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(52, 152, 219)" title="gingerBill#9999">gingerBill</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980171206269489192')">
The irony of that statement is that is kind of the opposite of the point. Programming is a form of problem solving. If you have already solved the problem, then redesigning it to be OOP is really weird, and borderline masturbation. </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:11 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The idea is that once you've solved a problem, OO Design is a good way to continue to <em>maintain</em> the solution without forgetting why you did what you did. Software systems can last a long time!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171756918702240" class="chatlog__message-container " data-message-id="980171756918702240">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:12 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I've found no advantage to an OO design vs any other form of design with a clear structure, unless the features provided by OO (like subtype polymorphism) were necessary</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980171824174333962" class="chatlog__message-container " data-message-id="980171824174333962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:12 AM">11:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In fact quite the opposite, since OO design can impose a lot of rigidity that is hard to get rid off</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980171868076118048" class="chatlog__message-container " data-message-id="980171868076118048">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:13 AM">11:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See weird workaround like <a class="inserted-after" href="https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods" target="_blank">C# extension methods</a> for an example</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171895158739034" class="chatlog__message-container " data-message-id="980171895158739034">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980171401002647622')">
The idea is that once you've solved a problem, OO Design is a good way to continue to <em>maintain</em> the solution without forgetting why you did what you did. Software systems can last a long time! </span>
</div>
</div>
<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">May 28, 2022 11:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See the trick? If it needs to be continuously improved, it's not a solution, yet.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980171911898210314" class="chatlog__message-container " data-message-id="980171911898210314">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would say I almost never use inheritance, but I almost always use methods</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980171972472352830" class="chatlog__message-container " data-message-id="980171972472352830">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and if someone told me I could never use inheritance again I would not consider it a big loss</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980171938615947316" class="chatlog__message-container " data-message-id="980171938615947316">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:13 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm actually not familiar with any non-OO design methodology <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src=".\files\twemoji_1f604.svg"> They kinda sucked the oxygen out of the room, didn't they?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172164756021268" class="chatlog__message-container " data-message-id="980172164756021268">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980171938615947316')">
I'm actually not familiar with any non-OO design methodology <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src=".\files\twemoji_1f604.svg"> They kinda sucked the oxygen out of the room, didn't they? </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there are many architectures you can use. Things like publish/subscribe, model-view-update, etc.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172285719760997" class="chatlog__message-container " data-message-id="980172285719760997">
<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">May 28, 2022 11:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Certainly though the term "design patterns" has come to exclusively mean "object-oriented design patterns", and really the gang of four stuff</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172327042027580" class="chatlog__message-container " data-message-id="980172327042027580">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980171938615947316')">
I'm actually not familiar with any non-OO design methodology <img loading="lazy" class="chatlog__emoji " alt="😄" title="smile" src=".\files\twemoji_1f604.svg"> They kinda sucked the oxygen out of the room, didn't they? </span>
</div>
</div>
<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">May 28, 2022 11:14 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"JUST SOLVE THE PROBLEM YOU HAVE" is my preferred one.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="100">
<img class="chatlog__emoji chatlog__emoji--small" alt="💯" src="files/1f4af-2188D.svg" loading="lazy">
<span class="chatlog__reaction-count">7</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172406872227912" class="chatlog__message-container " data-message-id="980172406872227912">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980172285719760997')">
Certainly though the term "design patterns" has come to exclusively mean "object-oriented design patterns", and really the gang of four stuff </span>
</div>
</div>
<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">May 28, 2022 11:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that persists to this day, thanks probably to universities?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172468792733696" class="chatlog__message-container " data-message-id="980172468792733696">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes I think the fact that OO has the superficial appearance of a "theory of programming" is important here</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980172481123975340" class="chatlog__message-container " data-message-id="980172481123975340">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:15 AM">11:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(re: universities)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980172586954686515" class="chatlog__message-container " data-message-id="980172586954686515">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">universities had rapidly increasing needs to "produce programmers" but universities loathe doing anything that might look like vocational school</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980172739572793405" class="chatlog__message-container " data-message-id="980172739572793405">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:16 AM">11:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">OOP looked like it had some ideas from type theory, had some kind of taxonomy scheme, had some claims to provable properties</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980172773739597965" class="chatlog__message-container " data-message-id="980172773739597965">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:16 AM">11:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and so it was compatible with what a university might be persuaded to adopt</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980172974361567263" class="chatlog__message-container " data-message-id="980172974361567263">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:17 AM">11:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it also had the claim of "intuitively models the real world, so businesses like it"</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="bulb">
<img class="chatlog__emoji chatlog__emoji--small" alt="💡" src="files/1f4a1-26401.svg" loading="lazy">
<span class="chatlog__reaction-count">1</span>
</div>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980172484080963584" class="chatlog__message-container " data-message-id="980172484080963584">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:15 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a href="https://en.wikipedia.org/wiki/Software_design" target="_blank">https://en.wikipedia.org/wiki/Software_design</a> does have a list. I guess I'm not aware of it because I don't do design <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-980173349651087410" class="chatlog__message-container " data-message-id="980173349651087410">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:18 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">My university thankfully presented all paradigms (procedural, oo, functional, logical)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980173392655290418" class="chatlog__message-container " data-message-id="980173392655290418">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:19 AM">11:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a good question there is if OO is an actual paradigm</span>
<span class="chatlog__edited-timestamp" title="28-May-22 11:19 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980173557671800992" class="chatlog__message-container " data-message-id="980173557671800992">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:19 AM">11:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Alan Kay certainly thought so, but Smalltalk OO is a very different beast from C++ or Java or whatever</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980173693412077578" class="chatlog__message-container " data-message-id="980173693412077578">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:20 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think Kay has sufficiently lost that battle that there's not much point talking about it as a peer</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980173738807013406" class="chatlog__message-container " data-message-id="980173738807013406">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:20 AM">11:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">when I want to talk about his stuff I say "Kay style OO" or "message passing OO"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174158564585562" class="chatlog__message-container " data-message-id="980174158564585562">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:22 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I personally think Kay-style OO could be seen as a unique programming paradigm (when you include the full reflexivity and the IDE as the OS sort of programming style Smalltalk has), but regular OO is not, it's just procedural programming with a pointless structure on top</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174219600089098" class="chatlog__message-container " data-message-id="980174219600089098">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:22 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the folk understanding of OO, which IMO is like 90+% of people, is something like
- your program is a collection of classes
- one class per file
- each class represents some concept from the real world
- each class has a single responsibility (this is at odds with above but whatever :P)
- there are "good patterns" of assembling classes into programs to solve problems</span>
<span class="chatlog__edited-timestamp" title="28-May-22 11:22 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174488140394556" class="chatlog__message-container " data-message-id="980174488140394556">
<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">May 28, 2022 11:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I (luckily?) don't have any programming education, let alone academic, so I cannot comment on what is or what is not taught commonly in Universities beyond what I have heard. From what I can tell, they seem to vary extremely widely compared to say harder science such as Physics or Chemistry. If you go to one University for Physics, it'll be similar enough to another. But for Computer Science (Infomatics), it will be very very different</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174543953993738" class="chatlog__message-container " data-message-id="980174543953993738">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:23 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Among other critiques, this approach causes some blind spots because you get trained to think in terms of nouns and deemphasize verbs: <a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html" target="_blank">http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174677571960952" class="chatlog__message-container " data-message-id="980174677571960952">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, a very important essay in this history</span>
<span class="chatlog__edited-timestamp" title="28-May-22 11:24 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980174721746350111" class="chatlog__message-container " data-message-id="980174721746350111">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980174543953993738')">
Among other critiques, this approach causes some blind spots because you get trained to think in terms of nouns and deemphasize verbs: <a href="http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html" target="_blank">http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of-nouns.html</a> </span>
</div>
</div>
<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">May 28, 2022 11:24 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I love that post. When Demetri showed it to me for the first time years ago, I was shocked by how much it resonated with me</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980174888813867092" class="chatlog__message-container " data-message-id="980174888813867092">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:25 AM">11:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This seems like as good a time as any for Demetri to talk about Java and what it did to the world of software</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980174974801289227" class="chatlog__message-container " data-message-id="980174974801289227">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:25 AM">11:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which he volunteered to do as someone who lived through the Great Javafication</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980176450109997076" class="chatlog__message-container " data-message-id="980176450109997076">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:31 AM">11:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">To give some context for that, though, my understanding is that Java really took over the software industry in the mid-90s for a variety of reasons I'm not entirely familiar with</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980176562815111208" class="chatlog__message-container " data-message-id="980176562815111208">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:31 AM">11:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">He talked about it some on our podcast episode about programming education, as I recall (<a href="https://handmade.network/podcast/ep/eeac46c9-5e90-4b1c-9104-cff49734764d" target="_blank">https://handmade.network/podcast/ep/eeac46c9-5e90-4b1c-9104-cff49734764d</a>)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980176722836201503" class="chatlog__message-container " data-message-id="980176722836201503">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:32 AM">11:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">And much of what he laid out in his "folk understanding of OO" above is, as far as I know, a direct line from Java</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980176758856884274" class="chatlog__message-container " data-message-id="980176758856884274">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:32 AM">11:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">for example, one class per file</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980177149384343642" class="chatlog__message-container " data-message-id="980177149384343642">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Java uses classes for everything. Namespacing, modeling the solution, modeling the world, file system organization...</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980177151536005120" class="chatlog__message-container " data-message-id="980177151536005120">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:34 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yes I believe other languages aren't as restrictive, but the pattern is visible in a lot of C# codebases for example</span>
<span class="chatlog__edited-timestamp" title="28-May-22 11:34 AM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980177190656290877" class="chatlog__message-container " data-message-id="980177190656290877">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:34 AM">11:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">one file per class</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980177387503358022" class="chatlog__message-container " data-message-id="980177387503358022">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:34 AM">11:34</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because they sort of act like modules as well, specially when it's a "static" class with "static" methods</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980177448488562688" class="chatlog__message-container " data-message-id="980177448488562688">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:35 AM">11:35</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(read: a bog standard procedural thing with extra keywords)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980177793000284190" class="chatlog__message-container " data-message-id="980177793000284190">
<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">May 28, 2022 11:36 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Java was the first "real" programming language I learned, and it took me a long time to broaden my understanding enough to unlearn a lot of the decisions it made. <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">static</span> is certainly an example of that; a great way to obscure a very obvious concept.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980177920444215336" class="chatlog__message-container " data-message-id="980177920444215336">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:37 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It was the first question I asked my teacher: "What does static mean?"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178041500209243" class="chatlog__message-container " data-message-id="980178041500209243">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:37 AM">11:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I had been exposed to Pascal before, but not in an educational setting</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178137646264350" class="chatlog__message-container " data-message-id="980178137646264350">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:37 AM">11:37</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So <span class="chatlog__markdown-pre chatlog__markdown-pre--inline">public static void main()</span> inside a class was very confusing</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178307557498890" class="chatlog__message-container " data-message-id="980178307557498890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:38 AM">11:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Btw his answer was "I'll explain that by the end"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178342328291378" class="chatlog__message-container " data-message-id="980178342328291378">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:38 AM">11:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"Ignore it for now, just know it needs to be there"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178352591736842" class="chatlog__message-container " data-message-id="980178352591736842">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:38 AM">11:38</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">never a good start</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980178646566334535" class="chatlog__message-container " data-message-id="980178646566334535">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:40 AM">11:40</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it was much worse for my partner, her teacher decided explaining the difference between static and non-static was a great discussion topic for class 2 of newbie bioinformatics learning to program</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980178845577674840" class="chatlog__message-container " data-message-id="980178845577674840">
<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">May 28, 2022 11:40 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><span class="chatlog__markdown-pre chatlog__markdown-pre--inline">static</span> is a great scapegoat example for the problems with Java's design decisions, but I suspect there is a lot more to it than that</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980179030034743347" class="chatlog__message-container " data-message-id="980179030034743347">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:41 AM">11:41</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For example, I'm curious if from <span class="chatlog__markdown-mention" title="demetrispanos#5588">@demetrispanos</span>'s perspective, the design of Java's standard library had an impact here (or if that was just an outflow of the language design)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980179217247502396" class="chatlog__message-container " data-message-id="980179217247502396">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:42 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the standard library specifically, I'm not sure ... though Java definitely pioneered the idea that the standard library would have a canned solution for almost everything</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980179274864672848" class="chatlog__message-container " data-message-id="980179274864672848">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:42 AM">11:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I remember buying "Java in a Nutshell" in the late 90s and being genuinely shocked at its size</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980179385833357433" class="chatlog__message-container " data-message-id="980179385833357433">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:42 AM">11:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the large standard library overlapped with the idea of programs as "connecting objects to each other"</span>
<span class="chatlog__edited-timestamp" title="28-May-22 11:42 AM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980179596089647115" class="chatlog__message-container " data-message-id="980179596089647115">
<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">May 28, 2022 11:43 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well perhaps it would be best to just step back then and talk about the shift you saw in the industry when Java hit the scene</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980179812511522926" class="chatlog__message-container " data-message-id="980179812511522926">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:44 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Java was the front runner but C++ in the 90s was also a major participant (indeed Design Patterns came from the C++ community)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980179967931465789" class="chatlog__message-container " data-message-id="980179967931465789">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:45 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Also Smalltalk!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980180127013044235" class="chatlog__message-container " data-message-id="980180127013044235">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:45 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the biggest change was just how much marketing effort was behind "90s OOP", led primarily by Java (in terms of marketing)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180162412953600" class="chatlog__message-container " data-message-id="980180162412953600">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:46 AM">11:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Java promised everybody a pony</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180206113419304" class="chatlog__message-container " data-message-id="980180206113419304">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:46 AM">11:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">universities got to teach a thing that looked like a theory of programming</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180290821574756" class="chatlog__message-container " data-message-id="980180290821574756">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:46 AM">11:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">businesses got programmers that could program in "intuitive real world concepts"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180395897278464" class="chatlog__message-container " data-message-id="980180395897278464">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:46 AM">11:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">new programmers were told they didn't have to worry about details their predecessors used to sweat over, and could just draw object/class hierarchy diagrams</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180516668067961" class="chatlog__message-container " data-message-id="980180516668067961">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:47 AM">11:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(there were also other Java promises re: security and portability that aren't relevant here)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980180670234107944" class="chatlog__message-container " data-message-id="980180670234107944">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I wonder how much of Java being OO was because of the marketing efforts predating it.. <img loading="lazy" class="chatlog__emoji " alt="🤔" title="thinking" src=".\files\twemoji_1f914.svg"></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980180848965980191" class="chatlog__message-container " data-message-id="980180848965980191">
<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">May 28, 2022 11:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, to ask a question I think I know the answer to...how did Java live up to the hype :)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980180879349538927" class="chatlog__message-container " data-message-id="980180879349538927">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:48 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think <a class="inserted-after" href="https://en.wikipedia.org/wiki/James_Gosling" target="_blank">Gosling</a> definitely saw himself as successor to <a class="inserted-after" href="https://en.wikipedia.org/wiki/Bjarne_Stroustrup" target="_blank">Bjarne</a> who was successor to <a class="inserted-after" href="https://en.wikipedia.org/wiki/Dennis_Ritchie" target="_blank">Ritchie</a> etc.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980180996198658048" class="chatlog__message-container " data-message-id="980180996198658048">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:49 AM">11:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and indeed Java was conceptualized as a kind of "C++, the good parts"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181048010899526" class="chatlog__message-container " data-message-id="980181048010899526">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:49 AM">11:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it's telling what they thought were "the good parts"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181084799123547" class="chatlog__message-container " data-message-id="980181084799123547">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:49 AM">11:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">class hierarchies</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181141539684422" class="chatlog__message-container " data-message-id="980181141539684422">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:49 AM">11:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you don't just have the option of classes, everything is a class (even your program itself)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181393483137034" class="chatlog__message-container " data-message-id="980181393483137034">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:50 AM">11:50</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would say that by the end of the 90s the thing we now know as "Java/C++ OOP" was cemented as the responsible way to write software</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181482712760410" class="chatlog__message-container " data-message-id="980181482712760410">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:51 AM">11:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">or rather, cemented the reputation as such</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980181529798013019" class="chatlog__message-container " data-message-id="980181529798013019">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One reason it took so long to notice that OO didn't always work well, was that it worked best in the lower levels where people designed and implemented languages like Java. After they put in all the effort to build the language over a decade, it took a decade of using OO methodologies in anger to crystallize its limitations.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980181632839458908" class="chatlog__message-container " data-message-id="980181632839458908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:51 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well also it genuinely did work reasonably well with widget hierarchies in GUIs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181693426204712" class="chatlog__message-container " data-message-id="980181693426204712">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:52 AM">11:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but that was IMO an accident of overlap between problem and solution domain</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181790566273034" class="chatlog__message-container " data-message-id="980181790566273034">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:52 AM">11:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the widgets are code objects, and having hierarchies of code objects is something that OOP delivers as it says on the tin</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980181904101900358" class="chatlog__message-container " data-message-id="980181904101900358">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:52 AM">11:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and indeed "textbox with a slider" is a reasonable conceptual descendant of "plain textbox"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980182079377653810" class="chatlog__message-container " data-message-id="980182079377653810">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:53 AM">11:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so I think many people saw that there was a good solution for an ascendant problem (the 90s saw the rise of GUIs to dominance)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980182107219443732" class="chatlog__message-container " data-message-id="980182107219443732">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:53 AM">11:53</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and they figured this would just be the first major success of many</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980182217814863882" class="chatlog__message-container " data-message-id="980182217814863882">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:54 AM">11:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but widget hierarchies are much more usefully modeled by OOP than, say, customer/person hierarchies</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980182465396240424" class="chatlog__message-container " data-message-id="980182465396240424">
<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">May 28, 2022 11:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That might be an interesting example to break down further</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980182468328046664" class="chatlog__message-container " data-message-id="980182468328046664">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:55 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(Except when widgets used inner classes. That was a whole other can of worms..)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980182866958897152" class="chatlog__message-container " data-message-id="980182866958897152">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588">demetrispanos</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980182217814863882')">
but widget hierarchies are much more usefully modeled by OOP than, say, customer/person hierarchies </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 11:56 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Important to note here that UI frameworks moved away from "Split button inherits from Button" to "Split button is a button with a nested dropdown and a vertical line", you see that shift with the introduction of WPF at least</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980182975486521395" class="chatlog__message-container " data-message-id="980182975486521395">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 11:57 AM">11:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so the move away from inheritance to composition was definitely ongoing in the 2000s</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980183046252818572" class="chatlog__message-container " data-message-id="980183046252818572">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 11:57 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah this is what I meant by "reasonably well", i.e. it was better than no organization at all but didn't end up being the one abstraction to rule all of GUI</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980183421835968552" class="chatlog__message-container " data-message-id="980183421835968552">
<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">May 28, 2022 11:58 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I do think it's interesting though that it was still a more effective model than what you tend to see elsewhere. <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> and <span class="chatlog__markdown-mention" title="SirWhinesalot#7124">@SirWhinesalot</span> talked in the planning doc about objects needing to belong to the "solution domain", not the "problem domain", and this feels like a similar situation to me</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980183672890212382" class="chatlog__message-container " data-message-id="980183672890212382">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 11:59 AM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One thing I still grapple with is that it's easier to use computers to talk about computers than it is to do something useful. That leads to all our yak shaving and abstraction-tower-building tendencies.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184159949582466" class="chatlog__message-container " data-message-id="980184159949582466">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah, OO is a rather natural way to model GUIs (not necessarily the only way, nor the best), but it works. A button has some internal state, it responds to some events, those events are shared between all kinds of GUI entities. A "Widget" interface that gets implemented by many different Widget classes is a rather obvious way to model this</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184200621731870" class="chatlog__message-container " data-message-id="980184200621731870">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:02 PM">12:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">even in languages without native OO support</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184227670806588" class="chatlog__message-container " data-message-id="980184227670806588">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:02 PM">12:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See <a class="inserted-after" href="https://www.codeproject.com/Articles/13601/COM-in-plain-C" target="_blank">COM</a> or <a class="inserted-after" href="https://www.linuxtopia.org/online_books/gui_toolkit_guides/gtk+_gnome_application_development/cha-objects.html" target="_blank">GTK in C</a> for examples</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184282997858324" class="chatlog__message-container " data-message-id="980184282997858324">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980183421835968552')">
I do think it's interesting though that it was still a more effective model than what you tend to see elsewhere. <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> and <span class="chatlog__markdown-mention" title="SirWhinesalot#7124">@SirWhinesalot</span> talked in the planning doc about objects needing to belong to the "solution domain", not the "problem domain", and this feels like a similar situation to me </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That HN comment (<a href="https://news.ycombinator.com/item?id=785601#785833" target="_blank">https://news.ycombinator.com/item?id=785601#785833</a>) actually hit me like a pile of bricks. Until then I'd only heard that you used inheritance to model is-a relationships, then wandered off because that seemed to suck.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184408814419988" class="chatlog__message-container " data-message-id="980184408814419988">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes how many times has a junior programmer agonized over "is-a" vs "has-a"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184474790821960" class="chatlog__message-container " data-message-id="980184474790821960">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588">demetrispanos</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980184408814419988')">
yes how many times has a junior programmer agonized over "is-a" vs "has-a" </span>
</div>
</div>
<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">May 28, 2022 12:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I did this for <em>years</em></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184551244566568" class="chatlog__message-container " data-message-id="980184551244566568">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:03 PM">12:03</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and it was a meaningless question</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184587768574053" class="chatlog__message-container " data-message-id="980184587768574053">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah and the memeplex around 90s OOP invites that activity</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980184623634079758" class="chatlog__message-container " data-message-id="980184623634079758">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it very strongly implies that this is what you should do</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980184613504839720" class="chatlog__message-container " data-message-id="980184613504839720">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">interface vs implementation inheritance. And then I find that in practice, all inheritance is good for is sharing code.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:04 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184777049120858" class="chatlog__message-container " data-message-id="980184777049120858">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980184551244566568')">
and it was a meaningless question </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">meaningless but unfortunately very critical if you're in an OO language</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184809051652116" class="chatlog__message-container " data-message-id="980184809051652116">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:04 PM">12:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because the decision is one you're mostly stuck with</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184825656905848" class="chatlog__message-container " data-message-id="980184825656905848">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:04 PM">12:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">without a major rewrite</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184838638288916" class="chatlog__message-container " data-message-id="980184838638288916">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="" title="SirWhinesalot#7124">SirWhinesalot</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980184777049120858')">
meaningless but unfortunately very critical if you're in an OO language </span>
</div>
</div>
<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">May 28, 2022 12:04 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this I would say is a strong Java-ism</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980184958758969444" class="chatlog__message-container " data-message-id="980184958758969444">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">In practice, why is a relationship between two concepts being model as a language feature?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980184998458060800" class="chatlog__message-container " data-message-id="980184998458060800">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:05 PM">12:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">There's absolutely no reason for this</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:05 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185028564754472" class="chatlog__message-container " data-message-id="980185028564754472">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:05 PM">12:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can model that A is a B in 1000 ways</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980185036148068372" class="chatlog__message-container " data-message-id="980185036148068372">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, the dirty secret is that it's not</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185059648761866" class="chatlog__message-container " data-message-id="980185059648761866">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:05 PM">12:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">there is not even an attempt at it</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185090715975740" class="chatlog__message-container " data-message-id="980185090715975740">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:05 PM">12:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">all that is attempted is sharing implementation details with ancestors</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185190632665159" class="chatlog__message-container " data-message-id="980185190632665159">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:06 PM">12:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the language never engages with whether the alleged is-a relationship is valid</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980185211776151662" class="chatlog__message-container " data-message-id="980185211776151662">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">true, you actually have to be careful to ensure an A is actually a B</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185257410179142" class="chatlog__message-container " data-message-id="980185257410179142">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:06 PM">12:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in fact traps like that are typical exam questions</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980185260526563379" class="chatlog__message-container " data-message-id="980185260526563379">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the is-a aspect is entirely in people's minds</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="point_up">
<img class="chatlog__emoji chatlog__emoji--small" alt="☝️" src="files/261d-3A498.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185291287580833" class="chatlog__message-container " data-message-id="980185291287580833">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:06 PM">12:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the thing that exists in the material world is sharing code</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="100">
<img class="chatlog__emoji chatlog__emoji--small" alt="💯" src="files/1f4af-2188D.svg" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980185406802894888" class="chatlog__message-container " data-message-id="980185406802894888">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which is much better done with before/after advice or hooks that receive anonymous functions</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980185792787922994" class="chatlog__message-container " data-message-id="980185792787922994">
<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">May 28, 2022 12:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">When teaching my FIRST robotics students, I've struggled in the past with better examples to illustrate how inheritance works in Java than the classic "Cat is-a Animal" thing, and I suppose that's largely because inheritance isn't actually very good at modeling anything practical</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185829391618128" class="chatlog__message-container " data-message-id="980185829391618128">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:08 PM">12:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but the concept must be taught if we are to use the language</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980185843123773492" class="chatlog__message-container " data-message-id="980185843123773492">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:08 PM">12:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(we no longer use the language)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186049160560693" class="chatlog__message-container " data-message-id="980186049160560693">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588">demetrispanos</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980184408814419988')">
yes how many times has a junior programmer agonized over "is-a" vs "has-a" </span>
</div>
</div>
<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">May 28, 2022 12:09 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">One other aspect of OOP I think might be worth exploring is the idea of "agency" of objects, which "has-a" gets into</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980186102931529899" class="chatlog__message-container " data-message-id="980186102931529899">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:09 PM">12:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm not sure if we've really touched on that yet</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186152445292615" class="chatlog__message-container " data-message-id="980186152445292615">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:09 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">perhaps in passing but we haven't deep dived on it</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186382020534283" class="chatlog__message-container " data-message-id="980186382020534283">
<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">May 28, 2022 12:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This also relates in my mind to the <a class="inserted-after" href="https://en.wikipedia.org/wiki/Actor_model" target="_blank">actor model</a> and perhaps the <a class="inserted-after" href="https://www.youtube.com/watch?v=6YbK8o9rZfI" target="_blank">talk</a> <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> mentioned by Richard Feldman about how OOP design makes each object a "small computer" on its own</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186486722936863" class="chatlog__message-container " data-message-id="980186486722936863">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I might say "small machine" but yes, and indeed this is the origin in Simula</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186499385528371" class="chatlog__message-container " data-message-id="980186499385528371">
<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">May 28, 2022 12:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">This is to me different from the taxonomy issue</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186532625383486" class="chatlog__message-container " data-message-id="980186532625383486">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">indeed, separate concern</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186585746247751" class="chatlog__message-container " data-message-id="980186585746247751">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the execution of the program is a simulation of many independent machines doing things to each other</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980186729208238141" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980186729208238141">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:12 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is "OOP as a model of computation"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187080346963968" class="chatlog__message-container " data-message-id="980187080346963968">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">With hindsight, the question I'm left with is, why did anyone ever consider this a good thing. Alan Kay made the analogy with biological cells in <a href="http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#4" target="_blank">http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#4</a>, but back then (i.e. until the 90s when I started programming) we all assumed that was a good thing.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187224740102215" class="chatlog__message-container " data-message-id="980187224740102215">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it became popular because of the idea that you'd use "code objects" the same way you use, say, screws from Home Depot</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187318092714036" class="chatlog__message-container " data-message-id="980187318092714036">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ah yes, software components. The ubiquitous siren of lego blocks.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="legobrick">
<img class="chatlog__emoji chatlog__emoji--small" alt="legobrick" src="files/798990517714419714-A5156.png" 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-980187326019944528" class="chatlog__message-container " data-message-id="980187326019944528">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">starting a new blog engine? go get some XYZ database screws and some PQR rendering bolts and you're 90% done</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187435428368454" class="chatlog__message-container " data-message-id="980187435428368454">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">one important distinction between the smalltalk view (that affects how "good" it is) is the fact that objects are "live". You're not describing a simulation in terms of a software description of communicating objects (as in Java or C++), but actually witnessing the objects interact and changing their behavior as appropriate</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187599907999815" class="chatlog__message-container " data-message-id="980187599907999815">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:15 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this always felt like Alan Kay marketing speak to me</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980187646351527996" class="chatlog__message-container " data-message-id="980187646351527996">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:15 PM">12:15</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">databases are similarly "alive" in that the tables change with each insert</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980187720020283462" class="chatlog__message-container " data-message-id="980187720020283462">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">live editing is also not dependent on any sort of "object" <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-980187725007310929" class="chatlog__message-container " data-message-id="980187725007310929">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:16 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Kay is a very creative guy, but he is also easily tempted by marketing language</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980187767478845500" class="chatlog__message-container " data-message-id="980187767478845500">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:16 PM">12:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(this is fine, good ideas need marketing)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980187932499533824" class="chatlog__message-container " data-message-id="980187932499533824">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:16 PM">12:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">anyway, it is indeed important to address OOP and the subject of software components/reuse</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980187972580311101" class="chatlog__message-container " data-message-id="980187972580311101">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:17 PM">12:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because it definitely was perceived as the way to achieve the latter</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188099676110879" class="chatlog__message-container " data-message-id="980188099676110879">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:17 PM">12:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you no longer would do the "unimportant" "tedious" work of writing a string formatting function, you'd just use a java.util.StringFormatter</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188129740882050" class="chatlog__message-container " data-message-id="980188129740882050">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:17 PM">12:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(I don't know if that exists, it probably doesn't)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980188221629661244" class="chatlog__message-container " data-message-id="980188221629661244">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a href="https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html" target="_blank">https://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html</a></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188234908860456" class="chatlog__message-container " data-message-id="980188234908860456">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:18 PM">12:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so close <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-980188281067176037" class="chatlog__message-container " data-message-id="980188281067176037">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and this overlaps with Java's enormous standard library, because it was meant to be analogous to walking into Home Depot and getting the screws you need</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188300511940628" class="chatlog__message-container " data-message-id="980188300511940628">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:18 PM">12:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">haha closer than I thought</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188432322166784" class="chatlog__message-container " data-message-id="980188432322166784">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:18 PM">12:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">importantly, I never saw any kind of argument for why an "object" would be more reusable than a function</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980188457534115880" class="chatlog__message-container " data-message-id="980188457534115880">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but it was widely believed to be the case</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188523669913700" class="chatlog__message-container " data-message-id="980188523669913700">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:19 PM">12:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that was a big part of the Java marketing agenda</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980188434603855903" class="chatlog__message-container " data-message-id="980188434603855903">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:18 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but again, this has nothing to do with objects, a module will do just fine for this purpose</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188451779526667" class="chatlog__message-container " data-message-id="980188451779526667">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:18 PM">12:18</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yup</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980188629752250448" class="chatlog__message-container " data-message-id="980188629752250448">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the only case I can see for it is when the object is "live", meaning you acquire the object already in the state you want, but that's a big stretch</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188679219871744" class="chatlog__message-container " data-message-id="980188679219871744">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:19 PM">12:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">why not just... configure the thing?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188695497941062" class="chatlog__message-container " data-message-id="980188695497941062">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:19 PM">12:19</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">was never clear either</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188778759086101" class="chatlog__message-container " data-message-id="980188778759086101">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:20 PM">12:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">specially not in a Java like language where Classes may as well be modules with extra steps</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980188903770304532" class="chatlog__message-container " data-message-id="980188903770304532">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes and actually you can see some of this in how Python played out, because it was very oriented toward modules</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980188947978260500" class="chatlog__message-container " data-message-id="980188947978260500">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:20 PM">12:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but then got a large influx of what I'll uncharitably call "java refugees" in the mid 00s</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189002126733342" class="chatlog__message-container " data-message-id="980189002126733342">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:21 PM">12:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and suddenly you started seeing a lot of python that looked like java</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980189115272273962" class="chatlog__message-container " data-message-id="980189115272273962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Reuse does feel like an idea important enough to be worth trying for a couple of decades. I'm glad we're past it now. At least for some people today, a library you can reuse registers as more liability than asset. Now you gotta wire it into your supply chain and watch out for vulnerabilities.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980189301625212929" class="chatlog__message-container " data-message-id="980189301625212929">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980189115272273962')">
Reuse does feel like an idea important enough to be worth trying for a couple of decades. I'm glad we're past it now. At least for some people today, a library you can reuse registers as more liability than asset. Now you gotta wire it into your supply chain and watch out for vulnerabilities. </span>
</div>
</div>
<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">May 28, 2022 12:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It does feel like that's the trend, thankfully, but I suspect the dream of perfect reuse will never die out</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980189357266841721" class="chatlog__message-container " data-message-id="980189357266841721">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the reuse concern is largely mercenary</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189405174186045" class="chatlog__message-container " data-message-id="980189405174186045">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:22 PM">12:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I mean it's mainly something businesses care about to reduce costs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189454885064774" class="chatlog__message-container " data-message-id="980189454885064774">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:22 PM">12:22</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is fine, keeping costs low is a reasonable concern</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980189474178879578" class="chatlog__message-container " data-message-id="980189474178879578">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The key for me is to minimize zones of ownership. Reuse makes most sense when a vocabulary of components was coherently designed to compose well.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980189556064260157" class="chatlog__message-container " data-message-id="980189556064260157">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:23 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but I don't think it's ultimately a deep concern about quality of code (even if it overlaps with quality concerns like single-point-of-truth)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189719285596192" class="chatlog__message-container " data-message-id="980189719285596192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:24 PM">12:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I want to distinguish between "reuse" and just "use by someone else"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189766203097209" class="chatlog__message-container " data-message-id="980189766203097209">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:24 PM">12:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because I think they're conflated, but really only the second thing matters in most cases</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189830132670545" class="chatlog__message-container " data-message-id="980189830132670545">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:24 PM">12:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if I write the postgres database engine, what's important is that many people can use it (and not write their own)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189887678533712" class="chatlog__message-container " data-message-id="980189887678533712">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:24 PM">12:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">what's <em>not</em> important is that it can be used to make a substantially different database engine</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189939264262156" class="chatlog__message-container " data-message-id="980189939264262156">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:24 PM">12:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but that's the "just like screws" idea</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980189971652689990" class="chatlog__message-container " data-message-id="980189971652689990">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:25 PM">12:25</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the same screws can make a table or a bookshelf etc.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190279913070612" class="chatlog__message-container " data-message-id="980190279913070612">
<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">May 28, 2022 12:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Do you think object-oriented design is <em>worse</em> at providing reuse than other approaches, or just completely unrelated?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190321071759441" class="chatlog__message-container " data-message-id="980190321071759441">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">one are where OOP matters for reuse is the idea of an interface that can be implemented in many different ways</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980190389527019540" class="chatlog__message-container " data-message-id="980190389527019540">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:26 PM">12:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it sets a boundary between parts of the code</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190454043770911" class="chatlog__message-container " data-message-id="980190454043770911">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think OOP tilted harder at that particular problem. Making it easier to build things that you can reuse with anything else. It failed, but that's ok.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190455662784512" class="chatlog__message-container " data-message-id="980190455662784512">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I would hesitate to attribute interfaces to any particular discipline</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190607655968849" class="chatlog__message-container " data-message-id="980190607655968849">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980190279913070612')">
Do you think object-oriented design is <em>worse</em> at providing reuse than other approaches, or just completely unrelated? </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think it is in practice worse because it forces you to buy into the author's specific set of branded lego pieces that don't quite fit anyone else's</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980190673179381830" class="chatlog__message-container " data-message-id="980190673179381830">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:27 PM">12:27</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in my experience the things that are easiest to glue together have extremely simple and unopinionated representations</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980190743178137621" class="chatlog__message-container " data-message-id="980190743178137621">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but if you have to instantiate an object from some complex hierarchy merely to get started, you have a lot of friction</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980190849549881385" class="chatlog__message-container " data-message-id="980190849549881385">
<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">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">It seems to me that easy reuse is in direct conflict with ideas of taxonomy and ownership and agency</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:29 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980190879430115379" class="chatlog__message-container " data-message-id="980190879430115379">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the unix way is "almost everything is lines of text, and you have to parse them"</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980190896979062885" class="chatlog__message-container " data-message-id="980190896979062885">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's annoying, but easy to glue together</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:28 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980190742687412284" class="chatlog__message-container " data-message-id="980190742687412284">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980190279913070612')">
Do you think object-oriented design is <em>worse</em> at providing reuse than other approaches, or just completely unrelated? </span>
</div>
</div>
<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">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So this depends. Most traditonal inheritance based OOP are worse than plain procedural, but something like Go's implicit interfaces (which some don't even call OOP) is a lot more reusable.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980190888192008273" class="chatlog__message-container " data-message-id="980190888192008273">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/418ec586b1074c5304d2bdfde2d725c9-F2143.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(52, 152, 219)" title="gingerBill#9999">gingerBill</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980190742687412284')">
So this depends. Most traditonal inheritance based OOP are worse than plain procedural, but something like Go's implicit interfaces (which some don't even call OOP) is a lot more reusable. </span>
</div>
</div>
<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">May 28, 2022 12:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">The big issue is that Go's interfaces require GC and have many performance issues.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190978549882980" class="chatlog__message-container " data-message-id="980190978549882980">
<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">May 28, 2022 12:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">as <span class="chatlog__markdown-mention" title="skejeton#5788">@skejeton</span> was getting at in <span class="chatlog__markdown-mention">#fishbowl-audience</span>, a table doesn't own a screw, a table leg doesn't own a screw, they're just all <em>there</em></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980190985977995384" class="chatlog__message-container " data-message-id="980190985977995384">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:29 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the C way is "almost everything is arrays of a few machine-type primitives"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191070224781352" class="chatlog__message-container " data-message-id="980191070224781352">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:29 PM">12:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and that too has proven to be a very productive way to glue things together, as it is the basis of almost every practical FFI design</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191162470129674" class="chatlog__message-container " data-message-id="980191162470129674">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:29 PM">12:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">the web way is "almost everything is JSON"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191195005337610" class="chatlog__message-container " data-message-id="980191195005337610">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:29 PM">12:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and again, that is easy to glue together</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191418888900679" class="chatlog__message-container " data-message-id="980191418888900679">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:30 PM">12:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Java <em>attempted</em> "amost everything is XML" but it rightfully went up in flames</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191463696662569" class="chatlog__message-container " data-message-id="980191463696662569">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:30 PM">12:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because XML has many of the same problems vs JSON as Java OOP vs procedural</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191635495333928" class="chatlog__message-container " data-message-id="980191635495333928">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:31 PM">12:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">JSON makes no pretense of modeling the real world, it's just a record</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980191779070550136" class="chatlog__message-container " data-message-id="980191779070550136">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><a class="inserted-after" href="https://www.youtube.com/watch?v=ROor6_NGIWU" target="_blank">rich hickey goes into this</a> on why systems level concerns are different from application level concerns, and the data exchange between "processes" or "entities" in a system should be very "loose"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980191826789167135" class="chatlog__message-container " data-message-id="980191826789167135">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:32 PM">12:32</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's why unix has just strings, or the web has json everywhere</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980192167559594054" class="chatlog__message-container " data-message-id="980192167559594054">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:33 PM">12:33</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is also why stuff like <a class="inserted-after" href="https://en.wikipedia.org/wiki/Dependency_injection" target="_blank">dependency injection</a> frameworks exist, their job is to set up the "wiring" between various components, which gets more and more complicated the more detailed the interface specification they have to communicate is</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980192732033187921" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980192732033187921">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:35 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Complexity feels like something worth talking about head on. A lot of our discussion has had it implicitly in the background. The promise of many languages/tools/paradigms is "treat complexity as an externality. Infinite scale!" This never bears out, and lately I consider it a bad direction. Why is it so important to be able to scale up in complexity?
Oh wait, where am I, this is Handmade Network. I'm preaching to the choir <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-980193170916802570" class="chatlog__message-container " data-message-id="980193170916802570">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408">Kartik Agaram</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980192732033187921')">
Complexity feels like something worth talking about head on. A lot of our discussion has had it implicitly in the background. The promise of many languages/tools/paradigms is "treat complexity as an externality. Infinite scale!" This never bears out, and lately I consider it a bad direction. Why is it so important to be able to scale up in complexity?
Oh wait, where am I, this is Handmade Network. I'm preaching to the choir <img loading="lazy" class="chatlog__emoji " alt="😅" title="sweat_smile" src=".\files\twemoji_1f605.svg"> </span>
</div>
</div>
<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">May 28, 2022 12:37 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Well on that note, another thing that I had on my list was the idea that OOP allows you to scale up development and solve more complex problems. One of the links you posted during planning directly stated this exact idea. But...is there any merit to that idea at all?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980193340555407380" class="chatlog__message-container " data-message-id="980193340555407380">
<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">May 28, 2022 12:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Was that perhaps just an accident of all the other things Java provided out of the box?</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980193318254305380" class="chatlog__message-container " data-message-id="980193318254305380">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:38 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Namespacing does help.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980193538375553104" class="chatlog__message-container " data-message-id="980193538375553104">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:39 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think a lot of these ideas do help. Perhaps it's a matter of setting expectations. "This is awesome, rock out with it!" vs "You're trying to do something really hard, this thing will help mitigate the pain."</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980193783029309580" class="chatlog__message-container " data-message-id="980193783029309580">
<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">May 28, 2022 12:40 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I now see that my prep notes actually say "OOP allows us to write larger programs" and that is definitely true <img loading="lazy" class="chatlog__emoji " alt="troll" title="troll" src="https://cdn.discordapp.com/emojis/750755518720770138.png"></span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:40 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980194165587582997" class="chatlog__message-container " data-message-id="980194165587582997">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">breaking down systems into components definitely helps with scaling things up, this is done all the time in hardware land, but components are not objects</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980194171488989204" class="chatlog__message-container " data-message-id="980194171488989204">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:41 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the steelman version of this argument goes like this
1. OOP encourages you to assemble your program from many small objects, one per file
2. since each object has a single responsibility, individual changes that happen in the future usually belong in only one file
3. so even if you have 10k class files, only one matters at any given time
4. so you can scale your classes across your people</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980194278213025822" class="chatlog__message-container " data-message-id="980194278213025822">
<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">May 28, 2022 12:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's among the weaker steelmans I've seen</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="joy">
<img class="chatlog__emoji chatlog__emoji--small" alt="😂" src="files/1f602-20224.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-980194391194996776" class="chatlog__message-container " data-message-id="980194391194996776">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and this is mostly true for changes like "instead of saying Hello Newcomer, it should say Howdy Stranger when the player logs in"</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="100">
<img class="chatlog__emoji chatlog__emoji--small" alt="💯" src="files/1f4af-2188D.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-980194426469093426" class="chatlog__message-container " data-message-id="980194426469093426">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you look up the PlayerGreeter.java</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980194437730816110" class="chatlog__message-container " data-message-id="980194437730816110">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:42 PM">12:42</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you change the greeting</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980194398782492752" class="chatlog__message-container " data-message-id="980194398782492752">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:42 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I do often find myself needing to modify multiple classes/files in a single tiny commit.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980194615619629057" class="chatlog__message-container " data-message-id="980194615619629057">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:43 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">For a while I used to have my build script show me the average number of files modified in the last 10 commits. That did give an interesting sort of peripheral awareness.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980194813481725993" class="chatlog__message-container " data-message-id="980194813481725993">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:44 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">one thing that's important to note is that OOP makes changing the architecture rather hard, i.e. since objects store their references to other objects, you have to jump around everywhere to change things</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980194870184525924" class="chatlog__message-container " data-message-id="980194870184525924">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:44 PM">12:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you try to avoid this by using some pattern where an "upper level" object sets everything up</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980194909602598962" class="chatlog__message-container " data-message-id="980194909602598962">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:44 PM">12:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you end up with way too much argument passing to constructors</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980194951713394688" class="chatlog__message-container " data-message-id="980194951713394688">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:44 PM">12:44</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">which, in turn, leads to awful dependency injection frameworks</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195027550621787" class="chatlog__message-container " data-message-id="980195027550621787">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:45 PM">12:45</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in most component-based design systems for hardware, the connections between the components are a directly editable thing</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195183943630848" class="chatlog__message-container " data-message-id="980195183943630848">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:45 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><img loading="lazy" class="chatlog__emoji " alt="💯" title="100" src=".\files\twemoji_1f4af.svg"> But then doesn't everything? I define architecture as "that which is hard to change."</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195196245540895" class="chatlog__message-container " data-message-id="980195196245540895">
<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">May 28, 2022 12:45 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That feels like it's mostly caused by the inheritance / taxonomy / hierarchy kinds of design problems we were talking about before</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195280731385896" class="chatlog__message-container " data-message-id="980195280731385896">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 12:46 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">even with composition it's an issue, because of how communication between objects occurs</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195317930676265" class="chatlog__message-container " data-message-id="980195317930676265">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:46 PM">12:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i.e. For A to send messages to B, it needs to remember B</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:48 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195343419457618" class="chatlog__message-container " data-message-id="980195343419457618">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:46 PM">12:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">somehow, one way or another</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195409634938890" class="chatlog__message-container " data-message-id="980195409634938890">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:46 PM">12:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">whereas in actual component-based systems, that "memory" is stored externally</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195457659723856" class="chatlog__message-container " data-message-id="980195457659723856">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:46 PM">12:46</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">importantly, A does not own B here</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195464555147304" class="chatlog__message-container " data-message-id="980195464555147304">
<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">May 28, 2022 12:46 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">sure, I guess I could see how it's a problem with "agency" ideas too</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195597581701170" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980195597581701170">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:47 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">perhaps another thing worth noting here is that OOP overlapped with many general-good-practice "discoveries" and I think inherited some of their reputation, e.g. avoiding unnecessary globals</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980195632629284946" class="chatlog__message-container " data-message-id="980195632629284946">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:47 PM">12:47</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(which OOP then undoes by inventing singletons :P)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980195772245086229" class="chatlog__message-container " data-message-id="980195772245086229">
<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">May 28, 2022 12:48 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I suppose so, yeah</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196026617053234" class="chatlog__message-container " data-message-id="980196026617053234">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="" title="SirWhinesalot#7124">SirWhinesalot</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980194165587582997')">
breaking down systems into components definitely helps with scaling things up, this is done all the time in hardware land, but components are not objects </span>
</div>
</div>
<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">May 28, 2022 12:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Going back to this, I would agree that breaking down systems into more-independent modules is certainly very important to solving larger problems; avoiding unnecessary globals is another example of a useful design tactic for tackling complexity</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:49 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980196128211492944" class="chatlog__message-container " data-message-id="980196128211492944">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:49 PM">12:49</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Was it really all that bad before OOP languages became popular though?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196157361897602" class="chatlog__message-container " data-message-id="980196157361897602">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">All the fun there is in that word "unnecessary" <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-980196158343372911" class="chatlog__message-container " data-message-id="980196158343372911">
<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">May 28, 2022 12:49 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">That might be too big a question <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-980196271883190303" class="chatlog__message-container " data-message-id="980196271883190303">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well, OOP also largely coincided with the establishment of "programmer" as a known profession</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196319253635142" class="chatlog__message-container " data-message-id="980196319253635142">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Our programs did grow by several orders of magnitude in the period of the OO paradigm. I feel like it should take some of the credit/blame for that.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196421934383154" class="chatlog__message-container " data-message-id="980196421934383154">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:50 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">indeed in the 80s it was common for people to conflate the "IT guy" with a programmer, and it was even riffed a bit in movies</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980196547159539712" class="chatlog__message-container " data-message-id="980196547159539712">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:51 PM">12:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so I think it's hard to separate the professionalization of the field from the techniques that were popular at the time</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980196631234375730" class="chatlog__message-container " data-message-id="980196631234375730">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:51 PM">12:51</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">far fewer people were programming in the 80s</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196867646312598" class="chatlog__message-container " data-message-id="980196867646312598">
<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">May 28, 2022 12:52 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I suppose then that programming was just running into the very real problems of working with larger teams</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:52 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980196948420227192" class="chatlog__message-container " data-message-id="980196948420227192">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:52 PM">12:52</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"software engineering", to use Russ Cox's definition</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:56 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980196977260241017" class="chatlog__message-container " data-message-id="980196977260241017">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:52 PM</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-980197084873523270" class="chatlog__message-container " data-message-id="980197084873523270">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980196867646312598')">
I suppose then that programming was just running into the very real problems of working with larger teams </span>
<span class="chatlog__reference-edited-timestamp" title="28-May-22 12:52 PM">(edited)</span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Oh very interesting, hadn't seen this before: <a href="https://research.swtch.com/vgo-eng" target="_blank">https://research.swtch.com/vgo-eng</a></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980197151256748143" class="chatlog__message-container " data-message-id="980197151256748143">
<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">May 28, 2022 12:53 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yep I was just gonna share the full quote:
<div class="chatlog__markdown-quote"><div class="chatlog__markdown-quote-border"></div><div class="chatlog__markdown-quote-content">Software engineering is what happens to programming
when you add time and other programmers.</div></div></span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980197351673167903" class="chatlog__message-container " data-message-id="980197351673167903">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:54 PM">12:54</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is it fair to say that OOP languages offered some useful tools for "software engineering", but that those tools were misused?</span>
<span class="chatlog__edited-timestamp" title="28-May-22 12:54 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980197594582093865" class="chatlog__message-container " data-message-id="980197594582093865">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:55 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd say Java/C++ offered the versions of various things that became popular (e.g. modularity was a general useful idea, and the way it came to the market was classes)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980197790451908709" class="chatlog__message-container " data-message-id="980197790451908709">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980197351673167903')">
Is it fair to say that OOP languages offered some useful tools for "software engineering", but that those tools were misused? </span>
<span class="chatlog__reference-edited-timestamp" title="28-May-22 12:54 PM">(edited)</span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(46, 204, 113)" title="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:56 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Yeah it feels like the nature of the world. You get some promises, you build something. You get some benefits, you get some problems you now have to live with. There's no going back. You can't enter a river twice.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980197982144192512" class="chatlog__message-container " data-message-id="980197982144192512">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:56 PM">12:56</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Even the bad parts, we had to explore them to understand why they're bad.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980197998799761450" class="chatlog__message-container " data-message-id="980197998799761450">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:56 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it's worth trying to eliminate the "sturgeon contribution" (<a class="inserted-after" href="https://en.wikipedia.org/wiki/Sturgeon%27s_law" target="_blank">sturgeons law</a>: 90% of everything is bad)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980198054747570216" class="chatlog__message-container " data-message-id="980198054747570216">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:57 PM">12:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">a lot of bad stuff was done with OOP, but a lot of bad stuff would be done regardless</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980198131998273547" class="chatlog__message-container " data-message-id="980198131998273547">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:57 PM">12:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so it's useful to think about what badness was imposed on top of the sturgeon fraction</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980198224084205618" class="chatlog__message-container " data-message-id="980198224084205618">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:57 PM">12:57</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">personally I think the "model the real world" thing is above-sturgeon badness</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980198285337833502" class="chatlog__message-container " data-message-id="980198285337833502">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:58 PM">12:58</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it infected everything and everyone, it wasn't just the usual "most people do bad work"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198383371321434" class="chatlog__message-container " data-message-id="980198383371321434">
<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">May 28, 2022 12:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you could argue that it's a sturgeon-multiplier</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198420532826184" class="chatlog__message-container " data-message-id="980198420532826184">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes quite plausible</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198426983661618" class="chatlog__message-container " data-message-id="980198426983661618">
<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">May 28, 2022 12:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it makes the 90% even worse <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-980198459070115840" class="chatlog__message-container " data-message-id="980198459070115840">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 12:58 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I tend to think all the above-sturgeon badness came from social context. Mostly incentives. Hard to blame a tech paradigm for it.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198644668063764" class="chatlog__message-container " data-message-id="980198644668063764">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 12:59 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but the paradigm clearly invites some forms of badness</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980198665736032346" class="chatlog__message-container " data-message-id="980198665736032346">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 12:59 PM">12:59</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and deserves blame for something it invites</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198835320139796" class="chatlog__message-container " data-message-id="980198835320139796">
<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">May 28, 2022 01:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so for example, the problems with modeling</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980198949325537371" class="chatlog__message-container " data-message-id="980198949325537371">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:00 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I can't blame OOP for people applying it lazily or in a way that it doesn't invite, but I can absolutely blame it for people using it the way it advertises itself</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980199066950594640" class="chatlog__message-container " data-message-id="980199066950594640">
<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">May 28, 2022 01:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you yourself did talk though about the level of marketing behind Java - so both factors are certainly in play</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980199176719712256" class="chatlog__message-container " data-message-id="980199176719712256">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">well ok but the thing that was marketed is not separable right?</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980199249818058762" class="chatlog__message-container " data-message-id="980199249818058762">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:01 PM">13:01</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they didn't randomly choose something to promote, they chose that thing to promote</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980199152526950440" class="chatlog__message-container " data-message-id="980199152526950440">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:01 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">going from "I have this problem, how do I solve it with a combination of data structures and algorithms" to "how do I model these real-world concepts as agents with data + behavior" was one of the greatest mistakes we did as an industry</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980199321771323462" class="chatlog__message-container " data-message-id="980199321771323462">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">As an example, a nameless org I worked at was <em>big</em> on Design Patterns. But that was mostly caused by promotion incentives that reward complex-seeming work. I hate Design Patterns, but have a hard time blaming it for the ills created in its name.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980199481976971354" class="chatlog__message-container " data-message-id="980199481976971354">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:02 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ok but Design Patterns didn't say "you should base promotions on complex patterns"</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980199523626414160" class="chatlog__message-container " data-message-id="980199523626414160">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:02 PM">13:02</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">whereas OOP does say "you should have your program model concepts in the real world"</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:03 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980199595625820200" class="chatlog__message-container " data-message-id="980199595625820200">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they (Design Patterns) were meant as a tool of communication, something to help explain what a certain structure in the code (that occurs often) is doing, but they turned into "best practices" somehow</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:03 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980199635421376532" class="chatlog__message-container " data-message-id="980199635421376532">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:03 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">True. I think I just give it some leeway as an honest mistake..</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980199915030478858" class="chatlog__message-container " data-message-id="980199915030478858">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:04 PM">13:04</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Design Patterns were also an honest mistake. They thought the problem they were solving was how to work in complex domains. The problem they turned out to solve was how to smuggle complexity and over-engineering into anything.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200056625975356" class="chatlog__message-container " data-message-id="980200056625975356">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think they started from a very true and valuable observation, which is that code-as-characters-in-files reuse is [NOT] important compared to <em>design reuse</em></span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:05 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200099252670504" class="chatlog__message-container " data-message-id="980200099252670504">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:05 PM">13:05</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that one insight was enough to persuade me to keep trying to find value in the book for years</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200176826335342" class="chatlog__message-container " data-message-id="980200176826335342">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">this is Design Patterns, you mean?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200245453520908" class="chatlog__message-container " data-message-id="980200245453520908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:05 PM</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-980200280274632774" class="chatlog__message-container " data-message-id="980200280274632774">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:05 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yeah that makes sense</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200364559192065" class="chatlog__message-container " data-message-id="980200364559192065">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you already have a design of a solution you can reuse from the past, you're 80% done</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200397635473448" class="chatlog__message-container " data-message-id="980200397635473448">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:06 PM">13:06</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because most of programming is discovering a good-enough design</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200418116263986" class="chatlog__message-container " data-message-id="980200418116263986">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Design Patterns are certainly useful. I.e. "I need to model <a class="inserted-after" href="https://en.wikipedia.org/wiki/Tagged_union" target="_blank">sum types</a> in this language that doesn't have them, how do I do it?" -&gt; "<a class="inserted-after" href="https://en.wikipedia.org/wiki/Visitor_pattern" target="_blank">Visitor Pattern</a>, here's how you set it up"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200504829280287" class="chatlog__message-container " data-message-id="980200504829280287">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:06 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">right well that's the <a class="inserted-after" href="https://web.archive.org/web/20220413125212/https://norvig.com/design-patterns/design-patterns.pdf" target="_blank">Norvig argument</a>, that design patterns are actually just papering over language deficiencies</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200545321099395" class="chatlog__message-container " data-message-id="980200545321099395">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they are <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-980200563989942432" class="chatlog__message-container " data-message-id="980200563989942432">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">you don't need <a class="inserted-after" href="https://en.wikipedia.org/wiki/Command_pattern" target="_blank">Command Pattern</a> when you have first class functions</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200672282673202" class="chatlog__message-container " data-message-id="980200672282673202">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:07 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">they're actually a great source of language design inspiration</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200709217718335" class="chatlog__message-container " data-message-id="980200709217718335">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:07 PM">13:07</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">"how does your language avoid the need for this pattern"</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980200810703110174" class="chatlog__message-container " data-message-id="980200810703110174">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:08 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes and this would bring it back to the tried-and-true tradition of standardizing extant patterns of use</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200830793838613" class="chatlog__message-container " data-message-id="980200830793838613">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:08 PM">13:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">just like the for-loop, or the mere method</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200886800379975" class="chatlog__message-container " data-message-id="980200886800379975">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:08 PM">13:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">if you write an assembly program, you will at some point write what amounts to a for-loop</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200903858597968" class="chatlog__message-container " data-message-id="980200903858597968">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:08 PM">13:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so the language just makes that standard</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980200987136507974" class="chatlog__message-container " data-message-id="980200987136507974">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:08 PM">13:08</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">to the extent that can be done for design patterns I consider it useful</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201182876282880" class="chatlog__message-container " data-message-id="980201182876282880">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:09 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think the problem was that "applying" design patterns somehow became a point of pride? which is silly? they're a shopping list of solutions to particular problems</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980201277130674186" class="chatlog__message-container " data-message-id="980201277130674186">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:09 PM">13:09</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">i.e. the more patterns in your code the better</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201288711176232" class="chatlog__message-container " data-message-id="980201288711176232">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:09 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes, well ... this would be far afield but this is tied to bigtech interviewing/hiring practices in the late 90s</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201318922739782" class="chatlog__message-container " data-message-id="980201318922739782">
<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">May 28, 2022 01:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">oh man</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201403580547133" class="chatlog__message-container " data-message-id="980201403580547133">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in the same way universities need a thing to teach as a theory of programming, tech companies needed a thing they could quiz</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201535856332810" class="chatlog__message-container " data-message-id="980201535856332810">
<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">May 28, 2022 01:10 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">as much as I would love to crack the coding interview right now, we are past the three-hour mark and I think it would be a good idea to step back and summarize what we've discussed today</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980201582182428743" class="chatlog__message-container " data-message-id="980201582182428743">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:11 PM">13:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">although that would be a great subject for continued discussion afterward</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201585986666506" class="chatlog__message-container " data-message-id="980201585986666506">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes I agree it's too far a tangent</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201639052984380" class="chatlog__message-container " data-message-id="980201639052984380">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">perhaps a future fishbowl, since it's not really OOP specific</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980201658493575198" class="chatlog__message-container " data-message-id="980201658493575198">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:11 PM">13:11</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but also a problem</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980201675694432256" class="chatlog__message-container " data-message-id="980201675694432256">
<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">May 28, 2022 01:11 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">definitely</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980201850911481916" class="chatlog__message-container chatlog__message-container--pinned" data-message-id="980201850911481916">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:12 PM">13:12</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So here's my summary of what we've covered:
- <strong>"OOP is when you associate behavior with data":</strong> This is present in OOP, but not really the heart of the issue. That is, just because you have methods doesn't necessarily mean you have anything more than simple procedural programming with some syntax sugar.
- <strong>"OOP models the real world":</strong> This is categorically not true or effective, no matter what language you use. The real world resists taxonomy, and doesn't have anything to do with the problems you are solving.
- <strong>"OOP is Java":</strong> Well, we didn't say it as such, but we did discuss many of the specific problems of Java, and the promises it failed to live up to, despite its takeover of industry.
- <strong>"OOP as a model of computation":</strong> This idea was appealing largely because of promises of independent components and easy reuse - but arguably OOP is worse at providing this than other programming paradigms (especially the Java flavor of OOP).
- <strong>"OOP tackles complexity":</strong> There are some good concepts, such as modularity and avoiding globals, that became popular along with OOP languages, but OOP itself makes things more complex.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:12 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980202167149416488" class="chatlog__message-container " data-message-id="980202167149416488">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:13 PM">13:13</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Is this a fair representation or am I leaving things out?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980202229497729044" class="chatlog__message-container " data-message-id="980202229497729044">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:13 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'd been writing a summary as well over the conversation, and it is much more instrumental, through the lens of "how to write better programs"
- if you have lots of one kind of thing, give them a common template
- when building a program, take a moment to plan such schemas first
- as a schema proves valuable, rework it to be more timeless. This includes making it easy to change the memory layout, but much more.
Some rules of thumb like these capture all that is valuable about OO, to my mind. And what programming languages can contribute here are late-binding capabilities that preserve optionality for the programmer.
What they don't capture is the hardest problem of all: how you can preserve an executable, checkable model of the world that acts as a history of why your program is as it is.
Tests are one way to do that. Formal models are another, though formal models can also be used for modeling solutions rather than contexts. Prose documents are a third. They have limitations, but they're better than nothing to a future code archeologist.
A lot of the ills we see with OO dogma lie in the space between my rules of thumb. You have to <em>wait</em> until you understand a domain before you try to generalize. OO languages are particularly bad here, because you're forced to create classes literally on line 1.
I think design as a general activity makes no sense. Good design comes from understanding a domain. It is by necessity domain-specific.
And any design activity really has to have a certain level of humility. Pick a bounded problem. Interact with few peers (that themselves have humility in dependencies and goals). Keep things coherent rather than trying to optimize the whole ocean into paperclips.</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:14 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980202359118495844" class="chatlog__message-container " data-message-id="980202359118495844">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980202167149416488')">
Is this a fair representation or am I leaving things out? </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:14 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">just that if we split interfaces/vtables from OO, and maybe the nice subject verb object syntax, there's nothing of use left</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980202904529039420" class="chatlog__message-container " data-message-id="980202904529039420">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:16 PM">13:16</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I'm willing to leave interfaces/vtables as being "OO", as the one useful thing it has, because they are damn useful when you need them</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980203124910329927" class="chatlog__message-container " data-message-id="980203124910329927">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:17 PM">13:17</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">but other people disagree that they're even "OO", since stuff like modules in SML have many similarities without the runtime dispatch for example, and there are many ways to do runtime dispatch that are not interface based</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:17 PM">(edited)</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980203656613875803" class="chatlog__message-container " data-message-id="980203656613875803">
<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">May 28, 2022 01:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">So in that case...I'd like to return to the original age-old question: "is OOP bad or what?"
It sounds like the prevailing opinion here is that:
- Object-oriented programming is fundamentally an approach to modeling and design, not merely some nice syntax in your language
- Object-oriented <em>design</em> is fundamentally flawed, since the idea of solving problems by modeling the world is fundamentally flawed
- The flaws of object-oriented design also prevent OOP from being a useful model of computation, or from meaningfully tackling complexity</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980203745885446195" class="chatlog__message-container " data-message-id="980203745885446195">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:19 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">that's my view on the matter yes</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980203765766426644" class="chatlog__message-container " data-message-id="980203765766426644">
<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">May 28, 2022 01: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">A lot of the ills we see with OO dogma lie in the space between my rules of thumb. You have to wait until you understand a domain before you try to generalize. OO languages are particularly bad here, because you're forced to create classes literally on line 1.
I think design as a general activity makes no sense. Good design comes from understanding a domain. It is by necessity domain-specific.
</div></div>And I appreciate these thoughts by <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> a lot.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980203969668325406" class="chatlog__message-container " data-message-id="980203969668325406">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:20 PM">13:20</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Not only does object-oriented design fail to model problems well, but the tools force you into bad designs immediately.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980204188741013574" class="chatlog__message-container " data-message-id="980204188741013574">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__reference-symbol"></div>
<img class="chatlog__avatar" src="files/89747c254631bcfd05c5c3e7141389aa-A1FB9.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__reference">
<img class="chatlog__reference-avatar" src="files/1963eacbf364164efce1c597dc66aeab-E6901.png" alt="Avatar" loading="lazy">
<div class="chatlog__reference-author" style="color: rgb(250, 186, 71)" title="bvisness#0001">bvisness</div>
<div class="chatlog__reference-content">
<span class="chatlog__reference-link" onclick="scrollToMessage(event, '980203969668325406')">
Not only does object-oriented design fail to model problems well, but the tools force you into bad designs immediately. </span>
</div>
</div>
<div class="chatlog__header">
<span class="chatlog__author" style="color: rgb(233, 30, 99)" title="demetrispanos#5588" data-user-id="239823533989953546">demetrispanos</span>
<span class="chatlog__timestamp">May 28, 2022 01:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">yes in particular "in what class does this activity belong?" is a useless question that has wasted an enormous amount of time</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980204055043403786" class="chatlog__message-container " data-message-id="980204055043403786">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:20 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">btw, just to answer the question I posted when I did my design introduction</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980204083573035069" class="chatlog__message-container " data-message-id="980204083573035069">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:21 PM">13:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">What is the single responsibility of the Customer class?</span>
<span class="chatlog__edited-timestamp" title="28-May-22 01:21 PM">(edited)</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980204145657139300" class="chatlog__message-container " data-message-id="980204145657139300">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:21 PM">13:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">it is to uniquely identify a customer, it's a primary key</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980204169434656798" class="chatlog__message-container " data-message-id="980204169434656798">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:21 PM">13:21</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">here's a Customer class in Odin</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980204189261111306" class="chatlog__message-container " data-message-id="980204189261111306">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:21 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve"><div class="chatlog__markdown-pre chatlog__markdown-pre--multiline nohighlight">Customer :: distinct u64</div></span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980204482854002718" class="chatlog__message-container " data-message-id="980204482854002718">
<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">May 28, 2022 01:22 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think I can also reasonably conclude that, while OOP languages and practices may contain some good ideas, those are mostly unrelated to the core of object-oriented design.</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980204825864183828" class="chatlog__message-container " data-message-id="980204825864183828">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I think "ownership" should maybe go in another fishbowl as well, since it has some similar issues with rigid tree-like structures and assigning "agency" to bits of data</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980204887709200485" class="chatlog__message-container " data-message-id="980204887709200485">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:24 PM">13:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">ownership is quite central to OOP</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980204909179850752" class="chatlog__message-container " data-message-id="980204909179850752">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:24 PM">13:24</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">even in GC languages</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980205041585651752" class="chatlog__message-container " data-message-id="980205041585651752">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">because there's a distinction between an object that "contains" another object within itself, and an object that "knows" about another object</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group" style="">
<div id="chatlog__message-container-980205090478632980" class="chatlog__message-container " data-message-id="980205090478632980">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">in Rust there's a syntactical distinction, but in Java there isn't</span>
</div>
</div>
</div>
</div>
</div><div class="chatlog__message-group">
<div id="chatlog__message-container-980204944143564830" class="chatlog__message-container " data-message-id="980204944143564830">
<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">May 28, 2022 01:24 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Ownership semantics is surprisingly related to OOP from an ontological perspective</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980205084120059904" class="chatlog__message-container " data-message-id="980205084120059904">
<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">May 28, 2022 01:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">and there we have massive tangent #2</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980205250273239100" class="chatlog__message-container " data-message-id="980205250273239100">
<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">May 28, 2022 01:25 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">But yeah I agree that it could be a valuable topic to fishbowl about someday.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980205395098357870" class="chatlog__message-container " data-message-id="980205395098357870">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:26 PM">13:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Thanks <span class="chatlog__markdown-mention" title="Kartik Agaram#9408">@Kartik Agaram</span> for the summary thoughts - are there any other summary thoughts our other participants would like to provide before we close?</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980205497829425212" class="chatlog__message-container " data-message-id="980205497829425212">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:26 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Your thoughts here: <a href="https://discord.com/channels/239737791225790464/980152876846428221/980203656613875803" onclick="scrollToMessage(event, '980203656613875803')">https://discord.com/channels/239737791225790464/980152876846428221/980203656613875803</a>
Are the same as mine</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980205552867110912" class="chatlog__message-container " data-message-id="980205552867110912">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:26 PM">13:26</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">so I'll shut up now <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-980205775316209714" class="chatlog__message-container " data-message-id="980205775316209714">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:27 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Thanks everyone for this introduction to the fishbowl format. I'm a huge convert, to the extent that I think we should stop having in-person conferences.</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="joy">
<img class="chatlog__emoji chatlog__emoji--small" alt="😂" src="files/1f602-20224.svg" loading="lazy">
<span class="chatlog__reaction-count">3</span>
</div>
<div class="chatlog__reaction" title="AbnerHangry">
<img class="chatlog__emoji chatlog__emoji--small" alt="AbnerHangry" src="files/777941313546092555-41FE8.png" loading="lazy">
<span class="chatlog__reaction-count">3</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980206055290204210" class="chatlog__message-container " data-message-id="980206055290204210">
<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">May 28, 2022 01:28 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Thank you very much for participating! I am really glad we finally had the opportunity to discuss this topic thoroughly.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980206177499627602" class="chatlog__message-container " data-message-id="980206177499627602">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:29 PM">13:29</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Thank you all for helping me with my secret moderator agenda of being able to say "before you discuss OOP any further, read this conversation" <img loading="lazy" class="chatlog__emoji " alt="😈" title="smiling_imp" src=".\files\twemoji_1f608.svg"></span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="brain">
<img class="chatlog__emoji chatlog__emoji--small" alt="brain" src="files/487994603568496650-3FA2C.png" loading="lazy">
<span class="chatlog__reaction-count">6</span>
</div>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980206497998966834" class="chatlog__message-container " data-message-id="980206497998966834">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:30 PM">13:30</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">I hope everyone found the conversation useful, that it helps you understand OOP better, and that it helps you understand how to write better programs.</span>
</div>
</div>
</div>
</div>
<div id="chatlog__message-container-980206604479787008" class="chatlog__message-container " data-message-id="980206604479787008">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<div class="chatlog__short-timestamp" title="28-May-22 01:31 PM">13:31</div>
</div>
<div class="chatlog__message-primary">
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">See you in a couple months for our next fishbowl!</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980206807865765908" class="chatlog__message-container " data-message-id="980206807865765908">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/3bf987dc7a33d0b2f989878615544d6a-D4B96.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="Kartik Agaram#9408" data-user-id="692826981640831107">Kartik Agaram</span>
<span class="chatlog__timestamp">May 28, 2022 01:31 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Thank you <span class="chatlog__markdown-mention" title="bvisness#0001">@bvisness</span> for organizing!</span>
</div>
<div class="chatlog__reactions">
<div class="chatlog__reaction" title="coolben">
<img class="chatlog__emoji chatlog__emoji--small" alt="coolben" src="files/851646609917476884-15D55.png" loading="lazy">
<span class="chatlog__reaction-count">2</span>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980206948370747482" class="chatlog__message-container " data-message-id="980206948370747482">
<div class="chatlog__message">
<div class="chatlog__message-aside">
<img class="chatlog__avatar" src="files/db36a06d98bf0e98017ec3559150c05c-F4AEF.png" alt="Avatar" loading="lazy">
</div>
<div class="chatlog__message-primary">
<div class="chatlog__header">
<span class="chatlog__author" style="" title="SirWhinesalot#7124" data-user-id="542115093106655244">SirWhinesalot</span>
<span class="chatlog__timestamp">May 28, 2022 01:32 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">Indeed, thanks a lot <span class="chatlog__markdown-mention" title="bvisness#0001">@bvisness</span> , and also thank you to all the participants</span>
</div>
</div>
</div>
</div>
</div>
<div class="chatlog__message-group">
<div id="chatlog__message-container-980207953988706335" class="chatlog__message-container " data-message-id="980207953988706335">
<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">May 28, 2022 01:36 PM</span>
</div>
<div class="chatlog__content chatlog__markdown">
<span class="chatlog__markdown-preserve">(For future readers, here is a link to the top! <a href="https://discord.com/channels/239737791225790464/980152876846428221/980153085320130630" target="_blank">https://discord.com/channels/239737791225790464/980152876846428221/980153085320130630</a>)</span>
</div>
</div>
</div>
</div>
</div>
</div>