ianr@cogs.susx.ac.uk (Ian Rogers) writes:
>
> A.Sloman@uk.ac.bham.cs wrote:
> > All sorts of students and teachers are going to complain about this
> > change. I think a dreadful design decision has been taken, in complete
> > disregard of the needs of students and teachers, who are, at present,
> > the main users of Pop-11, and are likely to be for the foreseeable
> > future.
>
> I think it's an excellent design decision. It makes Pop11 a "serious"
> language which means that more than "students and teachers" are likely to
> use it.
Are you offering to re-write all the teaching documentation we use?
(Not just Sussex local teach files, but teaching material developed
elsewhere, into which a lot of work has gone.)
That would be very kind of you.
If not, the people who now try using Pop-11 for teaching and who
find that the language doesn't work as the teaching documentation
says it does, will certainly not want to use it. They will decide
that it is a language associated with sloppy people.
[AS]
> > It's
> > completely stupid to try to force people to write
> >
> > vars p1 p2;
> >
> > define foo .....
> >
> > dlocal p1, p2;
> >
> > ....
> > enddefine;
> Not at all. Imagine the following program:
>
> define f1;
> vars foo;
> enddefine;
>
> define f2;
> vars fooo;
> foo =>
> enddefine;
>
> It has a bug in it (I've misstyped foo in f2).
Of course you can produce bugs, of all sorts, in Pop-11 or any other
useful language. The fact that you (or other people you know) happen
to produce this sort of bug very frequently doesn't meant that
everyone else needs to be forced to use a redundant syntax.
Remember: people who are worried about that kind of bug can freely
adopt the strategy of doing what you recommend, i.e. never use
"vars" locally. Making the compiler shout at you every time you do
it is what I've heard referred to in another context as "fascist"
language design.
If you want to worry about common bugs in Pop-11, stack bugs are far
more of a problem, and a collection of utilities for checking that
the stack hasn't changed when it shouldn't have would be a much more
significant contribution to program development.
Another frequent source of bugs is use of uninitialised lvars which
turn up as unexpected occurrences of 0. There should be a compile
time debugging option to initialise lvars to have undef objects with
the name of the lvar, e.g. so that a bug involving an uninitialised
lvars fred would show up as something like "<undef 'lvars fred'>".
There are lots more, all of them more important than banning the use
of vars to declare and localise simultaneously and inflicting a lot
of trouble in people who have spent several years producing
documentation.
Aaron
--
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs )
School of Computer Science, The University of Birmingham, B15 2TT, England
EMAIL A.Sloman@cs.bham.ac.uk
Phone: +44-121-414-4775 (Sec 3711) Fax: +44-121-414-4281
|