Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!asuvax!noao!arizona!gudeman From: gudeman@cs.arizona.edu (David Gudeman) Newsgroups: comp.lang.misc Subject: Re: The Universal Language Message-ID: <24043@megaron.cs.arizona.edu> Date: 8 Aug 90 20:57:12 GMT Organization: U of Arizona CS Dept, Tucson Lines: 47 In article <26920@nigel.ee.udel.edu> carroll@udel.edu (Mark Carroll ) writes: > >... As I've said before on this newsgroup, a language >is a description of a machine, and the form of the language describes >the form of the machine... >Some models are irreconcilable. For example, try to unify the Smalltalk >model, where object identity is central to the language, with ML, where >immutable data is central. You can't unify them without destroying >the central concept of one of them. It depends on what you consider a successful unification. Let's assume we are unifying the functional and X paradigms. If you are going to insist that the unified language allow no forms of expression that are not allowed in the functional paradigm, then it is obvious that the unification is possible only if X is a subparadigm of the functional one, and the unification will only produce the functional paradigm. But the whole purpose of combining paradigms is to give increased expressiveness, so you should expect that a functional/X langauge can express things that a pure functional language can't (such as mutability of objects). You _can_ combine the functional and object paradigms in the sense that the combined language allows the expression of any functional program and any object-oriented program, and some combinations that are not allowed in either pure language. Formally, for any functional language L1, there exists a true object-oriented language L2 and a language L such that every program in L1 (resp. L2) is a program in L, and that the meaning of the program in L1 (L2) is subsumed by the meaning of the program in L. (If anyone wants to see a discussion of this idea including a formal definition of "subsumed by", ask me for a copy of my draft paper. Warning: this paper contains category theory, denotational semantics and other dangerous materials) I am always disturbed by the idea that for a language to have some good property, it must forbid the programmer from doing X. Why do you want to insist that all programs in the language have the property? What's wrong with saying that any program in the language that does not do X has the property? This greatly increases the usefulness of the language because now it is useful for writing programs where you really want to do X (at some penalty because these programs won't have the property). And for programs where you don't need to do X, the language is even better. -- David Gudeman Department of Computer Science The University of Arizona gudeman@cs.arizona.edu Tucson, AZ 85721 noao!arizona!gudeman