From rideau@nef.ens.fr Tue, 13 Jan 1998 11:56:12 +0100 (CET) Date: Tue, 13 Jan 1998 11:56:12 +0100 (CET) From: Fare Rideau rideau@nef.ens.fr Subject: Sleeping? Language Design. Dear OS listers, as of language design, I'd recommend all of you to learn a lot about other languages than C, Pascal, and look-alikes, before you start designing your own. I particularly recommend the study of such languages as LISP and ML dialects (the main ones are Scheme and CommonLISP for LISP, OCaml and SML for ML), and if you have time, perhaps even study pure functional languages like Haskell and Clean. A completely different approach is logic programming, for which there exist LISP modules, or specialized languages such as the Prolog family, or its more elaborate cousins like Mercury or Goedel. There are lots of other languages of interest, like Forth, Perl, Icon, and many more. Not to talk about parallel programming, be it as explicit constructs (OCaml, some LISPs, etc), or as implicit properties of the language (Clean, some LISPs, SISAL, Occam, etc). I don't even count libraries that help manually simulate parallel programming in low-level languages like C as real automatic parallel programming, though their study might be interesting *as ways to implement the above parallel programming models*. The matter is not to learn languages for the sake of knowing many of them, but for the sake of groking the *concepts* that lie in each of them, and that sometimes just can't be imagined with other languages, particularly, with stubborn inexpressive languages like BASIC, Pascal, C. Why reinvent an approximate plain wood wheel, when there already exists structured steel wheels with pneumatic tires? Why fall again in ever the same traps, when they already have been discovered and marked? Ignoring history is just having to redo it from the beginning. Not that *everything* good has been done already, but that even if you have original ideas, if you can't benefit of modern ideas, you'll have to express them in primitive forms, with lots of difficulties and errors, which will hide to you as well as to most everyone the real original part of your design in a shitload of crap and inessential burdensome details that are well-known features or bugs. >: Jimmy Kerl > o The value of a language is based upon 2 things: > 1. Extensibility of the language. -- Being able to define > user defined types, functions and other identifers. > 2. The ability of the Language to interact with the operating system. > A language must do BOTH of these well to be a good language. I'd fully agree, but these are too informal requirements, and the real problem is precisely to formalize what is to "do well" about these, or else every single turing tar pit with I/O will do. > o All control-structures have a corresponding data-structure and vice versa. You might like to investigate such things as the formal theory of types and of induction; if you do, you'll see that this vague idea of yours (that anyone who's studied programming has remarked) can be well-formalized: every inductive type has an induction principle, that, by the Curry-Howard isomorphism, can be associated to a (higher-order) function, which is exactly your correspondance (once you stop thinking in terms of low-level "control structures", but understand the concepts of higher-order functions and continuations). > Oh 1 more thing: the latest thing i have been considering is trying to write a > compiler such that the IF/then's, arrays, etc are preliminary values in the symbol > table, and not coded directly into the procedures of the compiler. You're just reinventing a stubborn version of LISP. Stop it, and do get the real thing, LISP. Or else, do learn the real theory of languages and grammars, and do use the current language best suited to (efficiently) manipulate them, OCaml (see also the pre-processor-pretty-printer for it, camlp4). Again, this is not gratuitous criticism. Anyone who's passionate about language design should be able to do something original; the problem is that something that's original with respect to a primitive notion of computing is most likely to be a long-known thing; if you want to be original with respect to modern, elaborate, notions of computing, do learn them. We're in 1998, not in 1968. Don't do 1968 computing! All in all, see http://www.eleves.ens.fr:8080/home/rideau/Tunes/Review/Languages.html And if there's only one book to read, let it be the SICP http://www.eleves.ens.fr:8080/home/rideau/Tunes/Review/Languages.html#SICP Feedback welcome. [Note: I cc'ed the Tunes list] == Faré -=- (FR) François-René Rideau -=- (VN) Уng-Vû Bân -=- rideau@ens.fr == Join a project for a free reflective computing system! | 6 rue Augustin Thierry TUNES is a Useful, Not Expedient System. | 75019 PARIS FRANCE http://www.eleves.ens.fr:8080/home/rideau/Tunes/ -=- Reflection&Cybernethics == From tril@bespin.ml.org Wed, 14 Jan 1998 00:01:45 +0000 (GMT) Date: Wed, 14 Jan 1998 00:01:45 +0000 (GMT) From: David E. Manifold tril@bespin.ml.org Subject: Sleeping? Language Design. On Tue, 13 Jan 1998, Fare Rideau wrote: > Again, this is not gratuitous criticism. Anyone who's passionate about > language design should be able to do something original; the problem is > that something that's original with respect to a primitive notion of > computing is most likely to be a long-known thing; if you want to be > original with respect to modern, elaborate, notions of computing, do > learn them. We're in 1998, not in 1968. Don't do 1968 computing! Ahh, but we aren't inventing any new concepts. I see Tunes as simply a unification of many existing concepts. Yes, I do intend on incorporating "notions" from both old and new languages into the Tunes metalanguage. But you have found most of the concepts yourself and put them on your web page! My reasoning for not looking into new languages is that I'm not really designing a language. I'm just describing the way we talk about languages. Anyone can do that, but it requires a little abstract thinking (something I enjoy). The actual language features can be added after I initiate the framework (consisting of the most abstract concepts). At this point, it is my opinion that there is plenty of work I can do on Tunes that doesn't require me to learn any new languages. The features from your web pages should be enough. My main concern is that Tunes proceed immediately. Learning a language would seem to slow me down. If learning a language will ever help Tunes speed up, I would be willing to do it. But in general, I don't believe in duplication of work. You have done fine work on your web pages for Tunes, and I see no reason to duplicate the research. I'm sure you and the list can be a fine advisor for any questions I may have about languages and language features. David E. Manifold http://www.pacificrim.net/~dem/ From L.Pitts@uq.net.au Sun, 18 Jan 1998 18:28:53 +1000 Date: Sun, 18 Jan 1998 18:28:53 +1000 From: Lachlan Pitts L.Pitts@uq.net.au Subject: Tunes lurker question : Does Tunes equal an "Intentional Programming" based Computing System with knobs? Hi Tunesters, Sorry to take up bandwidth if it is a dumb question but I was wondering at the plethora of terms used to define Tunes - even in its most succinct description. (I must admit to a certain befuddlement over some terms - after all I only just scraped through both my _Program Verification_ and _Declarative Languages_ subjects at uni). After re-reading through Microsoft's Research documentation regarding Intentional Programming (IP), I became interested in what looks to me like a huge step forward in software implementation technologies. My question is - the test-bed that is mentioned in the above document (while obviously running on Windoze (IOMoveToBinNow) and C (ugh) at the moment) seems to provide a useful tool for increasing the abstraction level of programming while still maintaining (or even increasing) the flexibility of implementation. Is this not what Tunes' High Level Language (HLL) is about? Could not Tunes per se be initially developed from an existent system such as the one described? Is Tunes being harmed by using a textual language rather than an intentional tree structure such as the one described? Could a system such as the one described be implemented [initially at least] in something existent and not platform specific - ie. A web-based system perhaps, with the eXtensible Markup Language (XML) [which - as the documentation states can be viewed as a tree] as the common source package language, for example? Furthermore - wouldn't a system like that provide a much more flexible test-bed for the areas of debate regarding semantics, operational and optimization strategies? My apologies if the above questions are so stupid as to become flame-bait it wasn't Intentional :) Yours with curiosity, Lachlan Pitts PS: I am more than willing to give a fair amount of time to development of any system based in such technologies if some consensus could be reached on a plan of attack. From tril@bespin.ml.org Sun, 18 Jan 1998 13:29:59 +0000 (GMT) Date: Sun, 18 Jan 1998 13:29:59 +0000 (GMT) From: David E. Manifold tril@bespin.ml.org Subject: Intentional Programming They have many good ideas, but their implementation will never meet the needs of Tunes as long as it is proprietary. David E. Manifold http://www.pacificrim.net/~dem/ Computers are useless. They can only give you answers. -- Pablo Picasso From rideau@nef.ens.fr Sun, 18 Jan 1998 19:58:31 +0100 (CET) Date: Sun, 18 Jan 1998 19:58:31 +0100 (CET) From: Fare Rideau rideau@nef.ens.fr Subject: Tunes lurker question : Does Tunes equal an "Intentional Programming" based Computing System with knobs? Dear Tunesmiths, > After re-reading through > Microsoft's Research documentation regarding Intentional Programming (IP), I > became interested in what looks to me like a huge step forward in software > implementation technologies. > > My question is - the test-bed that is mentioned in the above document (while > obviously running on Windoze (IOMoveToBinNow) and C (ugh) at the moment) > seems to provide a useful tool for increasing the abstraction level of > programming while still maintaining (or even increasing) the flexibility of > implementation. Is this not what Tunes' High Level Language (HLL) is about? > Yes, it is one of the things the Tunes HLL is about; however, this is only one half of the story: being able to say that some things are moving and we want to not tie ourselves to one temporary imperfect instance of it. The other half is being able to say that some things are invariant and we want to preserve them indefinitely, despite any future change in the rest of the environment. The two approaches are dual, just like the Yin and the Yang, just like liberty and security. > Could not Tunes per se be initially developed from an existent system such > as the one described? I'm sorry I haven't read in detail the MSR IP stuff, so I can't answer. > Is Tunes being harmed by using a textual language > rather than an intentional tree structure such as the one described? Tunes specifically is not based on a textual language (though it will be boostrapped this way). Neither will it be based on syntax trees, or any other fixed structure (though there will be several standardized ways to exchange Tunes programs as data structures). > Could a system such as the one described be implemented [initially at least] > in something existent and not platform specific - ie. A web-based system > perhaps, with the eXtensible Markup Language (XML) [which - as the > documentation states can be viewed as a tree] as the common source package > language, for example? Yes, I hope so. > Furthermore - wouldn't a system like that provide a much more flexible > test-bed for the areas of debate regarding semantics, operational and > optimization strategies? > My apologies if the above questions are so stupid > as to become flame-bait it wasn't Intentional :) Not at all, you're welcome. > PS: I am more than willing to give a fair amount of time to development of > any system based in such technologies if some consensus could be reached on > a plan of attack. Thanks. I fear I've proved very bad at making any plans, though. Any taker? I'll add you to the .rhosts of tunes at sweety.via.ecp.fr... The internic still didn't reply to my registering as a contact, even less about my registering a nameserver or a domain. But as my only success through their automatic processing barrier was this week, I'm still hoping of finally having sweety as www.tunes.org before the end of january... == Faré -=- (FR) François-René Rideau -=- (VN) Уng-Vû Bân -=- rideau@ens.fr == Join a project for a free reflective computing system! | 6 rue Augustin Thierry TUNES is a Useful, Not Expedient System. | 75019 PARIS FRANCE http://www.eleves.ens.fr:8080/home/rideau/Tunes/ -=- Reflection&Cybernethics == From fass@pitnet.net Sat, 24 Jan 1998 15:21:25 -0800 Date: Sat, 24 Jan 1998 15:21:25 -0800 From: Jerry Fass fass@pitnet.net Subject: New free Virtual Machine available. Hi Tunesmiths. I hope you all are doing well. Here is interesting news, if you are interested in Virtual Machines. Most/all of you likely know of Squeak, a *Free* version of the Smalltalk language. The new Squeak version, 1.3, has a brand new, powerful, *Free* virtual machine, with Just In Time (JIT) Compiling. It is said to be a beautiful design, with source code. It is by VM researcher Ian Piumarta of INRIA, France. He ports Squeak to many UNIX platforms. Homepage: http://www-sor.inria.fr/~piumarta/ Email: mailto:Ian.Piumarta@inria.fr Projet SOR: Systemes a Objets Repartis INRIA Rocquencourt BP105, 78153 Le Chesnay Cedex, FRANCE Voice: +33 1 39 63 52 87 Since Piumarta is in France, maybe Fare' can visit him sometime and get inspired, or get a better job? Happy new year. Bye. From tril@bespin.ml.org Wed, 28 Jan 1998 00:46:50 +0000 (GMT) Date: Wed, 28 Jan 1998 00:46:50 +0000 (GMT) From: David E. Manifold tril@bespin.ml.org Subject: draft Tunes FAQ I started writing, and it ended up as sort of a FAQ, so I ask for your feedback. What should I add, and what doesn't make sense? (What is blatantly wrong?) Table of Contents: What is Tunes? What makes Tunes different from other languages? What does TUNES stand for? Won't TUNES be slow? Will TUNES be compatible with current systems? Is TUNES easy to use? Is TUNES hard to program in? What effect will TUNES have on the computing world? Will TUNES be free? What is the current status of the TUNES development? What is Tunes? Tunes is a language. It is a computer language, because you use it to communicate meaning to computers. When you use a computer, no matter what you are doing, you are using a language. Programming uses one kind of language. Entering commands uses another. Even when you use a pointing device and graphical interface, you are using a special language. Tunes is a general-purpose language, so you can do any of these activities with it. What makes Tunes different from other languages? Tunes is made of very small parts (fine grained), each of which can be changed (dynamic), separately from all the rest (generic), without outside help (reflection). Each part's meaning can be at any level, from general to specific (higher-order). No other language has successfully incorporated all of these features at the same time. (See Languages Review) What does TUNES stand for? Tunes is a Useful, Not Expedient, System. Tunes is "useful" because it is designed to do exactly what you want and no more. It is "not expedient" because it does what you want, instead of what someone else thinks is expedient. Getting your job done is more important than doing someone else's job in a hurry. Won't TUNES be slow? Don't make judgements about the system's performance, when it doesn't even exist yet. Current "object oriented" systems are said to be slow because "objects" are very different from what a computer is designed to understand. First: If the fat were cut out of current "OO" systems, they probably would run a lot faster. Second: special hardware can be designed for TUNES, so it doesn't matter how slow it runs, as long as it is useful. Will TUNES be compatible with current systems? TUNES will be able to assimilate any existing computer functionality, whether it be a language, interface, API, environment, or protocol. TUNES will display the message: "We are TUNES. Drop your proprietary licensing agreements and prepare to be assimilated. Your logical and computational distinctiveness will be added to our own. Resistance is futile." Is TUNES easy to use? Is TUNES hard to program in? When you're in TUNES, you are not a "user" or a "programmer." They are both the same thing. You can't use TUNES without programming it. Programming TUNES is using TUNES. This means users have power, and programming is easy. What effect will TUNES have on the computing world? The rate of software development will increase, as well as the overall quality of software. People will get more done using computers, be less frustrated, and be more optimistic about technology. Less time will be wasted on "coding" the same things over and over again, so progress can be made. Hardware will become obsolete much slower. Software makers will have to adjust to become more service-oriented, instead of product-oriented. Will TUNES be free? Yes. TUNES will be distributed under the GNU General Public License, although the GPL may have to be changed to reflect the unique nature of TUNES, since TUNES will alter the very meaning of the word "software program." What is the current status of the TUNES development? I am currently working on the draft specifications for the TUNES language. I don't think anyone else is actively doing anything for the project. David E. Manifold http://www.pacificrim.net/~dem/