From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id XAA16161 for caml-red; Sun, 3 Dec 2000 23:15:26 +0100 (MET) Received: from concorde.inria.fr (concorde.inria.fr [192.93.2.39]) by pauillac.inria.fr (8.7.6/8.7.3) with ESMTP id OAA16881 for ; Fri, 1 Dec 2000 14:36:03 +0100 (MET) Received: from localhost.localdomain (ppp163.dyn146.pacific.net.au [210.23.146.163]) by concorde.inria.fr (8.11.1/8.10.0) with ESMTP id eB1DZwn23998; Fri, 1 Dec 2000 14:35:59 +0100 (MET) Received: from ozemail.com.au (IDENT:root@localhost [127.0.0.1]) by localhost.localdomain (8.9.3/8.8.7) with ESMTP id AAA12275; Sat, 2 Dec 2000 00:34:25 +1100 Message-ID: <3A27A8E1.65E8E1D9@ozemail.com.au> Date: Sat, 02 Dec 2000 00:34:25 +1100 From: John Max Skaller X-Mailer: Mozilla 4.7 [en] (X11; I; Linux 2.2.12-20 i686) X-Accept-Language: en MIME-Version: 1.0 To: Chris Hecker CC: fabrice.le_fessant@inria.fr, Vitaly Lugovsky , caml-list@inria.fr Subject: Re: Dynamic loading. Again. References: <14885.12770.825697.215308@cremant.inria.fr> <4.3.2.7.2.20001130095928.00c22be0@shell16.ba.best.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: weis@pauillac.inria.fr Chris Hecker wrote: > > >{I think all this stinks, and is a result of using a stupid language > >like C for systems programming .. but that's another story] > > Okay, I'll bite. Why does the current situation stink, and how would you change it? > > Chris I'd start by eliminating global variables; probably, I'd eliminate the stack as well and use continuation objects. Function pointers would denote closures (not just code objects). I'd throw out all primitive data types (except possibly bool). main would go. Compiled interfaces with type-safe linkage. Decent syntax. More formal standard. Ummm.. just about everything you can think of is wrong with C. I'm currently developing an application level language (called Felix) that does some of this. [No global variables, closures, procedural continuations, garbage collection. Functional code still uses the machine stack for performance. Functions cannot have side effects (but they can depend on variables in their environment). The translator control inverts procedural code so that one writes blocking reads, but the generated code is actually event driven. There are no primitive data types (except, sort of, bool). Gak: the generated code is C/C++. For a low level systems programming language, you'd need to target assembler (which is much harder). The syntax is a bit C like, to attract the C/C++ people. -- John (Max) Skaller, mailto:skaller@maxtal.com.au 10/1 Toxteth Rd Glebe NSW 2037 Australia voice: 61-2-9660-0850 checkout Vyper http://Vyper.sourceforge.net download Interscript http://Interscript.sourceforge.net