Developing on the pc
There are a number of different options when it comes to selecting the language and tools to get going with the nxt. There is a distinction between languages and tools that run on the robot and languages and tools that run on the pc (or elsewhere for that matter). Below is a list of languages / ides and where they run.
http://thenxtstep.blogspot.com/2006/09/nxt-programming-environments-state-of.html
Running on the NXT brick:
- NXT-G (official LEGO NXT IDE, contained in the kit)
- ROBOLAB (also by LEGO)
- NBC (Assembler style)
- RobotC (C)
Running on the PC:
- NeXTTool and BrickTool?
- Microsoft Robotics Studio (C#/.NET)
- ICommand (Java)
- Visual Lego (.NET)
- NXT Perl (Perl)
- ruby-nxt (Ruby)
- LibNXT (C)
- NXTender (Java)
Which toolset to go for?
This really depends upon what you want out of the nxt and how much time you have to spend on it.
=Expert programmer / engineer and those with lots of time= I would advise going with the Microsoft Robotics Suite. It has the most flexibility and power but has a big learning barrier. This is down to the fact that they have created the concurrency runtime which, whilst being complex and a hurdle to learn, closely mirrors the real nature (i.e. highly concurrent) of the environment that robots operate in.
=Intermediate hobbyist / biggest bang for buck (time)= For people with some programming experience and an interest in using tools that allow them to program non visually i think that the NXC NBC language is a pretty good choice. THe programming environment is traditional procedural which means that you'll get some interesting robot behaviours runnning very quickly. This route is clearly the most accessible route for someone with programming experience who is interested in more than just robot behaviour.
=Beginners / non programmers / interested in robot behaviour= THe LEGO visual ide is easy to use and can do many behvaiours, jan says it's extensible too. There is some learning to do but the tutorials are really good. I know for a fact that this environment is being used in schools. You can program a lot of interesting robot behaviour this way although i suspect that you'll end up running out of steam further down the line. Some people have done some very advanced things with this though.
Other interesting thoughts
The microsoft robotics suite works by running software on the nxt that the pc communicates with so as i understand it right now this isn't really truly autonmous robots. Or at least you can't program the robot to be independent of a mothership, I think a better way to think of the robotics suite is as a drone suite.