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]
