1. I don't like the intro page of the documentation.

Here is a suggested change to the first page of the documentation:


OpenEuphoria is...fast | flexible | friendly...the programming language with great features.

Accelerate your programming.
Euphoria programs run faster than conventional interpreted languages; Euphoria programs can be even faster after compiling. The power and simplicity of Euphoria makes rapid program development a reality.
Accommodate you needs.
Euphoria gives you flexibility and power. Euphoria is a general purpose, versatile, multi-gui, portable, and multi-platform. Develop programs quickly using the interpreter. Compile programs and produce independent applications for distribution. Write at a high level and yet interface to C. Unique simplified data handling requires only atoms/sequences. The standard library provides plenty of utility. Euphoria speed does not compromise subscript checking, uninitialized variable checking, garbage collection, and numerous other run-time checks.
Accomplish more.
Euphoria is small and friendly: easy to read, easy to learn, and easy to use. Atoms/sequences are higher level and easier to use than conventional data-types. Write code the way you want with simple English words and freeform layout. Euphoria is responsive and gives useful error messages when you need them. Euphoria is supported with GUI libraries, tracing, testing, documentation tools, editing choices, sample programs, and a helpful forum. Euphoria is free and open source and actively being developed.

Yes, it is true.
Euphoria users are understandably enthusiastic. With little effort you can confirm, for yourself, that Euphoria is an exceptional programming language. To learn more about Euphoria just try it out--download one 12MB file, install quickly on Windows, Unix (Linux, BSD, ...), or OS X, and get a ready to use programming environment with documentation and sample programs.
Here is proof, not just hype.

  • Benchmarking to show that Euphoria programs execute faster than Python, Perl, Ruby, and PHP.
  • Examples to illustrate the flexibility of Euphoria.
  • Easy-to-learn and easy-to-program illustrated; a language that is simple, small, consistent, and predictable.

The most useful comments would be unfettered, even brutal, ...

I welcome your ideas

Tom

new topic     » topic index » view message » categorize

2. Re: I don't like the intro page of the documentation.

Go for it!

useless

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

3. Re: I don't like the intro page of the documentation.

_tom said...

Here is a suggested change to the first page of the documentation:

Great job. I like the feel of it. It is active, straight-forward and enthusiastic.

However, because the data-type situation is very different to most anything else that existing programmers have dealt with, you might want to elaborate a bit more ...

said...

The language has a simplified data-type concept. It only has Atoms* (numbers) and Sequences (dynamic lists) which are both statically typed, and Objects (run time variants). These are higher level and easier to use than conventional data-types.

* Technically it also has Integers which are a special form of Atoms, optimized for integral values.

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

4. Re: I don't like the intro page of the documentation.

DerekParnell said...

The language has a simplified data-type concept. It only has Atoms* (numbers) and Sequences (dynamic lists) which are both statically typed, and Objects (run time variants). These are higher level and easier to use than conventional data-types.

* Technically it also has Integers which are a special form of Atoms, optimized for integral values.

I'd have made it even easier and faster to read, not more involved right up front, Derek. At worst, i'd say ".... user defined types, and three builtin types: atoms for single numbers and characters, sequences for lists and strings, and the untyped objects". Details follow via links....

useless

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

5. Re: I don't like the intro page of the documentation.

useless_ said...
DerekParnell said...

The language has a simplified data-type concept. It only has Atoms* (numbers) and Sequences (dynamic lists) which are both statically typed, and Objects (run time variants). These are higher level and easier to use than conventional data-types.

* Technically it also has Integers which are a special form of Atoms, optimized for integral values.

I'd have made it even easier and faster to read, not more involved right up front, Derek. At worst, i'd say ".... user defined types, and three builtin types: atoms for single numbers and characters, sequences for lists and strings, and the untyped objects". Details follow via links....

useless

I like that. I disagree with the language being "statically-typed" as Derek said it was.

Objects are dynamically typed. Atoms and sequences represent values and lists or strings, respectively. I think that useless nailed it with some minor changes:


