Language/Firmware Comparisons
Language/Firmware Comparisons
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
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
-
- Posts: 323
- Joined: 29 Sep 2010, 05:03
Re: Language/Firmware Comparisons
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
Andy
Re: Language/Firmware Comparisons
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.
Does it work with IntelliJ?
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.
Does it work with IntelliJ?
Re: Language/Firmware Comparisons
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
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.
Re: Language/Firmware Comparisons
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.
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.
Re: Language/Firmware Comparisons
If you are covering all the bases you might like to read these :-
http://find.botmag.com/100701
http://www.teamhassenplug.org/NXT/NXTSoftware.html
http://www.talentscenter.com/index.php? ... 67&lang=en
http://www.hempeldesigngroup.com/lego/p ... /pbluagps/
http://find.botmag.com/100701
http://www.teamhassenplug.org/NXT/NXTSoftware.html
http://www.talentscenter.com/index.php? ... 67&lang=en
http://www.hempeldesigngroup.com/lego/p ... /pbluagps/
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.
Re: Language/Firmware Comparisons
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.
-
- Posts: 323
- Joined: 29 Sep 2010, 05:03
Re: Language/Firmware Comparisons
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
Andy
Re: Language/Firmware Comparisons
Consider that these links are very old and partly faulty.h-g-t wrote:If you are covering all the bases you might like to read these :-
http://find.botmag.com/100701
http://www.teamhassenplug.org/NXT/NXTSoftware.html
http://www.talentscenter.com/index.php? ... 67&lang=en
http://www.hempeldesigngroup.com/lego/p ... /pbluagps/
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.
Re: Language/Firmware Comparisons
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. Kind of funny actually.I personally really hate OOP
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.
Who is online
Users browsing this forum: No registered users and 3 guests