Language/Firmware Comparisons

Discussion specific to NXT-G, NXC, NBC, RobotC, Lejos, and more.
dsjove
Posts: 56
Joined: 22 Jan 2011, 23:22

Language/Firmware Comparisons

Post by dsjove »

There are several languages and associated firmware modules. I would like to hear opinions on each. I develop on the Mac, the existence/quality of Windows tools are moot. If I am completely off-base or forgotten anything, let me know.

Nxt-G:
Pro - standard firmware
Pro - immediate support on new hardware
Con - graphical programming too verbose
Con - Macintosh support is below sub-par

Brick-CC:
Pro - good implementation of C-like language
Pro - very active (and helpful) development
Pro - standard firmware
Pro - near immediate support on new hardware
Con - limitations of firmware
Con - very few C++ language constructs
Con - limited Macintosh tools (but enough to develop and run)

Lejos:
Pro - full OO language
Pro - firmware supports recursion, call stacks, exceptions, etc...
Pro - IntelliJ makes a good IDE on the Mac
Pro - faster code
Con - non-standard firmware
Con - unknown timeliness on support for new hardware?
Con - last build back in 2009!?

RobotC:
Con - no Mac support
Con - cost money
gloomyandy
Posts: 323
Joined: 29 Sep 2010, 05:03

Re: Language/Firmware Comparisons

Post by gloomyandy »

For leJOS the last release was 2009, but there are pretty much weekly developer builds that are pretty easy to install and use. You also get all of the source for the leJOS and the majority of the system is written in Java and so available for relatively easy modification by users.

Andy
dsjove
Posts: 56
Joined: 22 Jan 2011, 23:22

Re: Language/Firmware Comparisons

Post by dsjove »

On Lejos -
I am going to add a Con. That is a confusing set of instructions on the Lejos site!

Where are the dev builds? The links from Lejos only go to the 2009 builds.
Do I have everything I need for Java installed?

java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)

I don't see the JDK and Oracle's site doesn't have MaxOSX options. Where do I get it?

Another Con - environment variables. Really? That is so 1980's. :mrgreen:

Does it work with IntelliJ?
nxt-ai
Posts: 36
Joined: 10 Jan 2011, 05:02

Re: Language/Firmware Comparisons

Post by nxt-ai »

I personally use NBC/NXC along with Xcode (see my post for that here:https://sourceforge.net/apps/phpbb/mind ... =396#p3489) but that may be my temporary dislike for java a while back.

What's very helpful is the list here:http://www.teamhassenplug.org/NXT/NXTSoftware.html unfortunately NXJ is not speed tested there but it also includes other languages like LEJOS OSEK which is unrelated from the java one, however as shown by the chart it too is built on windows, but I can dream :) .

In my mind NBC/NXC is your best choice as its creator John Hanson regularly visits these forums as he did nxtasy's.

Anyways my $2 in cents.
-----
The NXT AI
Last edited by nxt-ai on 01 Feb 2011, 02:59, edited 1 time in total.
dsjove
Posts: 56
Joined: 22 Jan 2011, 23:22

Re: Language/Firmware Comparisons

Post by dsjove »

Yes, John has been a great help. And that is a huge plus!

I am not a fan of Java myself. But I find myself writing OO-NXC. I'd like to have the language constructs to back it up. I could easily live without those. But the limitations of the standard OS (non reentrancy, non recursion, 256 functions, fixed file sizes, etc) just seems too much for what I am trying to do. And somewhat shocking given that we have had OSes with those features running on small devices for decades.

I am automating and scripting my LEGO train/town. I would like to safely apply the same functions to multiple components. That is going to get really crazy when I have three trains, two switches, a charging station, and control events coming from the Nxt, train remotes, and a computer running a web app. A really need re-entrancy!

That is way I am inquiring about all my options.
h-g-t
Posts: 552
Joined: 07 Jan 2011, 08:59
Location: Albania

Re: Language/Firmware Comparisons

Post by h-g-t »

A sophistical rhetorician, inebriated with the exuberance of his own verbosity, and gifted with an egotistical imagination that can at all times command an interminable and inconsistent series of arguments to malign an opponent and to glorify himself.
dsjove
Posts: 56
Joined: 22 Jan 2011, 23:22

Re: Language/Firmware Comparisons

Post by dsjove »

Wow! Those are exhaustive and informative lists. Just what I was looking for. Thank you. I am going to assume re-entrancy, not mentioned in the tables, will be divided between standard and non-standard firmware.
gloomyandy
Posts: 323
Joined: 29 Sep 2010, 05:03

Re: Language/Firmware Comparisons

Post by gloomyandy »

If you have questions about leJOS then the leJOS forum is probably your best bet (many of the questions have been answered already over there), here's a quick go at answering what I can... Java on MacOS is currently provided by Apple (but this is in the process of changing as Apple have already announced). I would recommend that you use the 2009 release until/unless you find things that do not work for you. It has pretty good support for most NXT based devices already. No idea about Intellij but you can certainly use NetBeans or Eclipse.

Andy
HaWe
Posts: 2500
Joined: 04 Nov 2014, 19:00

Re: Language/Firmware Comparisons

Post by HaWe »

Consider that these links are very old and partly faulty.
All the links are not up to date to the NXC 2.0 FW supporting floating point arithmetics and are faulty in several respects, and most of them don't take into account the benefits of the enhanced fw over the original fw.
I agree that for many purposes the Lego and EFW are very strongly limited, I also liked to have recursions, dynamic memory allocation, more easy and powerful BT and RS485 remote commands for direct sensor and motor control.
As I personally really hate OOP with it's encapsulated objects and methods and classes, Java is no choice for me. I'm programming in a straight procedural way.
But if you are used to OOP and you like it, I'm sure you'll get around with Java.
dsjove
Posts: 56
Joined: 22 Jan 2011, 23:22

Re: Language/Firmware Comparisons

Post by dsjove »

I personally really hate OOP
Those are some strong and highly subjective words for a proven systematic way to normalize functions. Most skilled "procedural" software engineers I know end up unknowingly writing OO (functional encapsulation) despite their insistence that they hate OO. :D Kind of funny actually.

I have a technical problem to solve, and I don't care what language I use. The technical limitations you specified are pretty severe for the type of system I am trying to create. I can do it in the LEGO firmware, but I don't want to write work-arounds.

If John and team can figure out how to make functions re-entrant in the extended firmware, I would not even consider jumping to Java. The support and activity surrounding NXC is beyond expectations. I had already consumed John's well written book in just a couple days.
Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests