<!-- MHonArc v2.4.4 --> <!--X-Subject: [MUD-Dev] Re: Bruce Sterling on Virtual Community goals --> <!--X-From-R13: "Xba O. Znzoreg" <wyflfvapNvk.argpbz.pbz> --> <!--X-Date: Tue, 20 Oct 1998 20:52:03 -0700 --> <!--X-Message-Id: 199810210348.WAA01455@dfw-ix5.ix.netcom.com --> <!--X-Content-Type: text/plain --> <!--X-Reference: 199810200508.XAA18594@ami-cg.GraySage.Edmonton.AB.CA --> <!--X-Head-End--> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"> <html> <head> <title>MUD-Dev message, [MUD-Dev] Re: Bruce Sterling on Virtual Community goals</title> <!-- meta name="robots" content="noindex,nofollow" --> <link rev="made" href="mailto:jlsysinc#ix,netcom.com"> </head> <body background="/backgrounds/paperback.gif" bgcolor="#ffffff" text="#000000" link="#0000FF" alink="#FF0000" vlink="#006000"> <font size="+4" color="#804040"> <strong><em>MUD-Dev<br>mailing list archive</em></strong> </font> <br> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] <br clear=all><hr> <!--X-Body-Begin--> <!--X-User-Header--> <!--X-User-Header-End--> <!--X-TopPNI--> Date: [ <a href="msg00285.html">Previous</a> | <a href="msg00287.html">Next</a> ] Thread: [ <a href="msg00266.html">Previous</a> | <a href="msg00267.html">Next</a> ] Index: [ <A HREF="author.html#00286">Author</A> | <A HREF="#00286">Date</A> | <A HREF="thread.html#00286">Thread</A> ] <!--X-TopPNI-End--> <!--X-MsgBody--> <!--X-Subject-Header-Begin--> <H1>[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</H1> <HR> <!--X-Subject-Header-End--> <!--X-Head-of-Message--> <UL> <LI><em>To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> <LI><em>Subject</em>: [MUD-Dev] Re: Bruce Sterling on Virtual Community goals</LI> <LI><em>From</em>: "Jon A. Lambert" <<A HREF="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</A>></LI> <LI><em>Date</em>: Tue, 20 Oct 1998 23:49:17 -5</LI> <LI><em>Reply-To</em>: <A HREF="mailto:mud-dev#kanga,nu">mud-dev#kanga,nu</A></LI> </UL> <!--X-Head-of-Message-End--> <!--X-Head-Body-Sep-Begin--> <HR> <!--X-Head-Body-Sep-End--> <!--X-Body-of-Message--> <PRE> On 19 Oct 98, Chris Gray wrote: > > >You're right. I think a better way to approach an extensible > >(generic?) internal mud language is to design the VM first. More > >particularly a byte-code assembler. From there, anyone could create > >a compiler for their favorite language du jour. If you prefer > >strong typing over weak typing, the compiler would simply ignore or > >not generate opcodes that deal with type promotions/conversions. > > I did mine in the exact opposite order, and am pleased with the result. > I parsed into data structures, and only recently have I translated > into byte-codes. I view byte-codes as a largely irrelevant internal > implementation detail, and there is no way for the users to enter > them, other than through the programming language. There is a > 'disassemble' builtin that I've used for debugging, and will leave in > just for interest's sake. > Nod. So have I. Referring back to the Crenshaw tutorial, so did he. The only reason I bring it up the idea of starting with a standard and minimal bytecode, is that at some point in compilation or interpretation you will generate: Pseudo-machine : POP R1 POP R2 ADD R1,R2 PUSH R1 Interpreter: a = pop(); b = pop(); x = addops(a,b); push(x); Or something that makes more sense... But note the similarities between generating bytecode and interpretive execution. I assuming one has to make at least a scanning pass through any high level-code to do a syntax check, you might as well build the byte-code. And make the execution a bytecode/pseudocode interpreter. Building an executable, even platform optimized native is a snap once you have a common bytecode. JIT anyone? > The disadvantage of what you suggest is that you are throwing away a > good portion of the possible speed. One reason is that it is the lack > of any need for run-time checks (other than things like divide-by-zero) > that makes my byte-code so much faster than, say, Java byte-code. I > figure the only reason to use byte-code rather than some other interpretation > scheme is because you want maximum speed. So, why then cripple that speed? True very true. It's certainly possible to generate bytecode that fails miserably at runtime. There are tradeoffs. If the compiler has strong-typeing the runtime checks can be disabled, if the compiler has weak-typeing the runtime checks/conversions/promotions must be done. Another parameter for the VM. > Inventing a byte-code and then doing something like an assembler for it, > is doing a whole lot of work that there really isn't a need for. Why > would anyone want to program in byte-code assembler? I don't think anyone would want to. My idea was multiple compiler-flavors, and multiple targets (interpretation/bytecode/native), eventually... Rather than tie it to a language with a fixed feature set, allow it to be extensible. >If the byte-code is tuned to the higher-level language, then the > compiler-generated stuff > will be just about as fast as any hand-coded stuff, even without a > fancy compiler. Remember the result I posted a month or two ago about > my byte-code running only 12 times slower than native code for some > tests? You won't get that if you burden it with run-time byte-code > validity checks, type checking/conversion, parameter checking, etc. Yes, built a very simple minimal language. Let the minimal language we come up with, self-document the bytecodes one needs to execute it. This bytecode would be same in any language implementation. And then extend the operands as needed to support generic feature sets one would desire in different high level languages. Thoughts? -- --/*\ Jon A. Lambert - TychoMUD Internet:jlsysinc#ix,netcom.com /*\-- --/*\ Mud Server Developer's Page <<A HREF="http://www.netcom.com/~jlsysinc">http://www.netcom.com/~jlsysinc</A>> /*\-- --/*\ "Everything that deceives may be said to enchant" - Plato /*\-- </PRE> <!--X-Body-of-Message-End--> <!--X-MsgBody-End--> <!--X-Follow-Ups--> <HR> <!--X-Follow-Ups-End--> <!--X-References--> <UL><LI><STRONG>References</STRONG>: <UL> <LI><STRONG><A NAME="00266" HREF="msg00266.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></STRONG> <UL><LI><EM>From:</EM> Chris Gray <cg#ami-cg,GraySage.Edmonton.AB.CA></LI></UL></LI> </UL></LI></UL> <!--X-References-End--> <!--X-BotPNI--> <UL> <LI>Prev by Date: <STRONG><A HREF="msg00285.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></STRONG> </LI> <LI>Next by Date: <STRONG><A HREF="msg00287.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></STRONG> </LI> <LI>Prev by thread: <STRONG><A HREF="msg00266.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></STRONG> </LI> <LI>Next by thread: <STRONG><A HREF="msg00267.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></STRONG> </LI> <LI>Index(es): <UL> <LI><A HREF="index.html#00286"><STRONG>Date</STRONG></A></LI> <LI><A HREF="thread.html#00286"><STRONG>Thread</STRONG></A></LI> </UL> </LI> </UL> <!--X-BotPNI-End--> <!--X-User-Footer--> <!--X-User-Footer-End--> <ul><li>Thread context: <BLOCKQUOTE><UL> <LI><STRONG>[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</STRONG>, <EM>(continued)</EM> <ul compact> <ul compact> <LI><strong><A NAME="00264" HREF="msg00264.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, J C Lawrence <a href="mailto:claw#kanga,nu">claw#kanga,nu</a>, Tue 20 Oct 1998, 04:45 GMT </LI> </ul> <LI><strong><A NAME="00265" HREF="msg00265.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 20 Oct 1998, 04:50 GMT <UL> <LI><strong><A NAME="00269" HREF="msg00269.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Jon Leonard <a href="mailto:jleonard#divcom,slimy.com">jleonard#divcom,slimy.com</a>, Tue 20 Oct 1998, 06:19 GMT </LI> </UL> </LI> <LI><strong><A NAME="00266" HREF="msg00266.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 20 Oct 1998, 05:08 GMT <UL> <LI><strong><A NAME="00286" HREF="msg00286.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Wed 21 Oct 1998, 03:52 GMT </LI> </UL> </LI> <LI><strong><A NAME="00267" HREF="msg00267.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Tue 20 Oct 1998, 05:17 GMT </LI> <LI><strong><A NAME="00290" HREF="msg00290.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Wed 21 Oct 1998, 05:14 GMT <UL> <LI><strong><A NAME="00332" HREF="msg00332.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Jon A. Lambert <a href="mailto:jlsysinc#ix,netcom.com">jlsysinc#ix,netcom.com</a>, Thu 22 Oct 1998, 01:50 GMT </LI> </UL> </LI> <LI><strong><A NAME="00291" HREF="msg00291.html">[MUD-Dev] Re: Bruce Sterling on Virtual Community goals</A></strong>, Chris Gray <a href="mailto:cg#ami-cg,GraySage.Edmonton.AB.CA">cg#ami-cg,GraySage.Edmonton.AB.CA</a>, Wed 21 Oct 1998, 05:29 GMT </LI> </ul> </LI> </UL></BLOCKQUOTE> </ul> <hr> <center> [ <a href="../">Other Periods</a> | <a href="../../">Other mailing lists</a> | <a href="/search.php3">Search</a> ] </center> <hr> </body> </html>