1. Over exaggerated negative post on reddit programming

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/

new topic     » topic index » view message » categorize

2. Re: Over exaggerated negative post on reddit programming

ed_davis said...

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).

new topic     » goto parent     » topic index » view message » categorize

3. Re: Over exaggerated negative post on reddit programming

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.

Jesse Adkins said...

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.

new topic     » goto parent     » topic index » view message » categorize

4. Re: Over exaggerated negative post on reddit programming

Shian_Lee said...

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.

Shian_Lee said...

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.

Jesse Adkins said...

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...

new topic     » goto parent     » topic index » view message » categorize

5. Re: Over exaggerated negative post on reddit programming

jimcbrown said...

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. smile

new topic     » goto parent     » topic index » view message » categorize

6. Re: Over exaggerated negative post on reddit programming

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...

new topic     » goto parent     » topic index » view message » categorize

7. Re: Over exaggerated negative post on reddit programming

jimcbrown said...
Shian_Lee said...

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

new topic     » goto parent     » topic index » view message » categorize

8. Re: Over exaggerated negative post on reddit programming

Shian_Lee said...

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.

new topic     » goto parent     » topic index » view message » categorize

9. Re: Over exaggerated negative post on reddit programming

jimcbrown said...

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?

new topic     » goto parent     » topic index » view message » categorize

10. Re: Over exaggerated negative post on reddit programming

euphoric said...
jimcbrown said...

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.

new topic     » goto parent     » topic index » view message » categorize

11. Re: Over exaggerated negative post on reddit programming

jimcbrown said...
euphoric said...
jimcbrown said...

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

new topic     » goto parent     » topic index » view message » categorize

12. Re: Over exaggerated negative post on reddit programming

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

new topic     » goto parent     » topic index » view message » categorize

13. Re: Over exaggerated negative post on reddit programming

petelomax said...
Shian_Lee said...

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.

new topic     » goto parent     » topic index » view message » categorize

14. Re: Over exaggerated negative post on reddit programming

jimcbrown said...
euphoric said...
jimcbrown said...

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.

new topic     » goto parent     » topic index » view message » categorize

15. Re: Over exaggerated negative post on reddit programming

_tom said...

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.).

new topic     » goto parent     » topic index » view message » categorize

16. Re: Over exaggerated negative post on reddit programming

ed_davis said...

I wrote a version of my ascii integer mandelbrot benchmark in Lily:

Can you post your Euphoria version here?

Please and thanks,
Pete

new topic     » goto parent     » topic index » view message » categorize

17. Re: Over exaggerated negative post on reddit programming

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

new topic     » goto parent     » topic index » view message » categorize

18. Re: Over exaggerated negative post on reddit programming

petelomax said...
ed_davis said...

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.

new topic     » goto parent     » topic index » view message » categorize

19. Re: Over exaggerated negative post on reddit programming

petelomax said...

Attack the article, not the person.

Jesse Adkins said...

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 -

  1. Creates a readable, mature, and clear code.
  2. Allows a straightforward way to warn that 129 variables are not used anymore.
  3. Enforcing a logical way of thinking.
  4. Eliminates cases of forgetting to assign the correct value to variable.
  5. Allows a quick observation of resources usage.
  6. Eliminates all kinds of errors.

    And by the way,
Jesse Adkins said...

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.

  1. Integer is known to be the most efficient data type - that's why.
  2. Double is not a C invention - it's a well known hardware capacity.
  3. 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.
  4. 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.
  5. 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.
Jesse Adkins said...

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.

new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu