Chronology Current Month Current Thread Current Date
[Year List] [Month List (current year)] [Date Index] [Thread Index] [Thread Prev] [Thread Next] [Date Prev] [Date Next]

Re: [Phys-L] programming languages & controllers



On 03/17/2014 12:53 PM, Paul Lulai wrote:
Does anyone have a recommendation for a language that might be
useable at the h.s. level? We are currently using RobotC. We are
thinking about switching to something that is more scaleable.
LabVIEW might be a candidate since the Lego NXTs are programmed in a
version of labVIEW.

Wow, that's a good question.

1) Beware that a good implementation of a mediocre
language beats a bad implementation of a great language.
So a lot of things that would make sense in the long run
in theory don't necessarily work today in practice.


2) You actually have /two/ "market segments" that you need
to satisfy: The students and the teachers. Do not assume
that what works best for the students works best for the
teachers. Students are important ... but teachers are
important too!

In particular, students are happy to learn the latest most
modern thing, because why not, they've got to learn something
and the new thing is just as easy to learn as anything else.
Meanwhile, the teachers have an investment in the old way
of doing things. It's not that they are dumb or stubborn
or lazy, it's just that they don't have the time to learn
something complicated and new every year.

As a conspicuous example of what I'm talking about, young
students have no trouble with highly parallel event-driven
approaches. It's just like a sports team, with a bunch
of agents running around in parallel, mostly independent
but loosely coordinated. In contrast, somebody who learned
"scientific" programming 20 years ago is going to run away
screaming, because he expects the computer to do one thing
at a time in a nice linear sequence.

The closest I can come to a constructive suggestion here
is
a) Plan a gradual phase-in of new stuff, so that teachers
don't have to deal with too much change all at once.
b) Prepare /two/ sets of documentation, one with what the
students need to know, and one with what the teachers
need to know, which is generally wildly different.


3) Other things being equal, students are vastly happier
with drag-and-drop graphical interfaces such as you see
with gamemaker / labview / lego-robots ... in contrast to
imperative programming languages such as C.


4) Other things being equal, work in the highest-level
language available. Young students can deal with the
abstractions involved. It's kinda cute to see one little
kids explaining to another that you need to define a class
over there and then instantiate it five times over here.
The grown-ups roll their eyes because they have no idea
what's going on, but meanwhile the kids are turning out
robots and games that actually work.

To say the same thing the other way: Do not get sucked
into using low-level languages like javascript. That is
not a good use of anybody's time.

If you learn a structured language first, you can then use
a low-level language safely, because you will self-impose
some discipline and structure. The converse does not work.


5) The choice of language is more important than the choice
of hardware platform. Unless you're planning to make a
million of them (e.g. washing machines) the cost of the
software far outweighs the cost of the hardware. Here
the "cost" includes teacher time and student time learning
the language and writing the code. So pick the platform
that supports the best software.