From: crawford@church.mitre.org (Randy Crawford)
Subject: Re: programming languages, education, unanswered questions, loose threads
Organization: The MITRE Corporation, McLean, VA
Date: Thu, 27 Aug 1992 16:44:24 GMT

In article <1992Aug26.170100.6270@iscsvax.uni.edu>, bohy6489@iscsvax.uni.edu writes:
> I had a programming languages course with Bruce MacLennan while at the
> University of Tennessee.  He made three statements which (I think) contribute
> very nicely to this thread during the course of that semester:
> 
>         1) "Every language since FORTRAN, with the possible exception of
>             functional programming languages, is just warmed-over FORTRAN."

True also for APL and forth?
 
>         2) "A programming language is defined as a language in which you can
>             write *any* program."

No doubt that would include Lotus 123 macros and C shell scripts.  I don't 
think that's a particularly useful statement except to an academic who doesn't 
have to program in this "language".  It smacks of a preoccupation with theory
and turing machine equivalency.
 
> I *still* maintain (as someone else has pointed out) that it is *not* the
> language which encourages bad programming style.  

Whoa.  Languages differ greatly in what they _allow_ the programmer to write.
And because bad code is often a matter of poor programming style, bad C or bad
FORTRAN is much more common than bad Pascal or bad Modula where poor style is
more difficult.  I would agree with you, however, if you changed the word 
"encourages" to "guarantees".

> With the possible exception
> of LISP (which IMHO is unreadable), anyone can write a readable program in any
> language.  

I think you are objecting to more than just parentheses when you deride Lisp. 
Functional programming languages are an acquired taste.
 
> So the argument of what language should we use to teach CS is, in some sense,
> rather pointless.  We all have our preferences.  I too think that C lets you do
> some *very* ugly things.  I like Pascal and FORTRAN.  Not because they are what
> I learned (I learned BASIC first), nor even because they are what I used most
> (though they are).  It is almost an asthetic thing for me.

Teaching programming is more than teaching style.  If the programming language
cannot support structured types, then you cannot use it to teach structured 
types (or it becomes unnecessarily difficult)..  The same holds for data 
abstraction, abstract data types, advanced data constructs (linked lists, trees, 
heaps, stacks, etc), recursion, functional programming, etc.  In my opinion, 
FORTRAN, and BASIC are poor choices for such instruction, and C suffers for the 
poor machine abstraction it affords.  Ada is too complex and few compilers are
available/affordable on personal computers.  The same is true for Common Lisp. 
Pascal is not ideal in that few professionals  use it (like Algol or PL/1 or 
scheme or ML).  The same holds for Modula 2. 

I think the conclusion among most academics who care is: teach programming in a
language which teaches good stylistic form and supports the constructs needed 
to learn more about computer science.  No language can be all things, but some 
are simply inappropriate to certain tasks.

(...well reasoned comments deleted...)
 
> What sickens me most is that individuals with the knowledge and capability to
> teach are being pushed out of schools in favor of those with a knack for
> publishing (but could not teach their way out of a paper bag).  *THIS* is the
> educational crisis in America, at least in post-secondary schools...
... 
> 
> ps - some other statements from Programming languages with MacLennan:
> 
>         "PL/I is the swiss-army-knife approach to programming language design."
> 
>         "After publishing the second edition of my book, I quit doing research
>          in programming language design.  There's nothing new."
> 
>         (you could tell by the way he taught the course that he had lost much
>          interest in the subject, I'll tell you that)

Sounds like it. 

Maybe we should divide universities the way some have suggested we divide
college sports: college athletics could become professional and non-academic,
and college research could follow its own non-academic track as well.  Let the
graduate programs become separate entities from undergrad, with different profs
and a different agenda (more applied).  Measure the undergrad profs as teachers
and contributors to the applied sciences.  Leave the theorists to write theory
and to produce other theorists.
-- 

| Randy Crawford        crawford@mitre.org        The MITRE Corporation
|                                                 7525 Colshire Dr., MS Z421
| N=1 -> P=NP           703 883-7940              McLean, VA  22102
Xref: sparky comp.edu:1479 comp.lang.fortran:3370 comp.lang.misc:2885 comp.arch:9165 sci.math:10859