1. 4.0 : fluff and gaps
- Posted by jiri Dec 17, 2008
- 968 views
Last night, finally, I installed the new version. I scanned the manual and played with a couple of libraries. Generally, I like the beast. It moves this marvellous Rob's creation from the seventies, where it was stuck for such a long time, deep into the nineties. It has a lot of sweet stuff in it. Unfortunately, also a lot of gratuitous fluff. Take, for an example, sequence.e. Functions like fetch and store look ridiculous to me. What can they do that a simple assignment cannot do hundred times faster? On the other hand I expected to see generic sequence shuffle. It is short and fast, and no self-respecting simulation can live without it. But is not there, and people so often get it wrong... We also have stacks and queues. Never mind any retard can successfully tackle one of these - euphoria seems to be designed for them. When it comes to non-obvious, very basic structures like binary, ternary and red-black trees, the libraries are silent. Euphoria has some clever optimizations of special cases, but I am still hoping for 'passing of parameters by reference' that would save a lot of unnecessary copying when dealing with complex structures. It would also sit better with things like built-in swap routine, or even really, really fast native shift and rotate functions. Did I mention the demise of the moronic 31-bit integers? Perhaps in the next version...
jiri
2. Re: 4.0 : fluff and gaps
- Posted by bernie Dec 17, 2008
- 952 views
Last night, finally, I installed the new version. I scanned the manual and played with a couple of libraries. Generally, I like the beast. It moves this marvellous Rob's creation from the seventies, where it was stuck for such a long time, deep into the nineties. It has a lot of sweet stuff in it. Unfortunately, also a lot of gratuitous fluff. Take, for an example, sequence.e. Functions like fetch and store look ridiculous to me. What can they do that a simple assignment cannot do hundred times faster? On the other hand I expected to see generic sequence shuffle. It is short and fast, and no self-respecting simulation can live without it. But is not there, and people so often get it wrong... We also have stacks and queues. Never mind any retard can successfully tackle one of these - euphoria seems to be designed for them. When it comes to non-obvious, very basic structures like binary, ternary and red-black trees, the libraries are silent. Euphoria has some clever optimizations of special cases, but I am still hoping for 'passing of parameters by reference' that would save a lot of unnecessary copying when dealing with complex structures. It would also sit better with things like built-in swap routine, or even really, really fast native shift and rotate functions. Did I mention the demise of the moronic 31-bit integers? Perhaps in the next version...
jiri
First Jiri Welcome ! back
Any user can join the developer's group
A super optimizer like your self, I'am sure would be very welcome.
As you can see that 4.0 is only in Alpha.
I would look forward to you speeding things up.
Things like load time and many of the features certainly could use
more speed. bernie
3. Re: 4.0 : fluff and gaps
- Posted by mattlewis (admin) Dec 17, 2008
- 940 views
- Last edited Dec 18, 2008
It has a lot of sweet stuff in it. Unfortunately, also a lot of gratuitous fluff. Take, for an example, sequence.e. Functions like fetch and store look ridiculous to me. What can they do that a simple assignment cannot do hundred times faster? On the other hand I expected to see generic sequence shuffle. It is short and fast, and no self-respecting simulation can live without it. But is not there, and people so often get it wrong...
Well, the purpose of fetch and store is to be able to use a sequence of subscripts to manipulate a sequence. I haven't been as involved with the library development as with the interpreter itself, but I think the people who were involved added things that they used, or that others suggested. If you've got a good one, post it, and I'm sure it can be added.
We also have stacks and queues. Never mind any retard can successfully tackle one of these - euphoria seems to be designed for them. When it comes to non-obvious, very basic structures like binary, ternary and red-black trees, the libraries are silent. Euphoria has some clever optimizations of special cases, but I am still hoping for 'passing of parameters by reference' that would save a lot of unnecessary copying when dealing with complex structures. It would also sit better with things like built-in swap routine, or even really, really fast native shift and rotate functions. Did I mention the demise of the moronic 31-bit integers? Perhaps in the next version...
I thought that Derek had started work on trees...not sure if I'm remembering wrong, or if he stopped. We do have a hash map.
I had implemented pass by reference in ooeu. It starts to get difficult when you want to reference something inside a sequence. Not necessarily impossible, just not at all easy.
31-bit integers are a tough one, too. We could relatively easily (though it would take a LOT of changes) get rid of them, and manage to get other primitives added as well. But it would probably mean a significant decrease in performance and an increase in memory footprint, too.
Matt
4. Re: 4.0 : fluff and gaps
- Posted by jeremy (admin) Dec 17, 2008
- 978 views
- Last edited Dec 18, 2008
I will add that the developer base is still pretty small. We can only do so much. 4.0 has a ton of new features built into the core. Sure, the libraries have been expanded and many tasks that were previously left to the developer has now been optimized and placed into the new 4.0 library, but to me the real benefit are the many new features added to the core.
As Bernie has said, we would welcome more help, especially on the libraries.
Jeremy
5. Re: 4.0 : fluff and gaps
- Posted by DerekParnell (admin) Dec 17, 2008
- 991 views
- Last edited Dec 18, 2008
Last night, finally, I installed the new version. I scanned the manual and played with a couple of libraries. Generally, I like the beast. It moves this marvellous Rob's creation from the seventies, where it was stuck for such a long time, deep into the nineties.
Now that is funny.
It has a lot of sweet stuff in it. Unfortunately, also a lot of gratuitous fluff. Take, for an example, sequence.e. Functions like fetch and store look ridiculous to me. What can they do that a simple assignment cannot do hundred times faster?
Agreed, but if someone finds it useful, why excluded it? There is little to zero maintenance costs involved.
On the other hand I expected to see generic sequence shuffle. It is short and fast, and no self-respecting simulation can live without it. But is not there, and people so often get it wrong... We also have stacks and queues. Never mind any retard can successfully tackle one of these - euphoria seems to be designed for them. When it comes to non-obvious, very basic structures like binary, ternary and red-black trees, the libraries are silent.
Also agree. However, it has become a timing issue. As these more advanced techniques are library based they can be added by anyone at a later date. The miain thrust for v4 is to improve the internals and introduce all the breaking changes early. Thus v4.0 will not be feature complete in terms of libraries but most if not all internal changes will be available. Subsequent v4.x releases will probably focus on improved libraries and tools.
On the other hand, I have made a start of a red-black tree implementation, as a set of built-in routines.
Euphoria has some clever optimizations of special cases, but I am still hoping for 'passing of parameters by reference' that would save a lot of unnecessary copying when dealing with complex structures. It would also sit better with things like built-in swap routine, or even really, really fast native shift and rotate functions. Did I mention the demise of the moronic 31-bit integers? Perhaps in the next version...
These are some internal changes that have side-effects and huge ramifications for the language. (The native bit twiddiling routines might still make 4.0 though).
Pass-by-reference, if introduced, will have to undergo a lot of consultation and design thought. For example, some uses of PBR might be better achieved by using nested routines that have write access to data on the parent routines's stack.
Native integers larger than 30 bits are a problem because of the internal representation of datatypes at run time. Currently all data is stored at the top level in a 32-bit value. Some of those bits are used as flags to let Euphoria know if its dealing with a sequence, floating point value or a native integer. We need to study and experiment of new data reresentations before we can do much more in this area. In anycase, supporting new data types will probably increase the run-time performance of Euphoria. However, this might be compensated by future hardware improvements etc... But at some time soon, 64-bit CPUs will have to be supported, as will multi-core machines.
FInally Jiri, I would love to have your active input into the new direction for Euphoria.