<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Boilerplate code says a lot about a language&#8230;</title>
	<atom:link href="http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/feed/" rel="self" type="application/rss+xml" />
	<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/</link>
	<description>(notes from an average programmer studying the hard stuff)</description>
	<lastBuildDate>Thu, 21 May 2009 01:17:58 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: The Future of Programming &#171; Learning Lisp</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-665</link>
		<dc:creator>The Future of Programming &#171; Learning Lisp</dc:creator>
		<pubDate>Mon, 08 Oct 2007 03:05:50 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-665</guid>
		<description>[...] Lisp (notes from an average programmer studying the hard stuff)      &#171; Boilerplate code says a lot about a&#160;language&#8230; We are in an echo&#160;chamber&#8230; [...]</description>
		<content:encoded><![CDATA[<p>[...] Lisp (notes from an average programmer studying the hard stuff)      &laquo; Boilerplate code says a lot about a&nbsp;language&#8230; We are in an echo&nbsp;chamber&#8230; [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: goodmike</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-614</link>
		<dc:creator>goodmike</dc:creator>
		<pubDate>Tue, 02 Oct 2007 18:27:01 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-614</guid>
		<description>I can see part of ocean&#039;s argument: that tons of horrible boilerplate code is evidence not of language failure but of design failure. 

One of the things I hated about Java, besides how often I seemed to have an int when I needed an Integer or vice versa, was how hard it was (how much keyboard typing it took) to do something simple like instantiate an object.

FactoryConfigurator factoryConfigurator = (FactoryConfigurator) ConfigurationEnvironment.getFactoryConfigurator;
factoryConfigurator.configure(configurationObject);
DesiredObjectFactory desiredObjectFactory = factoryConfigurator.getDesiredObjectFactory;
DesiredObject desiredObject = (DesiredObject)factoryConfigurator.getInstance();


But in a way, this isn&#039;t Java&#039;s fault. This is a problem caused by someone who decided that whether or not you needed a factory, or a configurable factory, or some system-wide abstraction for resources defining configuration, those were exactly what you were getting. That&#039;s the problem. Looking back, why couldn&#039;t I just type DesiredObject.new(); if that&#039;s all I wanted? All the crap above could get implemented in some other class method if I really wanted it.

When I wasted a year of my life trying to hack a J2EE application together, I cursed the way all the application frameworks were desined to so that everything had to be typed three times, twice in code and once again in XML, and how even when I didn&#039;t have a layer for something, I had to create a phantom layer that did nothing but relay messages across the void. But again, is this horrible verbosity Java&#039;s fault, or is it a failure of imagination on the part of the framework designers?

I have to say, though, that I&#039;m not going back to Java any time soon.</description>
		<content:encoded><![CDATA[<p>I can see part of ocean&#8217;s argument: that tons of horrible boilerplate code is evidence not of language failure but of design failure. </p>
<p>One of the things I hated about Java, besides how often I seemed to have an int when I needed an Integer or vice versa, was how hard it was (how much keyboard typing it took) to do something simple like instantiate an object.</p>
<p>FactoryConfigurator factoryConfigurator = (FactoryConfigurator) ConfigurationEnvironment.getFactoryConfigurator;<br />
factoryConfigurator.configure(configurationObject);<br />
DesiredObjectFactory desiredObjectFactory = factoryConfigurator.getDesiredObjectFactory;<br />
DesiredObject desiredObject = (DesiredObject)factoryConfigurator.getInstance();</p>
<p>But in a way, this isn&#8217;t Java&#8217;s fault. This is a problem caused by someone who decided that whether or not you needed a factory, or a configurable factory, or some system-wide abstraction for resources defining configuration, those were exactly what you were getting. That&#8217;s the problem. Looking back, why couldn&#8217;t I just type DesiredObject.new(); if that&#8217;s all I wanted? All the crap above could get implemented in some other class method if I really wanted it.</p>
<p>When I wasted a year of my life trying to hack a J2EE application together, I cursed the way all the application frameworks were desined to so that everything had to be typed three times, twice in code and once again in XML, and how even when I didn&#8217;t have a layer for something, I had to create a phantom layer that did nothing but relay messages across the void. But again, is this horrible verbosity Java&#8217;s fault, or is it a failure of imagination on the part of the framework designers?</p>
<p>I have to say, though, that I&#8217;m not going back to Java any time soon.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lispy</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-609</link>
		<dc:creator>lispy</dc:creator>
		<pubDate>Tue, 02 Oct 2007 02:42:22 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-609</guid>
		<description>Section 2.1 in SICP gets very OOP like-- just without any classes.  The overloaded constructors and multiple &quot;property&quot; interfaces they train you to do in the exercises there are very similar to what I reflexively do in C#.  I see that my OOP habits are in some cases preventing me from formulating more broadly defined abstraction layers, though.  I know that many of my OOP designs have violated the closure principle descibed above, and I&#039;m itching to re-implement some complex code in the SICP approach to take advantage of my new found combinatorial freedom-- but I know I&#039;m only just now scratching the surface in what can be done.  I suspect I really need to have my mind blown several more times before I do that.  I&#039;ve got to keep an open mind and let them follow their point-of-view a few more levels down so that I don&#039;t waste more precious development time on mediocre approaches.

But I do see a better way to do things that I&#039;ve tried and failed in the past....  I knew I was struggling with things that were over my head-- and SICP is the only resource I&#039;ve yet found that can actually train you to tackle &quot;hard&quot; stuff.  It is packed with terminology and techniques that help you break apart difficult things into beautiful solutions.</description>
		<content:encoded><![CDATA[<p>Section 2.1 in SICP gets very OOP like&#8211; just without any classes.  The overloaded constructors and multiple &#8220;property&#8221; interfaces they train you to do in the exercises there are very similar to what I reflexively do in C#.  I see that my OOP habits are in some cases preventing me from formulating more broadly defined abstraction layers, though.  I know that many of my OOP designs have violated the closure principle descibed above, and I&#8217;m itching to re-implement some complex code in the SICP approach to take advantage of my new found combinatorial freedom&#8211; but I know I&#8217;m only just now scratching the surface in what can be done.  I suspect I really need to have my mind blown several more times before I do that.  I&#8217;ve got to keep an open mind and let them follow their point-of-view a few more levels down so that I don&#8217;t waste more precious development time on mediocre approaches.</p>
<p>But I do see a better way to do things that I&#8217;ve tried and failed in the past&#8230;.  I knew I was struggling with things that were over my head&#8211; and SICP is the only resource I&#8217;ve yet found that can actually train you to tackle &#8220;hard&#8221; stuff.  It is packed with terminology and techniques that help you break apart difficult things into beautiful solutions.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-607</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Mon, 01 Oct 2007 20:43:55 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-607</guid>
		<description>I agree that embedded languages make code better. The challenge is naming things well and using relavent terminology to the language. Having been trained in traditional CS I still feel &quot;brain damaged&quot; by the emphasis on how the machine works. There is a strong temptation to adapt myself to the data, API, and language system I&#039;m dealing with. That&#039;s how I was implicitly taught. I don&#039;t just blame my formal education for this. All my years of programming have essentially taught me the same thing. The challenge is in thinking &quot;What language do I want to create?&quot;, and only thinking in those terms, almost considering the existing language and API as background noise not worth considering, unless it&#039;s semantically relavent.

Since I&#039;m working in Smalltalk I&#039;m also wondering &quot;What classes should I create?&quot; According to Message-Oriented Programming, what Alan Kay would&#039;ve preferred to call it instead of OOP, each class will basically have its own language semantics via. messages. It can use the same language, but it may interpret it differently.

Something embedded languages emphasize is knowledge of the problem domain. From looking at Smalltalk code I noticed it&#039;s sometimes hard for me to understand what&#039;s going on because I&#039;m not familiar with the domain perspective that the original developer was coming from. I&#039;d have to steep myself in the domain to understand what they were talking about. This is probably no different than looking at just traditional code. Even though the terminology would be pretty familiar (the language itself, like C, C++, etc.) I wouldn&#039;t understand what was going on unless I understood the domain, anyway.</description>
		<content:encoded><![CDATA[<p>I agree that embedded languages make code better. The challenge is naming things well and using relavent terminology to the language. Having been trained in traditional CS I still feel &#8220;brain damaged&#8221; by the emphasis on how the machine works. There is a strong temptation to adapt myself to the data, API, and language system I&#8217;m dealing with. That&#8217;s how I was implicitly taught. I don&#8217;t just blame my formal education for this. All my years of programming have essentially taught me the same thing. The challenge is in thinking &#8220;What language do I want to create?&#8221;, and only thinking in those terms, almost considering the existing language and API as background noise not worth considering, unless it&#8217;s semantically relavent.</p>
<p>Since I&#8217;m working in Smalltalk I&#8217;m also wondering &#8220;What classes should I create?&#8221; According to Message-Oriented Programming, what Alan Kay would&#8217;ve preferred to call it instead of OOP, each class will basically have its own language semantics via. messages. It can use the same language, but it may interpret it differently.</p>
<p>Something embedded languages emphasize is knowledge of the problem domain. From looking at Smalltalk code I noticed it&#8217;s sometimes hard for me to understand what&#8217;s going on because I&#8217;m not familiar with the domain perspective that the original developer was coming from. I&#8217;d have to steep myself in the domain to understand what they were talking about. This is probably no different than looking at just traditional code. Even though the terminology would be pretty familiar (the language itself, like C, C++, etc.) I wouldn&#8217;t understand what was going on unless I understood the domain, anyway.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: lispy</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-606</link>
		<dc:creator>lispy</dc:creator>
		<pubDate>Mon, 01 Oct 2007 20:42:59 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-606</guid>
		<description>Just to clarify: no macros are being used to create new language elements at this point.  It&#039;s all just recursion, higher order procedures, and constructors/selectors implemented with cons, car, and cdr.</description>
		<content:encoded><![CDATA[<p>Just to clarify: no macros are being used to create new language elements at this point.  It&#8217;s all just recursion, higher order procedures, and constructors/selectors implemented with cons, car, and cdr.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Robert Goldman</title>
		<link>http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-605</link>
		<dc:creator>Robert Goldman</dc:creator>
		<pubDate>Mon, 01 Oct 2007 19:38:25 +0000</pubDate>
		<guid isPermaLink="false">http://lispy.wordpress.com/2007/10/01/boilerplate-code-says-a-lot-about-a-language/#comment-605</guid>
		<description>This is quite interesting, because if you look at the discussion of how to use abstraction, inspired by the BSD kernel, on the &quot;Beautiful Code&quot; website (http://beautifulcode.oreillynet.com/2007/09/abstraction_and_variation.php) you can see what happens when you don&#039;t have the power to do this kind of macro-based abstraction...</description>
		<content:encoded><![CDATA[<p>This is quite interesting, because if you look at the discussion of how to use abstraction, inspired by the BSD kernel, on the &#8220;Beautiful Code&#8221; website (<a href="http://beautifulcode.oreillynet.com/2007/09/abstraction_and_variation.php" rel="nofollow">http://beautifulcode.oreillynet.com/2007/09/abstraction_and_variation.php</a>) you can see what happens when you don&#8217;t have the power to do this kind of macro-based abstraction&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>
