[LINK] What programming language for schools?
cas at taz.net.au
Mon Mar 14 11:03:11 EST 2005
On Mon, Mar 14, 2005 at 12:08:00AM +1100, Stephen Loosley wrote:
> "Students will use one programming language from the
> accompanying list, to develop purpose-designed software.
> The purpose-designed software will entail the use of objects,
> methods and their properties, and event-driven programming.
do they give the students the choice of language, or the school/teacher?
how many teachers know all of these languages well enough to teach them?
better to focus on a small number of languages. my choice would be
Logo (or scheme), python, C++, and possibly Java. and maybe perl (but
only because i like it, not because it's a particularly good teaching
if i had to choose just two, it would be Logo or Scheme for
teaching functional/declarative languages, and python for teaching
object-oriented procedural languages.
IMO, it would be better to focus on just two. the concepts you master in
one language can readily be applied to other languages....but to master
a language, you have to use it continuously for a reasonable length of
time. if you're constantly switching languages, you'll learn a little
about all of them but master none of them. better to focus on one or
two languages, with occasional side-excursions to give a brief intro to
others (with an emphasis on pointing out the differences & similarities
to the main two), but then go back to teaching the main two.
e.g. teach logo and introduce scheme showing how it implements the same
or similar ideas in a different way. or vice-versa. and teach python
plus an introduction to C++ or Java.
above all, teaching programming is, at core, about teaching particular
ways of thinking (different language groups require different ways of
thinking about the program). once you have learnt them, writing the code
and the choice of language are mere implementation details.
> Visual Dbase
> Visual FoxPro
these are too application-specific. students should learn the basics of
programming, not how to work with specific applications.
> Visual Basic (not Visual Basic for Applications)/REALbasic
> Visual C++
they shouldn't be teaching Basic of any kind, and if they teach C++ it
should be non-"visual". new generations of programmers need to learn the
fundamentals, not point-and-click pseudo-programming.
someone who learns plain C++ can program on any operating system, with
any C++ compiler. someone who learns Visual-C++ is completely lost
on anything but Windows & Visual-C++. that reason alone is enough to
exclude the "Visual" languages. school should not be a training ground
for any one company's products.
my partner had to suffer through a course in Visual Basic as part of her
Masters at Monash Uni. in theory, the course was supposed to be about
program design and algorithms (a good thing to learn), but in practice
it was actually about user-interface and figuring out how to visual
basic to do what you wanted. nearly all the time on the programming
project was spent on grappling with VB issues, leaving hardly any for
learning about designing programs.
i don't see how anyone could have learnt about program design from that
course. fortunately, my partner had been a programmer for several years
before doing the course and did quite well at it, but anyone without
that advantage would have been in trouble.
and pretty much the same thing occured later in the Masters when they
used visual tcl in one of the courses.
IMO, the "visual" languages are a pretty toy, they can be used to
quickly knock up a prototype, but they should only be used by people who
*already* know how to program (and preferably only by people who have
mastered programming). using them without excellent programming skills
and good programming habits already ingrained, is a disaster.
there is a real need for teaching user-interface design, but it is a
separate skill from program design, and should be taught separately.
programs should be designed in a modular fashion, with the user
interface being just another module rathar than tied to any given
interface - i.e. the same core program could be used with a plain-text
or curses interface, with a GUI interface, with a web interface, etc.
does anyone still use hypercard? i thought that even apple abandoned
it nearly a decade ago. in any case, (like microsoft's "Visual"
languages) it can't really teach programming, all it can do is teach
GUI design and small coding of responses to GUI events. and it's too
application-specific. (that said, i still like hypercard & hypertalk.
apple did an excellent job there)
OpenScript is the language behind the ToolBook imitation of hypercard,
isn't it? the same comments apply.
primary school - but LOGO would be a much better choice if instant
feedback/gratification is needed, and programming with turtle graphics
can be used as an aid for teaching mathematics, calculus and geometry
Logo also serves as a grounding in functional languages like lisp,
scheme, caml, haskell and many others. this is reason enough to be
teaching it (or Scheme, which serves the same purpose).
> Visual J, Java
java yes, visual java no. for the same reason as C++ vs Visual-C++
> Perl, PHP, Python
as much as i like perl and dislike some attributes of python (whitespace
should NOT EVER be syntactically significant), python is a very good
language to learn. it encourages good programming practices (incl.
object oriented and event-driven programming), and is quite easy to pick
up and master.
i don't see the point in learning PHP at all. it's very similar to perl,
but with a lot missing - especially the CPAN modules, they really make
perl what it is. if you're going to learn a perl-like language, why not
just learn perl? and, regardless of what PHP proponents claim, it is not
a general-purpose programming language, it is really only useful for web
> Btw, a recent item ..
> More than 100 Microsoft Most Valuable Professional (MVP) developers
> have signed a petition demanding the software company reconsider plans
> to end support for Visual Basic in its "classic" form.
> Developers claim the move could kill development on millions of Visual
> Basic 6 (VB6) applications and "strand" programmers that have not trained
> in newer languages.
that sounds too good to be true.
craig sanders <cas at taz.net.au> (part time cyborg)
More information about the Link