<?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>Kommentare zu: Subtext Refactoring</title>
	<atom:link href="http://www.wuenschenswert.net/wunschdenken/archives/91/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wuenschenswert.net/wunschdenken/archives/91</link>
	<description></description>
	<pubDate>Fri, 12 Mar 2010 14:11:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
		<item>
		<title>Von: Jonathan Edwards</title>
		<link>http://www.wuenschenswert.net/wunschdenken/archives/91#comment-22</link>
		<dc:creator>Jonathan Edwards</dc:creator>
		<pubDate>Sun, 26 Nov 2006 23:01:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.wuenschenswert.net/wunschdenken/archives/91#comment-22</guid>
		<description>Axel,

I agree that dynamic typing and reflection make refactoring more difficult. IDE assistance features like code completion also depend upon type info, and likewise become harder in its absence. Static typing is all about discarding power and flexibilty to gain stability and certainty. But in the real world, types change, and programs change. Static typing merely says that if you agree to never speak of such things in your programs, you gain some benefits. But we MUST speak of these things, and so, for example, Java adds reflective mechanisms on top of the language that defeat the guarantees of the type system. In the presence of reflection, many refactorings become unsound or undecideable.

Dynamic languages like Lisp or Ruby are popular in large part because they are not straightjacketed by types, and can freely do metaprogramming tricks without laborious reflection and code generation as in Java. But this dynamism means that it is harder to say what code can and can't do just by looking at it.

We need to escape this barren dichotomy. Erik Meijer proposes "Static typing where possible, dynamic typing when needed". http://research.microsoft.com/~emeijer/Papers/RDL04Meijer.pdf. My own plans for Subtext are to add a form of "static" typing in predicates that attach to variables, performing runtime checks, but also being sufficiently declarative to allow a form of type inference.</description>
		<content:encoded><![CDATA[<p>Axel,</p>
<p>I agree that dynamic typing and reflection make refactoring more difficult. IDE assistance features like code completion also depend upon type info, and likewise become harder in its absence. Static typing is all about discarding power and flexibilty to gain stability and certainty. But in the real world, types change, and programs change. Static typing merely says that if you agree to never speak of such things in your programs, you gain some benefits. But we MUST speak of these things, and so, for example, Java adds reflective mechanisms on top of the language that defeat the guarantees of the type system. In the presence of reflection, many refactorings become unsound or undecideable.</p>
<p>Dynamic languages like Lisp or Ruby are popular in large part because they are not straightjacketed by types, and can freely do metaprogramming tricks without laborious reflection and code generation as in Java. But this dynamism means that it is harder to say what code can and can&#8217;t do just by looking at it.</p>
<p>We need to escape this barren dichotomy. Erik Meijer proposes &#8220;Static typing where possible, dynamic typing when needed&#8221;. <a href="http://research.microsoft.com/~emeijer/Papers/RDL04Meijer.pdf" rel="nofollow">http://research.microsoft.com/~emeijer/Papers/RDL04Meijer.pdf</a>. My own plans for Subtext are to add a form of &#8220;static&#8221; typing in predicates that attach to variables, performing runtime checks, but also being sufficiently declarative to allow a form of type inference.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Just grin and bear it&#8230; - Large and Small in programming</title>
		<link>http://www.wuenschenswert.net/wunschdenken/archives/91#comment-20</link>
		<dc:creator>Just grin and bear it&#8230; - Large and Small in programming</dc:creator>
		<pubDate>Sat, 25 Nov 2006 17:47:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.wuenschenswert.net/wunschdenken/archives/91#comment-20</guid>
		<description>[...] As part of the discussion on refactoring and the more general notion of how important &#8217;smart tools&#8217; in general are for programming (see &#8220;Is your IDE tilting at the Dynamic Language Windmill&#8221;, a interesting post on Reg Braithwaithe&#8217;s excellent programming blog), I submit the following musing: [...]</description>
		<content:encoded><![CDATA[<p>[...] As part of the discussion on refactoring and the more general notion of how important &#8217;smart tools&#8217; in general are for programming (see &#8220;Is your IDE tilting at the Dynamic Language Windmill&#8221;, a interesting post on Reg Braithwaithe&#8217;s excellent programming blog), I submit the following musing: [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
