1. Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

I am sad to see that Euphoria is not better known! He deserves it. I have been developing on euphoria for decades now. I regularly watch other languages. None combine so many essentials: - Interpreted AND Compilable language - Unparalleled performances both in interpreter and in compilation - Excellent and unique variable structures in sequence - Excellent reliability - very few or no bugs - Tool for debugging essential programs ie the xxx.er - cross platform - etc .. There is no proper page for Euphoria on Wikipedia. It wouldn't hurt! What do you think?

https://fr.wikipedia.org/wiki/Liste_de_langages_de_programmation

new topic     » topic index » view message » categorize

2. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

What's this then?! (It is linked here)

UPDATE: There's also this, maybe that needs linking[ok, done that] and populating with a full translation.
UPDATE2: Added a request/link for update/translation.

However there is no page for Phix...

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

3. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

I was gonna say...

There's been a wikipedia page on Euphoria for years. I remember Euphoria having a wiki page going all the way back to the mid-2000s.

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

4. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

Wikipedia has rules against self-promotion and advertising, marketing, or public relations: https://en.wikipedia.org/wiki/Wikipedia:What_Wikipedia_is_not#PROMO

So the members of this community aren't really the best candidates for writing or maintaining Wikipedia articles about Euphoria. This should really be done only by a third party.

-Greg

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

5. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

Nice theme.

Somewhen I take a look here to see if there are interesting news. I am not currently active Eu user, but I am know and love this language since the 90s.

Really this community is very outdated, example there is not important presence on social media. Many if the old euphorians (including me) were DOS users doing DOS programs.

When Euphoria become free software there was a lot of talk on several places, the community become very active and I remember postings here about Eu rising positions on Tiobe ranking.

I promoted Eu on FreeDos community, got the DOS package included on FreeDos mirrors. I remember when Eu4 RC was published, there was a DOS-only package available for download, and that was the more popular download for some weeks!

To get Eu4 working finally was broken DOS support, even ED editor was broken. There was an ugly time when we have a nice new interpreter, but not functional IDE, win32lib even ED were not working. Wx library on a permanent development but not long term stable release. This way the language could not to hook so many new users.

After initial interest, appear thar open source community lost interest on Euphoria.

I think is important to get new blood here, get young people interested on Eu programming.

I think the promotionplan must include tasks like:

1- Release a stable minor updates for interpreter bug corrections, no new features. (When people see last stable dated 5 years ago, think that is one more abandoned project.)

2- Release stable release for easy-to-use functional graphics libraries working on any supported OS

2- Release a good stable IDE and Window designer working on any supported OS. At least a good Windowed editor may included on basic package. (I love ed editor, but it will not impress any young programmer)

Only this way new people will love the language, and we can begin as community doing promotion to new users:

4- Video tutorials for simple programs and graphic programs.

5- Simple materials to support teachers and encourage them to include Eu as material on their courses. Thinks like using Eu for physics calculations for high school students. May be publish Eu courses on platform like coursera.

6- Presence on social networks.

Just my ideas based on that I have seen... The new people need an stable and complete environment, not an under-construction language.

Regards

Marco Achury

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

6. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

A team that's motivated to contribute to a language should have a vision to what Euphoria is. What might be a good change for one developer would be a regression for another. Motivated developers need to first agree with a list of features. Then they can work as a team toward that goal. For me prior to Euphoria 4.0, EUPHORIA had always been and mostly still is:

  • always well defined behavior. You'll wont find the phrase "undefined behavior" for anything apart from interfaces to machine language or C function calls.
  • No special rules for differing number types. The 2.5 * 2 is identical to the integer 5.
  • declare before use.
  • a minimalist built-in declared type-system.
  • types defined by run-time functions rather than declarative statements.
  • pass-by-value semantics. (References are used internally but that is an implementation detail.)
  • strict checking everywhere. Never should there ever be a crash without an ex.err file generated. Although not possible for calling C or machine code.
  • words rather than punctuation
  • no need for pointers and no pointers.
  • characters are not length 1 strings.
  • really good explanations for errors

Euphoria 4.1 brought us many flow control statements and other statements (most notably enum) that improves the user experience, but it also broke some of these things above.

There are some routines in the standard library which work around not having pointers. Imagine having to assign a map value to itself when you did a map put:

Instead of pass by value semantics like this

include std/map.e as map 
map:map p = map:new() 
p = map:put(p, 2, "two") 
p = map:put(p, 3, "three") 
p = map:put(p, 5, "five") 

We instead only need to type:

include std/map.e as map 
map:map p = map:new() 
map:put(p, 2, "two") 
map:put(p, 3, "three") 
map:put(p, 5, "five") 

Now p is one level removed from the user. p is not a map it's a reference value to a map. The standard library added a reference system. Pointers were not added to the language but added to a library. This breaks the slogan, Euphoria doesn't need pointers. Also, the user can't just save p to a file as if it's a EUPHORIA object with the data in it.

The way map works and a couple of others goes against the ethic that Euphoria doesn't need pointers. It turns out there are certain algorithms that need pointers. There are some involving binary trees. Though p is not a pointer, the value p is a handle like object. It is like something you would get from open(), yet it is a handle to data in your program rather than to a file. To me, this kind of thing is inconsistent with the way Euphoria was supposed to be. Yet at the same time I am thankful that I don't need to make assignment statements for each call.

