Learn a dynamic language now

Learn a dynamic language now. Why? Because you can do more with less code and get better quality too. How can you argue with that?

Where does the benefit come from? First, the languages are less verbose more expressive, so you type less and say more. Second, metaprogramming takes the place of dev-time code-gen, shortening your dev/test loop (always a goal) and simplifying your continuous integration build. Third, the ability to redefine methods means you can mock anything without adding zillions of interfaces and all that IoC crap.

Having spent the last 8 months working with Ruby and dabbling with Python, I just can't look at C# or Java code the same way. There's so much more of it than there needs to be. It's just like the step from C++ up to those languages, details that are unnecessary for most developers were removed and everything got simpler, leaving you to focus on solving your problem. So it is with this next step up to dynamic languages.

I'm not just making this up. I spent the last eight months working in Ruby. The velocity our team achieved with it was amazing, and for the first time ever I saw components reaching and staying at 100% test coverage. The common criticisms that dynamic languages aren't understood by most developers and don't work for large projects just don't hold water. The lack of compiler (and some dynamic languages have compilers) is a non-issue to. The normal testing the compler does (and that's the right way to think of it) is superceded by the better overall test coverage you can achieve. And while they may not be as fast as C# and Java (which weren't as fast at C++ when they started), they scale fine if you've app's architecture is solid (and a bad architecture will cripple scaling no matter what language you use).

All this benefit comes at no risk because there are versions that run on the platform you already use, so all your existing code and libraries are still accessible, in addition to all the libraries written in the dynamic language you choose. If you run on the .NET platform, take a look at IronPython, and soon, IronRuby (the most important project at MS today IMO). If you run on the JVM, check out Jython or JRuby (or Groovy).

Or, if you're looking for nirvana, check out Clojure. It's a new LISP dialect that's dynamic, functional, and, most importantly, provides a concurrent programming model based on immutable data structures and in-memory transactions that promises to make multi-core programming tractable for mere mortals. That's where I'm headed (with a tangent into Python for another project) and its fantastic.

I know I don't post very often (I took the last year off and spent my time just building stuff), so maybe you won't take me seriously. But really, now's the time. If you haven't already, you owe it to yourself to try a dynamic language today. Is it the right answer for everything? Of course not. But it's the right answer for an awful lot of things, and if you can get more done with less effort, how can you say no?

 


Posted Oct 25 2008, 09:13 PM by tim-ewald

Comments

Wayne Dyck wrote re: Learn a dynamic language now
on 10-26-2008 11:21 AM

I could not agree with you more. I have been using Python to prototype a number of small projects with a view of porting them to C# afterwards. After the application is finished, however, I find it works fast enough and is easier to debug that a compiled language. It is also a lot easier to make changes on the fly rather than having to re-compile everything.

Ebrahim wrote re: Learn a dynamic language now
on 10-26-2008 3:42 PM

Insightful article. Thanks.

tecosystems » links for 2008-10-26 wrote tecosystems » links for 2008-10-26
on 10-26-2008 7:01 PM

Pingback from  tecosystems » links for 2008-10-26

del.icio.us bookmarks - 2008-10-26 wrote del.icio.us bookmarks - 2008-10-26
on 10-27-2008 1:24 AM

Pingback from  del.icio.us bookmarks - 2008-10-26

Freddy Hansen wrote re: Learn a dynamic language now
on 10-27-2008 2:03 AM

Good to see that you are still alive :-) Rather a few, but hard-hitting posts like this - you have me convinced!

OtengiM wrote re: Learn a dynamic language now
on 10-27-2008 4:57 AM

Go more forward straight to Haskell, It is an awesome language and I use it also for scripting and systems development.

Ricky Clarkson wrote re: Learn a dynamic language now
on 10-27-2008 5:10 AM

Do you count Haskell, F# or Scala as dynamic languages?  They all have type inference (as does C#, to some extent), giving you short code but still allowing you to use the type system.  Take a look at QuickCheck, a testing library for Haskell (with ports to lots of other languages).  Using something similar in Ruby or Python would be quite verbose.

Jesus Rodriguez's WebLog wrote Tim recommends learning dynamic languages
on 10-27-2008 8:21 AM

Check out his reasooning here

Kellsens Willamos wrote re: Learn a dynamic language now
on 10-27-2008 11:27 AM

Hi. Great post. Can I link you from my site ? I'm a brazilian programmer and I would like to share this post with my friends.

Gaurav wrote re: Learn a dynamic language now
on 10-27-2008 12:28 PM

I feel the same thing to...

Atleast now,Developers don't have to *** out of bed...

U can try IRONRUBY , IRONPYTHON, F#, JRUBY, GROOVY,SCALA, CLOJURE, ERLANG....

just try anyone u feel is close to ur platform , either be JVM or CLR...

Signs on the Sand wrote The Microsoft Dynamic Languages Team Blogroll
on 10-28-2008 2:08 AM

This is Microsoft Dynamic Languages Team, responsible for IronPython and IronRuby. Not as big as you might expect for the “most important project at MS today”, but 100% blogging! Dynamic languages are the next big thing so believe me you want to keep

6 Career Tips From An Old School Programmer | WebDevLounge | design, development, SEO and wordpress | articles, discussion and community wrote 6 Career Tips From An Old School Programmer | WebDevLounge | design, development, SEO and wordpress | articles, discussion and community
on 10-29-2008 8:02 PM

