X-VM-v5-Data: ([nil nil nil nil nil nil nil nil nil] ["2577" "Wed" "1" "July" "1998" "11:41:47" "+0100" "Robin Fairbairns" "Robin.Fairbairns@CL.CAM.AC.UK" nil "49" "Re: Optimizing LaTeX" "^Date:" nil nil "7" nil nil nil nil nil] nil) Received: from listserv.gmd.de (listserv.gmd.de [192.88.97.1]) by mail.Uni-Mainz.DE (8.8.8/8.8.8) with ESMTP id MAA23707; Wed, 1 Jul 1998 12:41:56 +0200 (MET DST) Received: from lsv1.listserv.gmd.de (192.88.97.2) by listserv.gmd.de (LSMTP for OpenVMS v1.1a) with SMTP id <2.17CB2A03@listserv.gmd.de>; Wed, 1 Jul 1998 12:41:55 +0200 Received: from RELAY.URZ.UNI-HEIDELBERG.DE by RELAY.URZ.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 1.8b) with spool id 376237 for LATEX-L@RELAY.URZ.UNI-HEIDELBERG.DE; Wed, 1 Jul 1998 12:41:50 +0200 Received: from heaton.cl.cam.ac.uk (exim@heaton.cl.cam.ac.uk [128.232.32.11]) by relay.urz.uni-heidelberg.de (8.8.8/8.8.8) with SMTP id MAA29927 for ; Wed, 1 Jul 1998 12:41:48 +0200 (MET DST) Received: from dorceus.cl.cam.ac.uk (cl.cam.ac.uk) [128.232.1.34] (rf) by heaton.cl.cam.ac.uk with esmtp (Exim 1.82 #1) id 0yrKKi-0007WS-00; Wed, 1 Jul 1998 11:41:48 +0100 Message-ID: Reply-To: Mailing list for the LaTeX3 project In-Reply-To: Your message of "Wed, 01 Jul 1998 12:21:33 +0200." Date: Wed, 1 Jul 1998 11:41:47 +0100 From: Robin Fairbairns Sender: Mailing list for the LaTeX3 project To: Multiple recipients of list LATEX-L Subject: Re: Optimizing LaTeX Status: R X-Status: X-Keywords: X-UID: 2623 > I wonder why people are so against building several development levels, > because this is the normal way computer programming is structured otherwise: people aren't (in principle) against the idea. the argument is not _against_ multiple levels, but rather whether they can be made to work acceptably in a tex environment. > The lowest level is the assembler which expands to simple machine > instructions. On top of that, one might build a language like C, which does > not impose runtime checks and itself is compiled, not interpreted. Then on > top of that, one might build a more advanced language with runtime checks, > and often C is a language to use for writing that language. Finally this > more advanced language can be used to build user applications. > > Similarly, in TeX the assembler might correspond to the most lowlevel > macros. It would be great if one could add some kind of C compiler on top > of that, which does not add much runtime overhead. The more advanced > language might correspond to LaTeX itself, which is used by the user and by > adding high level structures. this is all very well: it has a nice feel to it. but tex isn't like that. *all* levels of a tex macro package are processed by the same interpreter. that interpreter has several extraordinary properties which cause `crosstalk' between the levels (for example, expandability does just this). and of course, what's appropriate for an interpreter isn't necessarily equally sensible for a compiled language. we simply cannot hope to compile tex without a major effort *outside* tex: an optimising compiler written in tex is surely a nono -- one couldn't possibly afford a pass of something (presumably) even slower than docstrip on documents, and class and package files aren't really the problematic issue as far as optimisation goes. > I gather L3PL is intended to correspond to this lowest assembler level, > but I think it would help if one could add a C-level, that is, if it does > not add much overhead. since you originally talked (some time before the present thread) about modular naming, i've been thinking about it, on and off. at one stage i was intending to present a paper about the issue at eurotex, but have now timed out on a paper at tug'98, even. i've done a fair bit of research since into naming systems (it's a topic that has direct relevance to my research group), and i think i know how i would structure a naming system within tex. what i _don't_ know (after several months of thinking about it) is how to implement such a system. robin