<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3993894538644239747</id><updated>2011-04-21T19:44:28.627-07:00</updated><title type='text'>Object by Nature</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.netytan.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.netytan.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-5525501271573216621</id><published>2009-03-15T11:30:00.000-07:00</published><updated>2009-03-15T11:43:36.321-07:00</updated><title type='text'>Lei</title><content type='html'>Today I created a new project on Google Code for my new programming language, &lt;a href="http://code.google.com/p/lei"&gt;The Lei programming language&lt;/a&gt;. Lei introduces some of the more interesting concepts and structures that were developed for the Hula programming language in what will grow to be a practical implementation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-5525501271573216621?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/5525501271573216621/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=5525501271573216621' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/5525501271573216621'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/5525501271573216621'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2009/03/lei.html' title='Lei'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-7273817778093711376</id><published>2008-12-17T10:08:00.000-08:00</published><updated>2008-12-17T10:15:01.548-08:00</updated><title type='text'>Functions And Objects – The State Connection</title><content type='html'>&lt;i&gt;I'm sure that many of you will disagree with me when I say this, and that's the beauty of opinion: there's always more than one.&lt;br /&gt;&lt;br /&gt;If you've read by blog you'll know that I've been leaning towards object-oriented programming of late. With that in mind I'll try to leave my own personal bias out ;).&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The universe in which we operate is inherently stateful. This is reflected in the languages that we use to write computer programs. This is simultaneously, the reason that functional programming and object-oriented programming exist… and the reason most people feel they're irreconcilably distinct.&lt;br /&gt;&lt;br /&gt;I don't believe this to be the case.&lt;br /&gt;&lt;br /&gt;In my not so humble opinion functional and object-oriented programming are as two sides of the same coin, trying to solve the same fundamental problems in opposing ways. While functional programming languages eschew state object-oriented programming languages attempt to make it manageable.&lt;br /&gt;&lt;br /&gt;A language without side-effects (and the resulting state) would be pretty useless. In the end both object-oriented programming and functional programming languages are trying to manage the unavoidable!&lt;br /&gt;&lt;br /&gt;The difference is in the how.&lt;br /&gt;&lt;br /&gt;In object-oriented languages state is encapsulated using objects. In functional languages other approaches are used. Monads can be used to isolate such stateful regions of programs in Haskell.&lt;br /&gt;&lt;br /&gt;So how are functional and object-oriented languages that different? There must be larger differences.&lt;br /&gt;&lt;br /&gt;Perhaps the biggest difference is in the accepted feature set, but even this isn't as big a difference as it first appears. Many of the features assigned to functional programming have also been present in other paradigms for decades, and are not strictly indicative of the paradigm. Others are not limited to functional programming and may be applied in other paradigms.&lt;br /&gt;&lt;br /&gt;Of course, the same can be said about any paradigm, including object-oriented programming.&lt;br /&gt;&lt;br /&gt;Note: what many people see as adoption of functional programming through mainstream object-oriented languages is really just the reintroduction of features that were present in some of the first object-oriented languages. Thanks to the increased interest in functional programming! :)&lt;br /&gt;&lt;br /&gt;To be clear, I'm not saying that functional programming has nothing to offer. The point of this post was to show that the differences are largely ideological. The disagreement about how state and side-effects should be managed is not a reason for us to fight as intensely as we have been recently.&lt;br /&gt;&lt;br /&gt;We should help as much as much as we can. After all, we're going in the same direction.&lt;br /&gt;&lt;br /&gt;On the other-hand, maybe I'm wrong?!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;If you have any comments, corrections or contributions please feel free to shout.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-7273817778093711376?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/7273817778093711376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=7273817778093711376' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/7273817778093711376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/7273817778093711376'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/12/functions-and-objects-state-connection.html' title='Functions And Objects – The State Connection'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-6744041178630062035</id><published>2008-11-23T08:24:00.000-08:00</published><updated>2008-11-23T16:07:12.581-08:00</updated><title type='text'>Newspeak Keynote At Smalltalk Solution 2008</title><content type='html'>&lt;embed id="VideoPlayback" src="http://video.google.com/googleplayer.swf?docid=-4668658159517249037&amp;amp;hl=en&amp;amp;fs=true" style="width:400px;height:326px" allowfullscreen="true" allowscriptaccess="always" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;If you can't tell Gilad Bracha is a hero of mine! In this excellent keynote from Smalltalk Solutions 2008 he introduces the Newspeak programming language. For those interested in following along the slides can be found &lt;a href="http://stic.st/stsFiles/2008/stc08.pdf"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-6744041178630062035?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/6744041178630062035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=6744041178630062035' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/6744041178630062035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/6744041178630062035'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/11/newspeak-keynote-at-smalltalk-solution.html' title='Newspeak Keynote At Smalltalk Solution 2008'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-4343797997706440450</id><published>2008-08-20T06:49:00.000-07:00</published><updated>2008-08-20T06:56:04.022-07:00</updated><title type='text'>Objects As Software Services</title><content type='html'>&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_cBGtvjaLM0&amp;amp;hl=en&amp;amp;fs=1"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed src="http://www.youtube.com/v/_cBGtvjaLM0&amp;amp;hl=en&amp;amp;fs=1" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;This wonderful talk by Gilad Bracha (an idol of mine) is truly eye opening, and like much of Brachas work this may be applicable to Hula at some point in the future!&lt;br /&gt;&lt;br /&gt;If you haven't already check out his work on the &lt;a href="http://newspeaklanguage.org/"&gt;Newspeak&lt;/a&gt; programming language I'd highly recommend it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-4343797997706440450?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/4343797997706440450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=4343797997706440450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/4343797997706440450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/4343797997706440450'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/08/objects-as-software-services.html' title='Objects As Software Services'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-8299563973456620825</id><published>2008-07-17T14:51:00.000-07:00</published><updated>2008-07-26T11:21:21.698-07:00</updated><title type='text'>Hula – The Unfinished Presentation (Version 2)</title><content type='html'>The second revision of the presentation is available &lt;a href="http://www.savefile.com/files/1673179"&gt;here&lt;/a&gt;. I've added a few details on meta-programming, reflection and program organization in Hula, with some references and general improvements. There's still a lot to come but if you have anything specific you want covering just let me know.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;i&gt;If you have any comments, corrections or contributions please feel free to shout.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-8299563973456620825?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/8299563973456620825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=8299563973456620825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/8299563973456620825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/8299563973456620825'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/07/hula-unfinished-presentation-part-2.html' title='Hula – The Unfinished Presentation (Version 2)'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-584999809734184816</id><published>2008-07-12T09:26:00.000-07:00</published><updated>2008-07-17T15:10:51.695-07:00</updated><title type='text'>Methods to Patterns</title><content type='html'>&lt;span style="font-style:italic;"&gt;Explaining patterns is difficult. I suspect that the best way to explain them would be to describe their developed. In this article I’ll touch on the relationship between methods and patterns in the Hula programming language.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In most object-oriented languages the behaviour of an object is referred to as a method.  A method can be thought of as a function. What makes a method distinct is how it relates to an object. A method is related to an object through a process known as dispatch. During dispatch the relevant definition is selected using the types of the arguments at hand.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Single Dispatch&lt;br /&gt;&lt;br /&gt;Just about all object-oriented languages use single dispatch. In these languages a single argument is used in selecting the relevant definition. This makes writing methods that associate multiple objects a bit tedious.&lt;br /&gt;&lt;br /&gt;Pseudo-syntax:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;object method(...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Multiple Dispatch&lt;br /&gt;&lt;br /&gt;The more versatile multiple dispatch may be preferable, but is often dismissed as not being object-oriented enough, mainly because of the perceived syntactic requirements of object oriented languages. With multiple dispatch each argument is treated identically; that is, every argument is used in selecting the relevant definition.&lt;br /&gt;&lt;br /&gt;Pseudo-syntax:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;method(object ...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Refined Dispatch&lt;br /&gt;&lt;br /&gt;With standard dispatch the name of the method is usually specified using an identifier. This separation of identifiers and arguments presents some unfortunate restrictions.&lt;br /&gt;&lt;br /&gt;Hula uses a unique refined multiple dispatch, which enables multiple dispatch on discrete objects. During a refined dispatch the identity of the arguments (not the type) is used to select the relevant definition. This allows objects to completely replace identifiers in the language, and is perhaps an order of magnitude more expressive!&lt;br /&gt;&lt;br /&gt;Pseudo-syntax: &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(method object ...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;(object method ...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;    &lt;/span&gt;&lt;/span&gt;etc.&lt;br /&gt;&lt;br /&gt;The resulting anonymous properties or behaviours above are referred to as patterns :).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;As always if you have any comments, corrections or contributions please feel free to shout.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-584999809734184816?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/584999809734184816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=584999809734184816' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/584999809734184816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/584999809734184816'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/07/methods-to-patterns.html' title='Methods to Patterns'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-3635324270313497962</id><published>2008-07-08T16:10:00.000-07:00</published><updated>2008-07-26T11:21:56.887-07:00</updated><title type='text'>Hula – The Unfinished Presentation (Version 1)</title><content type='html'>I've been working away trying to distill the contents of my various notebooks into something suitable for a presentation. I have a lot of notes so it's not finished yet but if you'd like to read it the &lt;i&gt;pdf&lt;/i&gt; document is available &lt;a href="http://www.savefile.com/files/1656475"&gt;here&lt;/a&gt;. I'm think this could take a while, but anyway, enjoy part one :).&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;If you have any comments, corrections or contributions please feel free to shout.&lt;/i&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-3635324270313497962?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/3635324270313497962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=3635324270313497962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3635324270313497962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3635324270313497962'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/07/hula-unfinished-presentation.html' title='Hula – The Unfinished Presentation (Version 1)'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-451569854606573231</id><published>2008-05-12T14:33:00.000-07:00</published><updated>2008-05-25T11:22:38.973-07:00</updated><title type='text'>Hula - Another Programming Language? (Project Accepted)</title><content type='html'>The project was accepted last week. I'm intending is to start over the summer, but there'll be more posts here once the exam period is over. I've mostly written the second part of &lt;span style="font-style:italic;"&gt;The Fragile Object Problem&lt;/span&gt; at this point :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-451569854606573231?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/451569854606573231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=451569854606573231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/451569854606573231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/451569854606573231'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/05/hula-another-programming-language.html' title='Hula - Another Programming Language? (Project Accepted)'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-3099189274579326402</id><published>2008-04-05T20:23:00.000-07:00</published><updated>2008-04-09T04:57:15.703-07:00</updated><title type='text'>Hula - Another Programming Language? (Project Request)</title><content type='html'>&lt;span style="font-style:italic;"&gt;I submitted this project request a few days ago, for the final year of my degree program. It includes a nice summary of Hula so I’ve posted it here. Enjoy!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Proposal&lt;br /&gt;&lt;br /&gt;This project will examine the design outlined below and compare it with existing alternatives. A prototype of the Hula programming language will be produced based on this research and used to explore the practical benefits of these decisions.&lt;br /&gt;&lt;br /&gt;The final document will detail why another language is desirable, why that language should be Hula, and how the observations embodied therein apply to future language developments.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Summary&lt;br /&gt;&lt;br /&gt;Hula is a unique programming language that brings a number of elegant ideas together. These include prototypes, selective inheritance and multiple dispatch. Although it can be described as being object oriented, in practice this may be a stretch because Hula is quite different from other object oriented languages. &lt;br /&gt;&lt;br /&gt;Hula extends the notion of multiple dispatch to include properties. To accomplish this Hula uses a refined multiple dispatch. This is applied at the object level and allows multiple dispatch to exist within a classless object oriented system. In this context objects contain nothing and exist only to provide identity.&lt;br /&gt;&lt;br /&gt;This makes other identifiers redundant. For this reason properties and behaviours are anonymous in Hula. The languages dispatch mechanism is expected to resolve these appropriately, by analysing each objects identity. This can be very expressive: o name, a plus b plus c, a unless b and even select * from t are conceptually valid.&lt;br /&gt;&lt;br /&gt;These anonymous properties and behaviours are referred to as patterns. The objects that compose them are termed subjects.&lt;br /&gt;&lt;br /&gt;Hula uses a composite inheritance model, which compliments the refined multiple dispatch eluded to above. In contrast to standard inherence, composite inheritance removes dependency between related objects. This allows them to change independently of one another and enables the selective inheritance of properties and behaviours.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;If you have any comments, corrections or contributions please feel free to shout.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-3099189274579326402?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/3099189274579326402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=3099189274579326402' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3099189274579326402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3099189274579326402'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/04/hula-another-programming-language.html' title='Hula - Another Programming Language? (Project Request)'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-2003434483426810974</id><published>2008-02-15T16:15:00.000-08:00</published><updated>2008-02-24T11:13:13.135-08:00</updated><title type='text'>The Fragile Object Problem (Part 1)</title><content type='html'>&lt;span class="Apple-style-span" style="font-style: italic;"&gt;It’s assumed that languages like &lt;/span&gt;&lt;a href="http://en.wikipedia.org/wiki/Self_programming_language"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Self&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;, which lack classes by design, can not suffer from [supposedly] class related issues. Some of these issues have little to do with classes and so should be considered.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The effect of strong coupling between classes and their ancestors is referred to as &lt;span class="Apple-style-span" style="font-style: italic;"&gt;“The Fragile Base-class Problem”&lt;/span&gt;. As you may expect, systems that suffer from &lt;a href="http://en.wikipedia.org/wiki/Fragile_base_class"&gt;this problem&lt;/a&gt; tend to be very sensitive to change.&lt;br /&gt;&lt;br /&gt;This problem in particular is quoted as being an inherent benefit of classless object-oriented languages, but has nothing to do with classes and everything to do with inheritance.&lt;br /&gt;&lt;br /&gt;Delegation, as found in almost all of these languages is a form of dynamic inheritance. It allows the parent (or parents) of an object to be changed as the program is executed.&lt;br /&gt;&lt;br /&gt;On a side-note, even though this method of inheritance is often referred to as prototype-based inheritance it can also be used with classes.&lt;br /&gt;&lt;br /&gt;While delegation has many advantages over static inheritance, the problem persists. It does so because delegation follows the same basic principles as standard inheritance. There are no classes but objects are still arranged hierarchically.&lt;br /&gt;&lt;br /&gt;Consequently, changes made to one object automatically effect other objects.&lt;br /&gt;&lt;br /&gt;This is where classless languages get a chance to shine. Due to the ease of refactoring in these languages, the effect of unwanted coupling like this can be dramatically reduced. At a cost.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At this point it’s worth considering why we organize programs into hierarchies to begin with. There are many good reasons for doing this. If I were to pick just two they would probably have to be: management of complexity and propagation of change.&lt;br /&gt;&lt;br /&gt;When objects are placed into a hierarchy we can assume some interesting properties about them.&lt;br /&gt;&lt;br /&gt;One of these being that objects in a hierarchy will exhibit all of the behaviors of those located above them. This allows us to reuse knowledge we already have about an object when trying to understand another.&lt;br /&gt;&lt;br /&gt;Standard inheritance and delegation provide a convenient way of propagating changes.&lt;br /&gt;&lt;br /&gt;The true nature of inheritance may be the subject of academic dispute, but for the purpose of this article I’ll consider inheritance as the mechanism by which one object derives its behavior from another in a given instant.&lt;br /&gt;&lt;br /&gt;Both of these are highly desirably qualities for a system of inheritance to have, but they’re not without  their disadvantages.&lt;br /&gt;&lt;br /&gt;Since the description of an object is spread out above it, the former makes it harder to understand an object individually. You need to understand each object above the one you’re interested in!&lt;br /&gt;&lt;br /&gt;The latter introduces a wondrously strange dependancy between an object and its ancestors. Any changes made to an object, no matter how small, will alter all of its descendants.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I feel that it’s a combination of these two qualities which leads to what I would like to (more appropriately) call &lt;span class="Apple-style-span" style="font-style: italic;"&gt;“The Fragile Object Problem”&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Part two will continue along the same lines as part one. In particular I hope to present how the problem is being addressed in the design of Hula, a new classless object-oriented programming language.&lt;br /&gt;&lt;br /&gt;If you have any comments, corrections or contributions please feel free to shout.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-2003434483426810974?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/2003434483426810974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=2003434483426810974' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/2003434483426810974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/2003434483426810974'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2008/02/fragile-object-problem.html' title='The Fragile Object Problem (Part 1)'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3993894538644239747.post-3192828959172757299</id><published>2007-07-22T00:41:00.000-07:00</published><updated>2008-07-08T16:36:33.719-07:00</updated><title type='text'>Welcome</title><content type='html'>This blog will detail some of the ideas behind the design of of Hula, a revolutionary programming language. I'll also include some of my thoughts on existing programming languages, for fun :).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;With that in mind, feel free to leave any questions or comments.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3993894538644239747-3192828959172757299?l=www.netytan.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.netytan.com/feeds/3192828959172757299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3993894538644239747&amp;postID=3192828959172757299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3192828959172757299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3993894538644239747/posts/default/3192828959172757299'/><link rel='alternate' type='text/html' href='http://www.netytan.com/2007/07/welcome.html' title='Welcome'/><author><name>Mark Lee Smith</name><uri>http://www.blogger.com/profile/12819093371910833234</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_xQlMZQj4gHg/SHD0ZyFxyTI/AAAAAAAAAAU/jVCg_3Cu-7s/S220/Avatar+White.png'/></author><thr:total>0</thr:total></entry></feed>
