<?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/'><id>tag:blogger.com,1999:blog-10106032.post2408517098887526845..comments</id><updated>2011-02-12T22:07:49.266Z</updated><category term='scripting'/><category term='DLR'/><category term='CLR'/><category term='xaml'/><category term='nexenta'/><category term='business'/><category term='visualized superstructure'/><category term='silverlight'/><category term='apple'/><category term='politics'/><category term='buy'/><category term='competition'/><category term='serialization'/><category term='printing'/><category term='RAII'/><category term='open source'/><category term='Tiburon'/><category term='bash'/><category term='CodeGen'/><category term='iterators'/><category term='acropolis'/><category term='C++'/><category term='dynamic typing'/><category term='Learning'/><category term='build'/><category term='ipod'/><category term='generics'/><category term='Delphi'/><category term='enumerators'/><category term='GC'/><category term='anonymous methods'/><category term='rich client'/><category term='solaris'/><category term='static typing'/><category term='itunes'/><category term='vista'/><category term='rant'/><category term='backup'/><category term='Erlang'/><title type='text'>Comments on Entropy Overload: Multidimensional Separation of Concerns, or Matrix...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.barrkel.com/feeds/2408517098887526845/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default'/><link rel='alternate' type='text/html' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html'/><author><name>Barry Kelly</name><uri>http://www.blogger.com/profile/10559947643606684495</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_2GNT8vlZj48/R3BcgmnurfI/AAAAAAAAAAY/Y9PdEUicKFg/S220/big-avatar-512.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10106032.post-4062284462956395091</id><published>2010-02-05T21:54:12.451Z</published><updated>2010-02-05T21:54:12.451Z</updated><title type='text'>Eh Barry, since you obviously don&amp;#39;t mind writi...</title><content type='html'>Eh Barry, since you obviously don&amp;#39;t mind writing lengthy explanations, could you tell how this relates to Aspect Oriented programming? And to partial classes? TIA!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/4062284462956395091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/4062284462956395091'/><link rel='alternate' type='text/html' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html?showComment=1265406852451#c4062284462956395091' title=''/><author><name>Patrick</name><uri>http://www.blogger.com/profile/00573028757978933821</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://vanlogchem.nl/images/101_6076.thumb.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html' ref='tag:blogger.com,1999:blog-10106032.post-2408517098887526845' source='http://www.blogger.com/feeds/10106032/posts/default/2408517098887526845' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1454740188'/></entry><entry><id>tag:blogger.com,1999:blog-10106032.post-6840372734665241155</id><published>2010-02-04T18:58:00.340Z</published><updated>2010-02-04T18:58:00.340Z</updated><title type='text'>No. Multi-methods resolve the method to call using...</title><content type='html'>No. Multi-methods resolve the method to call using the run-time type of more than one argument of the method call, whereas virtual methods resolve the method using only the run-time type of the first argument (the receiver).&lt;br /&gt;&lt;br /&gt;The matrix inheritance concept is independent of notions of virtual methods, and applies to the behaviour of a notional &amp;quot;method&amp;quot; under certain circumstances or configurations - not necessarily related to any of the arguments. The degree to which it is related to virtual method resolution depends on how you implement configuration or conditional method selection via inheritance.&lt;br /&gt;&lt;br /&gt;The problem with inheritance is that you have to choose an ontological hierarchy, but the ontology of the domain doesn&amp;#39;t necessarily imply that one category is a superset of another category - rather there can be independent dimensions of behaviour.&lt;br /&gt;&lt;br /&gt;Matrix inheritance inverts the problem. Rather than selecting which methods get overridden by who, and have to contort your hierarchy to fit, one annotates the methods such that they should apply in different subspaces of the Cartesian product of configuration, or behaviour, dimensions.&lt;br /&gt;&lt;br /&gt;If you look in the paper I link to - though you may need to search for another download link, it doesn&amp;#39;t seem to be cached by CiteSeer any more - you can see what they call &amp;quot;hyperslices&amp;quot; in Figure 3 on PDF page 7 (113 in the text). Different aspects of the system, such as the syntax check, semantic check, etc., can be configured independently of the class hierarchy. An entire set of methods across the whole class hierarchy can be &amp;quot;overridden&amp;quot; en masse. You should see that &amp;#39;check()&amp;#39; is defined in both the syntax and semantic check slices. You can think of them as overrides, but they are rather ways of composing the whole program depending on which aspects you want to include, i.e. depending on circumstances or configuration options.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/6840372734665241155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/6840372734665241155'/><link rel='alternate' type='text/html' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html?showComment=1265309880340#c6840372734665241155' title=''/><author><name>Barry Kelly</name><uri>http://www.blogger.com/profile/10559947643606684495</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='08331762029805209075'/><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://bp2.blogger.com/_2GNT8vlZj48/R3BcgmnurfI/AAAAAAAAAAY/Y9PdEUicKFg/S220/big-avatar-512.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html' ref='tag:blogger.com,1999:blog-10106032.post-2408517098887526845' source='http://www.blogger.com/feeds/10106032/posts/default/2408517098887526845' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-630653472'/></entry><entry><id>tag:blogger.com,1999:blog-10106032.post-5362633807277248134</id><published>2010-02-04T18:27:29.478Z</published><updated>2010-02-04T18:27:29.478Z</updated><title type='text'>Isn&amp;#39;t this what is typically called multi meth...</title><content type='html'>Isn&amp;#39;t this what is typically called multi methods?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/5362633807277248134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/5362633807277248134'/><link rel='alternate' type='text/html' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html?showComment=1265308049478#c5362633807277248134' title=''/><author><name>Vagn</name><uri>http://www.blogger.com/profile/14916225009142911655</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html' ref='tag:blogger.com,1999:blog-10106032.post-2408517098887526845' source='http://www.blogger.com/feeds/10106032/posts/default/2408517098887526845' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1874098301'/></entry><entry><id>tag:blogger.com,1999:blog-10106032.post-5464330415928081918</id><published>2010-02-03T20:46:15.166Z</published><updated>2010-02-03T20:46:15.166Z</updated><title type='text'>I think a good, and not too hard to understand, ex...</title><content type='html'>I think a good, and not too hard to understand, example of this is handling collisions in the game of asteroids. (There are several types of objects: you, bullets, asteroids and spaceships) and the result of a collision depends on both objects).&lt;br /&gt;&lt;br /&gt;This cannot be done with a virtual method (without much code duplication) as it requires some form of double-dispatch which the majority of languages don&amp;#39;t support.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/5464330415928081918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10106032/2408517098887526845/comments/default/5464330415928081918'/><link rel='alternate' type='text/html' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html?showComment=1265229975166#c5464330415928081918' title=''/><author><name>Marc</name><uri>http://www.blogger.com/profile/03557863488347788835</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.barrkel.com/2010/02/multidimensional-separation-of-concerns.html' ref='tag:blogger.com,1999:blog-10106032.post-2408517098887526845' source='http://www.blogger.com/feeds/10106032/posts/default/2408517098887526845' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-594025467'/></entry></feed>