Euphoria combines the flexibility and rapid-development of dynamically-typed languages with the reliability and accuracy of statically-typed languages.
There are three main* built-in types: atoms for representing single values such as characters, integers, or real numbers; sequences for strings, lists of values, and even lists of lists; and dynamically-typed objects which can represent any value or list. Users requiring stricter type-checking can define their own types ensuring that bugs get caught earlier in development.
*An integer type is also provided for performance purposes.


I don't know why the creole isn't working for this post. Again.
Okay, I guess I figured it out.

Useless' post is still more concise, but I gave it a shot.

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

6. Re: I don't like the intro page of the documentation.

jaygade said...

I disagree with the language being "statically-typed" ...

Ok, I stretched the meaning of the term. But in my defense, 'statically-typed' refers to data-type usage being validated at compile time whereas Euphoria does it at run time. However, with a bit more work, we could get the parser to pick up many instances of incorrect data type usage.

For instance ...

procedure FOO(integer a, sequence b) 
   ---  whatever --- 
end procedure 
 
FOO( "abc", 3) 

This would fail at run-time but we could get it to fail at parse time instead. The difference is that we could pick up bugs before the bad code was run.

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

7. Re: I don't like the intro page of the documentation.

DerekParnell said...
jaygade said...

I disagree with the language being "statically-typed" ...

Ok, I stretched the meaning of the term. But in my defense, 'statically-typed' refers to data-type usage being validated at compile time whereas Euphoria does it at run time. However, with a bit more work, we could get the parser to pick up many instances of incorrect data type usage.

For instance ...

procedure FOO(integer a, sequence b) 
   ---  whatever --- 
end procedure 
 
FOO( "abc", 3) 

This would fail at run-time but we could get it to fail at parse time instead. The difference is that we could pick up bugs before the bad code was run.

We do this in some cases. Right now, I think it's only for inlined routines. When I run your code on 4.0.0 (or later), I get:

$ eui405 bug.ex 
/home/matt/eu/test/bug.ex:4 
<0146>:: Type Check Error when inlining literal 
FOO( "abc", 3) 
             ^ 

Matt

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

8. Re: I don't like the intro page of the documentation.

A one-of-a-kind language.
Euphoria has a unique data-type design. Three, easy to learn, data-types achieve what in a conventional language requires many, harder to learn, concepts. An atom is any single datum (number, integer, character). A sequence is any collective data (atom, sequence, object, nested sequence, string, list, array, stack, tree, ... ). An object is dynamically either an atom or sequence. Specify integer to gain performance. Create your own user-types to ensure strict type-checking to catch bugs. Euphoria is a remarkable blend of static and dynamic typing.

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

9. Re: I don't like the intro page of the documentation.

A one-of-a-kind language.
Euphoria has a unique data-type design. Three, easy to learn, data-types achieve what in a conventional language requires many, harder to learn, concepts. An atom is any single datum (number, integer, character). A sequence is any collective data (atom, sequence, object, nested sequence, string, list, array, stack, tree, ... ). An object is dynamically either an atom or sequence. Specify integer to gain performance. Create your own user-types to ensure strict type-checking to catch bugs. Euphoria is a remarkable blend of static and dynamic typing.


(off topic, leaving the : out in the second line resulting in an invisible post)

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

10. Re: I don't like the intro page of the documentation.

_tom said...

A one-of-a-kind language.
Euphoria has a unique data-type design. Three, easy to learn, data-types achieve what in a conventional language requires many, harder to learn, concepts. An atom is any single datum (number, integer, character). A sequence is any collective data (atom, sequence, object, nested sequence, string, list, array, stack, tree, ... ). An object is dynamically either an atom or sequence. Specify integer to gain performance. Create your own user-types to ensure strict type-checking to catch bugs. Euphoria is a remarkable blend of static and dynamic typing.


Looks very good for a short description.

_tom said...

(off topic, leaving the : out in the second line resulting in an invisible post)

(Leaving a blank line between the ';' word and ':' definition will also screw up the formatting, I found last night.)

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

11. Re: I don't like the intro page of the documentation.

_tom said...

