Re: Euphoria's identity/philosophy -- Where is the focus?

new topic     » goto parent     » topic index » view thread      » older message » newer message
Shian_Lee said...

1. The subject here is "philosophy" - after all any vector/struct/list/array/sequence is just 0's and 1's. But Euphoria is ALL about sequences and the amazing simplicity of manipulating them.

... when you think about Euphoria you think about Sequences. Sequences are the identity of Euphoria ...

Well that might be a bit too much of a claim, but sequences certainly are one of the defining aspects of the language. There are other salient aspects as well though, such as

  • arguments are only passed by value
  • automatic garbage collection
  • use of words rather than symbols for punctuation
  • automatic conversion between floating-point and integers
  • operations work on scalars and vectors

    1 + 1 -> 2
    {1,2} + 1 -> {2,3}
    {1,2} + {4,8} -> {5, 10}

Shian_Lee said...

2. About different coding styles: I believe that the philosophy of the language itself has the responsibility to "put an end" to how many built-in options the language will supply.

Since I'm not a programmer, I am thinking from another point of view:

In the army, and specially the air force, and in a lot of electrical and mechanical equipment - designers finally realized that maintaining-time is more crucial then development-time.

It means that instead of 35 different kinds of screws they use only 3. And it means that instead of 100 different tools - jet engine can be replaced with few tools.

Engineers realized that as many options as you have to deal with - to learn, to remember, and to use - as less efficient and reliable is maintainability.

Technology is technology, and the human brain is the same. Also in programming maintaining-time is crucial - much more then development-time. As less options as you have to remember and learn - as quicker and reliable is maintainability.

The air force had to learn this fact in the hard way: many people died because of the complexity of the mechanical design. Jets could not be ready on time. But now they removed any unnecessary option and complexity, so it's possible to fix big problems in a very short time.

I hope that now and in the future Euphoria will remain simple. In real life, simple control panels are the key for saving human lives. Simplicity always wins at last.

But I believe that you all know that already. Thanks.

Yes, however it turns out that the situation is not that simple smile

Albert Einstein said...

It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.

Which can be paraphrased as "Everything should be made as simple as possible, but don't over do it."

Achieving simplicity is actually complex. A good book on this subject is Edward de Bono's "Simplicity".

Some of the issues that arise when striving for simplicity include

  • We all have a different perception of what is simple.
  • Reducing something to very simple components can have the side effect of making it harder (more complex) to use.
  • Things that are simple to use (and achieve much) are usually possess hidden complexity.

When we were children, arithmetic was hard and doing sums with big numbers was complex. We went to school and our ideas of complex/simple were constantly changing. Division ... Long Division ... decimals ... matrices ... exponentiation ... differential calculus ... imaginary numbers ... etc. The more we learned the more things became simple, to a degree. Each of us eventually come to a level of mathematical proficiency that no amount of extra tuition will transform into simplicity. And that level is different for each of us. This applies to most things in life, including programming languages. This is not a fault of the subject matter. It is not a fault in anything actually - it just is.

Some people would view Euphoria as a toy language that is simple and without any sophistication. And they are correct ... for them. Other people might find it bewildering with the twisted things that programmers do with it. And they too are correct ... for them. Where does one "draw the line"?

In your example, the military settled on 3 different types of screws. Why not 2, or 4, or even 1? Surely one screw type would have been the simplest? Well, of course yes, for some aspects but it would have made other things more complex or difficult or maybe not even possible.

What if we made Euphoria simpler by removing all flow control statements except the goto? Definitely simpler. But also not worth the effort of having a language this simple. Where does one "draw the line"?

What if we only had one type of file (one directional byte-stream like the old tape drives). This would simplify the language. The open() statement would no longer need to know if its a binary or text mode file. And we could get rid of the seek(), position(), where() routines. Not a problem, right?

Okay, I'm belabouring the point now, I know. But the question is really, if Euphoria is to be kept as a simple language, we need to define what simple means, and thus where to "draw the line".

Lee, can you give me specific things that would make the language simpler?

new topic     » goto parent     » topic index » view thread      » older message » newer message


Quick Links

User menu

Not signed in.

Misc Menu