<?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/"
		>
<channel>
	<title>Comments on: Improve your web based software development and maintenance ROI with dynamic programming languages</title>
	<atom:link href="http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/feed/" rel="self" type="application/rss+xml" />
	<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/</link>
	<description>Information about software, engineering, IT, technology, companies, institutes in Pune, India</description>
	<lastBuildDate>Wed, 28 Jul 2010 10:49:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: PuneTech&#8217;s &#8220;Monetization Plan&#8221; was an April Fools Day Prank &#124; PuneTech</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-15447</link>
		<dc:creator>PuneTech&#8217;s &#8220;Monetization Plan&#8221; was an April Fools Day Prank &#124; PuneTech</dc:creator>
		<pubDate>Fri, 02 Apr 2010 03:26:57 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-15447</guid>
		<description>[...] PuneTech is about. Money won&#8217;t buy high quality content. Money couldn&#8217;t have bought this article by Dhananjay Nene, nor this article by Addepalli. You couldn&#8217;t have paid Abhijit Athavale to start PuneChips [...]</description>
		<content:encoded><![CDATA[<p>[...] PuneTech is about. Money won&#8217;t buy high quality content. Money couldn&#8217;t have bought this article by Dhananjay Nene, nor this article by Addepalli. You couldn&#8217;t have paid Abhijit Athavale to start PuneChips [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Improve your web based software development and maintenance ROI with dynamic programming languages &#124; /var/log/mind</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-6807</link>
		<dc:creator>Improve your web based software development and maintenance ROI with dynamic programming languages &#124; /var/log/mind</dc:creator>
		<pubDate>Mon, 15 Jun 2009 07:57:46 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-6807</guid>
		<description>[...] is a cross post of my article which appeared in PuneTech in March 2009 here. The article is reproduced verbatim including the editor&#8217;s notes (in italics). I had already [...]</description>
		<content:encoded><![CDATA[<p>[...] is a cross post of my article which appeared in PuneTech in March 2009 here. The article is reproduced verbatim including the editor&#8217;s notes (in italics). I had already [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish Belagali</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5987</link>
		<dc:creator>Ashish Belagali</dc:creator>
		<pubDate>Sun, 12 Apr 2009 04:42:02 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5987</guid>
		<description>Dear Dhananjay,

Pardon me if I have hurt your sentiments in any way, because that was never the intention. I started off with an appreciation of your work, and I would like you to know that the appreciation remains throughout this exchange and beyond.

I agree that let&#039;s stop this discussion here. We have started to repeat ourselves, and I would not like a technology debate to turn into a heated discussion. It&#039;s common to have technologists differ in their opinions, yet maintain a mutual respect for each other&#039;s viewpoints.

End note: I did learn a couple of useful points through your article and also our discussion. I thank you for the same.

All the best,

/Ashish</description>
		<content:encoded><![CDATA[<p>Dear Dhananjay,</p>
<p>Pardon me if I have hurt your sentiments in any way, because that was never the intention. I started off with an appreciation of your work, and I would like you to know that the appreciation remains throughout this exchange and beyond.</p>
<p>I agree that let&#8217;s stop this discussion here. We have started to repeat ourselves, and I would not like a technology debate to turn into a heated discussion. It&#8217;s common to have technologists differ in their opinions, yet maintain a mutual respect for each other&#8217;s viewpoints.</p>
<p>End note: I did learn a couple of useful points through your article and also our discussion. I thank you for the same.</p>
<p>All the best,</p>
<p>/Ashish</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5981</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Sat, 11 Apr 2009 09:36:40 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5981</guid>
		<description>Para 1. Points a/b/c : Interestingly, the points you make here, I&#039;ve already responded to in my earlier comment. Either I made some weak arguments or you couldn&#039;t understand my perspective. 

&lt;blockquote&gt;The link you gave is interesting, where you talk about the business benefits of Java which I had left out. Thank you for pointing those out.&lt;/blockquote&gt;

&lt;blockquote&gt;Combined with the promise of backward compatibility like you mentioned in the other article, the advantage jumps even higher&lt;/blockquote&gt;

The argument of backward compatibility actually went to the fact that Sun like Microsoft had constraints that they have to work with. If Sun maintained say PHP and Java was open sourced, theres a likelihood my entire argument could&#039;ve been pro PHP than pro Java. These statements were not in the context of why Java will thrive - they were in the context of why Java will not die. And finally arguments simply were orthogonal to static vs. dynamic typing. 

I can realise carefully worded statements made to twist an author&#039;s intent. And I don&#039;t like it - especially when I am the author.


&lt;blockquote&gt;Programs start small, and then start growing one feature at a time. Initially, a discipline like static typing sounds burdonsome; but if we do not do that then the programs start becoming unmaintainable. So much so that the ROI starts sinking below acceptable limits.&lt;/blockquote&gt;

Okaaaay, now we have dynamic typing being offered as the sacrificial lamb at the altar of maintainability and what I assume you to be referring to as code decay. I should really look back and revisit my experiences since I had perhaps mistakenly come to a belief that a number of other factors which ended resulting in code decay. One of them I thought was my observation that longer code typically decayed faster. And if I look really hard every static typing project which did result in a code decay should be treated as an aberration since its dynamic typing which results in code decay. And maybe I should look at Struts and Django code bases - probably django should be becoming unmaintainable much faster because it is dynamically typed. If the statement above had not been so tragic, in my opinion it would have bordered on the irresponsible. 

Lets just agree to disagree. Its usually a smell when arguments get rehashed, words get twisted out of context, and some rather unsubstantiated opinions turn facets of debate into sacrificial lambs. Thats fair in a public relations campaign. This is a technology argument and I will not disrespect the spirit of such an argument.

All the best,
Dhananjay</description>
		<content:encoded><![CDATA[<p>Para 1. Points a/b/c : Interestingly, the points you make here, I&#8217;ve already responded to in my earlier comment. Either I made some weak arguments or you couldn&#8217;t understand my perspective. </p>
<blockquote><p>The link you gave is interesting, where you talk about the business benefits of Java which I had left out. Thank you for pointing those out.</p></blockquote>
<blockquote><p>Combined with the promise of backward compatibility like you mentioned in the other article, the advantage jumps even higher</p></blockquote>
<p>The argument of backward compatibility actually went to the fact that Sun like Microsoft had constraints that they have to work with. If Sun maintained say PHP and Java was open sourced, theres a likelihood my entire argument could&#8217;ve been pro PHP than pro Java. These statements were not in the context of why Java will thrive &#8211; they were in the context of why Java will not die. And finally arguments simply were orthogonal to static vs. dynamic typing. </p>
<p>I can realise carefully worded statements made to twist an author&#8217;s intent. And I don&#8217;t like it &#8211; especially when I am the author.</p>
<blockquote><p>Programs start small, and then start growing one feature at a time. Initially, a discipline like static typing sounds burdonsome; but if we do not do that then the programs start becoming unmaintainable. So much so that the ROI starts sinking below acceptable limits.</p></blockquote>
<p>Okaaaay, now we have dynamic typing being offered as the sacrificial lamb at the altar of maintainability and what I assume you to be referring to as code decay. I should really look back and revisit my experiences since I had perhaps mistakenly come to a belief that a number of other factors which ended resulting in code decay. One of them I thought was my observation that longer code typically decayed faster. And if I look really hard every static typing project which did result in a code decay should be treated as an aberration since its dynamic typing which results in code decay. And maybe I should look at Struts and Django code bases &#8211; probably django should be becoming unmaintainable much faster because it is dynamically typed. If the statement above had not been so tragic, in my opinion it would have bordered on the irresponsible. </p>
<p>Lets just agree to disagree. Its usually a smell when arguments get rehashed, words get twisted out of context, and some rather unsubstantiated opinions turn facets of debate into sacrificial lambs. Thats fair in a public relations campaign. This is a technology argument and I will not disrespect the spirit of such an argument.</p>
<p>All the best,<br />
Dhananjay</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish Belagali</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5978</link>
		<dc:creator>Ashish Belagali</dc:creator>
		<pubDate>Sat, 11 Apr 2009 06:41:47 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5978</guid>
		<description>Dhananjay,

Thank you for your replies. As both of us agree, the context of an application would always play a role in determining the right technology.

My only point is that the safety net provided by the static typing is a good thing to have, although it increases the code and forces one to leave out some cool things. This point usually does not come about clearly when we keep talking about all those cool things. (That was the &#039;other angle&#039;).

The link you gave is interesting, where you talk about the business benefits of Java which I had left out. Thank you for pointing those out.

Here are the individual points:

(a) No, my argument about testing is not narrowly made. It helps to have as much safety net as possible, in defense of innumerable possible breaking points of one&#039;s code. This can be said without getting into any long debate.

(b) Generics of course make the code more verbose where they are declared. Sure they save the trouble of typecasting the object when it&#039;s taken out of the collection, but that&#039;s relatively minor. Again, the point is that the important thing here is the added type-safety, which is good even at the cost of more typing while declaring.

(c) I agree there is more to code maintainability than just static typing. However, given a choice where the types of method arguments are clearly mentioned (and hence the operations that can be performed on them), versus another where they are not, what would one choose? The former would be clearly easier to understand and to prevent errors as your program starts growing bigger.

From time and again, this is exactly something that  we have seen happen. Programs start small, and then start growing one feature at a time. Initially, a discipline like static typing sounds burdonsome; but if we do not do that then the programs start becoming unmaintainable. So much so that the ROI starts sinking below acceptable limits.

Again, languages with static typing are not necessarily going to solve all problems in the world; but they are clearly better off than the others in dealing with this aging process. Combined with the promise of backward compatibility like you mentioned in the other article, the advantage jumps even higher, and that&#039;s what serious businesses look for: stability and maintainability over time, a long life of their programs and thus a high ROI in the long run.

On the final point, we anyways agree... we choose the tool/ language that gives the best ROI, and the choices keep changing from application to application and from time to time.

/Ashish</description>
		<content:encoded><![CDATA[<p>Dhananjay,</p>
<p>Thank you for your replies. As both of us agree, the context of an application would always play a role in determining the right technology.</p>
<p>My only point is that the safety net provided by the static typing is a good thing to have, although it increases the code and forces one to leave out some cool things. This point usually does not come about clearly when we keep talking about all those cool things. (That was the &#8216;other angle&#8217;).</p>
<p>The link you gave is interesting, where you talk about the business benefits of Java which I had left out. Thank you for pointing those out.</p>
<p>Here are the individual points:</p>
<p>(a) No, my argument about testing is not narrowly made. It helps to have as much safety net as possible, in defense of innumerable possible breaking points of one&#8217;s code. This can be said without getting into any long debate.</p>
<p>(b) Generics of course make the code more verbose where they are declared. Sure they save the trouble of typecasting the object when it&#8217;s taken out of the collection, but that&#8217;s relatively minor. Again, the point is that the important thing here is the added type-safety, which is good even at the cost of more typing while declaring.</p>
<p>(c) I agree there is more to code maintainability than just static typing. However, given a choice where the types of method arguments are clearly mentioned (and hence the operations that can be performed on them), versus another where they are not, what would one choose? The former would be clearly easier to understand and to prevent errors as your program starts growing bigger.</p>
<p>From time and again, this is exactly something that  we have seen happen. Programs start small, and then start growing one feature at a time. Initially, a discipline like static typing sounds burdonsome; but if we do not do that then the programs start becoming unmaintainable. So much so that the ROI starts sinking below acceptable limits.</p>
<p>Again, languages with static typing are not necessarily going to solve all problems in the world; but they are clearly better off than the others in dealing with this aging process. Combined with the promise of backward compatibility like you mentioned in the other article, the advantage jumps even higher, and that&#8217;s what serious businesses look for: stability and maintainability over time, a long life of their programs and thus a high ROI in the long run.</p>
<p>On the final point, we anyways agree&#8230; we choose the tool/ language that gives the best ROI, and the choices keep changing from application to application and from time to time.</p>
<p>/Ashish</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5964</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Fri, 10 Apr 2009 05:54:22 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5964</guid>
		<description>An interesting addition in the context of the earlier comment is some of my thoughts on Java (the comments on the post and those on reddit may make interesting reading for a few) http://www.reddit.com/goto?id=7is4z</description>
		<content:encoded><![CDATA[<p>An interesting addition in the context of the earlier comment is some of my thoughts on Java (the comments on the post and those on reddit may make interesting reading for a few) <a href="http://www.reddit.com/goto?id=7is4z" rel="nofollow">http://www.reddit.com/goto?id=7is4z</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dhananjay Nene</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5963</link>
		<dc:creator>Dhananjay Nene</dc:creator>
		<pubDate>Fri, 10 Apr 2009 05:24:51 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5963</guid>
		<description>Ashish,

One of the things I&#039;ve attempted to do through this article is to not make statements which sound &quot;universally true&quot;. There&#039;s a reason for that. We are a function of our experiences since our experiences are the universe for us. So what at times may seem to be universally true statements are actually so only contextually so, and any reasonable discussion requires a explanation of the context we operate in. While I do challenge many of your assertions in terms of universality, I do so with the full knowledge that its a much easier job since to challenge the universality of a statement requires only one or more experiences which contradict the assertion. 

Having said that I am not coming at it from another angle - the primary angle I come from is the ROI angle. Horses for courses. If one doesn&#039;t know the course and the horses, one can&#039;t pick a horse.

&lt;blockquote&gt;&lt;em&gt;We all know that any amount of testing is never foolproof. So if a language gives us a better chance of catching a good %age of errors automatically, there is wisdom in using that language, even if it&#039;s not so sexy.&lt;/em&gt;&lt;/blockquote&gt;

I wonder if the argument is narrowly made. The wisdom is in applying a variety of criteria not just compile time error checking alone in static vs. dynamic typing. Not looking at the matter in a composite way is a reminder of the elephant and seven blind men fable. I believe that except for a clearly defined context, it is completely unwise to get into a debate about which is superior. The argument you make has been made hundreds of times and has been contested hundreds of times (and vice-versa) in tens (if not hundreds) of pages over the net. I don&#039;t recall any one of them reaching any degree of closure. What I can most certainly assert is that in my opinion there are contexts where one is appropriate and there are contexts where another is. Any discussion on ROI for a software project / product will require taking into cognisance that particular project / product contexts and its ROI influencers.


&lt;blockquote&gt;&lt;em&gt;Do generics make code more verbose? Yes.&lt;/em&gt;&lt;/blockquote&gt;
They reduce not increase verbosity. You no longer have to do a type check after extracting an object out of a list. Secondly they eliminate the necessity of writing otherwise duplicate code for ensuring type safety.
&lt;blockquote&gt;&lt;em&gt;Do they make your application more robust? Yes again!&lt;/em&gt;&lt;/blockquote&gt;
Only in certain contexts. I would argue that in certain contexts, some of the metaprogramming and functional programming constructs are able to boil down a very complex logic into a fairly small code. Also the defect density per line of code doesn&#039;t vary as sharply across languages as does function points per line of code. So smaller code leads to lesser errors. So what would you choose ? A large code base with all static errors resolved by the compiler but a larger number of other defects per function point or a smaller code base with fewer defects per function point ? Is this comparison of mine even valid ? The context decides. I assert that application robustness is too comprehensive and nuanced a topic to be closed so quickly.

&lt;blockquote&gt;&lt;em&gt;One fact of life is that static typing goes a long way in making your programs highly maintainable.&lt;/em&gt;&lt;/blockquote&gt;
I have emphatically stated in other writings that often refactoring is tougher in dynamic languages than static ones. &lt;a href=&quot;http://www.reddit.com/r/programming/comments/71yqq/commentary_on_python_from_a_java_programming/&quot; rel=&quot;nofollow&quot;&gt;Many have challenged me on that&lt;/a&gt;. Assuming I am right on that count, I still believe refactorability is only one aspect of maintainability, and to that extent reduces the maintainability of dynamic typed applications. However there are other reasons why dynamic languages are much easier to maintain. If one goes by the assumption that the static typing makes code more maintainable as you state and also believe the other equally credible statement that dynamic typing makes code more maintainable, the interesting question is why do we have unmaintainable code ? Clearly theres far more to maintainability than static or dynamic typing. Also it needs to be understood both typing systems move maintainability in different directions as measured by different criteria of measuring maintainability - neither of them make the language more maintainabile on all criteria.

&lt;blockquote&gt;&lt;em&gt;The lines are clearly drawn then. Java is meant to be a business language, meant to solve serious business problems. It was never cool or sexy. (I wish Java did something about this aspect quickly.)&lt;/em&gt;&lt;/blockquote&gt;
Java was designed to be a cable set top box language. It was extraordinarily cool and sexy at one time (latter half of nineties). I remember clearly since I was one of the relatively early adopters and enthusiastic proponents of the same. Java is certainly used quite extensively in business. What is a business language meant to solve a serious business problem ? I could attempt to answer that if I could understand the question. 

&lt;blockquote&gt;&lt;em&gt;I prefer the dynamic languages for smaller programs, or for giving some dynamic scripting ability on top of existing apps. But I prefer to bet on the proven solid workhorses for life-size apps.&lt;/em&gt;&lt;/blockquote&gt;
In 1997 I took a pro Java call as an architect in face of exactly the same argument (Java was on the other side of the fence during 1996-2002). End of the day it was based on a composite assessment of a variety of factors influencing the ROI. Its a call I look back at with lots of pleasure and no regret. I would always bet on whatever delivers me the best ROI under the context and circumstances.

Dhananjay</description>
		<content:encoded><![CDATA[<p>Ashish,</p>
<p>One of the things I&#8217;ve attempted to do through this article is to not make statements which sound &#8220;universally true&#8221;. There&#8217;s a reason for that. We are a function of our experiences since our experiences are the universe for us. So what at times may seem to be universally true statements are actually so only contextually so, and any reasonable discussion requires a explanation of the context we operate in. While I do challenge many of your assertions in terms of universality, I do so with the full knowledge that its a much easier job since to challenge the universality of a statement requires only one or more experiences which contradict the assertion. </p>
<p>Having said that I am not coming at it from another angle &#8211; the primary angle I come from is the ROI angle. Horses for courses. If one doesn&#8217;t know the course and the horses, one can&#8217;t pick a horse.</p>
<blockquote><p><em>We all know that any amount of testing is never foolproof. So if a language gives us a better chance of catching a good %age of errors automatically, there is wisdom in using that language, even if it&#8217;s not so sexy.</em></p></blockquote>
<p>I wonder if the argument is narrowly made. The wisdom is in applying a variety of criteria not just compile time error checking alone in static vs. dynamic typing. Not looking at the matter in a composite way is a reminder of the elephant and seven blind men fable. I believe that except for a clearly defined context, it is completely unwise to get into a debate about which is superior. The argument you make has been made hundreds of times and has been contested hundreds of times (and vice-versa) in tens (if not hundreds) of pages over the net. I don&#8217;t recall any one of them reaching any degree of closure. What I can most certainly assert is that in my opinion there are contexts where one is appropriate and there are contexts where another is. Any discussion on ROI for a software project / product will require taking into cognisance that particular project / product contexts and its ROI influencers.</p>
<blockquote><p><em>Do generics make code more verbose? Yes.</em></p></blockquote>
<p>They reduce not increase verbosity. You no longer have to do a type check after extracting an object out of a list. Secondly they eliminate the necessity of writing otherwise duplicate code for ensuring type safety.</p>
<blockquote><p><em>Do they make your application more robust? Yes again!</em></p></blockquote>
<p>Only in certain contexts. I would argue that in certain contexts, some of the metaprogramming and functional programming constructs are able to boil down a very complex logic into a fairly small code. Also the defect density per line of code doesn&#8217;t vary as sharply across languages as does function points per line of code. So smaller code leads to lesser errors. So what would you choose ? A large code base with all static errors resolved by the compiler but a larger number of other defects per function point or a smaller code base with fewer defects per function point ? Is this comparison of mine even valid ? The context decides. I assert that application robustness is too comprehensive and nuanced a topic to be closed so quickly.</p>
<blockquote><p><em>One fact of life is that static typing goes a long way in making your programs highly maintainable.</em></p></blockquote>
<p>I have emphatically stated in other writings that often refactoring is tougher in dynamic languages than static ones. <a href="http://www.reddit.com/r/programming/comments/71yqq/commentary_on_python_from_a_java_programming/" rel="nofollow">Many have challenged me on that</a>. Assuming I am right on that count, I still believe refactorability is only one aspect of maintainability, and to that extent reduces the maintainability of dynamic typed applications. However there are other reasons why dynamic languages are much easier to maintain. If one goes by the assumption that the static typing makes code more maintainable as you state and also believe the other equally credible statement that dynamic typing makes code more maintainable, the interesting question is why do we have unmaintainable code ? Clearly theres far more to maintainability than static or dynamic typing. Also it needs to be understood both typing systems move maintainability in different directions as measured by different criteria of measuring maintainability &#8211; neither of them make the language more maintainabile on all criteria.</p>
<blockquote><p><em>The lines are clearly drawn then. Java is meant to be a business language, meant to solve serious business problems. It was never cool or sexy. (I wish Java did something about this aspect quickly.)</em></p></blockquote>
<p>Java was designed to be a cable set top box language. It was extraordinarily cool and sexy at one time (latter half of nineties). I remember clearly since I was one of the relatively early adopters and enthusiastic proponents of the same. Java is certainly used quite extensively in business. What is a business language meant to solve a serious business problem ? I could attempt to answer that if I could understand the question. </p>
<blockquote><p><em>I prefer the dynamic languages for smaller programs, or for giving some dynamic scripting ability on top of existing apps. But I prefer to bet on the proven solid workhorses for life-size apps.</em></p></blockquote>
<p>In 1997 I took a pro Java call as an architect in face of exactly the same argument (Java was on the other side of the fence during 1996-2002). End of the day it was based on a composite assessment of a variety of factors influencing the ROI. Its a call I look back at with lots of pleasure and no regret. I would always bet on whatever delivers me the best ROI under the context and circumstances.</p>
<p>Dhananjay</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ashish Belagali</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5959</link>
		<dc:creator>Ashish Belagali</dc:creator>
		<pubDate>Thu, 09 Apr 2009 18:06:06 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5959</guid>
		<description>I was not sure whether responding to this post so late makes sense, but I nonetheless thought I would argue from the &#039;other angle&#039; than having it go unsaid. I appreciate Dhananjay&#039;s effort for making the article as unbiased as he could; and also feel sorry for missing out on his presentation.

While having less code and metaprogramming are great, we should also keep an eye on whether we are missing out on something important.

We all know that any amount of testing is never foolproof. So if a language gives us a better chance of catching a good %age of errors automatically, there is wisdom in using that language, even if it&#039;s not so sexy.

With release 1.5, Java went a step further in its strong typing system to embrace Generics. The idea of Generics is that you are no more content by declaring an object type to be a List, but you now want to mention additionally that all its elements would be of a given type instead of some other. (C++ folks would remember templates here.)

Do generics make code more verbose? Yes.

Do they make your application more robust? Yes again!

The lines are clearly drawn then. Java is meant to be a business language, meant to solve serious business problems. It was never cool or sexy. (I wish Java did something about this aspect quickly.)

One fact of life is that static typing goes a long way in making your programs highly maintainable. This is because when you look at a method, you instantly know what are the types of the arguments that are coming in and what you can do with them. That makes the understanding better and also avoids incorrect edits by compile time checking.

Secondly, although the code &#039;weighs&#039; more, some of it can be auto-generated (like the getters-setters). Also, powerful editors can do a much better job of suggestiions or auto-completion based on the types of arguments, which improves productivity and avoids stupid spelling mistakes. As a result, the speed of development is not necessarily slow. (Developer productivity is more associated with the framework one uses than the language.) Also, the code is now easier to understand and hence easier to maintain (contrary to the simple-minded expectation of less code to look at should be easier to maintain.)

The static type info of method arguments is so useful that if the language I use did not allow it, I would mention the type of each argument in method comments. A better alternative is to use a language (like Java, C#, C++) which supports strong type system and take advantage of the compile-time error catching. As an added bonus, your application will also be fast. :-)

Finally, as Dhananjay said, there is no &#039;one size fits all&#039;. I prefer the dynamic languages for smaller programs, or for giving some dynamic scripting ability on top of existing apps. But I prefer to bet on the proven solid workhorses for life-size apps.

/Ashish</description>
		<content:encoded><![CDATA[<p>I was not sure whether responding to this post so late makes sense, but I nonetheless thought I would argue from the &#8216;other angle&#8217; than having it go unsaid. I appreciate Dhananjay&#8217;s effort for making the article as unbiased as he could; and also feel sorry for missing out on his presentation.</p>
<p>While having less code and metaprogramming are great, we should also keep an eye on whether we are missing out on something important.</p>
<p>We all know that any amount of testing is never foolproof. So if a language gives us a better chance of catching a good %age of errors automatically, there is wisdom in using that language, even if it&#8217;s not so sexy.</p>
<p>With release 1.5, Java went a step further in its strong typing system to embrace Generics. The idea of Generics is that you are no more content by declaring an object type to be a List, but you now want to mention additionally that all its elements would be of a given type instead of some other. (C++ folks would remember templates here.)</p>
<p>Do generics make code more verbose? Yes.</p>
<p>Do they make your application more robust? Yes again!</p>
<p>The lines are clearly drawn then. Java is meant to be a business language, meant to solve serious business problems. It was never cool or sexy. (I wish Java did something about this aspect quickly.)</p>
<p>One fact of life is that static typing goes a long way in making your programs highly maintainable. This is because when you look at a method, you instantly know what are the types of the arguments that are coming in and what you can do with them. That makes the understanding better and also avoids incorrect edits by compile time checking.</p>
<p>Secondly, although the code &#8216;weighs&#8217; more, some of it can be auto-generated (like the getters-setters). Also, powerful editors can do a much better job of suggestiions or auto-completion based on the types of arguments, which improves productivity and avoids stupid spelling mistakes. As a result, the speed of development is not necessarily slow. (Developer productivity is more associated with the framework one uses than the language.) Also, the code is now easier to understand and hence easier to maintain (contrary to the simple-minded expectation of less code to look at should be easier to maintain.)</p>
<p>The static type info of method arguments is so useful that if the language I use did not allow it, I would mention the type of each argument in method comments. A better alternative is to use a language (like Java, C#, C++) which supports strong type system and take advantage of the compile-time error catching. As an added bonus, your application will also be fast. :-)</p>
<p>Finally, as Dhananjay said, there is no &#8216;one size fits all&#8217;. I prefer the dynamic languages for smaller programs, or for giving some dynamic scripting ability on top of existing apps. But I prefer to bet on the proven solid workhorses for life-size apps.</p>
<p>/Ashish</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Geek Night @ Thoughtworks: IronPython, Ruby in C#, Distr. VCS - 4 April &#124; PuneTech</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5831</link>
		<dc:creator>Geek Night @ Thoughtworks: IronPython, Ruby in C#, Distr. VCS - 4 April &#124; PuneTech</dc:creator>
		<pubDate>Tue, 31 Mar 2009 02:32:50 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5831</guid>
		<description>[...]   Improve your web based software development and maintenance ROI with dynamic programming languagesBy navin Mar 23rd After we carried a few quick articles on why you should learn more about Ruby and Ruby on Rails (take 1, take 2) last month, we decided that we wanted to give people a much deeper article on why these new languages (Ruby, Python, PHP) and frameworks (Rails, Django) are setting the web world on [...] [...]</description>
		<content:encoded><![CDATA[<p>[...]   Improve your web based software development and maintenance ROI with dynamic programming languagesBy navin Mar 23rd After we carried a few quick articles on why you should learn more about Ruby and Ruby on Rails (take 1, take 2) last month, we decided that we wanted to give people a much deeper article on why these new languages (Ruby, Python, PHP) and frameworks (Rails, Django) are setting the web world on [...] [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Talk slides: Selecting a Programming Language - Dhananjay Nene &#124; PuneTech</title>
		<link>http://punetech.com/improve-your-web-based-software-development-and-maintenance-roi-with-dynamic-programming-languages/comment-page-1/#comment-5820</link>
		<dc:creator>Talk slides: Selecting a Programming Language - Dhananjay Nene &#124; PuneTech</dc:creator>
		<pubDate>Mon, 30 Mar 2009 01:12:35 +0000</pubDate>
		<guid isPermaLink="false">http://punetech.com/?p=1118#comment-5820</guid>
		<description>[...]   Improve your web based software development and maintenance ROI with dynamic programming languagesBy navin Mar 23rd After we carried a few quick articles on why you should learn more about Ruby and Ruby on Rails (take 1, take 2) last month, we decided that we wanted to give people a much deeper article on why these new languages (Ruby, Python, PHP) and frameworks (Rails, Django) are setting the web world on [...] [...]</description>
		<content:encoded><![CDATA[<p>[...]   Improve your web based software development and maintenance ROI with dynamic programming languagesBy navin Mar 23rd After we carried a few quick articles on why you should learn more about Ruby and Ruby on Rails (take 1, take 2) last month, we decided that we wanted to give people a much deeper article on why these new languages (Ruby, Python, PHP) and frameworks (Rails, Django) are setting the web world on [...] [...]</p>
]]></content:encoded>
	</item>
</channel>
</rss>
