<?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: Everything is dynamically typed</title>
	<atom:link href="http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/feed/" rel="self" type="application/rss+xml" />
	<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/</link>
	<description>random thoughts on programming and programming languages</description>
	<pubDate>Sat, 19 Jul 2008 03:02:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
		<item>
		<title>By: Joe</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-22027</link>
		<dc:creator>Joe</dc:creator>
		<pubDate>Tue, 10 Jul 2007 05:25:50 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-22027</guid>
		<description>Uh, this has nothing to do with static vs dynamic typing.  The difference between the two is just a matter of wether you do your type checking at compile time or at run time.  They can both do anything you want to do.  In your case you should learn the basics of haskell.  I've been using it for a whole whopping 4 hours at this point and even I know that typeclasses are exactly what you want.</description>
		<content:encoded><![CDATA[<p>Uh, this has nothing to do with static vs dynamic typing.  The difference between the two is just a matter of wether you do your type checking at compile time or at run time.  They can both do anything you want to do.  In your case you should learn the basics of haskell.  I&#8217;ve been using it for a whole whopping 4 hours at this point and even I know that typeclasses are exactly what you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Best of Feeds - 24 links - design, tips, facebook, blogging, games &#171; //engtech - internet duct tape</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-22008</link>
		<dc:creator>Best of Feeds - 24 links - design, tips, facebook, blogging, games &#171; //engtech - internet duct tape</dc:creator>
		<pubDate>Mon, 09 Jul 2007 13:15:11 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-22008</guid>
		<description>[...] [CODE] Everything is dynamically typed (jaortega.wordpress.com, 22 saves, 5 inbound links) [...]</description>
		<content:encoded><![CDATA[<p>[...] [CODE] Everything is dynamically typed (jaortega.wordpress.com, 22 saves, 5 inbound links) [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-21666</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Mon, 02 Jul 2007 18:13:34 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-21666</guid>
		<description>@Kyle:

As best I can tell mixins still use classes. Though Weinberg didn't really talk about programming, I think what you are saying kind of fits in with where I think programming is heading: the ability to change representation more easily.

Re: static typing mixins being superior to dynamic typing

I don't see your point. As far as I'm concerned you're defeating yourself. You're trying to reach a state where you can change the representation of something at will (re-classify it), but you're using a static type system which has a tendency to lock down representation. Your goal would be more easily achieved using a dynamic type system. Even the mixin strategy is easier to implement in a dynamic language (incidentally, the mixin strategy was invented by the Lisp community).

As for me, I find that expressing my intent is more easily achieved in a dynamic language, because I can express my algorithm using the representation I want, without type markers cluttering it up. I find that with languages that are statically typed I tend to focus more on how the computer will execute my process, and I'm forced to represent it that way. I often end up adding comments saying "This is what my process does here," because the code is just telling the computer what to do. It's not telling &lt;i&gt;me&lt;/i&gt; what it's doing. Granted, type specifiers are still valuable in some contexts, and I still use them, but I'm glad I'm not forced to use them everywhere.

I think languages like Groovy have a future because they give the programmer a choice of where and when to lock down representation with static types.</description>
		<content:encoded><![CDATA[<p>@Kyle:</p>
<p>As best I can tell mixins still use classes. Though Weinberg didn&#8217;t really talk about programming, I think what you are saying kind of fits in with where I think programming is heading: the ability to change representation more easily.</p>
<p>Re: static typing mixins being superior to dynamic typing</p>
<p>I don&#8217;t see your point. As far as I&#8217;m concerned you&#8217;re defeating yourself. You&#8217;re trying to reach a state where you can change the representation of something at will (re-classify it), but you&#8217;re using a static type system which has a tendency to lock down representation. Your goal would be more easily achieved using a dynamic type system. Even the mixin strategy is easier to implement in a dynamic language (incidentally, the mixin strategy was invented by the Lisp community).</p>
<p>As for me, I find that expressing my intent is more easily achieved in a dynamic language, because I can express my algorithm using the representation I want, without type markers cluttering it up. I find that with languages that are statically typed I tend to focus more on how the computer will execute my process, and I&#8217;m forced to represent it that way. I often end up adding comments saying &#8220;This is what my process does here,&#8221; because the code is just telling the computer what to do. It&#8217;s not telling <i>me</i> what it&#8217;s doing. Granted, type specifiers are still valuable in some contexts, and I still use them, but I&#8217;m glad I&#8217;m not forced to use them everywhere.</p>
<p>I think languages like Groovy have a future because they give the programmer a choice of where and when to lock down representation with static types.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kyle Lahnakoski</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-21389</link>
		<dc:creator>Kyle Lahnakoski</dc:creator>
		<pubDate>Tue, 26 Jun 2007 15:59:24 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-21389</guid>
		<description>I believe...

David Weinberge is advocating multiple classification systems; each useful for it's own purpose.   Classification is useful, as it speeds understanding by associating with similar objects.  Albeit multiple classification can seem more complicated, it is rare to need more than one classification for any given purpose; leaving the user with only one relevant classification.

Extrapolating David Weinberge to programming: He is saying the class hierarchies are the Dewey Decimal system in programming, and we should be going to a mixin system which is more useful for our particular (and changing) purposes.   

A static typing mixin system is superior to dynamic typing for the fact it communicates more about the intended use of objects to other programmers (and the compiler).</description>
		<content:encoded><![CDATA[<p>I believe&#8230;</p>
<p>David Weinberge is advocating multiple classification systems; each useful for it&#8217;s own purpose.   Classification is useful, as it speeds understanding by associating with similar objects.  Albeit multiple classification can seem more complicated, it is rare to need more than one classification for any given purpose; leaving the user with only one relevant classification.</p>
<p>Extrapolating David Weinberge to programming: He is saying the class hierarchies are the Dewey Decimal system in programming, and we should be going to a mixin system which is more useful for our particular (and changing) purposes.   </p>
<p>A static typing mixin system is superior to dynamic typing for the fact it communicates more about the intended use of objects to other programmers (and the compiler).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mark Miller</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20937</link>
		<dc:creator>Mark Miller</dc:creator>
		<pubDate>Tue, 19 Jun 2007 11:10:50 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20937</guid>
		<description>Enjoyed the videos! I especially enjoyed Weinberger's analysis of traditional vs. internet information/news media. I think he is right on. As for tagging creating stuff that's more findable, I think the jury is still out on that. I think things are definitely more findable than through the traditional card catalog, but at the same time I still run into situations where I'm struggling to find something on the web.

I've seen other presentations by Kay, so I'm usually familiar with most of what he discusses. He's always good to listen to though. He continually amazes me. A couple things he said were prophetic in this video. In the midst of the "browser wars", he predicted that Microsoft would not take over the web. Nor would Java/CORBA, and he gave his reasons. He also gave the keys to "the semantic web", conceptually, which has been a hot topic over the last year or two--but this was 10 years ago. When he talked about "every object having its own URL", it made me think of REST, at least what I've heard about it. Even though he said, "This is something that will need to be worked on over the next 10 years", it's something we're still working on.

As for static vs. dynamic typing, I refer you to an article you linked to a while back, called "The Art of Lisp &#38; Writing". I really enjoyed that article, incidentally. I commented to a friend several months ago that writing code in Smalltalk "felt like writing". I'd say the same about Lisp, though I need to get more familiar with it. Richard Campbell said that the problem with statically typed systems is they force you to make decisions early, and the problem with that is there are not only the domain-driven requirements, but there are also the system requirements that are realized once the system is built. You don't realize them until then, so it's better to work in a "medium" that is maleable. It's much harder to change things in a statically typed system. He said it's better to introduce static typing once you have a mature product, when you want to "lock down" certain aspects of the app. Just a guess, but it sounds like this is where mattias's suggestion about Typed Scheme comes in handy. The thought that came to mind for me when Campbell said this was the Groovy language. It allows a spectrum of development ranging from complete dynamic typing to pure static typing. In fact you can use Groovy to program in straight Java if you want.</description>
		<content:encoded><![CDATA[<p>Enjoyed the videos! I especially enjoyed Weinberger&#8217;s analysis of traditional vs. internet information/news media. I think he is right on. As for tagging creating stuff that&#8217;s more findable, I think the jury is still out on that. I think things are definitely more findable than through the traditional card catalog, but at the same time I still run into situations where I&#8217;m struggling to find something on the web.</p>
<p>I&#8217;ve seen other presentations by Kay, so I&#8217;m usually familiar with most of what he discusses. He&#8217;s always good to listen to though. He continually amazes me. A couple things he said were prophetic in this video. In the midst of the &#8220;browser wars&#8221;, he predicted that Microsoft would not take over the web. Nor would Java/CORBA, and he gave his reasons. He also gave the keys to &#8220;the semantic web&#8221;, conceptually, which has been a hot topic over the last year or two&#8211;but this was 10 years ago. When he talked about &#8220;every object having its own URL&#8221;, it made me think of REST, at least what I&#8217;ve heard about it. Even though he said, &#8220;This is something that will need to be worked on over the next 10 years&#8221;, it&#8217;s something we&#8217;re still working on.</p>
<p>As for static vs. dynamic typing, I refer you to an article you linked to a while back, called &#8220;The Art of Lisp &amp; Writing&#8221;. I really enjoyed that article, incidentally. I commented to a friend several months ago that writing code in Smalltalk &#8220;felt like writing&#8221;. I&#8217;d say the same about Lisp, though I need to get more familiar with it. Richard Campbell said that the problem with statically typed systems is they force you to make decisions early, and the problem with that is there are not only the domain-driven requirements, but there are also the system requirements that are realized once the system is built. You don&#8217;t realize them until then, so it&#8217;s better to work in a &#8220;medium&#8221; that is maleable. It&#8217;s much harder to change things in a statically typed system. He said it&#8217;s better to introduce static typing once you have a mature product, when you want to &#8220;lock down&#8221; certain aspects of the app. Just a guess, but it sounds like this is where mattias&#8217;s suggestion about Typed Scheme comes in handy. The thought that came to mind for me when Campbell said this was the Groovy language. It allows a spectrum of development ranging from complete dynamic typing to pure static typing. In fact you can use Groovy to program in straight Java if you want.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: matthias</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20910</link>
		<dc:creator>matthias</dc:creator>
		<pubDate>Tue, 19 Jun 2007 01:48:22 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20910</guid>
		<description>Bob Harper's agenda is internally consistent, beautiful and therefore appealing but it's the pragmatics that matters. 

As for pragmatics, take a look at Typed Scheme from PLT. It is an explicitly typed language that  we  constructed over the past year, with the goal of porting systems module by module from an untyped world to a typed world. Naturally as you port your systems, you want to change as little as possible, granted that you have to declare types for function headers. One thing we therefore do accommodate -- in a type-safe manner -- is the idea that a variable (function parameter) can assume different types in a function body. Specifically, the type depends on the control dominator of the variable (which predicates dominate the flow of control to the variable occurrence). So you have categories yet they are flexible. 

Thus far we have ported a few thousand lines of code -- small scripts (100-500 lines), medium size libraries (300-1000 lines) and an application (some 3000 lines). The person who ported the programs is a student who hadn't programmed in Scheme before. It is amazing how easy it is for him to port code and how little code he has to modify or add. We are pretty sure that the code base is representative but we are in the process of conducting additional experiments. We'll report this somewhere and hopefully soon. 

The conclusion I can offer after 20 years of soft typing research is that many dynamically 
typed programs do satisfy a type discipline but it is *not* the one that static typing would 
superimpose on dynamically typed programs. These things are as practical as Turning machines, so take appropriate statements with a huge grain (ocean?) of salt.</description>
		<content:encoded><![CDATA[<p>Bob Harper&#8217;s agenda is internally consistent, beautiful and therefore appealing but it&#8217;s the pragmatics that matters. </p>
<p>As for pragmatics, take a look at Typed Scheme from PLT. It is an explicitly typed language that  we  constructed over the past year, with the goal of porting systems module by module from an untyped world to a typed world. Naturally as you port your systems, you want to change as little as possible, granted that you have to declare types for function headers. One thing we therefore do accommodate &#8212; in a type-safe manner &#8212; is the idea that a variable (function parameter) can assume different types in a function body. Specifically, the type depends on the control dominator of the variable (which predicates dominate the flow of control to the variable occurrence). So you have categories yet they are flexible. </p>
<p>Thus far we have ported a few thousand lines of code &#8212; small scripts (100-500 lines), medium size libraries (300-1000 lines) and an application (some 3000 lines). The person who ported the programs is a student who hadn&#8217;t programmed in Scheme before. It is amazing how easy it is for him to port code and how little code he has to modify or add. We are pretty sure that the code base is representative but we are in the process of conducting additional experiments. We&#8217;ll report this somewhere and hopefully soon. </p>
<p>The conclusion I can offer after 20 years of soft typing research is that many dynamically<br />
typed programs do satisfy a type discipline but it is *not* the one that static typing would<br />
superimpose on dynamically typed programs. These things are as practical as Turning machines, so take appropriate statements with a huge grain (ocean?) of salt.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Thiago Silva</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20896</link>
		<dc:creator>Thiago Silva</dc:creator>
		<pubDate>Mon, 18 Jun 2007 21:51:08 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20896</guid>
		<description>I really enjoyed reading/seen (finally) people going back to aristoteles, plato, et al. to realize the fundamentals of classification and discussing organization, having the nature of things in mind and how we perceive them. I really appreciated it.

As for the "dynamic  type" discussion, I find very appealing Kay's speech. First of, it is of my understanding that classifying an object is making a compromise with how we perceive the object at a given moment. As our perception changes, we might find out latter that the taxonomy must be modified. Since our perception changes constantly, inflexible classification is, by itself, a huge problem. Of course, I think that would be the case as well  with static typing.

Other line Kay says that strikes me in the deep is about constructing complex systems. I think it goes something like this: finding out how things interact with each other (rather than precisely classifying the things) is what makes possible to build and grow complex systems.</description>
		<content:encoded><![CDATA[<p>I really enjoyed reading/seen (finally) people going back to aristoteles, plato, et al. to realize the fundamentals of classification and discussing organization, having the nature of things in mind and how we perceive them. I really appreciated it.</p>
<p>As for the &#8220;dynamic  type&#8221; discussion, I find very appealing Kay&#8217;s speech. First of, it is of my understanding that classifying an object is making a compromise with how we perceive the object at a given moment. As our perception changes, we might find out latter that the taxonomy must be modified. Since our perception changes constantly, inflexible classification is, by itself, a huge problem. Of course, I think that would be the case as well  with static typing.</p>
<p>Other line Kay says that strikes me in the deep is about constructing complex systems. I think it goes something like this: finding out how things interact with each other (rather than precisely classifying the things) is what makes possible to build and grow complex systems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Polytheism, Polymorphism, and Poly &#171; ~Pentacles~</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20775</link>
		<dc:creator>Polytheism, Polymorphism, and Poly &#171; ~Pentacles~</dc:creator>
		<pubDate>Sun, 17 Jun 2007 02:05:02 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20775</guid>
		<description>[...] computers don&#8217;t have a global pickling memory space. Anyway after reading some Cher stuff I got over to this page and because she is such a hieromancer she thought she could highbrowbeat me at musing about [...]</description>
		<content:encoded><![CDATA[<p>[...] computers don&#8217;t have a global pickling memory space. Anyway after reading some Cher stuff I got over to this page and because she is such a hieromancer she thought she could highbrowbeat me at musing about [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Top Posts &#171; WordPress.com</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20765</link>
		<dc:creator>Top Posts &#171; WordPress.com</dc:creator>
		<pubDate>Sat, 16 Jun 2007 23:58:36 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20765</guid>
		<description>[...] Everything is dynamically typed I&#8217;ve just seen David Weinberger&#8217;s recent Authors@Google talk, a deeply interesting overview of his new [&#8230;] [...]</description>
		<content:encoded><![CDATA[<p>[...] Everything is dynamically typed I&#8217;ve just seen David Weinberger&#8217;s recent Authors@Google talk, a deeply interesting overview of his new [&#8230;] [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Joseph Huang</title>
		<link>http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20736</link>
		<dc:creator>Joseph Huang</dc:creator>
		<pubDate>Sat, 16 Jun 2007 14:15:35 +0000</pubDate>
		<guid isPermaLink="false">http://jaortega.wordpress.com/2007/06/16/everything-is-dynamically-typed/#comment-20736</guid>
		<description>Learn Clean. You can say this parameter can be any type that has + defined, or any other arbitrary function. Also no need for Monads to do I/O, but that's not what you're talking about.</description>
		<content:encoded><![CDATA[<p>Learn Clean. You can say this parameter can be any type that has + defined, or any other arbitrary function. Also no need for Monads to do I/O, but that&#8217;s not what you&#8217;re talking about.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
