Re: Future features of Euphoria?
- Posted by Robert Craig <72614.1667 at COMPUSERVE.COM> Nov 21, 1996
- 1659 views
Carlos Jose Gonzalia writes: > I'm interested in knowing about the future plans for nexts versions of > Euphoria. I am working full-time on a new version. Eventually I will post more information on exactly what features are planned. I am always interested in getting suggestions. This week I've been investigating support for hardware interrupt handling. By supplying its own clock interrupt handler, Euphoria can now let you select the clock-tick interrupt rate and boost it up much higher than the normal 18.2 ticks per second that is standard with PC's. You can set it to over 1000 ticks/sec on a Pentium before performance starts to degrade a little. This has two benefits: 1. You can measure time with much more precision. Some people have found 18.2 ticks per second (time() resolution of .05 seconds) to be inadequate when measuring things that happen at (say) 20/sec such as displaying frames of graphics on the screen. 2. Euphoria can use the interrupt handler to sample where your program is executing, and generate a time profile. Euphoria already has a statement-count profiler, "with profile", but obviously one Euphoria statement could take hundreds of times longer to execute than another. Now you can get an accurate profile showing what percentage of the total time was spent executing each Euphoria statement. I've measured a few of the demo programs and found one surprise so far. The mset program running on a 150Mz Pentium spends almost 60% of its time in pixel(), plotting a pixel. I had thought that it spent over 95% of its time doing floating-point calculations to determine the color to make each pixel. Actually, I later found on a 486 it *does* spend 94% on f.p. calculations and only 6% in pixel(). The Pentium is obviously much faster on f.p. but not much (if any) faster on video output. When I altered the code to save each horizontal line of pixels into a sequence, and then call pixel() with the whole sequence, it more than doubled the speed on the Pentium, but made only a small increase on the 486. There are many other features on the wish list. There should be a beta release of v1.5 for everyone to play with in a few months. Maybe I can give out an "alpha" release to specific people that want to test it. > After playing a bit with the language I noticed you always end defining > constants > for your significative data, since you only can represent them as numbers. For > example, defining constants MONDAY, ..., SUNDAY for the integers from 1 to 7. I > believe this has to be automated some way, since the pervasiveness of this kin d > of datatype (known as enumerated data) is usual in normal programming. It Yes, this concerned me a few years ago and I was tempted to do something in the area of enumerations, however the overriding philosophy of Euphoria is to keep things simple and avoid introducing new concepts unless they are really necessary or really powerful and orthogonal. By "orthogonal" I mean it can be applied broadly across the language, not just to some special area, and also it must not partially duplicate something that can already be achieved with an existing feature. We used to send out questionnaires to registered users and what struck me was that "simplicity" was often rated the highest, out of several features (speed, flexibility etc.) that people could choose from on a multiple-choice question. The core language has been stable for quite a while. We've mainly been adding library routines etc. If someone suggests a brilliant idea we'll go for it, but for the next release we aren't planning anything. We also hope to release a very simple Windows 95/NT version, but we will keep improving the DOS version. The WATCOM C source code will be largely shared between the two versions. > algebraic types. One way would be to include a complex macro expansion mechani sm > similar to the ones found in some C systems. I believe that even Bjarne Stroustrup (C++) hates the C #define facility. He thinks it is too flexible and undisciplined. Rob Craig Rapid Deployment Software