Hi Y'all!
- Posted by John Cage <drcage2000 at YAHOO.COM> Jan 21, 2001
- 484 views
Hi there people! My name is John Cage. I'm a computer scientist at the University Of Leuven, in Belgium. My name is pronounced Jon Sage in Dutch. But my friends call me Dr. Cage. And so can you. I'm a good friend and relative of Mike Smith, the person you know as Mike The Spike. He's a good kid, but is known for his extravagantly gross use of language. This reminds me, I'm sorry for my bad English, I'm a Belgian, you know. Some might remember me from some of Mike's songs? I was mentioned in Real Mike The Spike and My Home Is Where I Leave My Shades. My home is where I leave my shades: "And Dr. Cage said: Mike The Spike you code in Basic.. -uh ah! Why is that light red? Man you wasted it!" Real Mike The Spike: "And Dr. Cage said: Nothing you idiots! Dr. Cage's dead, he's locked in my basement. haha!" Note that this is not my voice used in these songs, yet Mike's voice talents at work! Let's get down to the reason for my presence here. Mike had being working on a programming language called 'U4IA++' which was to be published by L&H as a Natural Language, which is rather innacurate given the language's syntax. But as he worked in the Speech, Artificial Inteligence & Language, S.AI.L, department, he could market anything g related to language he wanted. However, he quit his job and along with it all contacts with L&H. So, he kept an unfinished software product on his machine with a destiny to rot. However. I recently bought the code base to U4IA++ and am developing it further, to be sold to Sun Microsytems once finished. I contacted Sun along with a dozen of other companies with the proposition of selling a programming language implementation which is safer and less complex than JAVA, yet almost twice as fast as C in some areas. U4IA++, I have discovered, uses a JIT compiler internally. This might be the reason for Sun being interested. U4IA++ can translate programs to ANSI C which can be compiled with 73 different compilers and compiler versions, for dozens of operating systems and hardware platforms. This is a strong feature considering the portability of other RAD programming languages. In any case, I'd like to release the U4IA++ code base as OpenSource. My goal is to replace delicate parts of the Interpreter and Translator, such as the 'sequence' system, with better code. Currently, U4IA++ implements 'sequences' using the following code (taken from U4IA.C); /* Global Defines */ #define ATOM 1 #define INTEGER 2 #define STRING 3 #define SEQUENCE 4 #define FLOAT_4 1 #define FLOAT_8 2 #define INTEGER_4 3 #define INTEGER_8 4 /* Types */ typedef struct { void *data; char type; } object; typedef struct { void value; char size; } atom; typedef struct { object *data; long length; } sequence; As you see, this is a well thought-out approach. Sequences are arrays of object structures, which contain a 'data' member of type 'void*'. This means 'data' can be set to a variable of any type and size. However, to do this memory must be allocated for the member, and this, in my opinion, is too slow. It does provide the benefit of dynamically allocating space for each and every member of a sequence, so that these members can be freed when no longer used. I'd like to see an approach using Linked Lists. This provides faster appending and prepending speeds than the above shown approach. Since U4IA++ is a superset of Euphoria, Euphoria programmers can write programs for U4IA++ without having to learn anything new. And since this is the place Mike pointed out to me that has the only collection of Euphoria programmers, I'd like to release the U4IA++ source to you. However, I would need to have confirmation that someone that also knows C, will actually join me in rewriting the code. Mr. Craig, I read somewhere that Euphoria was based on a thesis of yours at the University of Toronto. I based the thesis for my Ph.D. at the University of Leuven on Interpreted programming languages. "Computer Languages: Theory And Implementation" is the title of my thesis. It compares compilers and interpreters, and aims to describe a computer language which has the simplest functional syntax conceivable, has the advantage of being interpreted, yet runs at speeds comparable to the ones of compiled languages. I discussed an execution model which does not make use of an run-time evaluations on a code part of the program in order to execute it. My solution was what is now known as JIT compiling. ie. translating a program into machine code and jumping to the starting address of the process. I was surprised to see that Mike's U4IA++ code does the same. Yet Mike has an extra step added to the execution process. For portability, he developed a Machine Code-like language called NightShade (c) (Native Interpreter with Garbage-collected Hierarchical Trees for Software Handled Application Direct Execution). This is how it works. You have a U4IA++ program. This program is translated to NightShade. And NightShade is translated to Machine Code. This way, all that needs to be rewritten to support other processors is the NightShade to Machine Code translator. Maybe Mr. Craig can implement something similar? Since my belief is that Euphoria uses recursive labeled opcodes which are weaved into a chain of subsequent jumps as a means to execute interpreted code. This has being used in many Forth systems. If so, a tip might be GCC's addressable labels. This way an opcode which might have being written as: __asm add dest,source; __asm jmp next; can be rewritten as: add: dest+=source; goto **codes++; which is more portable, considering the amount of GCC ports. I'll leave you with this, then. Greetings, people! Dr. Cage __________________________________________________ Do You Yahoo!? Yahoo! Auctions - Buy the things you want at great prices. http://auctions.yahoo.com/