<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>OO on Roads Less Taken</title><link>https://goran.krampe.se/categories/oo/</link><description>Recent content in OO on Roads Less Taken</description><generator>Hugo</generator><language>en</language><lastBuildDate>Tue, 19 Jul 2016 00:00:00 +0000</lastBuildDate><atom:link href="https://goran.krampe.se/categories/oo/index.xml" rel="self" type="application/rss+xml"/><item><title>Is Spry a Smalltalk?</title><link>https://goran.krampe.se/2016/07/19/is-spry-a-smalltalk/</link><pubDate>Tue, 19 Jul 2016 00:00:00 +0000</pubDate><guid>https://goran.krampe.se/2016/07/19/is-spry-a-smalltalk/</guid><description>&lt;p>I love &lt;a href="http://world.st" target="_blank" rel="noopener noreferrer">Smalltalk&lt;/a>
 and I have been in love with it since approximately 1994. I have used VisualWorks, VisualAge (IBM Smalltalk), Dolphin Smalltalk, GemStone, &lt;a href="http://squeak.org" target="_blank" rel="noopener noreferrer">Squeak&lt;/a>
 and &lt;a href="http://pharo.org" target="_blank" rel="noopener noreferrer">Pharo&lt;/a>
 quite a lot, and I was very active in the Squeak community for a long period.&lt;/p>
&lt;p>But the last few years, finally, I have started to feel the &amp;ldquo;burn&amp;rdquo;&amp;hellip; as in &lt;a href="http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html#29" target="_blank" rel="noopener noreferrer">&amp;ldquo;Let&amp;rsquo;s burn our disk packs!&amp;rdquo;&lt;/a>
. And last year I started doing something about it - and the result is &lt;a href="http://sprylang.org" target="_blank" rel="noopener noreferrer">Spry&lt;/a>
. Spry is only at version 0.break-your-hd and several key parts are still missing, but its getting interesting already.&lt;/p>
&lt;p>&lt;strong>Now&amp;hellip; is Spry a Smalltalk? And what would that even mean?&lt;/strong>&lt;/p>
&lt;p>I think the reason I am writing this article is because I am feeling a slight frustration that not more people in the Smalltalk community find Spry interesting. :)&lt;/p>
&lt;p>And sure, who am I to think Spry is anything remotely interesting&amp;hellip; but I would have loved more interest. It may of course change when Spry starts being useful&amp;hellip; or perhaps the lack of interest is because it&amp;rsquo;s not &amp;ldquo;a Smalltalk&amp;rdquo;?&lt;/p>
&lt;h2 id="smalltalk-family">
 Smalltalk family
 &lt;a class="heading-link" href="#smalltalk-family">
 &lt;i class="fa-solid fa-link" aria-hidden="true" title="Link to heading">&lt;/i>
 &lt;span class="sr-only">Link to heading&lt;/span>
 &lt;/a>
&lt;/h2>
&lt;p>The Smalltalk family of languages has a fair bit of variation, for example &lt;a href="http://www.selflanguage.org" target="_blank" rel="noopener noreferrer">Self&lt;/a>
 is clearly in this family, although it doesn&amp;rsquo;t even have classes, but it maintains a similar &amp;ldquo;feel&amp;rdquo; and shares several Smalltalk &amp;ldquo;values&amp;rdquo;. There have been a lot of Smalltalks over the years, even at PARC they made different variants before releasing Smalltalk-80.&lt;/p>
&lt;p>&lt;strong>So&amp;hellip; if we look at Spry, can it be considered a member of the Smalltalk family?&lt;/strong>&lt;/p>
&lt;p>There is an &lt;a href="http://wiki.squeak.org/squeak/172" target="_blank" rel="noopener noreferrer">ANSI standard&lt;/a>
 of Smalltalk - but not many people care about it, except for some vendors perhaps. I should note however that &lt;a href="http://www.seaside.st" target="_blank" rel="noopener noreferrer">Seaside&lt;/a>
 apparently (I think) has brought around a certain focus on the ANSI standard since every Smalltalk implementation on earth wants to be able to run Seaside and Seaside tries to enforce relying on the ANSI standard (correct me if I am wrong).&lt;/p>
&lt;p>Most Smalltalk implementations share a range of characteristics, and a lot of them also follow the ANSI standard, but they can still differ on pretty major points.&lt;/p>
&lt;p>My &lt;strong>personal take&lt;/strong> on things in Smalltalk that are pretty darn important and/or unique are:&lt;/p>
&lt;ol>
&lt;li>Everything is an object including meta levels&lt;/li>
&lt;li>A solid model for object oriented programming&lt;/li>
&lt;li>The image model&lt;/li>
&lt;li>100% live system&lt;/li>
&lt;li>The browser based IDE with advanced cross referencing, workspaces and debuggers&lt;/li>
&lt;li>The keyword syntax and message cascades&lt;/li>
&lt;li>Message based execution model&lt;/li>
&lt;li>Dynamic typing and polymorphism&lt;/li>
&lt;li>Closures everywhere with lightweight syntax and non local return&lt;/li>
&lt;li>Very capable Collections and a good standard library&lt;/li>
&lt;/ol>
&lt;p>Not all Smalltalks cover all 10. For example, there are several Smalltalks without the image model and without a browser based IDE. Self and Slate and other prototypical derivatives don&amp;rsquo;t have classes. Some Smalltalks have much less evolved class libraries for sure, and some are more shallow in the &amp;ldquo;turtle department&amp;rdquo;.&lt;/p>
&lt;p>In Spry we are deviating on a range of these points, but we are also definitely &lt;strong>matching some&lt;/strong> of them!&lt;/p></description></item><item><title>Fowltalk - a new Smalltalk</title><link>https://goran.krampe.se/2016/06/19/fowltalk/</link><pubDate>Sun, 19 Jun 2016 00:00:00 +0000</pubDate><guid>https://goran.krampe.se/2016/06/19/fowltalk/</guid><description>&lt;p>In my quest making &lt;a href="http://sprylang.org" target="_blank" rel="noopener noreferrer">Spry&lt;/a>
 I also learned about other efforts in the Nim community to construct Smalltalk-like dynamic languages. The most ambitious one may be &lt;a href="https://bitbucket.org/fowlmouth/idk" target="_blank" rel="noopener noreferrer">Fowltalk&lt;/a>
 by &amp;ldquo;fowl&amp;rdquo; who typically hangs out in the #nim channel on Freenode. Fowltalk started out written in Nim but since fowl wanted to learn more C++ it&amp;rsquo;s now written in C++17.&lt;/p>
&lt;p>At the moment he is rewriting the parser and code generator parts &lt;a href="https://bitbucket.org/fowlmouth/idk/src/2623f1e366d9a77f08feceda549bf0d9b3b9a72b/bootstrap.1?fileviewer=file-view-default" target="_blank" rel="noopener noreferrer">in the language itself&lt;/a>
, following a similar bootstrapping style as &lt;a href="http://piumarta.com/software/cola/" target="_blank" rel="noopener noreferrer">Ian Piumarta&amp;rsquo;s idst&lt;/a>
. For example, here is &lt;a href="https://bitbucket.org/fowlmouth/idk/src/2623f1e366d9a77f08feceda549bf0d9b3b9a72b/bootstrap.1?fileviewer=file-view-default#bootstrap.1-483" target="_blank" rel="noopener noreferrer">the method parsing keyword messages&lt;/a>
.&lt;/p></description></item></channel></rss>