1. (rant) Three kinds of languages

By now you will realize that (rant) is a warning that I am experimenting with documentation.


There are three kinds of programming languages: clever, messy, and simple. Clever languages have features like overloading, polymorphism, inheritance, monads, self-modifying code, and various forms of automagic. Studying a clever language is enlightening; you will be amazed by how inventive programming can be and learn the meanings of some big words. However, most programing is done with a messy language. Messy languages have historical leftovers mixed with some interesting ideas; this means a programmer will extol some feature at the cost of tolerating bad language design. Messy languages are often described as easy to learn and that is true if you like surprises. Messy languages are the conventional languages. Finally, the ideal is a simple language. Simple languages-- OpenEuphoria and Phix --are simple to learn, simple to use, and perform exceptionally well. You want to program in a simple language.

_tom

new topic     » topic index » view message » categorize

2. Re: (rant) Three kinds of languages

Euphoria and Phix are great languages. Speaking of Euphoria, what is the original creator of Eu up to these days? Also, isn't there a new wrapper for wxWidgets in the works? I think it would be nice if Eu 4.0 had a graphics library like 3.1 did. However, wrappers can make up for most of this. Struct support would also be a nice feature. I hear this is planned for the next release?

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

3. Re: (rant) Three kinds of languages

Icy_Viking said...

Euphoria and Phix are great languages. ... next release?

Robert Craig has retired from language creation--we remain grateful that he made the source-code for Euphoria available to us.

A new wxWidgets is being developed by ghaberek. That is a monster project for one person so we must remain patient. He also created iup4eu.

Eu3 had graphics for DOS. You can not expect anything similar with Windows or Linux.

OE4.1 is short on developers at the moment; struct support will not come quickly.

The most I can do is (rant); after collecting enough rants I hope to redo the documentation.

_tom

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

4. Re: (rant) Three kinds of languages

_tom said...

There are three kinds of programming languages: clever, messy, and simple... ... ... .. Finally, the ideal is a simple language. Simple languages-- OpenEuphoria and Phix --are simple to learn, simple to use, and perform exceptionally well. You want to program in a simple language. _tom

This is exactly what I meant when I posted here: http://openeuphoria.org/forum/131148.wc#131148

said...

After trying Euphoria for a few days, it seems to me to be an ideal language for teaching programming to beginners.. .. It is simple and at the same time safe... .. I think Euphoria can be promoted as an ideal language for beginners, including kids, who are starting to learn programming.

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

5. Re: (rant) Three kinds of languages

rneu said...

This is exactly what I meant when I posted here: http://openeuphoria.org/forum/131148.wc#131148

Three kinds is a writing exercise. The raw material comes from people like you...thanks.

There are three kind of programming languages: clever, messy, and simple. Clever languages have features like OOP, lambda, monad, and maybe automagic. Enlightening to learn but never close to simple. However, most programming is done with a messy language. Messy languages mix historical leftovers with some interesting ideas. These are the conventional languages. Fiery supporters tell you they are easy (do you enjoy surprises?) and great (do you enjoy complexity?). Finally, the ideal is a simple language. Simple languages-- OpenEuphoria and Phix --are simple to learn, simple to use, and perform exceptionally well. You want to program in a simple language.

A better version I hope. It sort of includes the popular languages without naming names.

_tom

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

6. Re: (rant) Three kinds of languages

_tom said...
Icy_Viking said...

Also, isn't there a new wrapper for wxWidgets in the works?

A new wxWidgets is being developed by ghaberek.

I inadvertently took a break from this over the summer (life has a way of doing that to you) but I'm back in the swing of things now.

I've got a lot of code on my laptop that I need to push back up to Github. Still working through a few issues in the Windows build. Linux seems to work great though!

I'm hoping to have another alpha out for the one-year anniversary in December. I'd at least like to have enough controls to duplicate this Control Gallery example.

_tom said...

That is a monster project for one person so we must remain patient.

