yield thought

it's not as hard as you think

4 Wrong Ways and 1 Awesome Way to Choose a Language

with 22 comments

Over the years I’ve seen many different reasons for working with one programming language over another, but nobody has ever told me about the single most important one of all: the community.

In the past, I’ve thought lots of other things were important; maybe this time is no different. When I was a teenager, I thought speed was most important, so I gave up Visual Basic for Delphi and eventually Delphi for C++.

When I started work I thought that fantastic tools and a really well-documented, solid API were most important, so I started using C# with Visual Studio (this was back before Java’s tools community really took off).

For a while I even agreed with Joel that the language and environment don’t really matter, it’s what you’re building with them that counts. I played around with Haskell but it turned out that the environment did matter a bit, after all.

Then I discovered Python, and thought readability, expressiveness and an awesome standard library were the most important things to look for in a language.

All of these things are true, but none of them compare to the effect of working in a language with a vibrant, smart community. Recently I was doing some Django-based web development, touching JQuery, the incredible Raphael Javascript library and Flash. Well, actionscript.

Ayayayayay. Actionscript. On the face of it, it’s fine – it’s more or less ECMA with a few, mostly optional, modifications. But what really, really hurt was the average level of programmer ability in the community. My workflow for personal projects in Python had become something like this:

  1. Want to do something I’ve never done before
  2. Search for it
  3. Discover there’s already a module in the standard library for that, or
  4. Find two or three beautiful, elegant solutions have been posted online, ready to use

Trying to do the same when learning Actionscript was like drowning in quicksand. It’s the blind leading the blind out there… there seem to be the same number of great programmers but a lot more noise from complete beginners offering each other tidbits of programming wisdom, such as:

make a loop (a while loop I think)

and asking insightful, topical questions in a clear, well-thought out manner:

Hi friend how are you? 🙂 i have a questions how loaded image mc parent ???

Unfortunately, all this noise pollutes the results for the keywords you wanted to use to such an extent that it becomes difficult to find the people who know what they’re doing.

90% of effective web development today is about putting together pieces that already exist. This is great – the reusability holy grail we’ve been searching for is finally coming closer! So, for the sake of your own sanity, when choosing a language to use for your next project make sure you pick one with an active community whose code you’ll want to reuse.

Postscript: I think this is why some Django developers suffer from Rails envy. There’s such an awesome Rails community and ecosystem out there, making truly beautiful things. Just looking at heroku.com or vanity.labnotes.org is enough to make me consider laying down my beloved Python even though I always swore they’d have to pry list comprehensions and meaningful indentation out of my cold, dead hands.

Written by coderoom

December 15, 2009 at 10:27 am

Posted in Programming

Tagged with , , , ,

22 Responses

