> *Mate Wierdl writes:
>  |  How about Icon? http://www.cs.arizona.edu/icon/index.htm
> 
> You mean: "Why not a scripting language nobody has hard of, then there
> will be no language wars" :-)
> 
> Seriously, no matter how nice icon may be (I have not looked at it) we
> should chose something that is widely known (of).

It all depends on what we are aiming for.

If we are aiming for computer literate people that know how
to compile and install a Linux kernel and search for a file in their 
file-system, using Perl or some other wide-spread scripting language 
that has proven itself practical and useful would be fine, because 
those people are not scared of a little odd syntax, and they actually 
like to be a little nerdy and go through hundreds of pages of documentation
to learn how to do cool things.

If we are aiming for Amir's mom, we need something else.  And furthermore,
if we are aiming for Amir's mom, it doesn't matter if we chose a well-known
language, because Amir's mom does not know any programming language. 
The only thing that matters is how easy it is to learn to use it.
(I'm not saying that Amir's mom will suddenly start to spit out a
lot of LyX scripts, but I'm exaggerating to get the point across.)

I think we should find something in between.  Python fits this for me,
because it caters for both the programmer (he can implement the equation
solver in it) and the novice (because the syntax is easy to learn).
Unfortunately, practical considerations might invalid Python (it might
make it unacceptably difficult to install LyX.)

To me a language like Icon is not out of the question just because
it's not widely known.  Because no programming language is widely
known by the mayority of the target audience I aim for.

So, to me, the priorities are like this:

1) Ease of learning - natural, easy-to-learn syntax.
   This is a debatable thing, because there is no definition
   of natural, easy-to-learn syntax.  However, there is no
   doubt that (+ (1 2)) is more difficult than 1+2.
   Also, it's more difficult to write if (c==0) { a; } else { b; }
   than "if c=0 then a else b endif".

2) Ease of embedding - both for us and the target users.
   I.e. it should be easy to embed it into LyX, and it
   should be easy for users to compile and install LyX
   with the scripting language embedded.

3) Cross-platform - if not, we loose a lot of the benefits.
   With a stable scripting language embedded, we can start
   implementing vital features in it.  If it's not cross-
   platform, we can't.  Similarly, if we do not have a fixed
   "official" scripting language, we loose this ability as well.

4) Stability and Power.  Of course, if the scripting language
   implementation is buggy, LyX would be stable, and that's not
   acceptable.  Also, a scripting language that is not more expressive
   than the #define-macros in C is not interesting.  We want to be
   able to solve real problems with the language.

5) Well-knowness.  The more people that know the language, the
   more programmers do we instantly have.

So far, Python fails on 2), because it's not easy to get it to link.

Icon fails on 2), because it's not embeddable (as far as I can tell).

Perl fails on 1) IMO, but this is a matter of dispute.

Scheme, fails on 1).  Guile fails on 3) and 4).

Java-script fails on 1) IMO.

TCL also fails on 1) IMO (I have been studying it a bit - a lot of
arbitrary and strange syntax.)

However, if there was an embeddable Basic somewhere, I'd say that would
be the best bet.  

Once again, my perspective is not to get the scripting language I as 
a hacker would love, but rather what the novice users would be able to 
use.  If I was to chose for myself, I would go for ML or scheme, but if 
we do that, we'll loose a great fraction of the LyX users.

The thing is a real hacker is able to hack in any language you give him.
However, a novice user is not able to do anything in a hacker's language.

Greets,

Asger

Reply via email to