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