Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!uwm.edu!wuarchive!udel!carroll From: carroll@udel.edu (Mark Carroll ) Newsgroups: comp.lang.misc Subject: Re: The Universal Language Message-ID: <26954@nigel.ee.udel.edu> Date: 9 Aug 90 00:34:15 GMT References: <24043@megaron.cs.arizona.edu> Sender: usenet@ee.udel.edu Organization: University of Delaware Lines: 62 Nntp-Posting-Host: dewey.udel.edu In article <24043@megaron.cs.arizona.edu> gudeman@cs.arizona.edu (David Gudeman) writes: >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. > ... > >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. The problem is that sometimes, the central feature of a language is represented by some inability. The beauty of a language like Haskell is, in part, caused by its inability to mutate an object. The conceptual purity of functional programming is central to the language. If you allow arbitrary mutation of objects by non-functional features, you've just eliminated the central feature of the language. What I believe is a better choice is to provide an environment that allows you to link together modules written in different languages. The idea that I have in mind is to some sort of environment that allows a language to specify the way in which it behaves, and based on that, allow different languages to interact. For example, to combine Smalltalk and Haskell, Haskell would specify that it cannot allow side effects, and when it made a call to a smalltalk program, Smalltalk would duplicate the receiver, send the message to the duplicated, and return a pair containing the new object, and the return value of the message pass. The language descriptions would describe the ways in which a given language behaves, and the environment would develop systems like the above to allow them to be connected. In this way, we could provide some method of allowing the programmer to use the language and notation best suited to each portion of the job at hand, without comprising the purity of the languages and paradigms that he decides to use. > David Gudeman -- |Mark Craig Carroll: |"We the people want it straight for a change; |Soon-to-be Grad Student at| cos we the people are getting tired of your games; |University of Delaware | If you insult us with cheap propaganda; |carroll@dewey.udel.edu | We'll elect a precedent to a state of mind" -Fish