|
Archives
D Programming
DD.gnu digitalmars.D digitalmars.D.bugs digitalmars.D.dtl digitalmars.D.dwt digitalmars.D.announce digitalmars.D.learn digitalmars.D.debugger C/C++ Programming
c++c++.announce c++.atl c++.beta c++.chat c++.command-line c++.dos c++.dos.16-bits c++.dos.32-bits c++.idde c++.mfc c++.rtl c++.stl c++.stl.hp c++.stl.port c++.stl.sgi c++.stlsoft c++.windows c++.windows.16-bits c++.windows.32-bits c++.wxwindows digitalmars.empire digitalmars.DMDScript |
D - intermediate run-time language - almost OT
Did you guys follow this discussion at slashdot? "New Intermediate Language Proposed" http://developers.slashdot.org/developers/03/12/26/1749253.shtml?tid=126&tid=156 The posting itself is not very interesting and the guy seems a bit confused but on the discussions there are considerations on why a IL is necessary. Mainly on the threads "Didn't we do this once before?" and "What's the point?" As I understand it the general idea is that you need a IL/byte-code to do a "optimized optimazation" (I hope it sounds ridiculous) of the code generated (for multiple platforms at least) and that the optimization must be done at run time. I'm not convinced. At least for now it doesn't work for me (I mean java, never tried C# and, many years ago, pascal p-code was also very slow, I guess JIT compilation is a recent idea/implmentation). So, is that for specialized environments only? How does dmd does it? no IL? I don't mean runtime IL but compile to an IL before the actual system dependent machine code. is that why it's hard to create dmd ports for new systems? before this get too much out of topic let me ask, are compiled languages getting out of style? some of the posters on that discution claim that a compiled language can never be as efficient (speed and size for instance) as a VM with JIT. hummm... most of you probably follow /. anyway. I bet your comments would be very interesting. --------- now we're getting really OT --------- As I posted recently I once created an interpreted language (almost 20 years ago, can't remember the details exactly, actually I didn't even remember I had done it...). The thing would parse the source code into something easy and very fast to parse and then execution was done by (you guess) an interpreter. The interpreter was much "higher level" the the JVM or the "Parrot". (parrot at http://www.perl.com/pub/a/2001/09/18/parrot.html) The concept of register, for instance, didn't exist. But of course I needed a pointer to next instruction to execute. I never intended the interperter to be close to an hardware implementation. (Does it make sence to have registers if the thing is not to have a hardware implementation? of course not!(?)) Execution was just getting an instruction code, parameters and calling a correspondent routine, in the end exactly as any CPU, I guess. So what did I do? Is that fundamentally different from a VM? Are all interpreters just a kind of VM? I've try to find out what are the fundamental differences between an interpreter and a VM through google but so far can't find anything... Ant Dec 27 2003
"Ant" <duitoolkit yahoo.ca> wrote in message news:pan.2003.12.27.17.25.14.107279 yahoo.ca...Did you guys follow this discussion at slashdot? Dec 28 2003
|