<?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"
	>
<channel>
	<title>Comments on: Dynamic Languages: Rationalizations and Myths</title>
	<atom:link href="http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/feed/" rel="self" type="application/rss+xml" />
	<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/</link>
	<description>tech talk radio</description>
	<pubDate>Wed, 14 May 2008 07:07:04 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1782</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Fri, 22 Feb 2008 15:56:58 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1782</guid>
		<description>I thought I stated what i meant by "staticaly-typed dynamic language"

1) Typesafe introductions/mixins to either an instance or a class

For example:

class Foo {}
class Mixin implements MixinInterface {}

Mixin.add(Foo.class, new Mixin(), MixinInterface.class);

Foo foo = new Foo();
MixinInterface intf = (MixinInterface)foo;

Or:

Foo foo = new Foo();
Foo bar = new Foo();

Mixin.add(foo, new Mixin(), MixinInterface.class);

(foo instanceof MixinInterface) == true
(bar instanceof MixinInterface) == false

2) Ability to do AOP things like field/method/constructor interception without having to do bytecode magic
3) Ability to plug in at runtime annotation processing (not the Javac crap).
4) An instrument library that allows you to make schema changes to classes. (didn't state this before)</description>
		<content:encoded><![CDATA[<p>I thought I stated what i meant by &#8220;staticaly-typed dynamic language&#8221;</p>
<p>1) Typesafe introductions/mixins to either an instance or a class</p>
<p>For example:</p>
<p>class Foo {}<br />
class Mixin implements MixinInterface {}</p>
<p>Mixin.add(Foo.class, new Mixin(), MixinInterface.class);</p>
<p>Foo foo = new Foo();<br />
MixinInterface intf = (MixinInterface)foo;</p>
<p>Or:</p>
<p>Foo foo = new Foo();<br />
Foo bar = new Foo();</p>
<p>Mixin.add(foo, new Mixin(), MixinInterface.class);</p>
<p>(foo instanceof MixinInterface) == true<br />
(bar instanceof MixinInterface) == false</p>
<p>2) Ability to do AOP things like field/method/constructor interception without having to do bytecode magic<br />
3) Ability to plug in at runtime annotation processing (not the Javac crap).<br />
4) An instrument library that allows you to make schema changes to classes. (didn&#8217;t state this before)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1777</link>
		<dc:creator>Jesse</dc:creator>
		<pubDate>Tue, 19 Feb 2008 20:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1777</guid>
		<description>...one more thing. I just wanted to say to Mr. Burke that I enjoyed the article and thought he made some good points. I'm not trying to troll or flame, just expressing an opinion. Thanks! -J.</description>
		<content:encoded><![CDATA[<p>&#8230;one more thing. I just wanted to say to Mr. Burke that I enjoyed the article and thought he made some good points. I&#8217;m not trying to troll or flame, just expressing an opinion. Thanks! -J.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Watson</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1776</link>
		<dc:creator>James Watson</dc:creator>
		<pubDate>Tue, 19 Feb 2008 20:40:30 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1776</guid>
		<description>"After all, a working JVM is a good indication that the C++ compiler on your platform’s working just fine.;-P"

Each (Sun, at least) JVM is specially developed and compiled for each supported platform.  This is poor evidence for a lack of cross-platform issues.  Even if all JVMs were written in C++, few people are compiling their JVM from source.  Most people get binaries for their platform.</description>
		<content:encoded><![CDATA[<p>&#8220;After all, a working JVM is a good indication that the C++ compiler on your platform’s working just fine.;-P&#8221;</p>
<p>Each (Sun, at least) JVM is specially developed and compiled for each supported platform.  This is poor evidence for a lack of cross-platform issues.  Even if all JVMs were written in C++, few people are compiling their JVM from source.  Most people get binaries for their platform.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1775</link>
		<dc:creator>Jesse</dc:creator>
		<pubDate>Tue, 19 Feb 2008 20:31:24 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1775</guid>
		<description>I am with Brian there-- and, what a funny-but-so-true reply! ;-P

Anyway, if one encounters excessive issues with cross-platform incompatibility, pointers, and the preprocessor, chances are good that the situation is exactly the one I mean when I suggest that it's worth *re*exploring C++. Practices and compilers have changed considerably in recent years, and strongly for the better. 

After all, a working JVM is a good indication that the C++ compiler on your platform's working just fine.;-P</description>
		<content:encoded><![CDATA[<p>I am with Brian there&#8211; and, what a funny-but-so-true reply! ;-P</p>
<p>Anyway, if one encounters excessive issues with cross-platform incompatibility, pointers, and the preprocessor, chances are good that the situation is exactly the one I mean when I suggest that it&#8217;s worth *re*exploring C++. Practices and compilers have changed considerably in recent years, and strongly for the better. </p>
<p>After all, a working JVM is a good indication that the C++ compiler on your platform&#8217;s working just fine.;-P</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: James Watson</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1774</link>
		<dc:creator>James Watson</dc:creator>
		<pubDate>Tue, 19 Feb 2008 20:17:39 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1774</guid>
		<description>What's a "statically-typed dynamic" language?  'Dynamic' in this context means 'dynamically-typed', does it not?  This would appear to be an oxymoron.

The comment above about Haskell being a statically-typed dynamic language appears to be a confusion between 'functional' and 'dynamic'.  Haskell is a statically-typed functional language.</description>
		<content:encoded><![CDATA[<p>What&#8217;s a &#8220;statically-typed dynamic&#8221; language?  &#8216;Dynamic&#8217; in this context means &#8216;dynamically-typed&#8217;, does it not?  This would appear to be an oxymoron.</p>
<p>The comment above about Haskell being a statically-typed dynamic language appears to be a confusion between &#8216;functional&#8217; and &#8216;dynamic&#8217;.  Haskell is a statically-typed functional language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: billburke</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1773</link>
		<dc:creator>billburke</dc:creator>
		<pubDate>Tue, 19 Feb 2008 19:58:29 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1773</guid>
		<description>C++?  No thanks.  I'd rather not go back to debugging dangling pointers and worrying about cross-platform incompatibilities and using shit like preprocessor defs and Imake to get around crossplatform incompatibilities and finally memory fragmentation.  The only thing I miss from C++ is const and static object creation.  The latter of which the JVM automatically figures out for you now.</description>
		<content:encoded><![CDATA[<p>C++?  No thanks.  I&#8217;d rather not go back to debugging dangling pointers and worrying about cross-platform incompatibilities and using shit like preprocessor defs and Imake to get around crossplatform incompatibilities and finally memory fragmentation.  The only thing I miss from C++ is const and static object creation.  The latter of which the JVM automatically figures out for you now.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brian</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1772</link>
		<dc:creator>Brian</dc:creator>
		<pubDate>Tue, 19 Feb 2008 18:21:38 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1772</guid>
		<description>@Jesse
I'm with you on C++.  I just got back into it. She's like your first kiss who you left when your family moved to another town 15 years ago.  Then you bumped into her on the street and now she's all grown up and hot hot hot.  

C++ killed Ruby.</description>
		<content:encoded><![CDATA[<p>@Jesse<br />
I&#8217;m with you on C++.  I just got back into it. She&#8217;s like your first kiss who you left when your family moved to another town 15 years ago.  Then you bumped into her on the street and now she&#8217;s all grown up and hot hot hot.  </p>
<p>C++ killed Ruby.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Anders Norås' Blog : Save Java, Dead or Alive!</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1768</link>
		<dc:creator>Anders Norås' Blog : Save Java, Dead or Alive!</dc:creator>
		<pubDate>Mon, 18 Feb 2008 20:12:17 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1768</guid>
		<description>[...] to &#8220;save Java&#8221; fall short in my humble opinion. &#8220;Angry&#8221; Bill Burke&#8217;s rant on dynamic languages was a sad read. Most of the arguments aren&#8217;t generally applicable, because there is no such thing as [...]</description>
		<content:encoded><![CDATA[<p>[...] to &#8220;save Java&#8221; fall short in my humble opinion. &#8220;Angry&#8221; Bill Burke&#8217;s rant on dynamic languages was a sad read. Most of the arguments aren&#8217;t generally applicable, because there is no such thing as [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jesse</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1767</link>
		<dc:creator>Jesse</dc:creator>
		<pubDate>Mon, 18 Feb 2008 19:18:38 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1767</guid>
		<description>I suggest re-exploring C++ and also having a peek at Haskell (which, by the way, is a statically typed dynamic language).</description>
		<content:encoded><![CDATA[<p>I suggest re-exploring C++ and also having a peek at Haskell (which, by the way, is a statically typed dynamic language).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Eek</title>
		<link>http://bill.burkecentral.com/2008/02/04/dynamic-languages-rationalizations-and-myths/#comment-1766</link>
		<dc:creator>Eek</dc:creator>
		<pubDate>Mon, 18 Feb 2008 15:25:36 +0000</pubDate>
		<guid isPermaLink="false">http://bill.burkecentral.com/?p=88#comment-1766</guid>
		<description>Myth: The amount to type is what is the problem with code verbosity.  This is a very common myth in Java circles.

Fact: The problem is the verbosity smearing out real complexity over a lot of screen space, with a ton of noise between the true signal.

Myth: *Reliable* refactoring is critical in dynamic languages.

Fact: This emphasis on "*reliable*" falls down in the presence of tests, at which point a heuristic is fine.

Myth: Argument by personal incredulity/personal lack of imagination ("I just can’t imagine ...") is a valid argument.

Fact: This is a form of argument generally used by those that have little else to argue with, for instance the people arguing against evolution.  It is rude.

Myth: Labelling things in an area you don't know well "Myths" is reasonable behavior.

Fact: You're being rude.


Myth: "Being typesafe/statically typed" is a relevant attribute to require.

Fact: "Being typesafe" is about enabling stuff.  What you should require is this stuff.  Though I think the most common case is that it is about giving you peace of mind to be able to say "It is statically typed", no matter what the cost.</description>
		<content:encoded><![CDATA[<p>Myth: The amount to type is what is the problem with code verbosity.  This is a very common myth in Java circles.</p>
<p>Fact: The problem is the verbosity smearing out real complexity over a lot of screen space, with a ton of noise between the true signal.</p>
<p>Myth: *Reliable* refactoring is critical in dynamic languages.</p>
<p>Fact: This emphasis on &#8220;*reliable*&#8221; falls down in the presence of tests, at which point a heuristic is fine.</p>
<p>Myth: Argument by personal incredulity/personal lack of imagination (&#8221;I just can’t imagine &#8230;&#8221 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> is a valid argument.</p>
<p>Fact: This is a form of argument generally used by those that have little else to argue with, for instance the people arguing against evolution.  It is rude.</p>
<p>Myth: Labelling things in an area you don&#8217;t know well &#8220;Myths&#8221; is reasonable behavior.</p>
<p>Fact: You&#8217;re being rude.</p>
<p>Myth: &#8220;Being typesafe/statically typed&#8221; is a relevant attribute to require.</p>
<p>Fact: &#8220;Being typesafe&#8221; is about enabling stuff.  What you should require is this stuff.  Though I think the most common case is that it is about giving you peace of mind to be able to say &#8220;It is statically typed&#8221;, no matter what the cost.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
