1. Benchmarks Available?
- Posted by Critic May 15, 2009
- 1317 views
Even though interpreted programs run slower than compiled ones, the Euphoria interpreter is extremely fast - much faster than well known interpreters such as Ruby, Python, Perl, and Javascript.
Are there any new benchmarks available? Or is this statement still only based on myths?
2. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 15, 2009
- 1358 views
Even though interpreted programs run slower than compiled ones, the Euphoria interpreter is extremely fast - much faster than well known interpreters such as Ruby, Python, Perl, and Javascript.
Are there any new benchmarks available? Or is this statement still only based on myths?
Depends. Do you call this a myth? http://lists.topica.com/lists/EUforum/read/message.html?mid=1721503790&sort=d&start=64292
3. Re: Questions from a Beginner.
- Posted by irv May 15, 2009
- 1303 views
Even though interpreted programs run slower than compiled ones, the Euphoria interpreter is extremely fast - much faster than well known interpreters such as Ruby, Python, Perl, and Javascript.
Are there any new benchmarks available? Or is this statement still only based on myths?
You wouldn't have to ask that question if you actually used those languages.
4. Re: Questions from a Beginner.
- Posted by Critic May 15, 2009
- 1331 views
You wouldn't have to ask that question if you actually used those languages.
Oh really? Python, Ruby and JS all have data structures that don't require excessive copying. Python and JS have JITs nowadays. There is a relatively new engine called "tracemonkey" for JS with impressive JIT technology. So I'd really like to see the claims about EU's performance to be backed up.
5. Re: Questions from a Beginner.
- Posted by Critic May 15, 2009
- 1386 views
Depends. Do you call this a myth? http://lists.topica.com/lists/EUforum/read/message.html?mid=1721503790&sort=d&start=64292
Nice. But that's only one benchmark that "coincidently" does not seem to catch EU's copying problems. Try - hm, perhaps - the meteor-contest. (But most benchmarks of the language shootout are crap anyway.)
6. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 15, 2009
- 1336 views
Depends. Do you call this a myth? http://lists.topica.com/lists/EUforum/read/message.html?mid=1721503790&sort=d&start=64292
Nice. But that's only one benchmark that "coincidently" does not seem to catch EU's copying problems. Try - hm, perhaps - the meteor-contest. (But most benchmarks of the language shootout are crap anyway.)
As I recall, your claims to EU's copying problems were shown to be false.
http://openeuphoria.org/EUforum/index.cgi?module=forum&action=message&id=104528#104528
I am too busy to do benchmarking, which is a difficult black art. Hopefully, Jeremy will be able to step in again.
Or, perhaps, you could attempt to perform the benchmark yourself? And then show the numbers proving that Eu 4.0 is slower than Python, Perl, Lua, and Javascript?
7. Re: Questions from a Beginner.
- Posted by unkmar May 15, 2009
- 1336 views
I have to agree with Irv. I have generally abandoned Euphoria. My decision was not based on Euphoria's speed. In fact, That is what makes the decision difficult for me. I have used perl and python in the past. Many things that I have programmed simply don't have the kick that I had come to expect. When I tried out python, It was simply slow. I didn't time compare it. I wrote code, Executed, and said. What the ......? I had grown accustom to Euphoria's speed. I have written things in perl that just don't cut it. I intentionally wrote one program in Euphoria for convenience and then rewrote it in Perl for commonality. Easier for others to run and read. Simply because more people know perl. Not because perl is easier to read. The Euphoria version ran much faster. If I had cared, I probably could have written the same program in python. And python wouldn't have held up to perl's speed. Let alone approach that of euphorias.
With all of that having been said. I write console apps. I don't do much graphics. My apps tend to either crunch numbers or parse data. They sometimes do both. So, My experience with euphoria has shown it to always be faster at crunching numbers, ymmv. And usually faster at parsing data. Perl's regex makes parsing data much easier than Euphoria and likely faster when regex type things are nearly required. My general take on parsing data has been, Change this into that. Remove this, or that. Find these specific items in the text. But it has not been, Find things that match this pattern. Such as, Finding phone numbers.
8. Re: Questions from a Beginner.
- Posted by Critic May 15, 2009
- 1305 views
As I recall, your claims to EU's copying problems were shown to be false.
Ask Matt Lewis then. The problem was that compiler-introduced temporaries did increment the reference count making copy-on-write more expensive. Matt confirmed this.
Or, perhaps, you could attempt to perform the benchmark yourself? And then show the numbers proving that Eu 4.0 is slower than Python, Perl, Lua, and Javascript?
No. Even programming a benchmark is too painful to code in EU for me. Anyway, you miss the point. I do not claim Python is 30 times faster than EU. However, the website claims that EU is 30 times faster than Python and Perl. So it is one of you who should prove this.
9. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 15, 2009
- 1325 views
As I recall, your claims to EU's copying problems were shown to be false.
Ask Matt Lewis then. The problem was that compiler-introduced temporaries did increment the reference count making copy-on-write more expensive. Matt confirmed this.
From the same thread, http://openeuphoria.org/EUforum/index.cgi?module=forum&action=message&id=104536#104536
And earlier, http://openeuphoria.org/EUforum/index.cgi?module=forum&action=message&id=104531#104531
The first thing to note is that you have reminded me of that optimisation technique. Your version of the routine takes half the time than my original one. Even though you seem to be saying that it should be slower, it is fact much faster.
In other words, you claim your method is slower, and Matt is trying to explain why it is really faster.
Anyhow, the specific issue Matt is talking abuot seems to have been fixed in svn revision 1960:
- Fixed ASSIGN_SUBS so that assignment using a temp does not result in an extra reference count.
Or, perhaps, you could attempt to perform the benchmark yourself? And then show the numbers proving that Eu 4.0 is slower than Python, Perl, Lua, and Javascript?
No. Even programming a benchmark is too painful to code in EU for me. Anyway, you miss the point. I do not claim Python is 30 times faster than EU. However, the website claims that EU is 30 times faster than Python and Perl. So it is one of you who should prove this.
See my previous post. I, or rather Jeremy, already did.
(On a side note, the documentation should be updated to be more accurate, if that specific line has not already been fixed.)
10. Re: Questions from a Beginner.
- Posted by irv May 15, 2009
- 1305 views
You wouldn't have to ask that question if you actually used those languages.
Oh really? Python, Ruby and JS all have data structures that don't require excessive copying. Python and JS have JITs nowadays. There is a relatively new engine called "tracemonkey" for JS with impressive JIT technology. So I'd really like to see the claims about EU's performance to be backed up.
I'm sure you can create some example where Euphoria's excessive copying causes it to run slower than the exact same operation in some other language. So do so, and post it here.
Maybe that will prompt some improvements in Euphoria.
11. Re: Questions from a Beginner.
- Posted by irv May 15, 2009
- 1332 views
No. Even programming a benchmark is too painful to code in EU for me.
So, give us some links to things you have written in your favorite, pain-free language. Maybe we will see the light.
12. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 15, 2009
- 1345 views
Depends. Do you call this a myth? http://lists.topica.com/lists/EUforum/read/message.html?mid=1721503790&sort=d&start=64292
Nice. But that's only one benchmark that "coincidently" does not seem to catch EU's copying problems. Try - hm, perhaps - the meteor-contest. (But most benchmarks of the language shootout are crap anyway.)
The meteor contest looks interesting, but it's also pretty challenging. Definitely something to look into. I tried the binary-trees benchmark (described as allocate and deallocate lots of trees). I'm not sure that there's a lot of copying that would go on, but certainly lots of reference counting should be happening.
I ran against the stuff I have at hand (perl and open watcom). I've used the perl rankings from the rankings page to estimate where euphoria and open watcom might have fallen among other popular programs. Note that the actual Scales (from the shootout page) are in bold, and my estimates are in italics.
For the OpenWatcom test, I used the C GNU gcc submission, which was #5 on the list. Here was the command line I used to build it:
wcl386 /w0 /zq /j /zp4 /fpc /5r /ol /zp4 binary-trees.cThe flags are those used to build the back end of euphoria.
Language | Version | Time (s) | Scale |
---|---|---|---|
Java | 6 | 1 | |
C | OpenWatcom 1.8 | 7 | 4.5 |
euphoria | euc r2079 | 11 | 6.51 |
D | 8 | ||
euphoria | 3.1.1 | 18 | 10.65 |
python | psycho | 14 | |
euphoria | eui r2079 | 31 | 18 |
ruby | 1.9 | 19 | |
JavaScript | SpiderMonkey | 19 | |
python | IronPython | 25 | |
python | 32 | ||
ruby | 60 | ||
perl | 5.8.8 | 140 | 83 |
The versions for some of the languages weren't mentioned, and, of course, my version of perl could be different. I'm pretty sure they ran their tests on linux. I'm on XP. The most interesting thing about this, however, is probably the fact that 3.1.1 beat the current version of 4.0.
Looking at the memory usage, it's pretty obvious that there's a memory leak in the current code. 3.1.1 never seems to go over about 14MB, while r2709 eats up about 1.8GB for me. The translated version never goes over 20MB, so it's definitely an interpreter issue. The 3.1.1 and r2079 translated memory usages look pretty favorable compared to others. I'm sure that cleaning up that leak will speed up the performance of 4.0.
I think euphoria holds up pretty well, especially taking the translator into account.
Matt
13. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 15, 2009
- 1327 views
As I recall, your claims to EU's copying problems were shown to be false.
Ask Matt Lewis then. The problem was that compiler-introduced temporaries did increment the reference count making copy-on-write more expensive. Matt confirmed this.
Implementing automatic cleanup via reference counting has exposed some issues that weren't obvious about how euphoria dealt with reference counting. In particular, references were sometimes held by temps until the end of the routine, which could cause COWs that weren't strictly necessary.
I've found at least one place where something wasn't getting de-referenced properly. And now (if you read my last post) we can see that we've (ok, it was probably me) introduced another leak where our reference counts are unbalanced.
Of course, the most important thing to remember is to not write FORTRAN in euphoria.
Matt
14. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 15, 2009
- 1296 views
Or, perhaps, you could attempt to perform the benchmark yourself? And then show the numbers proving that Eu 4.0 is slower than Python, Perl, Lua, and Javascript?
No. Even programming a benchmark is too painful to code in EU for me. Anyway, you miss the point. I do not claim Python is 30 times faster than EU. However, the website claims that EU is 30 times faster than Python and Perl. So it is one of you who should prove this.
Glad to see you are still around.
The thing is that no matter what evidence we published about the relative timings for Euphoria vs other langauges, you would not believe them.
If you truly wanted to know if our claims for Euphoria' speed are valid, you must either do the tests yourself or get someone you trust do them.
We have shown timings - it is now up to someone else to confirm or refute them.
15. Re: Questions from a Beginner.
- Posted by neophyte May 15, 2009
- 1294 views
Critic,
Be carefull what You wish for. Dont try to prove the negative of an assertion ( keep Sadam Husein in mind..he could not prove the negative )
16. Re: Questions from a Beginner.
- Posted by Critic May 16, 2009
- 1340 views
In other words, you claim your method is slower, and Matt is trying to explain why it is really faster.
I was wrong because EU's implementation is/was worse than I thought. I was right from a theoretical standpoint. But this seems too complicated for you to comprehend.
17. Re: Questions from a Beginner.
- Posted by Critic May 16, 2009
- 1291 views
The thing is that no matter what evidence we published about the relative timings for Euphoria vs other langauges, you would not believe them.
Yeah, probably not. Because even EU's devs are incompetent. The amount of incompentence in this forum is astonishing and very entertaining which is the reason I am still around.
If you truly wanted to know if our claims for Euphoria' speed are valid, you must either do the tests yourself or get someone you trust do them.
Or I think about it from a theoretical standpoint. Which I have done. You seem to be unable to do this. Pity.
18. Re: Questions from a Beginner.
- Posted by ChrisB (moderator) May 16, 2009
- 1292 views
For crying out loud, just ban him.
19. Re: Questions from a Beginner.
- Posted by rowrasaur May 16, 2009
- 1309 views
Alright, can of worms aside, thank you to those who responded.
I'm making good progress on reading Think Euphoria now, with much credit to a forum user named Crusty who brought up a simple, yet frusterating problem.
Having something like "? getc(0)" at the end of code (to prevent the prompt window from quickly closing when the code is done running) would be an excellent tidbit of information to put in a preface or 'how to use this book' section that emphasizes getting the user comfortable in the environment by getting them writing working code as quickly as possible, and emulating the examples they are reading about.
This is documentation that I would be happy to write if whoever is editing Think Euphoria deems it worthwhile.
20. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 16, 2009
- 1285 views
The thing is that no matter what evidence we published about the relative timings for Euphoria vs other langauges, you would not believe them.
Yeah, probably not. Because even EU's devs are incompetent. The amount of incompentence in this forum is astonishing and very entertaining which is the reason I am still around.
If you truly wanted to know if our claims for Euphoria' speed are valid, you must either do the tests yourself or get someone you trust do them.
Or I think about it from a theoretical standpoint. Which I have done. You seem to be unable to do this. Pity.
ROTFLMAO
You are a funny boy. Both humorous and weird.
21. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 16, 2009
- 1294 views
The thing is that no matter what evidence we published about the relative timings for Euphoria vs other langauges, you would not believe them.
Yeah, probably not. Because even EU's devs are incompetent. The amount of incompentence in this forum is astonishing and very entertaining which is the reason I am still around.
Awesome. We're thrilled to keep you entertained.
If you truly wanted to know if our claims for Euphoria' speed are valid, you must either do the tests yourself or get someone you trust do them.
Or I think about it from a theoretical standpoint. Which I have done. You seem to be unable to do this. Pity.
What you seem to be unable to do is to understand that there are trade offs to any approach. For instance, picking a forum on which to be the resident net kook won't win you many friends, but you may feel a false sense of superiority, or make up for times when others slighted you.
While we are pretty happy with the trade offs that euphoria has made, as far as I know, none of us have gone the kook route that you have chosen.
Still, even a broken clock is correct twice a day, and your request for benchmarks did direct my attention to a memory leak. So thanks for that, anyways. See, there's another trade off. We interact with you, and occasionally find something interesting, and you insult us.
Matt
22. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 16, 2009
- 1263 views
See, there's another trade off. We interact with you, and occasionally find something interesting, and you insult us.
I hadn't thought of that, but you're right. Having Critic hang around as the resident drongo might have some advantages in spite of the difficulty he causes.
23. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 16, 2009
- 1289 views
In other words, you claim your method is slower, and Matt is trying to explain why it is really faster.
I was wrong because EU's implementation is/was worse than I thought. I was right from a theoretical standpoint. But this seems too complicated for you to comprehend.
This is like saying, "The sky is blue, not green, but I was still right because the sky had a color."
You can not claim either your original issue (which Derek showed was wrong) or the issue that Matt discovered (since this was fixed). So you are correct, it seems I can not comprehend what issue you are talking about when you say that Eu's sequences are too slow.
24. Re: Questions from a Beginner.
- Posted by SDPringle May 16, 2009
- 1346 views
[quote mattlewis]
I ran against the stuff I have at hand (perl and open watcom). I've used the perl rankings from the rankings page to estimate where euphoria and open watcom might have fallen among other popular programs. Note that the actual Scales (from the shootout page) are in bold, and my estimates are in italics.
The flags are those used to build the back end of euphoria.
Language | Version | Time (s) | Scale |
---|---|---|---|
Java | 6 | 1 | |
C | OpenWatcom 1.8 | 7 | 4.5 |
euphoria | euc r2079 | 11 | 6.51 |
D | 8 | ||
euphoria | 3.1.1 | 18 | 10.65 |
python | psycho | 14 | |
euphoria | eui r2079 | 31 | 18 |
ruby | 1.9 | 19 | |
JavaScript | SpiderMonkey | 19 | |
python | IronPython | 25 | |
python | 32 | ||
ruby | 60 | ||
perl | 5.8.8 | 140 | 83 |
Matt
I don't know what the scale column means in this table. Java gets '1' and C gets '4.5'. Is Java faster than C here? The seconds are left blank for Java.
Shawn Pringle
25. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 16, 2009
- 1321 views
[quote SDPringle]
I ran against the stuff I have at hand (perl and open watcom). I've used the perl rankings from the rankings page to estimate where euphoria and open watcom might have fallen among other popular programs. Note that the actual Scales (from the shootout page) are in bold, and my estimates are in italics.
The flags are those used to build the back end of euphoria.
Language | Version | Time (s) | Scale |
---|---|---|---|
Java | 6 | 1 | |
C | OpenWatcom 1.8 | 7 | 4.5 |
euphoria | euc r2079 | 11 | 6.51 |
D | 8 | ||
euphoria | 3.1.1 | 18 | 10.65 |
python | psycho | 14 | |
euphoria | eui r2079 | 31 | 18 |
ruby | 1.9 | 19 | |
JavaScript | SpiderMonkey | 19 | |
python | IronPython | 25 | |
python | 32 | ||
ruby | 60 | ||
perl | 5.8.8 | 140 | 83 |
Matt
I don't know what the scale column means in this table. Java gets '1' and C gets '4.5'. Is Java faster than C here? The seconds are left blank for Java.
Yes, Java was the fastest (according to the maintainers of the shootout). I only listed times for tests that I ran.
Matt
26. Re: Questions from a Beginner.
- Posted by Critic May 16, 2009
- 1310 views
You can not claim either your original issue (which Derek showed was wrong) or the issue that Matt discovered (since this was fixed). So you are correct, it seems I can not comprehend what issue you are talking about when you say that Eu's sequences are too slow.
The stack "rot" operation still is O(n) after an "optimization" that appears in the manual where it should be O(1). Common subexpression elimination in EU still sucks. So I am still right and you're still clueless.
27. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 16, 2009
- 1332 views
The stack "rot" operation still is O(n) after an "optimization" that appears in the manual where it should be O(1).
This is false.
So I am still right and you're still clueless.
This sentence speaks for itself.
Common subexpression elimination in EU still sucks.
More work may be needed in this area.
28. Re: Questions from a Beginner.
- Posted by Critic May 16, 2009
- 1306 views
The stack "rot" operation still is O(n) after an "optimization" that appears in the manual where it should be O(1).
This is false.
Either you lie or you don't know better. In any case, further conversion with you seems pointless.
29. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 16, 2009
- 1285 views
The stack "rot" operation still is O(n) after an "optimization" that appears in the manual where it should be O(1).
This is false.
Either you lie or you don't know better. In any case, further conversion with you seems pointless.
I am inclined to agree, when a conversation gets to the point where people are simply pointing fingers and saying "no you're lying", that conversation should probably end.
Since the relevant parts have been snipped from this part of the subthread, I'll provide a short summary for future readers of this post. Critic attempted to demonstrate a flaw in Euphoria by modifying a stack implementation written in Euphoria (which was written in response to another claim made by Critic). When told that his example was actually faster (thus doing the very opposite of demonstrating the flaw), he jumped to another unrelated issue that was discovered and reported on the same thread. This unrelated issue was since fixed. So, the first time the O(n) claim was made, it was shown to be false. The second time the claim was made, it was valid at the time, but no longer is.
I also note that this is not the first time Critic has accused a developer of lying.
30. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 16, 2009
- 1316 views
Since the relevant parts have been snipped from this part of the subthread, I'll provide a short summary for future readers of this post. Critic attempted to demonstrate a flaw in Euphoria by modifying a stack implementation written in Euphoria (which was written in response to another claim made by Critic). When told that his example was actually faster (thus doing the very opposite of demonstrating the flaw), he jumped to another unrelated issue that was discovered and reported on the same thread. This unrelated issue was since fixed. So, the first time the O(n) claim was made, it was shown to be false. The second time the claim was made, it was valid at the time, but no longer is.
I also note that this is not the first time Critic has accused a developer of lying.
To be fair, there are instances where euphoria does things in O(n) where other languages might do them in O(1). In particular, where we might have to ref or deref a sequence to assign to one of its elements. However, comparing big-O notation isn't always the complete story. The complete story involves the trade offs to which I alluded.
For instance, one trade off is that all euphoria variables are passed by value, though copies are only made when data is written (copy on write) to something with more than one reference. The trade off here is pass by reference semantics, which are often more efficient, but are more complicated to code and maintain.
Just because some algorithm has a bigger big-O does not necessarily make it a worse choice. For most common cases, it's probably very difficult to tell the difference between two very different algorithms. The speed of most of a program often doesn't matter. If the slower algorithm is easier to code and maintain, it might very well make a better general purpose solution.
There are work arounds for this in euphoria (Derek showed one in a previous thread). Most code won't need it, in part because euphoria can be very fast in other ways, at least compared to other interpreted languages. Intellectual masturbation regarding computing theory is all well and good, but the sort that Critic has been talking about is really just another example of premature optimization. And the social skills of a thermonuclear bomb, as Raymond Chen might say.
Matt
31. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 16, 2009
- 1315 views
Most code won't need it, in part because euphoria can be very fast in other ways, at least compared to other interpreted languages. Intellectual masturbation regarding computing theory is all well and good, but the sort that Critic has been talking about is really just another example of premature optimization. And the social skills of a thermonuclear bomb, as Raymond Chen might say.
And "critic" can not run benchmarks himself because he fears that they will prove him wrong. It is much easier to argue from "theory" than practice.
When the steam train was first invented, many experts of the day argued that the human body could not withstand such huge speeds. The arguments relied on untested "theories" and they convinced a lot of people, until of course people actually travelled at these outrageous speeds (25+ MPH) and lived.
We believe that Euphoria is one of the fastest interpreted languages going round and we know that there are still further optimisiations that can be done to make it run even faster. Once v4.0 is released, a lot of the focus for 4.1 will be under-the-hood improvements rather than changes to the language itself.
32. Re: Questions from a Beginner.
- Posted by Critic May 17, 2009
- 1265 views
So, the first time the O(n) claim was made, it was shown to be false.
Repeating it does not make it true. Perhaps it'd help if you knew what you're talking about.
The second time the claim was made, it was valid at the time, but no longer is.
Ironically with the patch in place, my claim is even more true. But you're clearly clueless.
I also note that this is not the first time Critic has accused a developer of lying.
Ok, you don't lie, you're really don't know better.
33. Re: Questions from a Beginner.
- Posted by Critic May 17, 2009
- 1254 views
And "critic" can not run benchmarks himself because he fears that they will prove him wrong. It is much easier to argue from "theory" than practice.
Yeah, I know you have no idea about computing theory. You don't even know what a cycle is.
We believe that Euphoria is one of the fastest interpreted languages going round ...
Yeah, because EU is a religion for you. Unfortunately speed is objective and measurable.
34. Re: Questions from a Beginner.
- Posted by euphoric (admin) May 17, 2009
- 1234 views
Critic, why so much anger? Why don't you use your energy to help improve Euphoria instead of be so mean to people? Has somebody mistreated you from this group? You just seem so angry.
35. Re: Questions from a Beginner.
- Posted by Critic May 17, 2009
- 1263 views
To be fair, there are instances where euphoria does things in O(n) where other languages might do them in O(1).
Yes. Exactly.
In particular, where we might have to ref or deref a sequence to assign to one of its elements. However, comparing big-O notation isn't always the complete story. The complete story involves the trade offs to which I alluded.
An algorithm which requires O(n) instead of O(1) is crap and will break you neck soon enough. Always. Why do you think Quicksort has been invented? Because sorting in O(n^2) sucks big time, no matter how many micro-optimizations you implement. This has nothing to do with premature optimization.
There are work arounds for this in euphoria (Derek showed one in a previous thread). Most code won't need it, in part because euphoria can be very fast in other ways, at least compared to other interpreted languages.
"Very fast in other ways" does not help, especially since it is only "very fast" for micro benchmarks. Biggest bang comes from algorithmic optimizations. This is a well known fact.
Intellectual masturbation regarding computing theory is all well and good, but the sort that Critic has been talking about is really just another example of premature optimization.
O(n) vs. O(1) is not an example of premature optimization. That's ridiculous. Again you try to argue about things you don't know about or you consiously misrepresent the issue to defend EU.
And the social skills of a thermonuclear bomb, as Raymond Chen might say.
So what? Your argumentation skills consist of spreading FUD, so maybe you should mind you own business.
36. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 17, 2009
- 1278 views
Hello again, and thanks for being so amusing. I'm starting to enjoy this game you are playing.
And "critic" can not run benchmarks himself because he fears that they will prove him wrong. It is much easier to argue from "theory" than practice.
Yeah, I know you have no idea about computing theory. You don't even know what a cycle is.
By what mechanism have you determined that I "have no idea about computing theory"? Was it the tea-leaves or the goat entrails this time?
And as for "cycle", of course I know what that is. I ride one myself, though in this country we call it a bicycle because it has 2 (two) wheels.
We believe that Euphoria is one of the fastest interpreted languages going round ...
Yeah, because EU is a religion for you.
I reject that assertion with the utmost vigor! The European Union is not my religion at all. You have definitely got that one wrong.
Unfortunately speed is objective and measurable.
Really??? Are you sure??? Isn't speed relative to the observer?
But if you are correct, then why don't you measure Euphoria's speed yourself? (Sorry, that wasn't fair - a rhetorical question). You, personally, can't measure it can you? You are of course, totally incapable of performing that sort of task; one that might challenge your prejudices. I understand, little one, but don't be so glum; when you grow up and begin to face real challenges in your life, I'm sure that these type of discussions you have had here and in the other forums, will help you to realize what is acceptable in adult company.
37. Re: Questions from a Beginner.
- Posted by DerekParnell (admin) May 17, 2009
- 1275 views
To be fair, there are instances where euphoria does things in O(n) where other languages might do them in O(1).
Yes. Exactly.
So you agree that Euphoria currently does some things slower than the perfect possible implementation. Wow! Its a good thing that no other language's implementation is the same - which which means that every C implementation runs at the same speed.
In particular, where we might have to ref or deref a sequence to assign to one of its elements. However, comparing big-O notation isn't always the complete story. The complete story involves the trade offs to which I alluded.
An algorithm which requires O(n) instead of O(1) is crap and will break you neck soon enough. Always. Why do you think Quicksort has been invented? Because sorting in O(n^2) sucks big time, no matter how many micro-optimizations you implement. This has nothing to do with premature optimization.
Not only FUD but an out of context reply - well done kid. An extra elephant stamp for you this week.
By the way, what is the O(1) algorithm for calculating Prime Numbers? Or the O(1) sort?
Ok, here's an easier one... given two sets of numbers - A and B, what is the difference between each number in set A and each number if set B?
eg.
A = {1,2,13} B = {5,9,18} Difference set is {-4, -8, -17, -3, -7, -16, 8, 4, -5}
Is there an O(1) algorithm? Is there even an O(n) algorithm?
There are work arounds for this in euphoria (Derek showed one in a previous thread). Most code won't need it, in part because euphoria can be very fast in other ways, at least compared to other interpreted languages.
"Very fast in other ways" does not help, especially since it is only "very fast" for micro benchmarks.
You do have proof for the "only 'very fast' for micro benchmark" comment don't you?
Biggest bang comes from algorithmic optimizations. This is a well known fact.
Yep. But that is not what anyone here is talking about - another diversionary tactic to sow Fear, Uncertainty and Doubt.
Intellectual masturbation regarding computing theory is all well and good, but the sort that Critic has been talking about is really just another example of premature optimization.
O(n) vs. O(1) is not an example of premature optimization. That's ridiculous. Again you try to argue about things you don't know about or you consiously misrepresent the issue to defend EU.
You are really struggling to understand what's being discussed aren't you.
You have given one single example of where Euphoria is slower than it needs to be, and we have shown you that this is only due to sub-optimal optimisation by the interpreter, and that there is a workaround anyway. And by "premature optimisation", Matt is saying that spending a lot of resources on making this situation run faster will not necessarily make the application run any faster. Your comment re "algorithmic optimizations" is a better target for effort than sequence element access algorithms.
By the way, future editions of Euphoria will be improving in this area anyway.
And the social skills of a thermonuclear bomb, as Raymond Chen might say.
So what? Your argumentation skills consist of spreading FUD, so maybe you should mind you own business.
This is Matt's business, boy. You are the real FUD spreader.
Don't be discouraged though. Keep trying to keep up. Start by helping us rather than shovelling manure.
38. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 17, 2009
- 1265 views
So, the first time the O(n) claim was made, it was shown to be false.
Repeating it does not make it true. Perhaps it'd help if you knew what you're talking about.
The second time the claim was made, it was valid at the time, but no longer is.
Ironically with the patch in place, my claim is even more true. But you're clearly clueless.
I also note that this is not the first time Critic has accused a developer of lying.
Ok, you don't lie, you're really don't know better.
Only two words are necessary to respond to this. Prove it!
39. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 17, 2009
- 1381 views
In particular, where we might have to ref or deref a sequence to assign to one of its elements. However, comparing big-O notation isn't always the complete story. The complete story involves the trade offs to which I alluded.
An algorithm which requires O(n) instead of O(1) is crap and will break you neck soon enough. Always. Why do you think Quicksort has been invented? Because sorting in O(n^2) sucks big time, no matter how many micro-optimizations you implement. This has nothing to do with premature optimization.
But you've still left out a key fact, which is that the big-O notation doesn't tell us everything about an algorithm. You still need to consider the size of n and the coefficient. This is what actually profiling your code does for you.
Of course, you're correct that in general quicksort will beat, say, bubble sort. But in the context of an application, that's merely a micro-optimization. And maybe not the most important one. If you only ever sort 3 or 4 items at a time, you're probably not losing a whole lot using a bubble sort. Please, tell me why I'm wrong and/or lying. I can't wait.
There are work arounds for this in euphoria (Derek showed one in a previous thread). Most code won't need it, in part because euphoria can be very fast in other ways, at least compared to other interpreted languages.
"Very fast in other ways" does not help, especially since it is only "very fast" for micro benchmarks. Biggest bang comes from algorithmic optimizations. This is a well known fact.
Yes, it is. But in order to get those algorithmic optimizations, you first have to know which part of your algorithm is causing the slow down. This is the very crux of premature optimization.
Intellectual masturbation regarding computing theory is all well and good, but the sort that Critic has been talking about is really just another example of premature optimization.
O(n) vs. O(1) is not an example of premature optimization. That's ridiculous. Again you try to argue about things you don't know about or you consiously misrepresent the issue to defend EU.
In fact, that's the very definition of premature optimization. You're arguing that you should never ever do anything O(n) when O(1) is available somewhere, somehow. If the O(n) algorithm isn't hurting your performance, but is easier to use and maintain, why would you change it?
In some cases, it might even be faster. Consider a case where your O(1) algorithm has a coefficient of 25, and the O(n) of 2. In this case, the O(n) algorithm is faster until n = 13. Your misuse of big-O notation has just slowed you down if your n is always smaller than 13.
And the social skills of a thermonuclear bomb, as Raymond Chen might say.
So what? Your argumentation skills consist of spreading FUD, so maybe you should mind you own business.
Oh, please. You come here, call me a liar, call me incompetent, and I'm the one who should mind his own business? I've agreed with you that in certain places you've had good points. In some cases, I've mentioned that your very points were things that we wanted to look at. In other places, I've explained why some of those things aren't likely to change.
If anyone is spreading FUD around here, it's you. Yes, I've defended euphoria in some cases. But I certainly don't have a hidden agenda, which you seem to. At least, that's what your behavior suggests to me. Here's how wikipedia defines FUD:
Fear, Uncertainty, and Doubt (FUD) is a tactic of rhetoric and fallacy used in sales, marketing, public relations,[1][2] politics and propaganda. FUD is generally a strategic attempt to influence public perception by disseminating negative information designed to undermine the credibility of their beliefs. An individual firm, for example, might use FUD to invite unfavorable opinions and speculation about a competitor's product; to increase the general estimation of switching costs among current customers; or to maintain leverage over a current business partner who could potentially become a rival. FUD techniques may be crude and simple. Alternatively they may be very subtle, employing an indirect approach.
The term originated to describe disinformation tactics in the computer hardware industry and has since been used more broadly.[3] FUD is a manifestation of the appeal to fear.
Wow, if you were pushing some other programming language, that definition would be a great description of how you've acted on this forum. Since you brought up the FUD angle, and the shoe seems to fit, are you pushing some other programming language.
Matt
40. Re: Questions from a Beginner.
- Posted by irv May 18, 2009
- 1252 views
"Critic" is sounding exactly like the guy who used to troll the old mailing list. The one who got fired from his job for doing that.
Might want to take a look at the logs, in case that needs to be done again.
41. Re: Questions from a Beginner.
- Posted by irv May 18, 2009
- 1247 views
Wow, if you were pushing some other programming language, that definition would be a great description of how you've acted on this forum. Since you brought up the FUD angle, and the shoe seems to fit, are you pushing some other programming language.
Matt
Critic clearly does not KNOW any other programming language. If he did, he would provide some code to prove his points.
42. Re: Questions from a Beginner.
- Posted by DanM May 18, 2009
- 1243 views
I think that is would be a good idea to fork this thread, since the second post in the original thread was totally off topic.
What I mean is, remove all of "Critic"'s comments and all the responses to his comments from the original thread, and put them into a new thread with some other thread title.
Dan
43. Re: Questions from a Beginner.
- Posted by irv May 18, 2009
- 1225 views
I think that is would be a good idea to fork this thread, since the second post in the original thread was totally off topic.
What I mean is, remove all of "Critic"'s comments and all the responses to his comments from the original thread, and put them into a new thread with some other thread title.
Dan
Agreed. Perhaps a good title would be "Things I post when the attendants in white coats aren't watching".
As you may recall, our previous champion troll sounded much like Critic when he was off his meds.
44. Re: Questions from a Beginner.
- Posted by rowrasaur May 18, 2009
- 1233 views
I think that is would be a good idea to fork this thread, since the second post in the original thread was totally off topic.
What I mean is, remove all of "Critic"'s comments and all the responses to his comments from the original thread, and put them into a new thread with some other thread title.
Dan
That would be greatly appreciated.
45. Re: Questions from a Beginner.
- Posted by useless May 20, 2009
- 1211 views
I think that is would be a good idea to fork this thread, since the second post in the original thread was totally off topic.
What I mean is, remove all of "Critic"'s comments and all the responses to his comments from the original thread, and put them into a new thread with some other thread title.
Dan
That would be greatly appreciated.
Before that happens, i'd like to add another totally offtopic topic:
Does critic want to purchase openeuphoria.com ?
useless
46. Re: Questions from a Beginner.
- Posted by Critic May 20, 2009
- 1221 views
But you've still left out a key fact, which is that the big-O notation doesn't tell us everything about an algorithm. You still need to consider the size of n and the coefficient. This is what actually profiling your code does for you.
Of course, you're correct that in general quicksort will beat, say, bubble sort. But in the context of an application, that's merely a micro-optimization. And maybe not the most important one. If you only ever sort 3 or 4 items at a time, you're probably not losing a whole lot using a bubble sort. Please, tell me why I'm wrong and/or lying. I can't wait.
No, you're right. But you still misrepresent the issue somewhat: In EU this O(n) vs. O(1) is not a deliberate design tradeoff that can be made by the programmer, because often O(1) cannot be achieved at all with the given semantics. It seems not even a consious tradeoff by the language designer, but a big design flaw that has been overlooked for years.
Wow, if you were pushing some other programming language, that definition would be a great description of how you've acted on this forum. Since you brought up the FUD angle, and the shoe seems to fit, are you pushing some other programming language.
I've alread said it multiple times: The whole EU community would be better off using Lua or Python instead of trying to catch up.
47. Re: Questions from a Beginner.
- Posted by Critic May 20, 2009
- 1202 views
Before that happens, i'd like to add another totally offtopic topic:
Does critic want to purchase openeuphoria.com ?
useless
Is making a good joke that hard?
48. Re: Questions from a Beginner.
- Posted by Critic May 20, 2009
- 1213 views
Only two words are necessary to respond to this. Prove it!
I already have. You don't get it, but Matt does. I'm fine with that. I've better things to do than teaching you the basics of computer science.
49. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 20, 2009
- 1220 views
Only two words are necessary to respond to this. Prove it!
I already have. You don't get it, but Matt does. I'm fine with that. I've better things to do than teaching you the basics of computer science.
In fairness to you, Matt did admit there were some areas where Eu is still O(n) but could be O(1), but he did not specify what they were.
At this time, I don't know of any examples or any proof that demonstrates this, as the first time "proof" was offered (by you) it was discredited, and the second time (that Matt, not you, discovered it), it was fixed.
50. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 20, 2009
- 1172 views
But you've still left out a key fact, which is that the big-O notation doesn't tell us everything about an algorithm. You still need to consider the size of n and the coefficient. This is what actually profiling your code does for you.
Of course, you're correct that in general quicksort will beat, say, bubble sort. But in the context of an application, that's merely a micro-optimization. And maybe not the most important one. If you only ever sort 3 or 4 items at a time, you're probably not losing a whole lot using a bubble sort. Please, tell me why I'm wrong and/or lying. I can't wait.
No, you're right. But you still misrepresent the issue somewhat: In EU this O(n) vs. O(1) is not a deliberate design tradeoff that can be made by the programmer, because often O(1) cannot be achieved at all with the given semantics. It seems not even a consious tradeoff by the language designer, but a big design flaw that has been overlooked for years.
I don't know what you and Matt are specifically referring to now about the O(n) issue (the only two specific things that were mentioned being invalid and already fixed, respectively), so I can't offer a counter-comment to this. Actually, Matt referred to it in very generic, even theoretical, terms, while your wording suggests you know of a specific issue in the code. (If you know enough about it to know that it was just an overlooked design flaw, that is.)
This is good news of course, since once it is pointed out what the overlooked big design flaw actually is, we'll be able to fix it.
Wow, if you were pushing some other programming language, that definition would be a great description of how you've acted on this forum. Since you brought up the FUD angle, and the shoe seems to fit, are you pushing some other programming language.
I've alread said it multiple times: The whole EU community would be better off using Lua or Python instead of trying to catch up.
Correct me if I'm wrong, but I think this is the first time you've phrased it like that. Previously you've only stated that EU was not faster than Lua or Python.
Of course, there are better reasons to pick a language other than speed, or else we'd all be coding in C or assembly.
51. Re: Questions from a Beginner.
- Posted by jeremy (admin) May 20, 2009
- 1193 views
I already have. You don't get it, but Matt does. I'm fine with that. I've better things to do than teaching you the basics of computer science.
I'm waiting for the day when you have better things to do with your time then to antagonize a group of people who like their language and see the vast reasons to use it over Lua or Python. Please, give it a break and go somewhere else! I've wanted to ban you for a while now but the three people who you criticize the most, call liars and incompetent say that I shouldn't
Jeremy
52. Re: Questions from a Beginner.
- Posted by irv May 20, 2009
- 1136 views
I've better things to do than teaching you the basics of computer science.
At last, we agree on something. You would be much better off learning some yourself.
All you have proven so far is that you know how to find a few buzzwords in a computer science book. Most any 13-year-old can do that. If you are physically only 13, we can forgive you for acting foolish. I suspect, however, that you are only mentally 13.
53. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 20, 2009
- 1196 views
No, you're right. But you still misrepresent the issue somewhat: In EU this O(n) vs. O(1) is not a deliberate design tradeoff that can be made by the programmer, because often O(1) cannot be achieved at all with the given semantics. It seems not even a consious tradeoff by the language designer, but a big design flaw that has been overlooked for years.
I don't know what you and Matt are specifically referring to now about the O(n) issue
I believe he's referring to copy on write when assigning to a sequence element. At least, that's the assumption I've been making in my responses. Consider the following code:
function set_element( sequence s, integer element, object value ) s[element] = value return s end function sequence foo = {"a","b", "c"} foo = set_element( foo, 1, "A" )
When the assignment to s happens, it must first be copied, since there are multiple references on the sequence. The copying itself is O(n), because it depends upon the length of the sequence.
Derek provided a way to achieve the O(1) result, by storing the sequence in some other container, and using what is effectively a pointer, which implements passing by reference.
I seriously doubt that this is really an overlooked design flaw. I think it's a deliberate part of the design, and one that seems to have worked out rather well. The O(n) nature of COW doesn't appear to have dominated the performance of euphoria code, certainly not in the subjective view of its users, nor, apparently in most or all benchmarking that's been done to date.
There are some things that can be done to eliminate this without changing anything about the current syntax. I've had a plan for a while to detect situations like the above when inlining code, and avoiding the extra reference altogether.
There's probably more that can be easily done on the translator side, even in cases where we're not inlining. Some of those same tricks might slow the interpreter down unacceptably, which is why I mention the translator, where translation speed isn't terribly important in the same way that parsing and runtime speed is important for the interpreter.
There has been talk about adding a way to pass by reference to euphoria, but that won't happen before 4.1 (if, ultimately, it happens at all).
Matt
54. Re: Questions from a Beginner.
- Posted by jimcbrown (admin) May 20, 2009
- 1235 views
No, you're right. But you still misrepresent the issue somewhat: In EU this O(n) vs. O(1) is not a deliberate design tradeoff that can be made by the programmer, because often O(1) cannot be achieved at all with the given semantics. It seems not even a consious tradeoff by the language designer, but a big design flaw that has been overlooked for years.
I don't know what you and Matt are specifically referring to now about the O(n) issue
I believe he's referring to copy on write when assigning to a sequence element. At least, that's the assumption I've been making in my responses.
Ok. So then basically, what he is saying when he says "the design of Euphoria is worse than I realized", is that he thinks COW is bad design. Hmm.
I don't think this (your assumption) is right, see below.
Consider the following code:
function set_element( sequence s, integer element, object value ) s[element] = value return s end function sequence foo = {"a","b", "c"} foo = set_element( foo, 1, "A" )
When the assignment to s happens, it must first be copied, since there are multiple references on the sequence. The copying itself is O(n), because it depends upon the length of the sequence.
Derek provided a way to achieve the O(1) result, by storing the sequence in some other container, and using what is effectively a pointer, which implements passing by reference.
And Critic posted a modified version which was suppose to be slower, but Derek proved was faster.
(He did have a valid point about Derek's version being able to cause a memory leak, but with the new delete and delete_routine functionality that issue has been solved.)
Anyways, my understand was that it was the differences between Derek's original, Critic's modified, and Derek's later optimized versions that Critic was arguing about.
I seriously doubt that this is really an overlooked design flaw. I think it's a deliberate part of the design, and one that seems to have worked out rather well. The O(n) nature of COW doesn't appear to have dominated the performance of euphoria code, certainly not in the subjective view of its users, nor, apparently in most or all benchmarking that's been done to date.
Agreed. COW is used in a lot of other places (e.g. Linux-the-kernel and WinNT's kernel's implementation of virtual memory).
In most actual live code, I believe the usual practice is to do "foo[1] = set_element(foo[1], 'A')" instead of "foo = set_element(foo, 1, 'A')". (If one needs to change a majority of elements in the sequence, then even PBR would not be able to improve the algorithm from O(n) to O(1).)
There are some things that can be done to eliminate this without changing anything about the current syntax. I've had a plan for a while to detect situations like the above when inlining code, and avoiding the extra reference altogether.
There's probably more that can be easily done on the translator side, even in cases where we're not inlining. Some of those same tricks might slow the interpreter down unacceptably, which is why I mention the translator, where translation speed isn't terribly important in the same way that parsing and runtime speed is important for the interpreter.
There has been talk about adding a way to pass by reference to euphoria, but that won't happen before 4.1 (if, ultimately, it happens at all).
Matt
So basically, if your assumption is right, then Critic is complaining about the O(n)-ness of "foo = set_element(foo, 1, 'A')", going as far as to state that it is an obvious design flaw that has been overlooked with no O(1) alternative, even though a) Derek already showed a possible O(1) alternative, b) PBR in 4.1 will also give another O(1) alternative, and c) the reasoning for the original design trade-off has been explained (showing that it is a trade-off, not an overlooked flaw), and d) even though he has been shown that the trade-off improved the very code he wrote, that he still claims that the trade-off makes "the design of Euphoria worse than [he] realized".
Actually, after writing the above, I think I am starting to believe your assumption (about Critic) may be right after all.
55. Re: Critic: Benchmarks Available?
- Posted by jimcbrown (admin) May 20, 2009
- 1191 views
I'll never reach an advanced enough stage to know if it can meet everybody's needs, but it obviously doesn't meet Critic's. Every thread I've looked at so far on this forum seems to end in a lengthy argument with Critic, it's getting tedious. Don't you have any provisions for banning people from the forum so as to leave the forum free for those who just genuinely want to make the most of Euphoria?
Critic's only need is to draw attention to himself. In other words, a troll. He doesn't have any programming needs, because he doesn't do any programming.
I completely agree that there should be some way to prevent every topic from being hijacked. Some forums use a moderator, but it might be better to just create a separate area for off-topic posts (sometimes those can be interesting) and know-nothing posters (aka Critic). It's fun to bait them and watch as they make fools of themselves.
Critic's posts and the responses have been moved to a new thread called "Benchmarks Available."
Hmm, I just noticed that replies to the new thread still show up with a subject of "Re: Questions from a Beginner." by default. This might be confusing for those who follow an RSS feed.
56. Re: Questions from a Beginner.
- Posted by Critic May 20, 2009
- 1190 views
I believe he's referring to copy on write when assigning to a sequence element. At least, that's the assumption I've been making in my responses. Consider the following code:
function set_element( sequence s, integer element, object value ) s[element] = value return s end function sequence foo = {"a","b", "c"} foo = set_element( foo, 1, "A" )
When the assignment to s happens, it must first be copied, since there are multiple references on the sequence. The copying itself is O(n), because it depends upon the length of the sequence.
Derek provided a way to achieve the O(1) result, by storing the sequence in some other container, and using what is effectively a pointer, which implements passing by reference.
Yes. That's what I meant.
I seriously doubt that this is really an overlooked design flaw. I think it's a deliberate part of the design, and one that seems to have worked out rather well...
EU's implementation is full of global variables (lifetime, not scope) and not re-entrant because of the lack of references and yet you still think that? Wow. I'm impressed. Maybe I am wrong after all and EU's design is great. - Nah. ;)
57. Re: Critic: Benchmarks Available
- Posted by jimcbrown (admin) May 20, 2009
- 1214 views
Yes. That's what I meant.
Ok, then what I said my previous post applies.
I seriously doubt that this is really an overlooked design flaw. I think it's a deliberate part of the design, and one that seems to have worked out rather well...
EU's implementation is full of global variables (lifetime, not scope) and not re-entrant because of the lack of references and yet you still think that? Wow. I'm impressed. Maybe I am wrong after all and EU's design is great. - Nah. ;)
First, lets not confuse language design (or more clearly, design of the language specification) with design of the implementation. The "flaw" is part of the former, but your response to Matt's quote is a criticism of the latter.
Addressing that, the lack of re-entrance is not due to a lack of references. The C backend uses pointers to do this extensively, and any issues with the front end (that is written in Euphoria) go away once we're past translation to C.
Admitredly, the current implementation (C backend) is not reentrant. Of course, we could always adopt something like the Big-Kernel-Lock. Then we'd be reentrant with a more horrible design. I think it is better to wait until 4.1 (or possibly 4.2), when the time and resources can be devoted to fixing the internals in The Right Way (tm). This is just imvho, of course.
58. Re: Questions from a Beginner.
- Posted by Critic May 20, 2009
- 1212 views
I'm waiting for the day when you have better things to do with your time then to antagonize a group of people who like their language and see the vast reasons to use it over Lua or Python.
Then tell me one of the vast reasons that's not based on your subjective personal taste. You can't. Performance cannot be an issue for you, since you happily trade O(n) vs. O(1) for programming convenience. EU has more problems than Lua or Python:
- Lack of reference semantics.
- Lack of any other advanced language features like OOP, exception handling, closures.
- Lack of libraries.
- Awful interface to C, thanks to 30bit integers, etc.
- Porting it to 64bit will be a pain and probably break lots of code which converts pointers to floating point values.
- Lack of competent developers: Matt is the only one who seems to understand big-O-notation. How come EU's community consists almost exclusively of hobby programmers? Maybe there's a reason for that? EU sucks and is full of design flaws and that's why it has not taken off in 16 years.
You cannot see the truth because it would hurt too much as you invested a lot of time into this crap. I cannot help it. Truth hurts. But luckily for you I am the biggest asshole around. This way you can keep telling lies to yourself easily: Everyone knows that an asshole like me cannot possibly be right.
59. Re: Critic: Benchmarks Available
- Posted by jimcbrown (admin) May 20, 2009
- 1207 views
Then tell me one of the vast reasons that's not based on your subjective personal taste. You can't. Performance cannot be an issue for you, since you happily trade O(n) vs. O(1) for programming convenience. EU has more problems than Lua or Python:
To make this clear, Euphoria outperforms both Lua and Python. You aren't explictly stating otherwise, but it can be implied.
We do not trade O(1) performance with O(n) performance for programming convenience. There are two issues here:
That we trade off a O(n) performance for the statement "a = b" where a and b are both sequences (making it O(1)), for making the statement "a[1] = x" O(n) instead of O(1). This is called COW and is pretty obvious to most computer science students.
That, to workaround the problem of the lack of PBR, we need to use global-lifetime variables. (Actually, I believe this is not entirely true with the new delete_routine functionality.) This is unrelated to the above.
- Lack of reference semantics.
- Lack of any other advanced language features like OOP, exception handling, closures.
Slated for 4.1
4.0 is intended for changes that break existing code. 4.1 is intended for changes that can be made without breaking existing code or libraries.
- Awful interface to C, thanks to 30bit integers, etc.
I believe one of the developers for Pike praised the elegance of the interface of Euphoria to the W32API.
31bit integers are a pain, but the Euphoria coder doesn't see this problem when interfacing to a C from interpreted Euphoria code.
- Porting it to 64bit will be a pain and probably break lots of code which converts pointers to floating point values.
Actually, there is an 80-bit long double floating point type that solves this problem.
- Lack of competent developers: Matt is the only one who seems to understand big-O-notation.
Then you're an idiot for thinking that Matt is the only one who understands big-O notation.
Matt has already explained why you are wrong about your O(n) complaint in great detail.
- Lack of libraries.
This is a valid criticism.
You cannot see the truth because it would hurt too much as you invested a lot of time into this crap. I cannot help it. Truth hurts. But luckily for you I am the biggest asshole around. This way you can keep telling lies to yourself easily: Everyone knows that an asshole like me cannot possibly be right.
Several of us are arguing that you are wrong on the facts you present.
60. Re: Questions from a Beginner.
- Posted by useless May 20, 2009
- 1179 views
Before that happens, i'd like to add another totally offtopic topic:
Does critic want to purchase openeuphoria.com ?
useless
Is making a good joke that hard?
Well, you spend all your time on openeuphoria.ORG , and i don't want to keep funding openeuphoria.COM while i am deep in debt and below "the poverty line". Perhaps you can use it to sell Euphoria t-shirts, swimsuits, or programmable x-rated toys.
useless
61. Re: Questions from a Beginner.
- Posted by mattlewis (admin) May 20, 2009
- 1213 views
Then tell me one of the vast reasons that's not based on your subjective personal taste. You can't. Performance cannot be an issue for you, since you happily trade O(n) vs. O(1) for programming convenience.
I wish I could live in your black and white world. It's true that three are some use cases where a change to the language could go from O(n) to O(1), but as I mentioned before, you're focusing on a micro optimization. For the sort of things that euphoria programmers do, the O(n) seems to be a minor issue. The sum of euphoria's performance has been good enough compared to other interpreted languages.
There's a lot to be said for programming convenience. It's probably the main reason that languages such as python have had their success, and why more programmers are no longer writing everything in C. It's fine that you put different weights on your criteria. It's less fine that you insult others with different priorities.
EU has more problems than Lua or Python:
- Lack of reference semantics.
Again, this was a deliberate choice (please don't tell us again that you think it was a bad choice), although it's in the process of being revisited. This is definitely a trade off. Values aren't modified inside a function call. It's definitely an inconvenience, and reference semantics would be a performance boost, but it's often easier to understand, especially to beginning programmers.
- Lack of any other advanced language features like OOP, exception handling, closures.
I suspect we'll have something OOP-like before another couple of versions. But there are plenty of languages out there that lack OOP, which is just one programming paradigm, not the paradigm. I'm not a complete fan of structured exception handling, but I suspect we'll end up with something along those lines, too. There have been discussions about features similar to closures.
- Lack of libraries.
Yes, this is mainly a market share issue, and is one reason why I'm sometimes forced to use other languages.
- Awful interface to C, thanks to 30bit integers, etc.
I don't think the euphoria integer is the biggest drawback to interfacing with C. By far, it's the lack of support for memory structures. The Win32Lib approach is my favorite of any library to address this, but clearly something better is needed.
- Porting it to 64bit will be a pain and probably break lots of code which converts pointers to floating point values.
I don't follow you here. We'll just use something other than doubles.
You cannot see the truth because it would hurt too much as you invested a lot of time into this crap. I cannot help it. Truth hurts. But luckily for you I am the biggest asshole around. This way you can keep telling lies to yourself easily: Everyone knows that an asshole like me cannot possibly be right.
You're by far not the biggest asshole around. You're just the euforum poster who is the most full of himself. I guess the thought that someone can accomplish something and enjoy themselves using something that doesn't conform to your priorities or that isn't mainstream is too much for you to bear.
Every so often, some such nuisance presents himself in these parts. In another month or two, you'll probably get bored of pestering us, and will move on. Eventually, we'll attract the attention of another troll/kook, and the cycle begins again.
Matt
62. Re: Questions from a Beginner.
- Posted by shfrance May 20, 2009
- 1184 views
A programmable x-rated toy? In the image of...? ...I have an idea.
63. Re: Questions from a Beginner.
- Posted by jeremy (admin) May 21, 2009
- 1177 views
Then tell me one of the vast reasons that's not based on your subjective personal taste. You can't.
You have said that Euphoria stinks. You have also said that Euphoria should not try to catch up that it should just be abandoned, that people should simply use Lua or Python. With these two statements for context, please answer this simple question... Why exactly are you here posting on EUforum?
Jeremy