A one-of-a-kind language.
Euphoria has a unique data-type design. Three, easy to learn, data-types achieve what in a conventional language requires many, harder to learn, concepts. An atom is any single datum (number, integer, character). A sequence is any collective data (atom, sequence, object, nested sequence, string, list, array, stack, tree, ... ). An object is dynamically either an atom or sequence. Specify integer to gain performance. Create your own user-types to ensure strict type-checking to catch bugs. Euphoria is a remarkable blend of static and dynamic typing.


(off topic, leaving the : out in the second line resulting in an invisible post)

There's too much punctuation. It's not correct to drop in commas after every modifier or phrase.

And it isn't unique, but i don't remember all the languages with sequences, etc. Python has sequences, another language about the time RDS built Eu had sequences. I don't remember enough.

useless

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

12. Re: I don't like the intro page of the documentation.

eukat_ said...

And it isn't unique, but i don't remember all the languages with sequences, etc. Python has sequences, another language about the time RDS built Eu had sequences. I don't remember enough.

Agreed. DCuny changes sequences into java.lang.Vectors, and one can use the same approach in C# by using List<Object>. I think someone else at one point in time made an explicit comparison to a language called Icon. And there's no comparing this against Lisp's lists.

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

13. Re: I don't like the intro page of the documentation.

Right, but I think that you could argue that the datatype design as a whole is unique, even though it contains features from other languages.

Lisp has atoms and lists and of course lists can contain atoms or other lists or even functions (which are just lists or atoms themselves), etc., but it's not a procedural language. I don't know if you can define user-types with boundary checking and error conditions, although apparently understanding Lisp is one of those things that elevates you above mere mortals.

Isn't using Java's Vectors and C#'s Lists way more complicated as well? Can they easily contain arbitrary mixed data like sequences do?

lua has sequences too, but their type system is more complicated than Euphoria's I think.

I don't know much about Icon, although a quick scan of the Wikipedia page shows it has arbitrary lists.

Maybe "unique" is a little strong.

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

14. Re: I don't like the intro page of the documentation.

jaygade said...

Right, but I think that you could argue that the datatype design as a whole is unique, even though it contains features from other languages.

I don't have any reasons to disagree with this.

jaygade said...

Isn't using Java's Vectors and C#'s Lists way more complicated as well?

Java's Vectors were not generic and were superceded by Lists, which are.

They all are a lot more complicated though (as they are fully fledged object oriented classes with many methods implemented, as well as a number of fields containing metadata).

jaygade said...

Can they easily contain arbitrary mixed data like sequences do?

The List classes of both languages can be typed (e.g. you can have a List<int> etc), and generally should be. However, a List<Object> is one way to create a heterogeneous list.

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

15. Re: I don't like the intro page of the documentation.

Kat said...

There's too much punctuation. It's not correct to drop in commas after every modifier or phrase.

And it isn't unique, but i don't remember all the languages with sequences, etc

Oops ... I'm sorry to have started this tweaking, Tom. Anyhow, with Kat's thoughts in mind, how's this tweak ...

A one-of-a-kind language.
Euphoria has a simple data-type design. Its three built-in data-types achieve what in a conventional language requires many, harder to learn concepts.
An object can dynamically hold either an atom or a sequence. An atom can hold a single number (floating point or integer). A sequence is a variable length array of objects. Together, these can be used to build more complex types (eg. string, list, stack, tree, ... ). You can also use integer as a special form of atom to gain performance. Additionally you can define your own user-types. Euphoria is a remarkable blend of static and dynamic typing.

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

16. Re: I don't like the intro page of the documentation.

DerekParnell said...
Kat said...

There's too much punctuation. It's not correct to drop in commas after every modifier or phrase.

And it isn't unique, but i don't remember all the languages with sequences, etc

Oops ... I'm sorry to have started this tweaking, Tom. Anyhow, with Kat's thoughts in mind, how's this tweak ...

A one-of-a-kind language.
Euphoria has a simple data-type design. Its three built-in data-types achieve what in a conventional language requires many, harder to learn concepts.
An object can dynamically hold either an atom or a sequence. An atom can hold a single number (floating point or integer). A sequence is a variable length array of objects. Together, these can be used to build more complex types (eg. string, list, stack, tree, ... ). You can also use integer as a special form of atom to gain performance. Additionally you can define your own user-types. Euphoria is a remarkable blend of static and dynamic typing.

