NXC or RobotC?
Posted: 18 Jan 2011, 22:19
I'm relatively new to NXT, but not to programming. I quickly got frustrated with NXT-G (spent way too much time trying to get the graphics formatting vs. coding) so decided to give RobotC a try. So far I'm relatively happy but have hit a series of quirks that have me considering trying NXC; I have a fair amount of time invested into RobotC at this point rather than change one quirk for another I thought I'd ask the community for their opinions based on my perceived requirements and my perceived strengths/weaknesses of RobotC vs. what I've read about NXC, any comments on the thoughts below would be very welcome:
1) 3rd party sensor support: I expect to be using some third-party sensors/servos, nothing crazy, things already used by other NXT programmers, but I don't want to run into 'can't use that hardware with (NXT|RobotC). RobotC seems to have the edge here, I see regular updates for third-party drivers for RobotC but not so much talk about drivers for NXC.
2) Decent Debugger: In RobotC I've already had some minor issues with the debugger. It (or more correctly, I) can't tell the difference between similarly named variables across functions in the debugger variable screen. Is NXC's any better? Anything that sets either one apart positively or negatively?
3) Fewer Quirks: I understand that these are personal, but I'm curious as to how people feel NXC stacks up:
* I wasted a lot of time trying to 'inline' several of my functions based upon compiler warnings that they should be 'inline' only to find out after searching forums that 'inline' is not supported. I was pretty upset at being told to implement something that doesn't exist in the software.
* I looked heavily for mutex/semaphore support which has been stated as 'coming soon' since 2008, but I can't find any reference that it ever got implemented. It feels sloppy doing it with HogCPU but more disconcerting that after two years it with multiple statements that it would be available shortly that it appears that it still isn't there. If it is there, I can't find it in the docs. I'm running the latest Beta.
* Can't seem to find a way to open multiple views of the same file. I can open multiple files in tabs, but not multiple copies of the same file. I'm tired of scrolling up/down to see what I named a function or variable.
4) Bluetooth/Wired connectivity. In general, I've been happy with RobotC here, love that I can leave my cable in the box. Does NXC support this as well?
5) Joystick/Remote Control. I really liked NXT-G's remote control dialog. It was great for re-aligning the robot between tests, it is probably the one thing I miss from NXT-G and I can't find an equivalent in RobotC, does NXC do this?
6) Speed. I've read that RobotC's firmware is faster. Is this noticeable? If so, under what circumstances? My current 'bot uses active sonar sweeping while moving to acquire and follow a target; I've already had some issues with the drive/turn task not picking up an update from the scanner task (re: mutex/semaphore mention above) that I'm working on, I don't know if I'm hitting speed limits on processing (the issue is most likely my code) but I would like to know relatively if there are significant differences in speed differences between the two.
Again, thanks for any comments. I did look for a review between the two but the only thing I could find was from 2007.
1) 3rd party sensor support: I expect to be using some third-party sensors/servos, nothing crazy, things already used by other NXT programmers, but I don't want to run into 'can't use that hardware with (NXT|RobotC). RobotC seems to have the edge here, I see regular updates for third-party drivers for RobotC but not so much talk about drivers for NXC.
2) Decent Debugger: In RobotC I've already had some minor issues with the debugger. It (or more correctly, I) can't tell the difference between similarly named variables across functions in the debugger variable screen. Is NXC's any better? Anything that sets either one apart positively or negatively?
3) Fewer Quirks: I understand that these are personal, but I'm curious as to how people feel NXC stacks up:
* I wasted a lot of time trying to 'inline' several of my functions based upon compiler warnings that they should be 'inline' only to find out after searching forums that 'inline' is not supported. I was pretty upset at being told to implement something that doesn't exist in the software.
* I looked heavily for mutex/semaphore support which has been stated as 'coming soon' since 2008, but I can't find any reference that it ever got implemented. It feels sloppy doing it with HogCPU but more disconcerting that after two years it with multiple statements that it would be available shortly that it appears that it still isn't there. If it is there, I can't find it in the docs. I'm running the latest Beta.
* Can't seem to find a way to open multiple views of the same file. I can open multiple files in tabs, but not multiple copies of the same file. I'm tired of scrolling up/down to see what I named a function or variable.
4) Bluetooth/Wired connectivity. In general, I've been happy with RobotC here, love that I can leave my cable in the box. Does NXC support this as well?
5) Joystick/Remote Control. I really liked NXT-G's remote control dialog. It was great for re-aligning the robot between tests, it is probably the one thing I miss from NXT-G and I can't find an equivalent in RobotC, does NXC do this?
6) Speed. I've read that RobotC's firmware is faster. Is this noticeable? If so, under what circumstances? My current 'bot uses active sonar sweeping while moving to acquire and follow a target; I've already had some issues with the drive/turn task not picking up an update from the scanner task (re: mutex/semaphore mention above) that I'm working on, I don't know if I'm hitting speed limits on processing (the issue is most likely my code) but I would like to know relatively if there are significant differences in speed differences between the two.
Again, thanks for any comments. I did look for a review between the two but the only thing I could find was from 2007.