Subject: [TGBSL] Thoughts about trade-offs in design of scripting languages

From: Omer Zak <[email-masked]>
Date: Tue, 12 Feb 2002 10:12:25 +0200 (IST)

The subject of declaring (or fixing) the types of variables in languages,
which are essentially dynamically typed, is an example of a tradeoff.

Let's try to generalize this kind of tradeoff.

When developing software, one needs a language optimized for ease of
expression of one's ideas.  The language should not encumber the developer
with irrelevancies like dynamic memory management.  It should do as much
as possible for him (like automatic management of arrays and hashes).
This is the nice of languages like Perl or Python.

After the basic ideas have been implemented in an expressive language,
comes the time to implement them in an optimizable language.  Optimizable
language should provide the developer with all the power he needs to
optimize the critical parts of his algorithms.  Ease of expression or
freedom from cumbersome details are not important here.  This is the niche
of assembly language and C/C++.

There is a long experience in designing and working with languages of the
second kind.  After all, for several years, this kind of languages was the
only kind available for software development! 

A first step in designing The Great and Best Scripting Language (TGBSL)
would be to catalogue several algorithms, and finding which notation is
the best to express each algorithm in.  For example, the best notation to
express the factorial function would be something similar to:

DEFINE factorial(n) AS (n == 0) ? 1 : factorial(n-1) ENDDEF

(substitute your favorite tokens for 'DEFINE', 'AS' and 'ENDDEF'; my level
of discussion is more abstract than specifying the exact string to be used
to represent those tokens).

Then try to design a scripting language notation, which supports several
of the aforementioned notations.

Given recent developments in software development methodology:

1. A new scripting language would probably support design patterns, in a
   way to be defined.
2. A new scripting language would probably have an easy way to bind to any
   arbitrary computer language.  This includes function calling
   conventions and data types conversions.  Maybe, even the ability to
   mix, in the same source code file, notations belonging to different
   existing languages.
   (Such ability already exists, in rudimentary form, in all scripting
   languages, which contain the eval(string) and system(string)
   functions).

                                             --- Omer
There is no IGLU Cabal.  There are other ways to empower practitioners of
the Holy IGLU Way.
WARNING TO SPAMMERS:  see at http://www.zak.co.il/spamwarning.html

---

From: Shlomi Fish <[email-masked]>
Date: Wed, 13 Feb 2002 12:39:39 +0200 (IST)

I figured it stands for "Too General But Still L", but I cannot figure out
what the L stands for? If at all it should be Relevant or Pertinent?

Regards,

	Shlomi Fish

----------------------------------------------------------------------
Shlomi Fish        [email-masked]
Home Page:         http://t2.technion.ac.il/~shlomif/
Home E-mail:       [email-masked]

"Let's suppose you have a table with 2^n cups..."
"Wait a second - is n a natural number?"