Most commercial software development these days is really mostly glue code
that calls existing components - for example, it's been decades since I saw
any user interface code that actually drew a window.  Components, whether they be
libraries of Java classes, or Microsoft .NET assemblies, are the real programming 
languages of today.

The real goal of training programmers ought to be how to re-use components.  Given 
this,
does it make sense to train people in the "first principles" of programming languages?
I argue that it does, for two reasons:  First, the glue code between the components is 
still
written in conventional programming languages.  Understanding, say, operator 
precedence in evaluating
a logic expression is still necessary knowledge.  Second, relevant more to general 
computer science knowledge than first principles of programming languages, choosing 
among components may require knowledge
of data structure and algorithms; deciding when to use an XML DOM parser or a SAX 
parser requires knowledge
of parsing, even if a programmer never writes a parser in their entire career.

Given this situation, does having specialized languages for teaching programming make 
sense?  The primary
counterargument or source of resistance apparently is the position that languages 
ought to be "industry relevant."
This is a difficult criterion to pin down, since what industry considers "industry 
relevant" and what
academia considers "industry relevant" can be very different; judging just by the 
numbers, all academic departments
ought to teach Visual Basic since it's claimed to be the most widely used programming 
language in the world.
Conversely, it's been a decade since I've heard of a commercial project done in 
PASCAL, although apparently, it's
still used in some introductory programming courses. 

An argument in favor of pedagogic languages is that an essential computer science 
skill for students to acquire is the skill of learning new languages!  A student who 
graduated in 1992 might have easily found a job writing C in an MS-DOS
environment; in the intervening 10 years, to avoid being stuck in the backwater of 
legacy maintenance, they should have
learned C++, Java, HTML/Javascript, XML, and, more recently, C#.  Call it a new 
notation every two years?  Having students make the transition from the pedagogic 
language to some other language might be considered their first training in a process 
that they will repeat many times in their careers.

Ruven Brooks


-----Original Message-----
From: Richard Bornat [mailto:[EMAIL PROTECTED]] 
Sent: Wednesday, December 18, 2002 4:59 AM
To: [EMAIL PROTECTED]
Subject: Re: PPIG discuss: Java as first PL



On Wednesday, December 18, 2002, at 04:29  am, Linda McIver wrote:

>> She presented research at the 12th PPIG workshop, and
>> has come up with a wonderful idea: the Zero-th
>> programming language:
>> "The language, GRAIL, is designed to be used *before*
>> the first programming course, to enable students to
>> become familiar with programming concepts with the
>> attendent need to grapple with the syntactic and
>> semantic complexities of a full modern programming language."
>> http://www.csse.monash.edu.au/~lindap/research.html
>
> The idea might be pedagogically sound (no doubt that will
> be contentious :), but it's not necessarily politically sound.  It's 
> very difficult to convince departments, and indeed students, to take 
> on a non-industry-relevant language as part of a computing degree, 
> even short-term.
>
> It would be nice to have evidence that students who are
> given such a language as their short-term introductory language end up 
> being better programmers, but the ethical considerations of trying to 
> test such a theory in a single course are probably insurmountable, and 
> testing across courses/institutions generally involves too many 
> variables to give conclusive results.

I strongly encourage you to try.  I tried that approach for ten or 
twelve years (there was even a book, Programming from First Principles, 
a brief comet in the 80s).  The course was based on Landin's ISWIM, 
with sidetracks to cover transcription into 'real' languages.  
Unfortunately I drove myself up a formalist cul-de-sac and staff plus 
student resistance killed off any further experiments.

I now feel, prompted by what may have been a casual remark of Thomas 
Green's ("people don't learn like that") that delivery method may count 
more than curriculum.  Floundering around in my cul-de-sac, I've 
recently had what feels like success in teaching formal logic with lots 
of paper and pencil practice and lab support with a symbolic 
calculator.  Back in the old PfFP days we believed in pencil and paper 
as an aid to reflection; perhaps one day I'll get it to work.

My own feeling about Java and the like is that it must be harder to 
learn to program in a notation which relies for its power on a vast 
unspecified and barely described library.  It's programming in a 
language with 5000 instructions which nobody understands, whereas poor 
old C has about five which everybody understands.

Richard Bornat


- Automatic footer for [EMAIL PROTECTED] ----------------------------------
To unsubscribe from this list, mail [EMAIL PROTECTED]  unsubscribe discuss To join 
the announcements list, mail [EMAIL PROTECTED] subscribe announce
To receive a help file, mail [EMAIL PROTECTED]         help
This list is archived at http://www.mail-archive.com/discuss%40ppig.org/
If you have any problems or questions, please mail [EMAIL PROTECTED]

- Automatic footer for [EMAIL PROTECTED] ----------------------------------
To unsubscribe from this list, mail [EMAIL PROTECTED]  unsubscribe discuss
To join the announcements list, mail [EMAIL PROTECTED] subscribe announce
To receive a help file, mail [EMAIL PROTECTED]         help
This list is archived at http://www.mail-archive.com/discuss%40ppig.org/
If you have any problems or questions, please mail [EMAIL PROTECTED]

Reply via email to