<?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: Are dynamic languages just a temporary workaround?</title>
	<atom:link href="http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/feed/" rel="self" type="application/rss+xml" />
	<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/</link>
	<description>A bit of this, a bit of that and a lot about computers</description>
	<lastBuildDate>Wed, 25 Apr 2012 08:40:35 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: aoeu256</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-661</link>
		<dc:creator><![CDATA[aoeu256]]></dc:creator>
		<pubDate>Sun, 12 Dec 2010 03:22:00 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-661</guid>
		<description><![CDATA[&lt;i&gt;From my point of view – I do not need any kind of debugging help from programming language. I do not need static typing, lexical scope, asserts, contracts … I need only expressive power, and if I’ll need some debugging help, I’ll take care about that.

I understand that other people have other priorities, so it is only an illustration of possible opinion.&lt;/i&gt;
I disagree, but I still think dynamic typing is better.  You will eventually want to use the expressivity of dynamic languages, but the dynamic features of Python are only used 5-10% of the time.  That 5-10% of the time where you really need dynamic typing is very important, but you can still have a type inferencing IDE like WingIDE for Python that can figure out most type errors statically, and what methods foo has when you type foo .  When you are using the dynamic features you can write something like #@ignore to not have the IDE bug you about it.  So basically when your Dynamic code looks like Static code you have all of the IDE features of a Static language, but when your code is Dynamic code your IDE can&#039;t help you, but thats because you are writing code that can&#039;t be done in a Static language at all without complex workarounds.

Also on a related note JIT compilers are getting better and better, LuaJIT is about the same speed as JAVA according to the Computer Language Shootout (google for it) despite being as dynamic as Python.  JIT compilers do type inference just like IDEs can do type inferencing to change those 90% of cases where you are writing static code in a dynamic language to be statically typed, while still allowing the dynamic features when needed.   This means that static code in Dynamic languages runs about the same speed as static code in Static languages, but you get the expressivity of Dynamic languages.  Python will eventually get a JIT compiler as good as Lua&#039;s (see the PyPy project).  JavaScript right now is also almost as fast LuaJIT with Google Chrome&#039;s V8.  Also Clojure on the JVM is pretty fast, and still getting faster.

What ticks me off is that these two arguments of Dynamic languages (speed and lack of IDE support) are both strawman arguments used by clueless Static language proponents.  It doesn&#039;t help when you have Dynamic language users just blurt out and say &quot;I DON&#039;T NEED STATIC ERROR CHECKING AND COMPILED SPEED&quot; when this is a false dichotomy.  I want SPEED and STATIC ERROR CHECKING, but I don&#039;t need to give up Dynamic features.  So basically there is no reason to use Static languages at all, Dynamic languages can have both the good features of Static and Dynamic languages at the same time.]]></description>
		<content:encoded><![CDATA[<p><i>From my point of view – I do not need any kind of debugging help from programming language. I do not need static typing, lexical scope, asserts, contracts … I need only expressive power, and if I’ll need some debugging help, I’ll take care about that.</p>
<p>I understand that other people have other priorities, so it is only an illustration of possible opinion.</i><br />
I disagree, but I still think dynamic typing is better.  You will eventually want to use the expressivity of dynamic languages, but the dynamic features of Python are only used 5-10% of the time.  That 5-10% of the time where you really need dynamic typing is very important, but you can still have a type inferencing IDE like WingIDE for Python that can figure out most type errors statically, and what methods foo has when you type foo .  When you are using the dynamic features you can write something like #@ignore to not have the IDE bug you about it.  So basically when your Dynamic code looks like Static code you have all of the IDE features of a Static language, but when your code is Dynamic code your IDE can&#8217;t help you, but thats because you are writing code that can&#8217;t be done in a Static language at all without complex workarounds.</p>
<p>Also on a related note JIT compilers are getting better and better, LuaJIT is about the same speed as JAVA according to the Computer Language Shootout (google for it) despite being as dynamic as Python.  JIT compilers do type inference just like IDEs can do type inferencing to change those 90% of cases where you are writing static code in a dynamic language to be statically typed, while still allowing the dynamic features when needed.   This means that static code in Dynamic languages runs about the same speed as static code in Static languages, but you get the expressivity of Dynamic languages.  Python will eventually get a JIT compiler as good as Lua&#8217;s (see the PyPy project).  JavaScript right now is also almost as fast LuaJIT with Google Chrome&#8217;s V8.  Also Clojure on the JVM is pretty fast, and still getting faster.</p>
<p>What ticks me off is that these two arguments of Dynamic languages (speed and lack of IDE support) are both strawman arguments used by clueless Static language proponents.  It doesn&#8217;t help when you have Dynamic language users just blurt out and say &#8220;I DON&#8217;T NEED STATIC ERROR CHECKING AND COMPILED SPEED&#8221; when this is a false dichotomy.  I want SPEED and STATIC ERROR CHECKING, but I don&#8217;t need to give up Dynamic features.  So basically there is no reason to use Static languages at all, Dynamic languages can have both the good features of Static and Dynamic languages at the same time.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Louis Wu</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-660</link>
		<dc:creator><![CDATA[Louis Wu]]></dc:creator>
		<pubDate>Thu, 25 Mar 2010 11:15:11 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-660</guid>
		<description><![CDATA[@Kazimir: great, you&#039;re a *real* programmer. Who cares if you don&#039;t need ?]]></description>
		<content:encoded><![CDATA[<p>@Kazimir: great, you&#8217;re a *real* programmer. Who cares if you don&#8217;t need ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kazimir Majorinc</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-659</link>
		<dc:creator><![CDATA[Kazimir Majorinc]]></dc:creator>
		<pubDate>Sat, 28 Nov 2009 08:19:48 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-659</guid>
		<description><![CDATA[From my point of view - I do not need any kind of debugging help from programming language. I do not need static typing, lexical scope, asserts, contracts ... I need only expressive power, and if I&#039;ll need some debugging help, I&#039;ll take care about that.

I understand that other people have other priorities, so it is only an illustration of possible opinion.]]></description>
		<content:encoded><![CDATA[<p>From my point of view &#8211; I do not need any kind of debugging help from programming language. I do not need static typing, lexical scope, asserts, contracts &#8230; I need only expressive power, and if I&#8217;ll need some debugging help, I&#8217;ll take care about that.</p>
<p>I understand that other people have other priorities, so it is only an illustration of possible opinion.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: RogerV</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-658</link>
		<dc:creator><![CDATA[RogerV]]></dc:creator>
		<pubDate>Fri, 27 Nov 2009 19:54:08 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-658</guid>
		<description><![CDATA[Go has the benefit of static type checking and type inference as well for eliminating unnecessary syntactic cruft.

Unlike Perl and Python, or other scripting language solution approaches, it blazingly compiles/links into a single executable for ease of deployment to the end user.

Deploying script languages solutions to end users is just a mess. You have to insure the user has the right runtime version and often times they&#039;ll need certain C libraries to be installed too, and then for complex apps/tools, there may be many script files involved and you have to deliver the app in such a way that none of the package/module references get screwed up at runtime. Or else buy a commercial SDK from ActiveState to roll Perl or Python apps into a single executable (which, doing that with such solutions is still not a simple endeavour).

The shear simplicity of the Go approach (static linking) is a breadth of fresh air relative to the scripting languages. Plus the compile/link process is lightening fast.

The crown jewels of Go, though, tend to be the goroutines and channels approach to concurrency programming. Facilitating robust, scalable, and low boiler plate concurrent programming will be important in programming languages going forward. Go will be stellar in this regard.

Plus the approach to OOP in Go is rather interesting and refreshing too.

Alas, Go is so young that there&#039;s not (to my knowledge) any IDE support that does code completion yet.]]></description>
		<content:encoded><![CDATA[<p>Go has the benefit of static type checking and type inference as well for eliminating unnecessary syntactic cruft.</p>
<p>Unlike Perl and Python, or other scripting language solution approaches, it blazingly compiles/links into a single executable for ease of deployment to the end user.</p>
<p>Deploying script languages solutions to end users is just a mess. You have to insure the user has the right runtime version and often times they&#8217;ll need certain C libraries to be installed too, and then for complex apps/tools, there may be many script files involved and you have to deliver the app in such a way that none of the package/module references get screwed up at runtime. Or else buy a commercial SDK from ActiveState to roll Perl or Python apps into a single executable (which, doing that with such solutions is still not a simple endeavour).</p>
<p>The shear simplicity of the Go approach (static linking) is a breadth of fresh air relative to the scripting languages. Plus the compile/link process is lightening fast.</p>
<p>The crown jewels of Go, though, tend to be the goroutines and channels approach to concurrency programming. Facilitating robust, scalable, and low boiler plate concurrent programming will be important in programming languages going forward. Go will be stellar in this regard.</p>
<p>Plus the approach to OOP in Go is rather interesting and refreshing too.</p>
<p>Alas, Go is so young that there&#8217;s not (to my knowledge) any IDE support that does code completion yet.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Cyril Gupta</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-657</link>
		<dc:creator><![CDATA[Cyril Gupta]]></dc:creator>
		<pubDate>Fri, 27 Nov 2009 04:38:02 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-657</guid>
		<description><![CDATA[Pablo, you&#039;ve already noticed that statically typed languages are taking on the characteristics of dynamically typed ones. C# 4 has enough dynamic typing features to make a lot of things possible, and Scala too introduces new synergy between statically typed and dynamic typed languages.

So I guess the right path is the medium path, just as Buddha said.]]></description>
		<content:encoded><![CDATA[<p>Pablo, you&#8217;ve already noticed that statically typed languages are taking on the characteristics of dynamically typed ones. C# 4 has enough dynamic typing features to make a lot of things possible, and Scala too introduces new synergy between statically typed and dynamic typed languages.</p>
<p>So I guess the right path is the medium path, just as Buddha said.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sys</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-656</link>
		<dc:creator><![CDATA[sys]]></dc:creator>
		<pubDate>Thu, 26 Nov 2009 21:01:35 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-656</guid>
		<description><![CDATA[Man, I sure hope so. That&#039;s why I hope Go will catch on and become as ubiquitously available as perl is.

IMHO, loose coupling isn&#039;t always a good thing. I&#039;ll take Ada over Ruby any day of the week.]]></description>
		<content:encoded><![CDATA[<p>Man, I sure hope so. That&#8217;s why I hope Go will catch on and become as ubiquitously available as perl is.</p>
<p>IMHO, loose coupling isn&#8217;t always a good thing. I&#8217;ll take Ada over Ruby any day of the week.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: josh</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-655</link>
		<dc:creator><![CDATA[josh]]></dc:creator>
		<pubDate>Thu, 26 Nov 2009 16:06:36 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-655</guid>
		<description><![CDATA[You example for static typing being more verbose is a straw man argument.  It doesn&#039;t show how type inference makes things less verbose, and it is also trivially small.]]></description>
		<content:encoded><![CDATA[<p>You example for static typing being more verbose is a straw man argument.  It doesn&#8217;t show how type inference makes things less verbose, and it is also trivially small.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: dirtside</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-654</link>
		<dc:creator><![CDATA[dirtside]]></dc:creator>
		<pubDate>Thu, 26 Nov 2009 15:31:19 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-654</guid>
		<description><![CDATA[Human beings and &quot;their&quot; toy computers? Are you suggesting someone besides humans is going to be looking back on our programming architectures 100 years from now? ;)]]></description>
		<content:encoded><![CDATA[<p>Human beings and &#8220;their&#8221; toy computers? Are you suggesting someone besides humans is going to be looking back on our programming architectures 100 years from now? ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: GDR!</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-653</link>
		<dc:creator><![CDATA[GDR!]]></dc:creator>
		<pubDate>Thu, 26 Nov 2009 14:11:18 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-653</guid>
		<description><![CDATA[Hueoogle - I can&#039;t agree with you. If you were given C code (C is a static language), you will probably fail as hard as when you are given Javascript. Every C project has its own way of managing memory, usually also its own implementation of data structures and such.

It&#039;s more about programming philosophy - Python&#039;s &quot;there is only one way to do it&quot; makes it easy to read *good* code, even though it&#039;s dynamic.]]></description>
		<content:encoded><![CDATA[<p>Hueoogle &#8211; I can&#8217;t agree with you. If you were given C code (C is a static language), you will probably fail as hard as when you are given Javascript. Every C project has its own way of managing memory, usually also its own implementation of data structures and such.</p>
<p>It&#8217;s more about programming philosophy &#8211; Python&#8217;s &#8220;there is only one way to do it&#8221; makes it easy to read *good* code, even though it&#8217;s dynamic.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Onne</title>
		<link>http://pupeno.com/2009/10/13/are-dynamic-languages-just-a-temporary-workaround/#comment-652</link>
		<dc:creator><![CDATA[Onne]]></dc:creator>
		<pubDate>Thu, 26 Nov 2009 06:45:15 +0000</pubDate>
		<guid isPermaLink="false">http://pupeno.com/?p=759#comment-652</guid>
		<description><![CDATA[Imagine sending a message to a remote server? Can your compiler know how to invoke that routine on the remote server? Can it statically check it? Does the remote server have to be implemented in your language?

No.

So dynamic typing is something akin loose coupling.]]></description>
		<content:encoded><![CDATA[<p>Imagine sending a message to a remote server? Can your compiler know how to invoke that routine on the remote server? Can it statically check it? Does the remote server have to be implemented in your language?</p>
<p>No.</p>
<p>So dynamic typing is something akin loose coupling.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

