[comp.lang.misc] To trust or not to trust

gudeman@arizona.edu (David Gudeman) (01/24/89)

In article  <4265@enea.se> sommar@enea.se (Erland Sommarskog) writes:
>David Gudeman (gudeman@arizona.edu) writes:
>>Why not trust the programmer to modularize and document
>>the code correctly?
>
>If we could trust programmers there would be no need for language
>of any higher level than C.

Well, if you can't trust your programmers, then one solution is to use
a totalitaritan language.  I think a better solution is additional
training, but of course I don't know your exact situation.  I have
never said that totalitaritan languages are without value, just that
they are not as general-purpose as their supporters would have us
believe.

Also, your comment about higher level languages is peculiar.  Higher
level languages give a lot more than security.  They increase
productivity by providing common data types and operations as a part
of the language, and thereby make it unnecessary for the programmer to
implement them as part of the software.

In fact, I would say that security is not even related to the level of
a language.  It is certainly the case that you can have a high level
language with no provision for security (eg. Prolog, Icon, many
versions of Lisp, and the worst offender, SNOBOL4).  The converse is
debatable.  By the way, all of the languages I listed are higher level
than any totalitarian language I know of.  (I wouldn't even trust
myself to do much programming in SNOBOL4, and I have a pretty high
confidence in my own judgement :-).

db@lfcs.ed.ac.uk (Dave Berry) (01/24/89)

In article <8846@megaron.arizona.edu> gudeman@arizona.edu (David Gudeman) writes:
>I have never said that totalitaritan languages are without value, just that
>they are not as general-purpose as their supporters would have us believe.

I thought you just claimed that they were a bit more inconvenient?  In a
recent article you emphasised that this was all you meant.

>By the way, all of the languages I listed [Lisp, Prolog, SNOBOL, ...] are
>higher level than any totalitarian language I know of.

Many functional languages are fairly "totalitarian", as regards their type
systems.  I presume it weas someone else who claimed that Prolog was a
totalitarian language.

BTW, I don't believe that I'm wilfully misunderstanding you.  I believe that
you're being inconsistent.

"Putting your case so that it can be misunderstood is not enough -- you must
present it so that it cannot be misunderstood."
	- Bundy et. al., "How to get a Ph.D. in A.I."
(Good advice, but damn difficult to do.)


Dave Berry,	Laboratory for Foundations of Computer Science, Edinburgh.
		db%lfcs.ed.ac.uk@nss.cs.ucl.ac.uk
		<Atlantic Ocean>!mcvax!ukc!lfcs!db

gudeman@arizona.edu (David Gudeman) (01/27/89)

In article  <1286@etive.ed.ac.uk> db@lfcs.ed.ac.uk (Dave Berry) writes:
]In article <8846@megaron.arizona.edu> gudeman@arizona.edu (David Gudeman) writes:
]>I have never said that totalitaritan languages are without value, just that
]>they are not as general-purpose as their supporters would have us believe.
]
]I thought you just claimed that they were a bit more inconvenient?  In a
]recent article you emphasised that this was all you meant.

No, the ``inconvenience'' tirade was specifically addressed to variant
records, not to a class of languages.  It was a direct response to
someone misquoting me using hyperbole.  I think this sort of
discussion can be carried on with out resorting to rhetoric.

]>By the way, all of the languages I listed [Lisp, Prolog, SNOBOL, ...] are
]>higher level than any totalitarian language I know of.
]
]Many functional languages are fairly "totalitarian", as regards their type
]systems.

Good point, I withdraw the preceeding comment :-).

]I presume it weas someone else who claimed that Prolog was a
]totalitarian language.

Yes, that poster was using a different definition of B&D languages.

]BTW, I don't believe that I'm wilfully misunderstanding you.  I believe that
]you're being inconsistent.

I don't think I'm being inconsistent, but I may not have expressed
myself unambigously.  How about the following term and definition?

  Paternalistic languages: a class of languages that attempt to
  coerce programmers to program in certain ways.  Such languages
  generally require various forms of redundancy in the code, where the
  redundancy serves both as documentation and compiler-checked
  verification.

I've changed from saying you ``can't'' do certain things to saying
that you ``have to'' do certain things.  It's arguable whether there's
a difference, but now (hopefully) people won't act as though I've said
their favorite language is incomplete (which I never meant to say).
The term ``paternalistic'' (fatherly) is meant to imply ``coercion for
your own good''.  Note for the above definition that type declarations
are mostly redundant, as is demonstrated by the large number of
languages without them.

Given the above definition, here's my complaint against paternalistic
languages: I don't like to type.  Redundancy has its uses, and most
languages could be made better by adding optional redundancy of the
sort in paternalistic languages, but I don't like the _required_
redundancy.  There are too many situations in which it is gratuitous.

The poster who said that Prolog is B&D defined a B&D language as
one that tries to restrict the programmer to a paradigm that is
inadequate for general programming purposes.  Although I agree that
such a group of languages exists, I do not mean to include them in the
class of paternalistic languages.  (Actually, I don't believe that
_any_ single paradigm is adequate for computation, at least the way I
define ``paradigm''.)


					David Gudeman

					    Department of Computer Science
gudeman@arizona.edu			    Gould-Simpson Science Building
{allegra,cmcl2,ihnp4,noao}!arizona!gudeman  The University of Arizona
602-621-2858				    Tucson, AZ 85721