Tuesday, January 17, 2012

Don't use netlogo

A follow-up to yesterday's post on picking programming languages: conditions under which you should program in NetLogo.

The short answer: None.  It amazes me that people will put up with the pain of developing in a language where turtles are one of the primary object primitives.

A slightly longer answer: I can see why some people use NetLogo as a way to learn the basics of agent-based modeling, but I'll never be able to take it seriously as a research tool.

NetLogo is a legacy system with a lot of nifty-looking examples and modules, plus it can run in a browser.  These are its strengths.  But it's built on the Logo programming language, which is hopelessly outdated, and never intended for real number-crunching anyway.  In other words, using NetLogo signals that you don't know how to do real programming.


  1. Hi Abe,

    This is the outdated view of NetLogo. I even used to teach it this way (or almost :-)). But then, slowly and silently, it started becoming one of the leading platforms, recognized by the most notable scientists in our domain. And, you know, science is a social thing...

    Nota bene, NetLogo also became quite efficient in execution.

  2. @gzl: Interesting... The NetLogo I know may have some small value as a teaching tool, but not for serious modeling or research -- but I'm willing to change my opinion if the new platform lives up to it. Can you post links or resources about the relevant changes?

  3. I can't comment about whether NetLogo is a good tool or not compared to others available, since I haven't used anything else. However, there's a textbook out by Railsback and Grimm on Agent-based and individual-based modeling, which uses NetLogo, and which I've found to be very helpful. Regardless of its merits relative to other platforms, it seems to be getting a bit more mainstream.

  4. I love your diagram! I started learning netlogo for a decision systems class. Its very easy to pick up--but I'm not enjoying learning another programming language--especially one that does not follow any conventions.
    When I find from netlogo is that the code is for setting the agent objects--if you look at the code with that perspective its not programming it more like JSON, an object notation. But some of the variables point to function not just data, which is common in JSON too.
    Not too much support for ABM in python and there are alot of complaints in the forums that python has too much overhead to do this work efficiently. There are trade offs though. Id rather use python and matplotlib and just be a better object oriented programmer.

    Good luck!

  5. A very outdated position, Most of the modelling conferences I go to around 30% of the papers have been implemented using netlogo. It has its disadvantages, but for agent models and testing theorem is defiantly a useful arrow to have in your quiver. For agent models its also significantly faster than python.

  6. And surely this kind of argument never works because it is about style not content: "showing you don't know what programming is", taken "seriously". This is just rhetoric.

  7. I used Netlogo to solve indutry level problem and implement it in production environment. I guess your view is very biased. Have you ever tried this platform seriously? If you do not like it simply because you dont know the lanuguage then it is not a strong justification for saying Netlogo is a weak tool. If Netlogo is not good, can you point out any other development platform that is mature and suits better for ABM. As I know, even Python does not have a mature ABM platform. The only other mature one is Repast based on Java.