Re: The Promise of Forth
- From: Jonah Thomas <jethomas5@xxxxxxxxx>
- Date: Wed, 2 Apr 2008 15:26:26 -0400
Bruce McFarling <agila61@xxxxxxxxxxxx> wrote:
John Doty <j...@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
3. The nothing hypothesis
This assumes that, despite Forth's advantages, the users who have
abandoned it had no real reason to, and are simply idiots. Sorry,
some of them are extremely smart people.
The null hypothesis assumes no such thing.
The *point* of a null hypothesis is that it refrains from being one of
the competing alternate hypotheses. The null hypothesis is, "there's
nothing unusual here that needs explaining".
The null hypothesis in this case is that there is nothing surprising
about a computer language being in the position that Forth is in.
Since you can't contradict the null in favor of your working
hypothesis except by replacing it with a flimsy straw horse version,
there's no particular reason as of yet to take your working hypothesis
seriously.
If things were somewhat different he'd have a point here.
Like, there's a lot of luck in poker but poker players say it isn't a
game of chance. If you have a flaw in your poker strategy and your
opponents do not, eventually you will lose even if you get more than
your share of lucky hands. Similarly, if Forth has something
fundamentally wrong with it then it couldn't become popular even if lots
of people tried it -- most of them would put it aside. And if Forth was
a thousand times better than anything else it would have a very good
chance to become popular even with some bad breaks.
In biological evolution, new mutations have a very strong chance to get
lost while they're rare. In a steady state population, half the
individuals get lost before they reproduce, and our special mutant
couold be one of them. On average each gene leaves behind one copy for
the next generation, and if our mutant leaves two there's a chance both
of them will be lost the second generation, and if one of them is lost
then there's a chance the other will be lost the third generation. Once
there are, say, a hundred of them then it's unlikely they'll all be
destroyed by accident (unless they're together in the wrong place at the
wrong time). If they have an advantage they'll probably increase more or
less predictably, unless conditions change. Other things equal, the best
mutation should win provided it reaches a large enough population to
damp out the randomness. And the population in the meantime will look
like a power law. There's the wildtype, the thing that mostly took over
last time around. There are various mutations that are taking over.
There may be mutations that took over to a point and are now being
superceded by better ones. Lots of very rare types that have never been
very successful and never will be, fewer that are on their way up or
down, and maybe one that's dominant. In reality there may be some that
exploit specialty niches and will hang on in small or moderate nunbers
for a very long time.
If computer languages evolved like single-cell organisms, it would make
sense to say that Forth has had its day. Forth was once more popular
than it is now. There were Forth articles in BYTE magazine etc. Big
enough not to lose out due to random events. If it's lost ground that
can only be because there's a solid reason for it to lose ground.
But what if there's some reason to cut diversity? Some reason that the
type with the biggest numbers has an advantage just from having the
biggest numbers? Then alternatives have to be *much* better to have any
chance to increase.
So for example look at presidential nominations. Is there any reason to
think the best candidate will win? Or even the most electable candidate?
No, not particularly. The one who wins in New Hampshire traditionally
has gotten a great big advantage from winning there. And that early
result is something of a tossup. A candidate who's way inferior who wins
the early primaries can still lose, particularly if he makes some big
gaffe that the media choose to emphasise. But a candidate who trails
early -- due to random fluctuations -- is very unlikely to ever catch
up. You can't say the best candidate will win. But there will be a
winner.
Is computer language popularity more like evolution or more like a
political primary?
John Doty's idea that if Forth was good it would have taken over the
world already isn't as stupid as it looks. It isn't the same thing as
"Build a better mousetrap and the world will beat a path to your door.".
It depends on the assumption that millions of people get to choose for
themselves which language to use, and they tend to pick the best choices
for themselves, and Forth hasn't won out as often as it should have if
it was generally the best choice.
One way that computer languages are different from biological evolution
is that there's a threshold effect. To make a disruptive change, it's
important that the change be valuable enough to pay for the disruption.
The rule of thumb I've seen for businesses is that to be worth changing
procedures, the new approach needs to be twice as good as the old one.
See, you'll suffer some disruption. How long will you use the new system
before you want to make another change and suffer more disruption?
Unless the benefit is *substantial* then it just isn't worth doing.
Switching to Forth is a big disruption. You have to learn to factor. You
learn to test each little routine as you build it. RPN etc aren't nearly
as big a change as the change in programming habits. And you have to
believe the results will be worth the trouble or you won't put up with
that. Forth programmers claim that it's worth it, that they're well over
twice as productive. But you have to believe the claims before you'll
put in the time to find out whether they're true. That's a big barrier.
Like evolution, there isn't an end-point. People keep coming up with new
languages and pushing them. But like elections, a language that has lost
for awhile will be assumed to be a loser. Forth had its big chance when
there were a lot of microcomputers that had severe memory limitations
and slow floppy drives. When it's a choice between Forth and 8080
assembly language, Forth is an obvious win. And now most of the people
who remember Forth remember it as a system that fit into 8K of ROM and
all mass storage was with blocks. Just like they remember Basic with
line numbers. Tell them about Forth and that's what they'll think of, if
they're old enough to remember Forth at all.
So it does make sense if you want to publicise Forth now, you probably
should give it a new name. And you might as well have some new features
to point out. Forth doesn't have to be limited to 16 bits indirect
threaded, so it doesn't have to be slow on stupid benchmarks. It isn't
limited to blocks and block editors, though there's nothing wrong with
having those available. It allows locals. It has mechanisms available
for objects if you can work out for yourself precisely how to make
objects do you more good than harm. Professional Forths let you program
GUI interfaces and TCP/IP stacks, though the GUI interfaces aren't
factored well enough to make them simple.
What else should Forth provide? Wordlists work like lists. With some
sort of garbage collection, remove items and re-order items etc, we
could do a lot of list processing with apparent simplicity. What
features would actually be useful enough to provide?
.
- Follow-Ups:
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- References:
- Re: The Promise of Forth
- From: Aleksej Saushev
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- From: John Doty
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- From: Jonah Thomas
- Re: The Promise of Forth
- From: John Doty
- Re: The Promise of Forth
- From: Bruce McFarling
- Re: The Promise of Forth
- Prev by Date: Re: The Promise of Forth
- Next by Date: Re: The Promise of Forth
- Previous by thread: Re: The Promise of Forth
- Next by thread: Re: The Promise of Forth
- Index(es):
Relevant Pages
|