I am not objecting to it, but i cannot see where that fits into Tom's original proposal. His pov on the front page is more of view from 50,000ft, with all the other languages laid out with it like farming plots from horizon to horizon. What Tom is doing is getting the pilot's attention, so he makes a second pass at reduced speed to read the details. Like seeing a small billboard advertisement on the highway at 70mph, and slowing down to read the second one a little more before pulling over to do business.

I think you want to say it has simple variables (which at this point you describe simply) which you can typecast if you like, nest if you like, that are handled extremely quickly, and have transparent garbage and pointer collections. Page1 tells you if it's a cow or corn farm. Page2 covers the details. Imo.

useless

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

17. Re: I don't like the intro page of the documentation.

Kat has a sense of what is needed for the first page of the documentation.

I expected some comments (grunts from trolls) about my blatant use of the letter "a" to start each paragraph--that's my attempt a PR style writing.

I can find nearly identical descriptions of all languages. They are all fast, easy to learn, powerful, easy to read, ..., and more of the same. There is never a "page two" that justifies any claims.


"Tweeking" the introduction is especially valuable right now. This project needs ideas.

"built-in data-types"

  • that clarifies the following reference to "user-types"

"array of objects"

  • "array" is an implementation of a mathematical matrix (as in Fortran)
  • "objects" can unfortunately be confused with OOP

"An object can dynamically hold either an atom or a sequence."

  • makes sense to an existing Euphoria user, but how do I explain this to someone new to Euphoria?

datum and data are pedantic, but also descriptive

single datum vs compound data

  • I am searching for a nice distinction between atom and sequence
  • any ideas?

two, three, or four data-types?

Ancients (the really old ones) had a math system based on one, two, and many.

Therefore two (the largest number available) is reason describe Euphoria as having two data-types: atom and sequence. An object is not a distinctive data-type, only an "either or" of the two fundamental types. This makes the description of Euphoria smaller and simpler.

An "integer" is just an appendix; if integers did not exist then Euphoria programs would still run. Integers for efficiency make sense to experts but are just noise to a novice. This suggests:

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."


A "list" data-type appears in many languages. A shopping list is natural so that any programming language better be able to make one. Lisp is lists (wonderfully elegant) but not everyone is willing to put up its eccentricity. Lists have been added to many languages but that just increases the number of compound data-types available for that language. Euphoria uses the sequence (aka list) as a fundamental design choice; as best as I can tell sequences make Euphoria unique.

A "primitive" data-type appears in many languages. Typically that means integer, float, boolean, and character, but sometimes ending up with a dozen variations. Euphoria uses the atom and just the atom; as best as I can tell that also makes Euphoria unique.

So an atom-sequence design is unique and special to Euphoria. (Adding object, integer, and user-types results in a practical language.)

Therefore I conclude that: "Euphoria has a unique data-type design."

The atom-sequence is the basis of clean unified design. Operators always work the same ( + always adds, not sometimes concatenates). Sequences always behave the same (same indexing, slicing, ..., for all sequences). In a conventional language things are not so tidy. So again I conclude that: "Euphoria has a unique data-type design."

Remaining features could be described as "industry standard." Loops, conditionals, assignment, and the rest are logical adaptations of features found in all languages.

So, can I stick with "unique" and "one-of-a-kind?"


This introduction to Euphoria is contingent on my writing four essays where I justify my claims. I'm waiting for anti-Euphoria trolls to appear so I can get more ideas on what to write.


After I do several re-writes, I will appreciate Kat's final word on fixing my grammar.


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

18. Re: I don't like the intro page of the documentation.

_tom said...

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."

Clarification: In Euphoria, there is no size advantage to using a integer over an atom. Atoms which are within the integer range (and have no fractional part) take up the same amount of space.

_tom said...

I'm waiting for anti-Euphoria trolls to appear so I can get more ideas on what to write.

Fortunately (or unfortunately?) we don't get a lot of anti-Euphoria trolls here.

Otherwise I think you're on the right track.

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

19. Re: I don't like the intro page of the documentation.

_tom said...