Pingback from  6 Career Tips From An Old School Programmer | WebDevLounge | design, development, SEO and wordpress | articles, discussion and community

WSDAC#24 - C# Futures and Oslo - Service Endpoint wrote WSDAC#24 - C# Futures and Oslo - Service Endpoint
on 10-31-2008 8:03 PM

Pingback from  WSDAC#24 - C# Futures and Oslo - Service Endpoint

JustaProgrammer wrote re: Learn a dynamic language now
on 11-06-2008 7:30 AM

Some practical examples would be helpful here.

Itay Maman wrote re: Learn a dynamic language now
on 12-06-2008 1:07 PM

Completely agree with you. Too bad too many people our there prefer to stick with tradition. Many of the arguments in favor of a statically typed language are not longer true - but people still repeat the old "static is better" mantra without thinking.

I think the most important factor is the unit-testing. A programmer that takes testing seriously quickly realizes that "the normal testing the compiler does" is no match to the awesome power of a good testing suite. Once I got this point it became clear that I'd be more productive with a dynamic language.

Also, I think that a fancy IDE -- like the Smalltalk environments where the program is always live, and you develop by mutating objects that already reside in memory -- will make Python/Javascript/Ruby programmers even more productive.

Ricky,

I think that this point (dynamic development environments) is one of the things that set dynamically typed language apart from statically typed functional language (Scala, Haskell, ML).

fmyppdkzfy wrote re: Learn a dynamic language now
on 01-13-2009 2:21 PM

KB3vKV  <a href="sunbiejrduld.com/.../a>, [url=http://scmcvuyvdass.com/]scmcvuyvdass[/url], [link=http://jijqihwxzliu.com/]jijqihwxzliu[/link], http://hgyawipssnqs.com/

... wrote re: Learn a dynamic language now
on 02-01-2009 11:52 PM

Oh, its great!

ufediyqu wrote re: Learn a dynamic language now
on 02-14-2009 3:38 AM

70JWsJ  <a href="zhwecfekcwmp.com/.../a>, [url=http://atcueryxmljh.com/]atcueryxmljh[/url], [link=http://xkkcjjptbmhx.com/]xkkcjjptbmhx[/link], http://jyinvfkhpbln.com/

jletelshdt wrote re: Learn a dynamic language now
on 03-01-2009 5:10 PM

HyzBZi  <a href="jgnvkxbjaksk.com/.../a>, [url=http://tvesagtuayxb.com/]tvesagtuayxb[/url], [link=http://neuxmzjixcue.com/]neuxmzjixcue[/link], http://dnvnixocckli.com/

... wrote re: Learn a dynamic language now
on 03-07-2009 10:49 AM

Dies ist ein gro�er Ort. Ich m�chte hier noch einmal.

... wrote re: Learn a dynamic language now
on 03-11-2009 11:47 AM

Gute Arbeit hier! Gute Inhalte.

yqbaiemfq wrote re: Learn a dynamic language now
on 03-17-2009 12:38 PM

Fh3pLh  <a href="ukqkefjujwfi.com/.../a>, [url=http://nnckhgfsmjpz.com/]nnckhgfsmjpz[/url], [link=http://auhvftlldkxb.com/]auhvftlldkxb[/link], http://kjaitzrkwwbz.com/

myvzxi wrote re: Learn a dynamic language now
on 03-17-2009 7:35 PM

Bfcz4R  <a href="jbptzmuumluu.com/.../a>, [url=http://kxqmxbyqxsjm.com/]kxqmxbyqxsjm[/url], [link=http://yhehlwwcjvbs.com/]yhehlwwcjvbs[/link], http://fijppfkkencp.com/

oiadbxbgdvu wrote re: Learn a dynamic language now
on 03-18-2009 7:27 AM

XBbOaZ  <a href="cdlkeotabjfd.com/.../a>, [url=http://tauvefslfhms.com/]tauvefslfhms[/url], [link=http://tlyjdidoxeil.com/]tlyjdidoxeil[/link], http://slesbqlgcmjn.com/

Miriam wrote re: Learn a dynamic language now
on 03-23-2009 2:33 AM

I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.

Miriam

www.craigslistposter.info

dzfbldlv wrote re: Learn a dynamic language now
on 05-11-2009 3:51 PM

mg6HEq  <a href="mtkupxziqmmp.com/.../a>, [url=http://aczhdltzkniv.com/]aczhdltzkniv[/url], [link=http://xuivagahbksu.com/]xuivagahbksu[/link], http://jiyeokgxtdmp.com/

dzfbldlv wrote re: Learn a dynamic language now
on 05-11-2009 3:52 PM

mg6HEq  <a href="mtkupxziqmmp.com/.../a>, [url=http://aczhdltzkniv.com/]aczhdltzkniv[/url], [link=http://xuivagahbksu.com/]xuivagahbksu[/link], http://jiyeokgxtdmp.com/

dzfbldlv wrote re: Learn a dynamic language now
on 05-11-2009 3:53 PM

mg6HEq  <a href="mtkupxziqmmp.com/.../a>, [url=http://aczhdltzkniv.com/]aczhdltzkniv[/url], [link=http://xuivagahbksu.com/]xuivagahbksu[/link], http://jiyeokgxtdmp.com/

pinky wrote re: Learn a dynamic language now
on 05-22-2009 11:54 PM

Great post.

sk wrote re: Learn a dynamic language now
on 05-23-2009 7:32 PM

+1

Add a Comment

(required)  
(optional)
(required)  
Remember Me?