1. I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 05, 2013
- 3260 views
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.
- 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
2. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 05, 2013
- 3199 views
Go for it!
useless
3. Re: I don't like the intro page of the documentation.
- Posted by DerekParnell (admin) Jun 05, 2013
- 3182 views
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 ...
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.
4. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 05, 2013
- 3187 views
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
5. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 06, 2013
- 3179 views
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.
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.
6. Re: I don't like the intro page of the documentation.
- Posted by DerekParnell (admin) Jun 06, 2013
- 3147 views
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.
7. Re: I don't like the intro page of the documentation.
- Posted by mattlewis (admin) Jun 06, 2013
- 3142 views
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
8. Re: I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 06, 2013
- 3076 views
- 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.
9. Re: I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 06, 2013
- 3108 views
- 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)
10. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 06, 2013
- 3080 views
- 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.
(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.)
11. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 06, 2013
- 3077 views
- 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
12. Re: I don't like the intro page of the documentation.
- Posted by jimcbrown (admin) Jun 06, 2013
- 3070 views
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.
13. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 06, 2013
- 3053 views
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.
14. Re: I don't like the intro page of the documentation.
- Posted by jimcbrown (admin) Jun 06, 2013
- 3035 views
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.
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).
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.
15. Re: I don't like the intro page of the documentation.
- Posted by DerekParnell (admin) Jun 06, 2013
- 2997 views
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.
16. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 06, 2013
- 3023 views
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
17. Re: I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 06, 2013
- 3038 views
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.
18. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 06, 2013
- 3037 views
"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.
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.
19. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 06, 2013
- 3039 views
"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".
"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.
"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.
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.
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
20. Re: I don't like the intro page of the documentation.
- Posted by mattlewis (admin) Jun 06, 2013
- 3057 views
"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
21. Re: I don't like the intro page of the documentation.
- Posted by DerekParnell (admin) Jun 06, 2013
- 3035 views
"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.
22. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 06, 2013
- 2988 views
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
23. Re: I don't like the intro page of the documentation.
- Posted by DerekParnell (admin) Jun 06, 2013
- 2924 views
You see why none of that should be on the front page?
I'm not disagreeing, Kat.
24. Re: I don't like the intro page of the documentation.
- Posted by jimcbrown (admin) Jun 07, 2013
- 2930 views
"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.
25. Re: I don't like the intro page of the documentation.
- Posted by mattlewis (admin) Jun 07, 2013
- 3054 views
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; }
(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.
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
26. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 07, 2013
- 2921 views
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?
27. Re: I don't like the intro page of the documentation.
- Posted by mattlewis (admin) Jun 07, 2013
- 2901 views
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.
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
28. Re: I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 07, 2013
- 2880 views
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.
- 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.
![]() |
![]() |
![]() |
![]() |
- 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.
- "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"
29. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 07, 2013
- 2857 views
How about a mouseover or alt text there to say it's a mongoose and why?
- 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,
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".
![]() |
![]() |
![]() |
![]() |
DLLs if you want
. 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.
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.
-
----------------------------------------- -- 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)
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
30. Re: I don't like the intro page of the documentation.
- Posted by useless_ Jun 07, 2013
- 2848 views
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
31. Re: I don't like the intro page of the documentation.
- Posted by jaygade Jun 07, 2013
- 2838 views
Create a page on the Wiki for all of this stuff, and discuss it here (with links).
32. Re: I don't like the intro page of the documentation.
- Posted by _tom (admin) Jun 11, 2013
- 2757 views
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