<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>rogersm.net &#187; programming</title>
	<atom:link href="http://rogersm.net/category/programming/feed" rel="self" type="application/rss+xml" />
	<link>http://rogersm.net</link>
	<description>exploring area</description>
	<lastBuildDate>Wed, 22 Feb 2012 19:01:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Getting into Prolog, again</title>
		<link>http://rogersm.net/2009/09/getting-into-prolog-again</link>
		<comments>http://rogersm.net/2009/09/getting-into-prolog-again#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:43:13 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[papers-read]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[clocksin]]></category>
		<category><![CDATA[mellish]]></category>
		<category><![CDATA[prolog]]></category>
		<category><![CDATA[swi-prolog]]></category>
		<category><![CDATA[wielemaker]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=148</guid>
		<description><![CDATA[I&#8217;ve been getting into with Prolog lately. I had not programmed prolog since university but I wanted to play with expert systems, and Prolog was even better than lisp for prototyping. So, because all the Prolog papers I was reviewing were referencing Programming in Prolog by W. F. Clocksin and C. S. Mellish I bought [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been getting into with Prolog lately. I had not programmed prolog since university but I wanted to play with expert systems, and Prolog was even better than lisp for prototyping.</p>
<p>So, because all the Prolog papers I was reviewing were referencing <a title="Google Books" href="http://books.google.de/books?id=lbcXj6GbMoQC&amp;dq=Programming+in+Prolog&amp;printsec=frontcover&amp;source=bl&amp;ots=9QG_rsw1AP&amp;sig=aGXPVwXHBMmFigtaTwNy4Vr7Wyo&amp;hl=en&amp;ei=2yudSoHPBZ-wnQOk1aG_Ag&amp;sa=X&amp;oi=book_result&amp;ct=result&amp;resnum=3#v=onepage&amp;q=&amp;f=false">Programming in Prolog  by W. F. Clocksin and C. S. Mellish</a> I bought an older (and cheap) edition to re-read. I was surprised how good the book is for learning to program in Prolog.</p>
<p>You can use the wonderful <a title="by Patrick Blackburn, Johan Bos and Kristina Striegnitz" href="http://www.learnprolognow.org/">Learn Prolog Now!</a> as a free introduction text, but Clocksin and Mellish chapters on grammar rules, debugging and laying out programs makes the book priceless.</p>
<p>And if you want to use prolog for &#8216;practical matters&#8217; I strongly recommend <a title="SWI-Prolog guru" href="http://staff.science.uva.nl/~wielemak/">Jan Wielemaker</a> Ph. D. disertation: <a title="PDF file" href="http://www.swi-prolog.org/download/publications/jan-phd.pdf">Logic programming for knowledge-intensive interactive applications</a>. You&#8217;ll find a good overview about using Prolog outside the logic course: Web, multi-threaded, RDFs, literate programming, interfacing with object-oriented systems and interfacing with C for creating data storages.</p>
<p>Finally, If you come from the functional programming world, download <a title="by Ralf Lämmel " href="http://www.uni-koblenz.de/~laemmel/OdeToProlog/">Scrap Your Boilerplate&#8212;Prologically!</a> a Prolog version of the <a title="a lightweight generic programming approach" href="http://www.cs.vu.nl/boilerplate/#more-papers">Scrap Your Boilerplate set of papers</a>. It is a great addition for learning Prolog if your background is functional.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/09/getting-into-prolog-again/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Something is wrong with programming syntax</title>
		<link>http://rogersm.net/2009/07/something-is-wrong-with-programming-syntax</link>
		<comments>http://rogersm.net/2009/07/something-is-wrong-with-programming-syntax#comments</comments>
		<pubDate>Wed, 08 Jul 2009 09:01:41 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[dsl]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[simplex]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=131</guid>
		<description><![CDATA[I never understood all this interest in DSL (domain specific languages). I&#8217;ve seen beautiful code done in a DSL-way (whatever it means) in all kind of languges from C to Lisp for ages. I suppose the emergence of Ruby and the renewed interest in Smalltalk and lisp-based languages like Clojure made DSL an interesting topic [...]]]></description>
			<content:encoded><![CDATA[<p>I never understood <a href="http://homepages.cwi.nl/~arie/papers/dslbib/">all this interest in DSL</a> (domain specific languages). I&#8217;ve seen beautiful code done in a DSL-way (whatever it means) in all kind of languges from C to Lisp for ages.</p>
<p>I suppose the emergence of Ruby and the renewed interest in <a title="A progressive, open-source Smalltalk platform for professional use" href="http://www.pharo-project.org/home">Smalltalk</a> and lisp-based languages like <a href="http://jnb.ociweb.com/jnb/jnbMar2009.html">Clojure</a> made DSL an interesting topic for blog posts.</p>
<p>But I must admit that <em>maybe </em>we need to explain what DSL means&#8230; or why a good API design is always needed, because:</p>
<pre>
// describe the optimization problem
LinearObjectiveFunction f = new LinearObjectiveFunction(new double[] {-2,1}, -5);
Collection constraints = new ArrayList();
constraints.add(new LinearConstraint(new double[] {1,2}, Relationship.LEQ, 6));
constraints.add(new LinearConstraint(new double[] {3,2}, Relationship.LEQ, 12));
constraints.add(new LinearConstraint(new double[] {0,1}, Relationship.GEQ, 0));

// create and run the solver
RealPointValuePair solution = new SimplexSolver().optimize(f, constraints, GoalType.MINIMIZE, false);

// get the solution
double x = solution.getPoint()[0];
double y = solution.getPoint()[1];
double min = solution.getValue();
</pre>
<p><a title="Simplex solver from Google" href="http://google-opensource.blogspot.com/2009/06/introducing-apache-commons-math.html">&#8230;is not a good API Ben.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/07/something-is-wrong-with-programming-syntax/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>What I remember about .asp development (answering philg)</title>
		<link>http://rogersm.net/2009/05/what-i-remember-about-asp-development-answering-to-phil</link>
		<comments>http://rogersm.net/2009/05/what-i-remember-about-asp-development-answering-to-phil#comments</comments>
		<pubDate>Tue, 19 May 2009 20:42:05 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[asp]]></category>
		<category><![CDATA[philg]]></category>
		<category><![CDATA[philip greenspun]]></category>
		<category><![CDATA[ror]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=128</guid>
		<description><![CDATA[Philip, I don&#8217;t know about what you remember about .asp programming, but I will tell you what I recall some years back: IIS memory leaks when coding ASP pages because it was a threaded server. Huge MS SQL server code in the database because developers came from C/S backgrounds. Low level dll development interfacing with [...]]]></description>
			<content:encoded><![CDATA[<p>Philip, <a title="Answering Ruby on Rails and the importance of being stupid" href="http://blogs.law.harvard.edu/philg/2009/05/18/ruby-on-rails-and-the-importance-of-being-stupid/" target="_self">I don&#8217;t know about what you remember about .asp programming</a>, but I will tell you what I recall some years back:</p>
<ul>
<li>IIS memory leaks when coding ASP pages because it was a threaded server.</li>
<li>Huge MS SQL server code in the database because developers came from C/S backgrounds.</li>
<li>Low level dll development interfacing with .asp pages through COM because .asp was not fast enough.</li>
<li>Registering manually the COM/VB code each time we had to deploy a new release.</li>
<li>Sacking MS consutants trying to sell you <a title="No-one remember this?" href="http://www.extropia.com/tutorials/dna/toc.html">DNA</a>.</li>
</ul>
<p>I have no idea about Ruby on Rails, but you can botch a MS stack pretty easily.</p>
<p>Also, why do you want to make the Ruby on Rails comunity angry? I have no doubt they&#8217;re rabid fanboys, but I know <a title="ArsDigita: From Start-Up to Bust-Up" href="http://waxy.org/random/arsdigita/">who</a> <a title="OpenACS" href="http://openacs.org/">you</a> <a title="Software Engineering for Internet Applications" href="http://philip.greenspun.com/seia/">are</a>, so don&#8217;t be child and stop nagging the children.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/05/what-i-remember-about-asp-development-answering-to-phil/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What to read after SICP?</title>
		<link>http://rogersm.net/2009/05/what-to-read-after-sicp</link>
		<comments>http://rogersm.net/2009/05/what-to-read-after-sicp#comments</comments>
		<pubDate>Sat, 16 May 2009 11:18:04 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[haker news]]></category>
		<category><![CDATA[sicp]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=126</guid>
		<description><![CDATA[Impressive thread in Hacker News about what to read after SICP. The bibliografy about &#8216;not so introductory&#8217; texts is a great resource.]]></description>
			<content:encoded><![CDATA[<p>Impressive thread in <a href="http://news.ycombinator.com/item?id=610782">Hacker News</a> about what to read after SICP. The bibliografy about &#8216;not so introductory&#8217; texts is a great resource.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/05/what-to-read-after-sicp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logic Programming for knowledge intensive applications thesis</title>
		<link>http://rogersm.net/2009/03/logic-programming-for-knowledge-application</link>
		<comments>http://rogersm.net/2009/03/logic-programming-for-knowledge-application#comments</comments>
		<pubDate>Wed, 25 Mar 2009 11:01:50 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[papers-read]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[prolog]]></category>
		<category><![CDATA[swi-prolog]]></category>
		<category><![CDATA[wielemaker]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=124</guid>
		<description><![CDATA[Jan Wielemaker, SWI-Prolog contributor has published his PhD thesis: Logic programming for knowledge-intensive interactive applications. I&#8217;ve been getting back to knowledge based applications again and again and Jan&#8217;s thesys looks good enough to invest some time reading the 257 pdf file.  Additionally, the swi-prolog site has an interesting page with some additional publications.]]></description>
			<content:encoded><![CDATA[<p><a title="University of Amsterdam" href="http://staff.science.uva.nl/~wielemak/">Jan Wielemaker</a>, SWI-Prolog contributor has published his PhD thesis: <a href="http://www.swi-prolog.org/download/publications/jan-phd.pdf">Logic programming for knowledge-intensive interactive applications</a>.</p>
<p>I&#8217;ve been getting back to knowledge based applications again and again and Jan&#8217;s thesys looks good enough to invest some time reading the 257 pdf file. </p>
<p>Additionally, the swi-prolog site has an interesting page with<a href="http://www.swi-prolog.org/Publications.html"> some additional publications</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/03/logic-programming-for-knowledge-application/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Outsourcing in the gaming world</title>
		<link>http://rogersm.net/2009/01/outsourcing-in-the-gaming-world</link>
		<comments>http://rogersm.net/2009/01/outsourcing-in-the-gaming-world#comments</comments>
		<pubDate>Fri, 23 Jan 2009 09:50:04 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[IT]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=101</guid>
		<description><![CDATA[Good post mortem in Gamasutra of American McGee&#8217;s Grimm.  Interesting commentaries for the apps. outsourcing crowd:  To avoid loss of face, a Chinese employee will not say that he only understood half of what his expat colleague tells him. This leads to misunderstandings, and ultimately to a lot of time lost. We encountered a lot of these [...]]]></description>
			<content:encoded><![CDATA[<p>Good post mortem in <a title="The art &amp; business of making games" href="http://www.gamasutra.com/view/feature/3910/postmortem_american_mcgees_grimm.php">Gamasutra</a> of <a title="at gametap" href="http://www.gametap.com/grimm/">American McGee&#8217;s Grimm</a>.  Interesting commentaries for the <a title="Page four" href="http://www.gamasutra.com/view/feature/3910/postmortem_american_mcgees_grimm.php?page=4">apps. outsourcing</a> crowd:</p>
<blockquote><p> To avoid loss of face, a Chinese employee will not say that he only understood half of what his expat colleague tells him. This leads to misunderstandings, and ultimately to a lot of time lost.</p>
<p>We encountered a lot of these problems working with the outsourcing team that made all our 3D models. The same mistakes would be made over and over again because the modeling team didn&#8217;t understand the comments we made on their work, package names would have spelling errors in them, etc.</p>
<p>Towards the end of the project, these problems gradually became smaller, as Chinese artists started to understand English better and expatriates became more proficient in the Chinese language. More bilingual support, both at Spicy Horse and at the outsourcing studio, would have helped a lot in the beginning, though.<br />
 </p></blockquote>
<p>Globally, the experience is positive.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/01/outsourcing-in-the-gaming-world/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Finding communities in social networks</title>
		<link>http://rogersm.net/2009/01/finding-groups-in-social-networks</link>
		<comments>http://rogersm.net/2009/01/finding-groups-in-social-networks#comments</comments>
		<pubDate>Mon, 19 Jan 2009 16:56:32 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[other]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[reference]]></category>
		<category><![CDATA[hp]]></category>
		<category><![CDATA[Kirchhoff]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=94</guid>
		<description><![CDATA[Lately, I&#8217;ve been interested in how social networks may help software to identify common user traits so the application adapts to users&#8217; need. Software should be able to apply per user customization properties between common members of users&#8217; groups. These communities should be discovered by the application using existing relationships among the users. The relationship [...]]]></description>
			<content:encoded><![CDATA[<p>Lately, I&#8217;ve been interested in how social networks may help software to identify common user traits so the application adapts to users&#8217; need.</p>
<p>Software should be able to apply per user customization properties between common members of users&#8217; groups. These communities should be discovered by the application using existing relationships among the users. The relationship should be an integral part of the application, set by the users (via internal application messaging, internal address book, subscription to mailing lists/interest groups&#8230;) or the application administrators (hierarchical definitions, ACLs&#8230;). From the set of communities the application should extract  customization properties and recommend the common ones to the rest of the community.</p>
<p>Two documents have been useful:</p>
<ol>
<li>
<p><a title="At HP Labs!" href="http://www.hpl.hp.com/research/scl/papers/twitter/">Social networks that matter: Twitter under the microscope<br />
</a> is an introductory paper about choosing the right metric for identifying communities in Twitter, but easily applicable to other social networks.  Conclusion for Twitter: Number of followers is not a good metric, @friends are.
<p/></li>
<li>
<p><a title="HP Labs" href="http://www.hpl.hp.com/research/idl/papers/linear/">Discovering Communities in Linear Time: a Physics Approach</a> is a much more interesting paper. It proposes using Kirchhoff&#8217;s laws to find communities in linear time (without the need of edge cutting). The algorithm has some drawbacks (<a title="Near linear time algorithm to detect community structures in large-scale networks" href="http://arxiv.org/abs/0709.2938">Usha Nandini Raghavan, Reka Albert, Soundar Kumara</a> propose an alternative), but the approach is interesting because allows to identify communities without identifying hierarchical structures.
<p/></li>
</ol>
<p>For more social network papers, <a title="More papers from HP Labs about social networks" href="http://www.hpl.hp.com/research/ssrc/competitive/social/">HP Labs has an interesting set of them</a>.</p>
<p>Oh! I also work for an HP company, but I have no relationship to the HP Labs papers.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/01/finding-groups-in-social-networks/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qitab is the first ITA project</title>
		<link>http://rogersm.net/2009/01/qrita-is-the-first-ita-project</link>
		<comments>http://rogersm.net/2009/01/qrita-is-the-first-ita-project#comments</comments>
		<pubDate>Mon, 12 Jan 2009 09:45:16 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[poiu]]></category>
		<category><![CDATA[qitab]]></category>
		<category><![CDATA[xcvb]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=70</guid>
		<description><![CDATA[As a follow up of my previous post: Qitab is the final name of the project ITA will use to publish its lisp code. The first project in Qitab is POIU a replacement for ASDF that will compile each of your ASDF systems in parallel. Also, ITA published XCVB, a compillation tool for SBCL. Zach [...]]]></description>
			<content:encoded><![CDATA[<p>As a follow up of my <a href="http://rogersm.net/2009/01/ita-software-will-release-code">previous post</a>:</p>
<p><a title="Book in Arabic" href="http://common-lisp.net/project/qitab/">Qitab</a> is the final name of the project ITA will use to publish its lisp code.</p>
<p>The first project in Qitab is POIU a replacement for ASDF that will compile each of your ASDF systems in parallel.</p>
<p>Also, ITA published <a title="Not yet ready to fully replace ASDF. But it's already working and useful in the simple case with a single big project." href="http://common-lisp.net/project/xcvb/">XCVB</a>, a compillation tool for SBCL. <a href="http://xach.livejournal.com/173073.html">Zach wrote</a> a post about it in May.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/01/qrita-is-the-first-ita-project/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ITA Software will release code</title>
		<link>http://rogersm.net/2009/01/ita-software-will-release-code</link>
		<comments>http://rogersm.net/2009/01/ita-software-will-release-code#comments</comments>
		<pubDate>Wed, 07 Jan 2009 13:17:52 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[ai]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[ita]]></category>
		<category><![CDATA[qrita]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=64</guid>
		<description><![CDATA[ITA Software, Inc, will start distributing code the the Free Software world. They created a project in common-lisp.net site to start adding projects during 2009. ITA is known in lisp world for being a proud user of lisp in software development world, and contributing to existing lisp projects (from SBCL to slime). They&#8217;re also vocal [...]]]></description>
			<content:encoded><![CDATA[<p><a title="A proud lisp user company" href="http://itasoftware.com/">ITA Software, Inc</a>, will start distributing code the the Free Software world. They <a title="Quality Releases by ITA Software, Inc. of Free Lisp Software" href="http://common-lisp.net/project/qrita/">created a project in common-lisp.net site</a> to start adding projects during 2009.</p>
<p>ITA is known in lisp world for being a proud user of lisp in software development world, and contributing to existing lisp projects (from SBCL to slime). They&#8217;re also vocal about lisp use in today&#8217;s most complex problems (low fare search engine is one of their business) so they&#8217;re widely respected.</p>
<p>They will be publishing generally purpose libraries and utilities. No Airline Industry code will be published.</p>
<p>Additional information will be found in the <a href="http://www.common-lisp.net/mailman/listinfo/qrita-devel">devel</a> and <a href="http://www.common-lisp.net/mailman/listinfo/qrita-announce">announce</a> mailing lists.</p>
<p>Update: ITA has changed the project name, more information in the <a href="http://rogersm.net/2009/01/qrita-is-the-first-ita-project">following post</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2009/01/ita-software-will-release-code/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Reusability problems with inheritance</title>
		<link>http://rogersm.net/2008/11/reusability-problems-with-inheritance</link>
		<comments>http://rogersm.net/2008/11/reusability-problems-with-inheritance#comments</comments>
		<pubDate>Sun, 30 Nov 2008 19:06:06 +0000</pubDate>
		<dc:creator>rogersm</dc:creator>
				<category><![CDATA[papers-read]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[smalltalk]]></category>
		<category><![CDATA[traits]]></category>

		<guid isPermaLink="false">http://rogersm.net/?p=33</guid>
		<description><![CDATA[The paper Traits: Composable Units of Behaviour contains a great description why inheritance is not the best tool for code reuse. Basically code reuse and inheritance are not orthogonal, so I never know if my class hierarchy should be designed to maximize code reuse, or if I should limit my code reuse not to interfere [...]]]></description>
			<content:encoded><![CDATA[<p>The paper <a title="by Nathanael Schärli, Stéphane Ducasse, Oscar Nierstrasz, Andrew P. Black" href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.14.4200">Traits: Composable Units of Behaviour</a> contains a great description why inheritance is not the best tool for code reuse.</p>
<p>Basically code reuse and inheritance are not orthogonal, so I never know if my class hierarchy should be designed to maximize code reuse, or if I should limit my code reuse not to interfere with the class hierarchy. There&#8217;s no simple rule, and it isn&#8217;t trivial to make the right decision. As the paper summarizes:</p>
<blockquote><p>[...]multiple inheritance uses the notion of a class in two competing roles: the generator of instances and the unit of code reuse</p></blockquote>
<p>Schärli, Ducasse, Nierstrasz and Black describe the pitfalls of inheritance (single, multiple and through mixins) as a code reuse tool in their paper (check chapter 2) with such clarity I recommend any OOP programmer to read the paper.</p>
<p>Unfortunately they do not consider delegation in the mix, so there is some room for improvement. Their only reference is at the end of chapter 7:</p>
<blockquote><p>Delegation (also known as “object-based inheritance”) is another form of composition that side-steps many of the problems related to class-based inheritance <a title="by Gunter Kniesel " href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.7584">[24]</a></p></blockquote>
<p>Have in mind this paper is not about reusability problems with inheritance, but about traits, their proposed solution to these problems. If you&#8217;re interested in traits you&#8217;ll find a good discussion in Reddit&#8217;s thread <a title="Some good comments here" href="http://www.reddit.com/r/programming/comments/7fcaq/oo_programming_why_traits_rule_and_mixins_and/">OO Programming: why &#8220;traits&#8221; rule and mixins and multiple inheritance suck</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogersm.net/2008/11/reusability-problems-with-inheritance/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.278 seconds -->