"built-in data-types"

  • that clarifies the following reference to "user-types"

I think most programmers would understand that, but you could say "user defined types" or "you name the data type and what is allowed in it".

_tom said...

"array of objects"

  • "array" is an implementation of a mathematical matrix (as in Fortran)
  • "objects" can unfortunately be confused with OOP

I agree with what you say about "array", to me a sequence is 2D, and cannot be 3D, 4D etc.. But it can be nested, it can be reinterpreted.
Can't help with the "object", except to say it's untyped and the real root of Eu's datums.

_tom said...

"An object can dynamically hold either an atom or a sequence."

  • makes sense to an existing Euphoria user, but how do I explain this to someone new to Euphoria?

It's an untyped variable which can hold any other type. A wonderful feature is it can be tested whenever you want to see what type is in it. It's untypedness slows Eu down somewhat, which is why there are atoms and sequences.

_tom said...

datum and data are pedantic, but also descriptive

single datum vs compound data

  • I am searching for a nice distinction between atom and sequence
  • any ideas?

RDS explained it nicely, but i'll paraphrase since we have a weasel mascot now: an atom is one of anything that fits in a computer's bite, a sequence is lunch.

_tom said...

two, three, or four data-types?

Ancients (the really old ones) had a math system based on one, two, and many.

Therefore two (the largest number available) is reason describe Euphoria as having two data-types: atom and sequence. An object is not a distinctive data-type, only an "either or" of the two fundamental types. This makes the description of Euphoria smaller and simpler.

An "integer" is just an appendix; if integers did not exist then Euphoria programs would still run. Integers for efficiency make sense to experts but are just noise to a novice. This suggests:

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."


A "list" data-type appears in many languages. A shopping list is natural so that any programming language better be able to make one. Lisp is lists (wonderfully elegant) but not everyone is willing to put up its eccentricity. Lists have been added to many languages but that just increases the number of compound data-types available for that language. Euphoria uses the sequence (aka list) as a fundamental design choice; as best as I can tell sequences make Euphoria unique.

A "primitive" data-type appears in many languages. Typically that means integer, float, boolean, and character, but sometimes ending up with a dozen variations. Euphoria uses the atom and just the atom; as best as I can tell that also makes Euphoria unique.

So an atom-sequence design is unique and special to Euphoria. (Adding object, integer, and user-types results in a practical language.)

Therefore I conclude that: "Euphoria has a unique data-type design."

The atom-sequence is the basis of clean unified design. Operators always work the same ( + always adds, not sometimes concatenates). Sequences always behave the same (same indexing, slicing, ..., for all sequences). In a conventional language things are not so tidy. So again I conclude that: "Euphoria has a unique data-type design."

So, can I stick with "unique" and "one-of-a-kind?"

If you want to present that much arguement to justify it, even to newbies. If someone is learning a new spoken human language, i'd give them other simpler data before i gave them an 800 page dictionary and an 800 page cultural reference.

useless

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

20. Re: I don't like the intro page of the documentation.

jaygade said...
_tom said...

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."

Clarification: In Euphoria, there is no size advantage to using a integer over an atom. Atoms which are within the integer range (and have no fractional part) take up the same amount of space.

This is incorrect. An atom stored as floating point (which can happen for any number of reasons) is really a pointer to a struct that contains a floating point value, a reference count and another pointer:

struct d {                         /* a double precision number */ 
	eudouble dbl;                    /* double precision value */ 
	int ref;                      /* reference count */ 
	cleanup_ptr cleanup;           /* custom clean up when sequence is deallocated */ 
}; /* total 16 bytes */ 

Of course, this is 16-bytes only on 32-bit euphoria.

Matt

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

21. Re: I don't like the intro page of the documentation.

mattlewis said...
jaygade said...
_tom said...

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."

Clarification: In Euphoria, there is no size advantage to using a integer over an atom. Atoms which are within the integer range (and have no fractional part) take up the same amount of space.

This is incorrect.

Yeah, I was going to say this too, but I re-read Jay's post again, and he is correct though might benefit from rewording. Jay is saying that assigning integer values to an 'atom' variable takes up no more space than assigning it to an 'integer' variable.

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

