Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am interested in making a vehicular network simulator (vehicular network as in vehicles can be equipped with radios and when they come in range they can talk with each other). I want to be able to scale to 1000s of nodes if not more. I am quite frankly torn on how to do, or even which language to use or whether I should instead be using some other piece of software/code.

I know that this should depend on a lot of design decisions that I may have, but it would be great if somebody can point me towards the right direction. I was planning to use a multi-threaded architecture, but not sure whether it will add to the complication or make it easier. Also if I go for a multi-threaded architecture, do you think that the Go language will be a good choice?

I have a few years of experience in Java, but haven't done any big project, and essentially no experience in Go.

share|improve this question
Perhaps indicate your experience level and what skills/languages you know. This may help people lead you in a more directed fashion. – Chris Nov 16 '11 at 0:22
few years experience in Java, but haven't done any big project, and essentially nothing in Go. – IvanK Nov 16 '11 at 0:58

Back around 1980, I took a seminar class in discrete-event simulation from Nick Lawrence, who used to be THE discrete-event simulation wizard at Texas Instruments. He had saved them many millions of dollars, at a time when a million dollars was still real money.

Nick hammered us on two things, over and over and over again.

The first was purpose. What do you want to know? Why are you doing this simulation? What do you hope to learn, what question(s) do you want answered? If your simulation is not set up to answer those questions, or if it is hardwired to answer them a certain way, you are at best fooling yourself, and you may be harming yourself or your customers, very badly.

The second was validation. How do you show that your simulation is in fact accurately simulating what you want to simulate? If your sim is not quite correct, you WILL get wrong answers.

The classic example of validation failure is the TTAPS "Nuclear Winter" study. The sim designers validated their sim against Martian data, forgetting that Earth, unlike Mars, had oceans, and shorelines, and lake-effect snow. After they'd published, someone re-did the sim with those effects figured in, and discovered that lake-effect snow scavenged the dust out of the atmosphere in about one year. (Something similar happened in 1800-And-Froze-To-Death, The Year With No Summer.)

What I'm driving at is this: Until you can say what you want to learn, and how you plan to validate your sim, choice of programming language is NOT what you should be thinking about.

There's a third point that should be raised, that of scalability. Until you can simulate your system with a handful of nodes, CORRECTLY, and get the answers you need on the small model, there's no point in trying to simulate thousands of nodes.

share|improve this answer
[citation needed] – Kyralessa Nov 16 '11 at 20:09

You can also enhance existing network simulators. OMNET++ is a famous network simulation framework. Similarly simple Google search reveals many links like the Veins Network and Road Traffic Simulation. You can explore them and see which one can be easily extended by you

share|improve this answer
OMNET++ is not a simulator, its a simulation framework (a tool to built simulators). I've edited your answer accordingly, please be a little more accurate in your answers. – Yannis Nov 16 '11 at 20:10

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.