1. Over exaggerated negative post on reddit programming
- Posted by ed_davis May 05, 2015
- 2436 views
Looks like someone setup a blog just to gripe about Euphoria:
http://codehereandthere.blogspot.com/2015/05/lets-design-horrible-language.html
I found this on reddit.com/r/programming (referencing the above):
http://www.reddit.com/r/programming/comments/34kza1/lets_design_a_horrible_programming_language/
2. Re: Over exaggerated negative post on reddit programming
- Posted by jimcbrown (admin) May 05, 2015
- 2421 views
Looks like someone setup a blog just to gripe about Euphoria:
http://codehereandthere.blogspot.com/2015/05/lets-design-horrible-language.html
I found this on reddit.com/r/programming (referencing the above):
http://www.reddit.com/r/programming/comments/34kza1/lets_design_a_horrible_programming_language/
Seems harmless. Most of the criticism seems to apply to 3.1.1 and older. (E.g., 4.0 doesn't use the .exw filetype anymore, 4.1 already supports 63bit integers, etc.) Even then the author still gets some things wrong (3.1.1 had the .ew type for windoze specific includes), so I'd take the accuracy of that with a grain of salt or two.
Also, the blog is brand new (set up May 2015 it looks like) and only has one post. I woudln't be surprised if the next post is about some entirely different and unrelated programming language (either a 2nd horrible one, or a counter example of a well designed one).
3. Re: Over exaggerated negative post on reddit programming
- Posted by Shian_Lee May 05, 2015
- 2355 views
A Little Code Here and There by Jesse Adkins (real name?).
It's certainly not an 'over exaggerated negative post', instead, it's a deliberated post intended to damage the Euphoria programming language.
I've read this shallow post, and its philosophy is suitable perfectly to an 8 years old child.
Well done Jesse Adkins. In the army you could be a great private, as long as you keep your mouth shut. Disclaimer: this is my personal diagnostic.
Perhaps most importantly, an E programmer should remember to initialize their variables to starting values. Failure to do so means that a variable is unset. Attempt to use a variable that is unset is an error. E shall not provide a None, null, nil, or other constant to test if a variable is unset.
Jesse Adkins, how old are you really?
Perhaps most importantly ???
Take care and all the best, Shian.
4. Re: Over exaggerated negative post on reddit programming
- Posted by jimcbrown (admin) May 05, 2015
- 2352 views
It's certainly not an 'over exaggerated negative post', instead, it's a deliberated post intended to damage the Euphoria programming language.
Uh, the author took some pains to avoid hurting the reputation of this site (by hiding the name of the language, for example). So I'm not sure that this is correct.
I've read this shallow post, and its philosophy is suitable perfectly to an 8 years old child.
I think that some valid points were provided, like the lack of support for try..catch and the fact that many trival things (liek divide by zero) are fatal errors.
Perhaps most importantly, an E programmer should remember to initialize their variables to starting values. Failure to do so means that a variable is unset. Attempt to use a variable that is unset is an error. E shall not provide a None, null, nil, or other constant to test if a variable is unset.
Actually, the object() function allows you to test is a variable is unset...
5. Re: Over exaggerated negative post on reddit programming
- Posted by Shian_Lee May 05, 2015
- 2335 views
Uh, the author took some pains to avoid hurting the reputation of this site (by hiding the name of the language, for example). So I'm not sure that this is correct.
I like your civilized diplomacy Jim.
6. Re: Over exaggerated negative post on reddit programming
- Posted by irv May 05, 2015
- 2302 views
There are a lot of clues in that article that say the author didn't bother to do his homework.
Good thing he doesn't write about politics - he'd still be griping about our current President (Nixon, isn't he?) being a crook...
7. Re: Over exaggerated negative post on reddit programming
- Posted by Spock May 05, 2015
- 2323 views
I've read this shallow post, and its philosophy is suitable perfectly to an 8 years old child.
I think that some valid points were provided, like the lack of support for try..catch and the fact that many trival things (liek divide by zero) are fatal errors.
The author didn't exactly refer to try/catch (although, possibly he had this in mind):
"E does not recognize exceptions that are common in many object-oriented languages. It also lacks a functional-inspired Option-like type to safely segment away potential non-values from other parts of the language."
Try/catch is not the only way to deal with exceptions. As, no doubt, many will remember in recent discussions on the subject..
But, yes. E does need some way of not dying when a trivial error is encountered. An extremely rapid solution to the DIVIDE BY ZERO condition can be incorporated in the source, in about as much time as it takes to write this sentence. To be honest, I haven't actually looked at the source in years. I wouldn't know if they done it already..
Spock
8. Re: Over exaggerated negative post on reddit programming
- Posted by petelomax May 05, 2015
- 2306 views
suitable perfectly to an 8 years old child.
as long as you keep your mouth shut
Jesse Adkins, how old are you really?
Disclaimer: this is my personal diagnostic.
Another diplomacy hint for you:
Even if someone is probably not reading, or the "disclaimer" word is used, it does not stop this being a Code of Conduct violation. Do not stoop to their level. Attack the article, not the person.
9. Re: Over exaggerated negative post on reddit programming
- Posted by euphoric (admin) May 05, 2015
- 2352 views
Actually, the object() function allows you to test is a variable is unset...
I cannot imagine a case where this would be necessary. Are there examples of the utility of this functionality?
10. Re: Over exaggerated negative post on reddit programming
- Posted by jimcbrown (admin) May 05, 2015
- 2318 views
Actually, the object() function allows you to test is a variable is unset...
I cannot imagine a case where this would be necessary. Are there examples of the utility of this functionality?
I can't think of any.
11. Re: Over exaggerated negative post on reddit programming
- Posted by petelomax May 05, 2015
- 2296 views
Actually, the object() function allows you to test is a variable is unset...
I cannot imagine a case where this would be necessary. Are there examples of the utility of this functionality?
I can't think of any.
There is one case that immediately springs to mind:
--sequence table = {} sequence table procedure add(x) if not object(table) then table = {} end if table = append(table,x) end procedure
If you only invoke add() after the declaration of table, you do not need the object() test, but if you call it before, the (now commented out) table = {} may not have occurred. In the past I have frequently declared table and integer tinit = 0 (as integers can be and, at least in Phix, are assigned from literals at compile-time) to get around precisely this sort of thing. As written this is fixable, but if you want your table initialized with some run-time generated stuff, then it really has to be a separate flag or an object(table) test. I can accept that object() can always be replaced with a separate flag.
Pete
12. Re: Over exaggerated negative post on reddit programming
- Posted by _tom (admin) May 06, 2015
- 2343 views
Jesse Ray Adkins is a real person with photo and webpage: https://github.com/jesserayadkins.
He started his own programming language, Lily (July 2010), which is now at a 0.12 version.
I tried to compile his source-code but failed. It may be a great invention, but we will never know if it is not easy to use.
His critique of the "E" language is based on lack of knowledge for the most part. It is too early to comment on his Lily language; Adkins has a lot of work ahead of him.
_tom
13. Re: Over exaggerated negative post on reddit programming
- Posted by Shian_Lee May 06, 2015
- 2283 views
suitable perfectly to an 8 years old child.
as long as you keep your mouth shut
Jesse Adkins, how old are you really?
Disclaimer: this is my personal diagnostic.
Another diplomacy hint for you:
Even if someone is probably not reading, or the "disclaimer" word is used, it does not stop this being a Code of Conduct violation. Do not stoop to their level. Attack the article, not the person.
Sorry Pete, you're totally right. I agree.
But since I'm a fighter by nature, not a programmer, I had to put a bait. i.e. by stooping to their level - I can quickly and clearly analyze their weak point. This is a common tactic in fighting - usually, undercover.
Sorry again for violating the Code of Conduct.
14. Re: Over exaggerated negative post on reddit programming
- Posted by irv May 06, 2015
- 2248 views
Actually, the object() function allows you to test is a variable is unset...
I cannot imagine a case where this would be necessary. Are there examples of the utility of this functionality?
I can't think of any.
One comes to mind. In EuGTK, I can load a single library (for Linux) as an atom or a whole slew of libraries (Windows) as a sequence of atoms, so I declare LIBS as an object, then test:
if not object(LIBS) then crash...no libraries found.
Not that there aren't other ways to do this, but it was easy.
15. Re: Over exaggerated negative post on reddit programming
- Posted by ed_davis May 06, 2015
- 2304 views
Jesse Ray Adkins is a real person with photo and webpage: https://github.com/jesserayadkins.
He started his own programming language, Lily (July 2010), which is now at a 0.12 version.
I tried to compile his source-code but failed. It may be a great invention, but we will never know if it is not easy to use.
His critique of the "E" language is based on lack of knowledge for the most part. It is too early to comment on his Lily language; Adkins has a lot of work ahead of him.
_tom
I was able to compile it. Next, I wrote a version of my ascii integer mandelbrot benchmark in Lily:
var accum = 0 var count = 0 while count < 1545: { var left_edge = -420 var right_edge = 300 var top_edge = 300 var bottom_edge = -300 var x_step = 7 var y_step = 15 var max_iter = 200 var y0 = top_edge while y0 > bottom_edge: { var x0 = left_edge while x0 < right_edge: { var y = 0 var x = 0 var the_char = 32 var x_x = 0 var y_y = 0 var i = 0 while i < max_iter && x_x + y_y <= 800: { x_x = ((x * x) / 200) y_y = ((y * y) / 200) if x_x + y_y > 800: { the_char = 48 + i if i > 9: { the_char = 64 } else: var temp = x_x - y_y + x0 if ((x < 0 && y > 0) || (x > 0 && y < 0)): y = (-1 * ((-1 * x * y) / 100)) + y0 else: y = (x * y / 100) + y0 x = temp } i = i + 1 } accum = accum + the_char x0 = x0 + x_step } y0 = y0 - y_step } if count % 300 == 0: printfmt("%d ", accum) count = count + 1 } printfmt("%d ", accum)
I compiled Lily with gcc, options -s -Ofast
The benchmark took 162 seconds. Slower than Euphoria (39.9 seconds) but faster than Python (274 seconds). And as you say, it isn't even version 1.0 yet, so it will probably improve.
I like some things about it, but I'm not wild about the syntax for control structures (if, while, etc.).
16. Re: Over exaggerated negative post on reddit programming
- Posted by petelomax May 07, 2015
- 2210 views
I wrote a version of my ascii integer mandelbrot benchmark in Lily:
Can you post your Euphoria version here?
Please and thanks,
Pete
17. Re: Over exaggerated negative post on reddit programming
- Posted by ChrisB (moderator) May 07, 2015
- 2188 views
Hi
I'm all for constructive criticism, but thats just a really nasty post for the sake of being nasty, with no actual constructiveness about it at all. Shame on you Adkins.
Perhaps someone should rewrite Lily in Euphoria, just to show how quick it is to develop. (not me btw, I'm a crap programmer, which is why I love Eu so much)
Chris
18. Re: Over exaggerated negative post on reddit programming
- Posted by ed_davis May 07, 2015
- 2208 views
I wrote a version of my ascii integer mandelbrot benchmark in Lily:
Can you post your Euphoria version here?
Here it is:
without type_check integer left_edge, right_edge, top_edge, bottom_edge, max_iter, x_step, y_step, y0, x0, x, y, i, x_x, y_y, temp, the_char, accum, count atom t t = time() accum = 0 count = 0 while count < 1545 do left_edge = -420 right_edge = 300 top_edge = 300 bottom_edge = -300 x_step = 7 y_step = 15 max_iter = 200 y0 = top_edge while y0 > bottom_edge do x0 = left_edge while x0 < right_edge do y = 0 x = 0 the_char = 32 x_x = 0 y_y = 0 i = 0 while i < max_iter and x_x + y_y <= 800 do x_x = floor((x * x) / 200) y_y = floor((y * y) / 200) if x_x + y_y > 800 then the_char = 48 + i if i > 9 then the_char = 64 end if else temp = x_x - y_y + x0 if (x < 0 and y > 0) or (x > 0 and y < 0) then y = (-1 * floor((-1 * x * y) / 100)) + y0 else y = floor(x * y / 100) + y0 end if x = temp end if i = i + 1 end while accum = accum + the_char x0 = x0 + x_step end while y0 = y0 - y_step end while if remainder(count, 300) = 0 then printf(1, "%d ", accum) end if count = count + 1 end while printf(1, "%d\n\nCompleted in %f seconds\n\n", {accum, time() - t})
4.05 runs this in about 39 seconds.
4.1 Beta 2 takes about 59 seconds.
If you turn this into a procedure, and make the variables local to the procedure, then:
4.05 runs this in about 25 seconds.
4.1 Beta 2 takes about 36 seconds.
19. Re: Over exaggerated negative post on reddit programming
- Posted by Shian_Lee May 08, 2015
- 2148 views
Attack the article, not the person.
Perhaps most importantly, an E programmer should remember to initialize their variables to starting values. Failure to do so means that a variable is unset. Attempt to use a variable that is unset is an error. E shall not provide a None, null, nil, or other constant to test if a variable is unset.
Jesse, sincerely, after few years of programming in Microsoft's Basic dialects, and having to add Option Explicit statement on top of each module, together with defint a-z... I need a physiotherapist to cure my both hands.
Initializing variables -
- Creates a readable, mature, and clear code.
- Allows a straightforward way to warn that 129 variables are not used anymore.
- Enforcing a logical way of thinking.
- Eliminates cases of forgetting to assign the correct value to variable.
- Allows a quick observation of resources usage.
- Eliminates all kinds of errors.
And by the way,
E will require declaration of variables before being able to use them. Additionally, the language will require that all variables have a type. Out of the box, the following types will be supported:
integer : A 31-bit integer. But there are plans to make it a full 32 bits in the future. E does not understand 64-bits though. atom : A C double. sequence : An array. object : Any one of the above three.
- Integer is known to be the most efficient data type - that's why.
- Double is not a C invention - it's a well known hardware capacity.
- Sequence does not stands for "Array" - it's an unlimited dynamic structure, unbelievably easy-to-use, and more powerful then any other concept I know.
- Actually Object, together with the three above, allows you to use very advanced patterns that cannot be achieved easily, or not at all, in other languages.
- Beside Integer, Double, (32 or 64 bits), Euphoria-Sequence, and Euphoria-Object: does the PC hardware offers many more exciting data types?
That's the power of Euphoria: Simplicity.
Strings will be represented by a sequence wherein each element has a very low integer value. This will make it so a programmer cannot tell the difference between an array and a string. In fact, internally, the interpreter will also have no idea. To further complicate matters, the type system will only check the top level of a type.
When you don't know what you're doing, what you're writing - and what for: only then it's hard to tell the difference between "" and {}.
That's another way to get rid of untalented and useless programmers from the business. Look at it as a modest contribution of the Euphoria programming language to the world's global harmony.
I could go on with this, but almost any part of your post is shallow and immature, and I don't want to upset the readers of this forum.
I don't say that you are a bad programmer, I say that your attitude and perspective is very very narrow minded, and with this attitude your contribution to the world of programming is by overloading the already overloaded programming world - with another programming language.
Edit: and by the way, Euphoria users don't need and don't want to care about low level headache such as signed/unsigned registers, 31-bits or 63-bits, or other CPU flags. C does the job very well, at the cost of huge complexity.