View Single Post
  #57   Spotlight this post!  
Unread 01-01-2007, 18:36
Danny Diaz's Avatar
Danny Diaz Danny Diaz is offline
Smooth Operator
AKA: FrankenMentor
None #0418
Team Role: Alumni
 
Join Date: Apr 2005
Rookie Year: 2003
Location: Manchester, NH
Posts: 545
Danny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond reputeDanny Diaz has a reputation beyond repute
Send a message via AIM to Danny Diaz
Re: 2007 Robot Controller

This is actually a really interesting thread. Should a technologically-focused organization change every time the college board or some academic institution decides what's the hot new thing? Not to sound like Grandpa from the Simpsons, but when I tool AP CS in high school the language of choice was Pascal. Then C and Java started to move in, and even though the industry was moving towards C and C++ the academic institutions were moving towards Java. Why Java? I asked the head of the CS department at Georgia Tech at the time, and he said "enrollment". Of course that was the time of the dot-com boom when everybody and their grandmother was learning Java to develop the next big web application that never happened. *sigh*. But even more recently Java has been taking over because of its instant-gratification and graphical nature - students think they're learning more when they can spend 5 minutes programming and get a box to fly across the screen. However, for embedded programming, you don't generally get the instant gratification, you may toil for hours and find out it works or doesn't work.

I worked on a paper with a professor at Georgia Tech my senior year on the development of computer science fundamentals at various Universities around the world - we got several colleges and universities from several countries to participate. We gave everyone the same programming challenge - parse a file for information and display that information in various ways depending on sort criteria provided by the user. The institutions were allowed to use either Java or C/C++ to solve the problem, the students were allowed to use almost any resource they had access to (moderators watched to make sure they didn't go to the web looking for a solution but they were certainly allowed to view manuals, API, or programming resources), and anyone who participated was required to provide everything they did (incomplete programs and all). The results were very astounding - the students/schools that used C++ solved the problem an average of 40% with a high percentage very close by looking at their code, whereas the students/schools that used Java solved the problem an average of 20% with a high percentage not even having a clue as to how to approach the problem (and I'm pulling these numbers off the top of my head, but I am pretty sure they're close). The results were pretty astounding, and we had to ask ourselves why this was. One of the biggest pieces of feeback we got from a school that used Java was, "Our students just aren't use to solving this kind of problem. They predominantly create classes and icons - you know, something OO or graphical - and they work from there. Even though Java has the capability of doing what you ask, our students just weren't comfortable with doing that kind of work. This just didn't fit in with their skill set." The Java programmers were comfortable with programming graphical widgets, and the C/C++ programmers were comfortable with data tasks. To me that was totally unexpected, but over time I came to understand that it's the nature of the language and the person.

Even at National Instruments you can see a big seperation between those who prefer to work on Application Software for its graphical nature and instant gratification, and those who prefer drivers and embedded programming. Sure, the languages are LabVIEW (application/graphics) and C++ (drivers) but it's the exact same concept.

So should FIRST move to Java because that's what students are learning in school or should it stay with the language that was developed for the task? Something more to think about.

-Danny
__________________
Danny Diaz
Former Lead Technical Mentor, FRC 418
Reply With Quote