22. Re: I don't like the intro page of the documentation.

You see why none of that should be on the front page?

Tell the basics, show a "hello world" in console and in a gui. Show an Eu app using the internet, show one talking to a Pi or Arduino. All those details should go into the nitty gritty details page. Show why someone needs Eu to better do what they need doing.

useless

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

23. Re: I don't like the intro page of the documentation.

Kat said...

You see why none of that should be on the front page?

I'm not disagreeing, Kat.

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

24. Re: I don't like the intro page of the documentation.

DerekParnell said...
mattlewis said...
jaygade said...
_tom said...

"Use the integer data-type (a special case of the atom) when speed and low memory use are important."

Clarification: In Euphoria, there is no size advantage to using a integer over an atom. Atoms which are within the integer range (and have no fractional part) take up the same amount of space.

This is incorrect.

Yeah, I was going to say this too, but I re-read Jay's post again, and he is correct though might benefit from rewording. Jay is saying that assigning integer values to an 'atom' variable takes up no more space than assigning it to an 'integer' variable.

IIRC there is a case, new to 4.0, where this is not true any longer. That is with autopromotion - when you attach a delete routine to an integer, it is promoted into the full floating point format (and thus taking up all that extra space) so it can safely store the information for the delete routine - even though the actual value would otherwise fit into a normal integer. std/eumem.e is affected by this. (Regex works similarly, though on 32bits the values would be addresses requiring a full atom anyways.) I think this applies even if the variable is explicitly declared as an integer rather than an atom.

But in the normal case, jaygade is correct.

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

25. Re: I don't like the intro page of the documentation.

jimcbrown said...

IIRC there is a case, new to 4.0, where this is not true any longer. That is with autopromotion - when you attach a delete routine to an integer, it is promoted into the full floating point format (and thus taking up all that extra space) so it can safely store the information for the delete routine - even though the actual value would otherwise fit into a normal integer. std/eumem.e is affected by this.

Yes, this was the main thing I was thinking of, but I think there are other cases where a calculation result would be demoted if stored into an integer variable. For instance:

atom x 
integer y 
object z = 2.5 
x = z - 0.5 
y = z - 0.5 
? x & y & z 

You can perhaps see this happening most easily by translating. The key part is this:

 
    /** bug.ex:7	y = z - 0.5*/ 
    _1y_170 = NewDouble(DBL_PTR(_1z_171)->dbl - DBL_PTR(_9)->dbl); 
    if (!IS_ATOM_INT(_1y_170)) { 
        _1 = (object)(DBL_PTR(_1y_170)->dbl); 
        DeRefDS(_1y_170); 
        _1y_170 = _1; 
    } 
jimcbrown said...

(Regex works similarly, though on 32bits the values would be addresses requiring a full atom anyways.)

Yes, except that regexes are sequences to begin with, so the only difference is the extra bit of metadata for regex cleanup.

jimcbrown said...

I think this applies even if the variable is explicitly declared as an integer rather than an atom.

If you store an atom with a delete routine as an integer, the actual atom created will only be stored in a temp, and it will go away because the integer does not hold onto a reference. Simple demo:

procedure its_gone( object o ) 
	printf(1, "cleaning up after %d\n", o ) 
end procedure 
 
integer foo = delete_routine( 1, routine_id("its_gone" ) ) 
puts(1, "after foo...\n") 
 
atom bar = delete_routine( 2, routine_id( "its_gone" ) ) 
puts(1, "after bar...\n" ) 
bar = 0 
puts(1, "bar is gone...\n") 

Matt

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

26. Re: I don't like the intro page of the documentation.

I'm not familiar with 4.1 yet, I'm barely able to understand the 4.05 internals!

But I did say "values in the integer range with no fractional part". From my reading of the docs (probably out of date), that does hold true for atoms and sequences, right? Atoms and sequence members are stored as integers unless promoted to double?

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

27. Re: I don't like the intro page of the documentation.

jaygade said...

I'm not familiar with 4.1 yet, I'm barely able to understand the 4.05 internals!

None of this is 4.1. It's all in 4.0. smile

jaygade said...

