View Single Post
  #14   Spotlight this post!  
Unread 02-04-2010, 15:57
mathking's Avatar
mathking mathking is offline
Coach/Faculty Advisor
AKA: Greg King
FRC #1014 (Dublin Robotics aka "Bad Robots")
Team Role: Teacher
 
Join Date: Jan 2005
Rookie Year: 1999
Location: Columbus, OH
Posts: 642
mathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond reputemathking has a reputation beyond repute
Re: PROGRAMMERS: WIND RIVER C++ vs LABVIEW vs JAVA

I will offer another plea to be open minded about languages when you make decisions, and listen to your mentors, many of whom have a significant amount of experience in programming.

As for Lab View not being real programming, put that right out of your mind. (I have always been impressed with LabView, and the first time I saw was more than 20 years ago.) I have been teaching CS for a while now, and I know that one of the constant "discussions" in computer science education circles is whether to start students on Assembly programming or not. I count myself firmly in the "not" category here. Learning to program is about learning how to break a problem down into smaller problems, finding algorithms to solve those problems, translating those algorithms in instructions the computer can understand and then debugging. The last step takes an order of magnitude more time than all of the others. Too much detail at the start tends to make you worse, not better, at programming. For learning the ins and outs of programming a robot LabView is a fine choice. It is really good for modeling and controlling embedded systems. If you are of the "I would rather not use that particular front end, I would rather use the 'real stuff' do my own C programming" consider that someone has to write the C compiler (a task you will likely have to undertake if you go far enough in studying CS). So why are you looking down your nose at using something that "was probably coded in C anyway" when you are just using something that was ultimately coded in Assembly, which is not itself really how the computer works by the way.

As for language choice, what you are familiar with will tend to be what you favor. But one job of a mentor (and a main job of a teacher) is to help you grow intellectually. One good way of doing that is making you learn something new. Even better is writing code on a couple of platforms and evaluating to see which is better for what you need. This year we developed code for both LabView and Java. Our decision this year to ultimately choose Java over LabView was due to our desire to use CAN, which was much easier in Java than LabView. But this doesn't mean that Java is superior, just that it served our purposes better.

I first learned programming in Fortran, then in BASIC. My first job programming was in C. I would say that C/C++ is what I am most comfortable using for my own coding, although teaching AP Computer Science has made me pretty comfortable with Java. If I am writing a simple program for myself I will often write it in Java just because it is easier to make a simple GUI and get it working. But one thing I tell my students is that they should never make their decisions about what language is best while they are in high school based on their perceptions of the real world. Even if their perceptions are accurate, what they learn in high school will not be what they use for most of their lives. When I was in high school (early 80s) my programming teacher told us we really needed to learn COBOL if we wanted to ever be employed in the field. So I did, and have never really used it. She wasn't wrong about the field at that time, but it changed. There was a big upsurge in COBOL jobs for a while leading up to Y2K, but now they are going away fast.

Now that I am at the end of my "open yourself up to new experiences" sermon, my two cents about language choice. I find that Java has a lot to recommend for this kind of robot programming. The way Java handles events, threads and exceptions is straightforward and easy to implement. It makes for much more robust code than typical C++ code. As for Java being filled with "fluff," most of the so-called fluff is just a standard implementation of coding standards that you will be forced to use by an employer if you ever code for big projects in any language.
__________________
Thank you Bad Robots for giving me the chance to coach this team.
Rookie All-Star Award: 2003 Buckeye
Engineering Inspiration Award: 2004 Pittsburgh, 2014 Crossroads
Chairman's Award: 2005 Pittsburgh, 2009 Buckeye, 2012 Queen City
Team Spirit Award: 2007 Buckeye, 2015 Queen City
Woodie Flowers Award: 2009 Buckeye
Dean's List Finalists: Phil Aufdencamp (2010), Lindsey Fox (2011), Kyle Torrico (2011), Alix Bernier (2013), Deepthi Thumuluri (2015)
Gracious Professionalism Award: 2013 Buckeye
Innovation in Controls Award: 2015 Pittsburgh
Event Finalists: 2012 CORI, 2016 Buckeye