Volunteers are always welcome. At some point soon I'm going to need help building the documentation and porting the examples.

_tom said...

He also created iup4eu.

I also maintain the libui wrapper for Euphoria, if you're interesting in yet another UI library. I don't know why I have such a fascination with this.

-Greg
Forked into: Some wxEuphoria updates

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

7. Re: (rant) Three kinds of languages

_tom said...

supporters tell you they are easy (do you enjoy surprises?)

Heh. No surprises.... I just now found (and fixed) this one in Phix:

for i=1 to length(s) do 
    ?s[i] 
    exit 
end for 

gave index out of bounds when length(s) was zero [because the zero iterations jump was messed up].
Unfortunately I couldn't quite fully fix it - you now get an "invalid/unsupported construct" when the compiler cannot cope,
ie: when an unconditional jump occurs immediately before an end for (use a simple if rather than for construct, innit!).
Lest anyone start to panic, it is a pretty rare and rather silly thing to do, that I have obviously never seen or tried to do before.

I suppose, at least, that such major and embarrassing surprises are getting down towards about one a year now. smile

Pete

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

8. Re: (rant) Three kinds of languages

Bugs occur in software; we learn to be tolerant. Deliberate language design surprises do not deserve tolerance.

Surprise!

Two kinds of surprise:

  • oopsie surprise...this is a bug
  • design surprise...the language is wierd

oopsie surprise

The OE switch may crash under the interpreter but work correctly when compiled. This is a bug that must still be resolved. Most of the time switch works correctly.

This surprise is unintentional.

-- works in OE; used to crash Phix (now fixed) 
 
sequence s = {} 
 
for i=1 to length(s) do 
    ? s[i] 
    exit 
end for 
 
-- probably what most coders would have written 
if length(s) then ? s[1] end if 
 

The oopsie surprise is small, rare, and fixed.

design surprise

-- example one 
	 
def greet(): 
    print( "hello" ) 
 
x=1 
if x==1: 
	print( "it is one" ) 

This syntax is based on indentation. If you leave the colon : out you get an "invalid syntax" message; not very helpful. Why is a colon : needed? The colon is a superfluous syntax element. Not simple; not beginner friendly.

This surprise is deliberate.

-- example two 
function greet() 
    puts(1, "hello" ) 
end function 

This syntax uses keywords in the same way for all language elements. Simple.

-- example three 
function greet() puts(1, "hello" ) end function 

Since the keywords make the syntax work you can write code in any way. Still simple.

_tom

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

9. Re: (rant) Three kinds of languages

ghaberek said...

I also maintain the libui wrapper for Euphoria, if you're interesting in yet another UI library.

I managed to get that working on Phix, but all three demos crash, apparently somewhere deep inside uiMain(), as soon as I press escape. Any ideas?

Got any pre-built dlls for that, by any chance?

ghaberek said...

I don't know why I have such a fascination with this.

While searching for that dll I extracted this little list from some thread or other, just cos you said that, should keep you busy for a while...

https://github.com/vurtun/nuklear

https://github.com/hugoam/kiui

https://bitbucket.org/cegui

https://github.com/cnjinhao/nana

https://github.com/wjakob/nanogui

https://github.com/dalerank/nngui

https://github.com/garrynewman/GWEN

https://bitbucket.org/duangle/oui-blendish/overview

https://github.com/vorg/MowaLibs

http://tekui.neoscientists.org/overview.html

https://sciter.com/

https://skia.org/

https://github.com/ocornut/imgui

Have fun, Pete

UPDATE: I just tried a 64bit dll, and that does not crash, but changing gettingstarted.ex to:

?1 
    uiControlShow(mainwin) 
?2 
    uiMain() 
?3 
    uiUninit() 
?4 

on pressing escape, only 1 and 2 get shown, not 3 or 4 - is that as expected?
Forked into: libui-euphoria release

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

Search



Quick Links

User menu

Not signed in.

Misc Menu