Subscribe to comments with RSS.

  1. stay strong, comrade. Python is The Way. 😉

    japhy

    January 28, 2010 at 9:38 pm

    • Absolutely! I’m still such a Python noob. The other day I was scripting a telnet connection using the subprocess module. It kinda worked for a while, until I thought ‘wait, what am I doing? This isn’t the python way!’ Then I found telnetlib, part of the standard distribution of course! God bless you, Python.

      coderoom

      January 29, 2010 at 1:16 am

    • Absolutely … Python rules, for many reasons. It’s easy work, but mostly because it is robust and reliable.

      Ninel

      ninel conde

      July 6, 2010 at 2:10 am

  2. I have an alternative perspective. Choose the language with the coolest name: http://newbiehacker.wordpress.com/2010/01/23/how-to-choose-a-programming-language/

    majorgrooves

    January 28, 2010 at 9:45 pm

  3. Good post! I am a Rubyist with two thoughts:

    The one that you’d probably know already is that Haml (an indentation significant template language) is the #2 most used Rails plugin behind a testing framework.

    http://haml-lang.com/

    Haml rocks!

    The other thing that pops into my head is that my friend Foy Savas gave an amazing talk at our FutureRuby conference in July called Polyglots Unite! that I think you would enjoy:

    http://www.infoq.com/presentations/savas-polyglots

    If you ask me, we should see language wars as roughly equivalent to racism; borders just make it hard for people to cross but easy for money.

    Don’t buy into the party lines, there is no us vs. them. If you’re a cool, smart person… we’re all in this together.

    Pete Forde

    January 28, 2010 at 10:55 pm

    • i agree with you. i am learning ruby nowadays, and it is really awesome. many languages have many similarities and ofcourse differences too, that doesn’t mean we should divide ourselves into little tribes. this is really bad for the evolution.

      Programmers live forever.

      monk (@KshitizRimal)

      October 6, 2011 at 3:57 am

  4. I dunno. Most of the libraries I’ve stuck my nose into re Python have been wrappers around C implementations of various quality.

    Barry Kelly

    January 29, 2010 at 1:11 am

  5. Yeah, ActionScript doesn’t have that great of a community for lack of serious programmers. People don’t take it very seriously most of the time, and it’s not open-source or hip enough for a lot of folks. A large part of the community are not originally programmers and they don’t know very much about programming.

    Still, there’s plenty to be had there if you’re willing to look past these things. It’s got some great features and capabilities that nothing else has. I use only open-source tools (except the runtime, that’s only an open standard), and I make things I couldn’t create any other way even if I wanted to.

    The best community has probably always been Flashcoders. There’s also osflash.org and it’s mailing list, although they seem to flounder. StackOverflow has a lot of smart Flash people as well. feeds.adobe.com indexes pretty much every good Flash blog around, and can help overcome the noise.

    Max

    January 29, 2010 at 5:17 am

  6. Inreally enjoyed this post and it’s so true. I’ve ran head first into search engine keyword noise pollution and it’s painful. So many times I’ve searched for something I was trying to figure put how to do and found half baked posts that didn’t work. I’d post a question and get silence. It’s doubly frustrating when you’re a lone developer and not part of a team. The feeling of isolation and loneliness becomes very very strong. I’m a big fan of codeigniter personally. The forums are very active. C#/asp.net mvc is my second favorite.

    Jason Shultz

    January 29, 2010 at 5:47 am

  7. Language does matter. Compare python/ruby/etc. to e.g. erlang. Yes, there’s some things in stackless python, but none even remotely compare to erlang’s processes. Something that’s piece of cake in erlang (light processes, ipc) is really hard to do in python.

    grimborg

    January 29, 2010 at 9:22 am

  8. This is a good post, with good comments to boot!

    I have chosen perl because of the community – CPAN has thousands of well-written, well-tested libraries and is an easily distributable format so perl modules end up in which ever OS (okay, linux distro) I happen to use.

    I also agree about being a polyglot. Clearly many of the modern dynamic languages have expert practitioners who write other languages as well. This is why we see things popping up in other languages after they have been implemented in a first. Web frameworks, ORMs, and small web servers in a dynamic language come into mind. This sort of cross pollination is good – it leverages a broader community to innovate. So I think it is not really what language you choose, but how well you know that one that you use. The real power of a given language is in knowing things like its object model or how it manages processes for example.

    Erlang is an example of a great language that lacks community. Yes there is a community, and there are some cool tools that you can download, use and study (ejabberd). But community is more than that of course, community is online documentation, IRC channels, fora, conferences, noted practitioners and access to code. Because erlang is strongly identified with a domain and a company (erlang == Ericsson Language) the sense of community is somewhat diminished. Compare that to the openness of perl from the very beginning or the evangelism of RoR, or the benevolence of Guido v. R.

    Community often is the secret sauce for getting your work done, and optimizing for fun.

    Jeremiah

    January 29, 2010 at 9:56 am

  9. I write a lot of AS2 code for my job, and it’s a real pain (especially when I’ve been peeking at AS3 a bit.)

    I would have to agree, that a massive problem and reason the whole process is so slow is that there is shite documentation (I actually have 3rd party sites bookmarked for faster access to AS2 lib docs,) and an inability to find useful tidbits.

    I try and give a bit back by publishing my various exploits as above (I also recently bashed out a javascript tool for managing sliding elements, although that isn’t up yet because I haven’t put the site up,) but without some seriously good filtering noone will every find them!

    oh well, that’s the nature of the bathroom cubicle wall of code, I suppose…

    tehwalrus

    January 29, 2010 at 6:50 pm

  10. I came to Flash, like so many people, first as a designer and now as a developer. As the author, and Jason Shultz point out, it’s really hard to overcome not only the noise but also the frustration you get when you feel like the answers you’re getting just plain suck.

    I think that AS3 was this huge sea change to a stricter, more object oriented approach modeled on other languages but thrust into the hands of the inexperienced. Needless to say, it has been very tough to get oriented.

    What troubles me most is that as I have reached a level of competence in Actionscript, I’m now realizing that my knowledge is just entry level for almost every other serious language.

    However I’ve found the best way to tap into the Flash community is to start following folks on Twitter. Lee Brimelow’s theflashblog.com is a great place to start as he often links out to other developers and platform evangelists, all of whom are very accomplished.

    Rob

    January 30, 2010 at 10:21 am

  11. […] blogs via Delicious (after having just added mine), I happened upon a blog post entitled, “4 Wrong Ways and 1 Awesome Way to Choose a Language“. After having just written my own “How to choose a programming language” blog […]

  12. The most important reason to choose a language is the right tool for the right job.

    Apart from that the language syntax is the second most important reason to choose a language. Even if basic had the only communtity in the world I wouldn’t use it!

    And while we are with the syntax issue and you having choosen python: Whitespacespace as part of the syntax is fine, but mixing whitespaces is clearly a syntax error. Number two for not considering python as a language with a good syntax is len. Python can call itself oo all day long, not having len as a method is such a fucking stupid idea.

    Ruediger

    February 1, 2010 at 7:16 am

    • What’s wrong with len(x)?

      I used to think syntax was important, but I’ve realised it’s not; not really. It’s just something you get used to, like a keyboard layout. When you’ve switched a few times it stays easy. Even Lisp makes sense 🙂

      coderoom

      February 1, 2010 at 7:21 am

  13. […] concepts I did, fall into the same mental traps and generally make similar mistakes. Writing the 4 wrong ways post made me wonder how common these phases really are and whether we could categorize […]

  14. Ha, keyword pollution sometimes causes problems even when all the answers out there are good ones! Ever tried to search for info on the Python ‘is’ keyword?

    Thats what you get I guess when a language uses a lot of English in its syntax 😛

    bilbo

    March 20, 2010 at 3:35 am

  15. Speaking of “noise” i would agree with u. But, still, might be u r searching for a solution in the wrong place, am? There r lots of “filtered” blogs/communities where u’d never find dull/noobie topics.
    So, i think it’s the search place that matters imho.

    ps: eg the bytearray project or the spark project.

    jloa

    March 24, 2010 at 12:39 pm

  16. Rails isn’t so bad, comprehendability (ok that’s not even a word) wise.

    I’ve been using ruby for about 4 years, ever since learning it at work. Very easy to just read and comprehend what’s going on. So much so that I read python code and feel it’s too opaque!

    Kyle

    March 24, 2010 at 5:26 pm


Leave a comment