Now ifdef is a regression in my view, because it puts EUPHORIA to where C is in terms of safety. If the compile time value doesn't exist, then the code inside the block is not even parsed for mispelt variable names. The advantages for this is speed, but C compile optimization makes this moot. I can still sympathize with the other side, but I have never been convinced of this.

There were other changes that violated "strict checking everywhere" in allowing functions to be called as if they were procedures, and changes to the behavior or length, and object.

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

7. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

/me moves posts by achury and by SDPringle to "Topic: Ideas" , because they aren't about Wikipedia.

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

8. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

SDPringle said...

I am thankful that I don't need to make assignment statements for each call.

We instead only need to type:

include std/map.e as map 
map:map p = map:new() 
map:put(p, 2, "two") 
map:put(p, 3, "three") 
map:put(p, 5, "five") 

Actually, they should really have been implemented as assignments, probably, eg:

map p = new_map() 
p[2] = "two" 
p[3] = "three" 
p[5] = "five" 

I put similar handling in for Phix structs, which works by spotting/substituting "attempt to subscript an integer" cases, but forgot/failed to do the same for dict/map...

SDPringle said...

pass-by-value semantics

(to nit-pick) More correctly speaking, Euphoria/Phix has copy-on-write semantics - apart from integers it always passes a reference, but automatically clones when needed should it have a reference count > 1.

SDPringle said...

always well defined behavior.

Yep, mostly. However, binary_search() on an unordered haystack, and {s[idx],idx} = <expr> are two examples of undefined/unpredictable/unsupported outcomes.

SDPringle said...

declare before use.
ifdef is a regression in my view
allowing functions to be called as if they were procedures

Agreed. I half-get call-before-declare, but

s[1] = {1,2,3} 
string s 

and you have effectively just thrown away loads of opportunities for helpful compile-time messages, not to mention many potential optimisations, and any and all notions of variable scope going completely whack-a-doodle.

For me though, the real killer is Euphoria/Phix don't work in a web browser or have anything like codepen/jsFiddle/repl.it/tio so I'm now toying with some ideas for that (but....)
Actually, there is (almost but not quite) http://golf.shinh.org/l.rb?exu - the only thing I could find anyway.

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

9. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

petelomax said...

For me though, the real killer is Euphoria/Phix don't work in a web browser or have anything like codepen/jsFiddle/repl.it/tio so I'm now toying with some ideas for that (but....)
Actually, there is (almost but not quite) http://golf.shinh.org/l.rb?exu - the only thing I could find anyway.

I've been toying around with running Euphoria in a Repl.it container (they're just called "Repls"). So far it seems to work pretty well under the C project type. I'm pretty sure I could get them to add a Euphoria project type with syntax highlighting for the editor and also add a basic template for Euphoria MVC projects. They even have a basic key/value pair database API which is pretty neat.

Repl.it project: https://repl.it/@ghaberek/euphoria-demo

Live preview: https://euphoria-demo.ghaberek.repl.co/ (a live Euphoria MVC server)

-Greg

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

10. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

What I meant earlier by Euphoria having "pass by value semantics", is that the way EUPHORIA passes parameters into routines is indistinguishable to pass by value barring time profiling or looking at the source code. I think I should have used the word "behavior" or "specification". There may be two implementations of some stack library and they may be implemented in different ways but it would still have this first in last out "behavior". Take what I said earlier to mean "observable behavior".

petelomax said...
SDPringle said...

declare before use.
ifdef is a regression in my view
allowing functions to be called as if they were procedures

Agreed. I half-get call-before-declare, but

s[1] = {1,2,3} 
string s 

...

Maybe there are some special circumstances for this kind of thing with variables being declared after. It turns out this code gives an error:

include std/types.e 
s[1] = {1,2,3}  
cstring s  

The error is

<0074>:: Errors resolving the following references: 
    's' (wtf.ex:2) has not been declared. 
 
s[1] = {1,2,3} 
 ^ 

We probably do have different checkout revisions of Euphoria. It would surprise me if that wasn't the case.

As for the map example, there are all kinds of situations where the user needs to type in the same value twice because the true intention is to modify a value rather than assign a new value. I have some ideas for that. They all have the following properties.

  • The modified object has to appear once in the expression.
  • It must look different to a normal pass by value call.

The last thing I would like to see in EUPHORIA would be something like this:

-- Append is now pass by reference 
append(s, 5) 

These are some of my ideas

countries = append(countries, "Sweden") 
-- becomes 
countries.append("Sweden").   
-- or 
countries append="Sweden" 
new topic     » goto parent     » topic index » view message » categorize

11. Re: Promote Euphoria - MAKE A PAGE ON WIKIPEDIA

SDPringle said...

What I meant earlier by Euphoria having "pass by value semantics",

The problem is that when someone from a completely different language sees "pass by value", they may assume that passing a 1000x1000 array has to shove 4MB or 8MB on the call stack.
And if they see "pass by reference", they will assume it can be (accidentally) modified in-situ, without explicitly returning it.
So we should use "copy on write": just as fast as pass by reference, but eliminates the associated danger of accidental corruption.

SDPringle said...

We probably do have different checkout revisions of Euphoria.

That was based on recollections of my experiences of translating Eu code to Phix, but now I can't find an actual example... (felt sure there were a couple in GtkEngine.e or similar)

I take it you already know that for your last example, this would work (and unlike Eu, Phix has variable length slice substitution, so you can put anything anywhere)

countries &= {"Sweden"} 
new topic     » goto parent     » topic index » view message » categorize

Search



Quick Links

User menu

Not signed in.

Misc Menu