But I did say "values in the integer range with no fractional part". From my reading of the docs (probably out of date), that does hold true for atoms and sequences, right? Atoms and sequence members are stored as integers unless promoted to double?

Yes, they are. We try fairly hard to keep things as integers, because they're a lot faster. It's probably a reasonable assumption to make as a normal euphoria coder, but once you start messing with the back end or the translator, you have to be careful about weird edge cases.

Matt

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

28. Re: I don't like the intro page of the documentation.

Grabing ideas from everyone, here is my next re-write. The final vession will have screen-grabs. The "proof" essays still to be written. Kat's analogy looks like a keeper.


OpenEuphoria

OpenEuphoria is...fast | flexible | friendly...the programming language with great features.

mongoose.png

Accelerate your programming.
Euphoria programs just run faster. The eui interpreter--likely the fastest you will encounter--provides rapid program development. Then, euc compiles your programs into self-contained executables that are faster again. Euphoria speed does not compromise subscript checking, uninitialized variable checking, garbage collection, and numerous other run-time checks.
Accommodate you needs.
Euphoria gives you flexibility and power.

web.png win.png wx.png gtk.png

Euphoria is a general purpose, versatile, multi-gui, multi-platform, and portable. Write at a high level and yet interface to C. Unique simplified data handling requires only atoms/sequences. The standard library provides plenty of utility.

Accomplish more.
Euphoria is small and friendly: easy to read, easy to learn, and easy to use. Atoms/sequences are higher level and easier to use than conventional data-types. Write code the way you want with simple English words and freeform layout. Euphoria is responsive and gives useful error messages when you need them. Euphoria is supported with GUI libraries, tracing, testing, documentation tools, editing choices, sample programs, and a helpful forum. Euphoria is free, open source, and actively being developed.

----------------------------------------- 
-- Euphoria is powerful  
sequence nums = { 5, 6, 7 }  
? nums * 2  
-- Output: { 10, 12, 14 }  
? nums * { 2, 3, 4 }  
-- Output: { 10, 18, 28 } 

----------------------------------------- 
-- Euphoria is flexible  
while 1 label "families" do  
  while 1 do -- labels are optional  
    while 1 label "children" do  
      exit "families" -- exit top level while  
    end while  
  end while  
end while 

----------------------------------------- 
-- Euphoria is innovative  
integer easy = 1_923_993, hard = 1923993  
printf(1, "%d = %d\n", { easy, hard })  
-- Output: 1923993 = 1923993  
A one-of-a-kind language.
Euphoria has a unique data-type design. Three easy to learn built-in data-types achieve what in a conventional language requires many, harder to learn, concepts. Imagine our mongoose having a meal. An atom is just a bite: a single number, integer, or character. A sequence is the complete meal or entire buffet: mixed values, list, array, tree, string, nested, or flat. An object is universal and dynamic; you can taste just one bite or have the buffet.

Yes, it is true.
Euphoria users are understandably enthusiastic. With little effort you can confirm, for yourself, that Euphoria is an exceptional programming language. To learn more about Euphoria just try it out--download one 12MB file, install quickly on Windows, Unix (Linux, BSD, ...), or OS X, and get a ready to use programming environment with documentation and sample programs.
* Power explained: object, atom and sequence.

* Speed benchmarked: Euphoria is faster than Python, Perl, ...

* Examples illustrate: flexibility of Euphoria.

* Easy defined: a language that is simple, small, consistent, and predictable.

Power explained: object, atom and sequence.

"essay in progress"

Speed benchmarked: Euphoria is faster than Python, Perl, ...

"essay in progress"

Examples illustrate: flexibility of Euphoria.

"essay in progress"

Easy defined: a language that is simple, small, consistent, and predictable.

"essay in progress"


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

29. Re: I don't like the intro page of the documentation.

_tom said...

Grabing ideas from everyone, here is my next re-write. The final vession will have screen-grabs. The "proof" essays still to be written. Kat's analogy looks like a keeper.


OpenEuphoria

OpenEuphoria is...fast | flexible | friendly...the programming language with great features.

mongoose.png

How about a mouseover or alt text there to say it's a mongoose and why?

_tom said...

Accelerate your programming.
Euphoria programs just run faster. The eui interpreter--likely the fastest you will encounter--provides rapid program development.

Then, if you want to,

_tom said...

Then, euc compiles your programs into self-contained executables that are faster again. Euphoria speed does not compromise subscript checking, uninitialized variable checking, garbage collection, and numerous other run-time checks.

Hyperlinks for in-depth reading.
The following isn't showing in creole without the curly braces, consider this my bug notification of the problem:

[quote _tom] 
;Accommodate you needs.  
[/quote] 
But you don't know my needs. Besides, "your", not "you".

_tom said...

Euphoria gives you flexibility and power.

web.png win.png wx.png gtk.png

Euphoria is a general purpose, versatile, multi-gui, multi-platform, and portable. Write at a high level and yet interface to C

DLLs if you want

_tom said...

. Unique simplified data handling requires only atoms/sequences. The standard library provides plenty of utility.

Accomplish more.
Euphoria is small and friendly: easy to read, easy to learn, and easy to use. Atoms/sequences are higher level and easier to use than conventional data-types. Write code the way you want with simple English words and freeform layout. Euphoria is responsive and gives useful error messages when you need them. Euphoria is supported with GUI libraries, tracing, testing, documentation tools, editing choices, sample programs, and a helpful forum.

I'd hyperlink each of GUI libraries, tracing, testing, documentation tools, editing choices, sample programs, and a helpful forum. To separate pages, even, for some indepth non-distracting reading of each topic, with examples. The wiki should be used too.

_tom said...

Euphoria is free, open source, and actively being developed.

----------------------------------------- 
-- Euphoria is powerful  
sequence nums = { 5, 6, 7 }  
? nums * 2  
-- Output: { 10, 12, 14 }  
? nums * { 2, 3, 4 }  
-- Output: { 10, 18, 28 } 

----------------------------------------- 
-- Euphoria is flexible  
while 1 label "families" do  
  while 1 do -- labels are optional  
    while 1 label "children" do  
      exit "families" -- exit top level while  
    end while  
  end while  
end while 

I am not sure how this is laid out on the page, but i suggest two columns here, your multiply in one and a foreach in the other, then below those with your "while" in one, and an equally good "case" demo in the other. I'd then mention the interesting way you can jump into a while loop to emulate "repeat-until" loops, and the controlled "goto" to get you out of loops of any depth or complexity. Some mention should be made of tasks.e multitasking.

_tom said...

----------------------------------------- 
-- Euphoria is innovative  
integer easy = 1_923_993, hard = 1923993  
printf(1, "%d = %d\n", { easy, hard })  
-- Output: 1923993 = 1923993  
A one-of-a-kind language.
Euphoria has a unique data-type design. Three easy to learn built-in data-types achieve what in a conventional language requires many, harder to learn, concepts. Imagine our mongoose having a meal. An atom is just a bite: a single number, integer, or character. A sequence is the complete meal or entire buffet: mixed values, list, array, tree, string, nested, or flat. An object is universal and dynamic; you can taste just one bite or have the buffet.

Yes, it is true.
Euphoria users are understandably enthusiastic. With little effort you can confirm, for yourself, that Euphoria is an exceptional programming language. To learn more about Euphoria just try it out--download one 12MB

zip or rar (and link to current stable version, with the docs)

_tom said...

file, install quickly on Windows, Unix (Linux, BSD, ...), or OS X, and get a ready to use programming environment with documentation and sample programs.

<snip>

Looking really good, Tom.

useless

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

30. Re: I don't like the intro page of the documentation.

Tom, can you post the page on your site as you go, so we can see it like you have envisioned it, instead of limited in Eu's creole? Don't post it on a site you don't have take-down access to.

useless

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

31. Re: I don't like the intro page of the documentation.

Create a page on the Wiki for all of this stuff, and discuss it here (with links).

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

32. Re: I don't like the intro page of the documentation.

A wiki page showing documentation in progress:

http://openeuphoria.org/wiki/view/oEu%20intro.wc

You can add comments directly to the wiki or leave comments here.

TOM

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

Search



Quick Links

User menu

Not signed in.

Misc Menu