I do think that ANS-FORTH had a big influence in beeing something very
harmful to the concept of FORTH. I think that ANS-FORTH was the A-Bomb
in terms of making it useable for a broad kind of people. As the first
thing, it made things to behave in a way you can predict. That is
good. The second thing is that it introduced some kind of "religion"
that you have to follow to be standard compliant. "Nothing new" you
could say.
What I would like to complain about today, is the "IMMEDIATE"-flag.
200x will still have this. So it is not better than ANS ever was. But
it could have more destructive power... Since at least for me it would
be "only" some words more to implement a 200x-layer. That I do have to
enhance will be the religion - the things I believe on, to be a good
ANS/200x-follower. Since the power of destruction increased, should it
be possible to call 200x a "H-Bomb"?
-Helmar
I decide avoid the IMMEDIATE flag or MACRO words.
If you have a IMM word, then you need think in the compiler.
I like resolve problems but not the same problem again and again...(20
year reinventing the well...some website say...)
When I think in a program no need think in the compiler...the compiler
is other problem.
the words like DOES> or STATE are for make the compiler, avoid this
words.
the good of the standars is there are many !
This implies for example to allow overloading of words. This means
words that work depending on current situation. It's not unusual that
words do so - imagine a optimizing compiler. Well, I currently do not
see much points where this could be needed - only compiler parts:
"IS", "TO" ...
> I decide avoid the IMMEDIATE flag or MACRO words.
> If you have a IMM word, then you need think in the compiler.
There is nothing wrong with "IMMEDIATE" in concept. It's wrong that
FORTH only knows about words that are either "IMMEDIATE" oder not
"IMMEDIATE".
> I like resolve problems but not the same problem again and again...(20
> year reinventing the well...some website say...)
> When I think in a program no need think in the compiler...the compiler
> is other problem.
Well. But FORTH is everything about making your own language. So you
can not exclude the compiler from users access if you want to follow
the concept. There is no good way to implement FORTH in a BNF-
scheme...
> the words like DOES> or STATE are for make the compiler, avoid this
> words.
"STATE" is a first kind of words I would like to call "missleading". I
call this word "compiler" now. So you say
COMPILER ON
instead of
STATE ON
Which of the two expressions are more clear to understand?
> the good of the standars is there are many !
Well, I know ANS to be used as standard today. Where are the others? I
dont think about implementations.
Regards, continue good work with R4,
-Helmar
if I make the space invaders clone I not like think is a compiler I
like make the video game...only
> > I decide avoid the IMMEDIATE flag or MACRO words.
> > If you have a IMM word, then you need think in the compiler.
>
> There is nothing wrong with "IMMEDIATE" in concept. It's wrong that
> FORTH only knows about words that are either "IMMEDIATE" oder not
> "IMMEDIATE".
>
I prefer not know any compiler state, not IMMEDIATE exist.
> > I like resolve problems but not the same problem again and again...(20
> > year reinventing the well...some website say...)
> > When I think in a program no need think in the compiler...the compiler
> > is other problem.
>
> Well. But FORTH is everything about making your own language. So you
> can not exclude the compiler from users access if you want to follow
> the concept. There is no good way to implement FORTH in a BNF-
> scheme...
>
I like much more the elegance of the stack, for avoid parameters.
perhaps is not good idea the BNF-scheme....
> > the words like DOES> or STATE are for make the compiler, avoid this
> > words.
>
> "STATE" is a first kind of words I would like to call "missleading". I
> call this word "compiler" now. So you say
>
> COMPILER ON
>
> instead of
>
> STATE ON
>
> Which of the two expressions are more clear to understand?
>
the idea is less words..not more...
you add COMPILER, ON, OFF,
I say not have compiler state, don´t worry how compile, only write the
program, not the compiler again.
> > the good of the standars is there are many !
>
> Well, I know ANS to be used as standard today. Where are the others? I
> dont think about implementations.
>
sorry, it´s a joke.
I dont believe in standards, fix the desing of the system and mix the
problem
like..no more space invaders...hello save files
if you like resolve fast a problem,
don't use the sytem of other !
at last sure have bugs !
:)
> Regards, continue good work with R4,
> -Helmar
thanks...
Good point. The point is that you want to have the computer working as
you want (or need) it. FORTH is not the solution. It's the base of
solution. At least at my thinking. I'm not the end-user btw ;)
Regards,
-Helmar
Good point.
end-user is not an idiot too ;)
What good are you doing , limiting
the word Forth to this restriction ?
How are you helping ?
Forth is ( with or without your consent)
a concept . A way to program computers.
It is NOT limited to using a STACK , nor
must it have a STATE flag to be a
"genuine" Forth .
Forth means a place to store your stuff ,
and a symbolic way to use the
uC , mcu ,CPU's instruction set , so you can
create executable programs in minutes ,
using the tiny G.U.I. and without need for
a ASCII keyboard , nor the English langauge.
It does use FAT32 , yet uses 120 GB HDD ,
it does NOT do RS232 ,nor the retricted USB
"one way" Bill Gates protocol .
It encodes Video and audio , and compresses
it , but not by MPG ,JPG nor MP3 methods .
Now you can slam me for saying MPG et al
are terribly difficult , so i must be lying ,
when in fact MPeG made MPG-2 purposely
complicated , to get the Copyright !
To compress , one must analyse , but after
analysing , you see how simple it is , and
involves no DescreteCosTransforms at all !
Nor does my computer "drop" bits , requiring
my Video protocol , to send a reference frame
to resync !!! ha ha ha ...
Programming is easy if you DONT study
what others have done .
Every book ever written , on programming
makes it more difficult .
P' has nothing to do with expertice at the
English language , nor mastering text .
nor college degrees ..
Its different , it has to do with imagination ,
not I.E.E.E. 488 Floating Point .
They offered worthless computer std ,
that no one uses !
For speed , all of us programmers , "normalize"
the Exponents to each task !
Why dont you "nay sayers" go find
a non-creative place to post ?
.
.
> Why does "Forth" mean a specific act
> by Chuck Moore on september 17 1969 .
> run only on a HP 1000 ?
I would say that he called the thing "FORTH", so it is "FORTH". It
evolved a little since then and now we call (most of) the languages
that derrived from that origin "FORTH".
> What good are you doing , limiting
> the word Forth to this restriction ?
As I told: I think the thing Chuck Moore developed on september 17
1969 (well, I'm not aware it was exactly this date ;) ) has to be
respected. It's known by it's name FORTH.
> How are you helping ?
How can I help a sum of five letters? In alphabetical order: F H O R T
> Forth means a place to store your stuff ,
> and a symbolic way to use the
> uC , mcu ,CPU's instruction set , so you can
> create executable programs in minutes ,
> using the tiny G.U.I. and without need for
> a ASCII keyboard , nor the English langauge.
This is what it means to you. I would follow
"Forth means a place to store your stuff, you can create executable
programs in minutes."
I would not like to see mentioned "uC", "mcu", "CPU instruction set"
in a definition. Also I would not like to see G.U.I. in definition.
Even the usage of a GUI follows some language-using-like acts. Well,
FORTH as in ANS is bound to English language. A standard at some way
does some definitions at this point. But I perfectly could imagine to
write a FORTH that uses only german words.
> Programming is easy if you DONT study
> what others have done .
Yes and no. You've to study what others can do and try to figure out,
how they did it. There are a few people on this planet that take a
look on a programmed thing and instantly do have some idea about how
it could be implemented. Those peoples time is wasted with 100%
understanding what the other did. They need to understand only, how
the things work in principle. FORTH is a good language for such people
- because they can express (in an own language) better than with
things called "programming language" that where made by others.
> Every book ever written , on programming
> makes it more difficult .
Definitively not. Something written about methods can be very
inspiring. But you are right that there are only a few things out
there that are really interesting.
> P' has nothing to do with expertice at the
> English language , nor mastering text .
> nor college degrees ..
Agreed.
> Why dont you "nay sayers" go find
> a non-creative place to post ?
Just be careful. I'm a german language speaker - so "nay" is not in my
repertoire.
BTW: How about allowing others to access your system? Or your ideas in
a little more "reality". Maybe it would cause some creative process.
-Helmar
--
==================================================
Elizabeth D. Rather (US & Canada) 800-55-FORTH
FORTH Inc. +1 310-491-3356
5155 W. Rosecrans Ave. #1018 Fax: +1 310-978-9454
Hawthorne, CA 90250
http://www.forth.com
"Forth-based products and Services for real-time
applications since 1973."
==================================================
Given that it is used widely, it will certainly be there. I you want
to get rid of it in a future standard, develop a way to do the things
that people do with IMMEDIATE in a better (IYO) way, but close enough
to standard Forth that users and implementors of standard Forth
systems will find easy to adopt, then popularize it; if you are
successful, it will find its way into a future standard, IMMEDIATE
will fall out of use, and will eventually be declared onsolescent and
eventually removed from some future standard (not Forth200x).
>That I do have to
>enhance will be the religion - the things I believe on, to be a good
>ANS/200x-follower.
A strange religion. Maybe you should discuss this with Wil Baden.
I expect that system implementors implement Forth 200x features so
that Forth 200x programs run on their system, not for religious
reasons.
- anton
--
M. Anton Ertl http://www.complang.tuwien.ac.at/anton/home.html
comp.lang.forth FAQs: http://www.complang.tuwien.ac.at/forth/faq/toc.html
New standard: http://www.forth200x.org/forth200x.html
EuroForth 2007: http://www.complang.tuwien.ac.at/anton/euroforth2007/
I know. But werty still is some person, a human out there. Maybe a
serious answer to his post makes him thinking a little bit about. I've
to note also that I marked my initial post as to be a "troll"-post. So
you see two trolls discussing something. I'm perfectly aware of what
"werty" wrote the time before.
BTW: what's your opinion about 200x? I think forth.com has no real
problems to follow whatever will be caused by this. But - beside of to
let people do what they want to do - what do you think about it?
Grüße,
Helmar
I've indeed developed something I think that would be better than a
simple IMMEDIATE-flag.
I call this "word classes". Instead of a flag to execute the word
immediately the dictionary entry contains two things:
1) some payload for the "word class"
2) the "word class" which is simply a handling procedure to process
the payload.
For an immediate "normal" word the "word class" would be "EXECUTE".
For an immediate literal the "word class" would be like
STATE @ IF LITERAL THEN
.
The first FORTH with this mechanism was something custom made for a
DOS debugger - "debscr". HelFORTH I developed as something to be like
Retroforth, but to use "word classes". There are at least 5 Forths as
of now that use "word classes":
* debscr
* HelFORTH
* Retroforth
* Reva
* 4p
Grüße,
Helmar
> For an immediate literal the "word class" would be like
-immediate
The "immediate literal" would have a class "NOOP"...
-Helmar *should not type too fast ;)*
> I know. But werty still is some person, a human out there. Maybe a
> serious answer to his post makes him thinking a little bit about.
That's hopeless. I've tried to ask him to clarify some things in his posts
or to prove his claims, but no answer so far. It's just the typical troll
behaviour: He posts some random stuff and is the more amused the more
random responses he reads.
--
Frank Buss, f...@frank-buss.de
http://www.frank-buss.de, http://www.it4-systems.de
Well, I'm not quite sure about werty. He definitively has a very good
knowledge about FORTH and also about the fellowers - he's a very good
troll in that. What he sometimes writes looks like the random stuff
from dreams taken out of the FORTH-geeks head. So I take him as the
thing he is: something artificial, made by someone who expresses some
kind of art with it. He does it good. But I'm not quite sure if this
ever will lead to something progressive - something that will bring us
to the thing after the FORTH we have today ;)
-Helmar
> --
> Frank Buss, f...@frank-buss.dehttp://www.frank-buss.de,http://www.it4-systems.de
> He definitively has a very good
> knowledge about FORTH and also about the fellowers - he's a very good
> troll in that. What he sometimes writes looks like the random stuff
> from dreams taken out of the FORTH-geeks head.
I don't think that he has very good Forth knowledge. My feeling is that he
has some boring job and only very limited programming experience, which he
tries to compensate by always claiming that he is the best and fastest
programmer in the world. He has read some stuff about Forth and maybe has
some good ideas, but has not the abiltity to test and prove it. He may play
with some hardware, but is not able to finish even the simplest tasks, like
writing and flashing a boot loader, least of all his New Forth.
> Retroforth, but to use "word classes". There are at least 5 Forths as
> of now that use "word classes":
>
> * debscr
> * HelFORTH
> * Retroforth
> * Reva
> * 4p
I can say that for Reva, at least, implementing "word classes" brought
about simultaneously simplification of the interpreter, and a great
deal more power in implementation.
This sounds like the xt2 field in
http://www.complang.tuwien.ac.at/forth/header-ideas.html
Win32Forth is reportedly adopting this header structure.
>For an immediate "normal" word the "word class" would be "EXECUTE".
>For an immediate literal the "word class" would be like
> STATE @ IF LITERAL THEN
Ugh. You immediately spoil the nice idea with STATE-smartness.
Anyway, that's just an implementation idea. The question is: how is
it reflected in the language? How do you use for those things that
people use IMMEDIATE for?
E.g., Gforth does not have the header structure discussed above, but
it has a concept called "compilation token", which is related to this.
There are words like COMP' [COMP'] NAME>COMP "POSTPONE," and EXECUTE
for getting and consuming compilation tokens, and a word
INTERPRET/COMPILE: for defining a word with an arbitrary combination
of interpretation and compiltion semantics. There is still IMMEDIATE,
of course (it's Forth-94 compliant, after all), but also nothing that
would be used in place of IMMEDIATE in most cases (one would use
INTERPRET/COMPILE: as a better alternative to STATE-smart immediate
words).
>The first FORTH with this mechanism was something custom made for a
>DOS debugger - "debscr". HelFORTH I developed as something to be like
>Retroforth, but to use "word classes". There are at least 5 Forths as
>of now that use "word classes":
>
>* debscr
>* HelFORTH
>* Retroforth
>* Reva
>* 4p
So originally RetroForth did not have word classes, then you wrote it
into HelForth, and then RetroForth adopted word classes, too?
Depending on the answers to the questions above, it may (or may not)
be easy to add the word class words to Gforth and (the new)
Win32Forth. Then write up an RfD, and wait for some years for systems
and programmers to adopt it.
This is nice to hear!
> >For an immediate "normal" word the "word class" would be "EXECUTE".
> >For an immediate literal the "word class" would be like
> > STATE @ IF LITERAL THEN
>
> Ugh. You immediately spoil the nice idea with STATE-smartness.
;) No, not really. I tried to translate the things to ANS. So it has
to be state-smart. But btw, at some point the system has to decide if
to execute or to compile. I had some very fruitless discussions about
if FreeForth is statesmart or not - my position is it is state-smart
(without the word "STATE"...). But I think this depends on definition.
> Anyway, that's just an implementation idea. The question is: how is
> it reflected in the language? How do you use for those things that
> people use IMMEDIATE for?
I made "IMMEDIATE" a "class-smart" word - it recognizes VARIABLEs,
CONSTANTs and normal definitions. For VARIABLEs and CONSTANTs it sets
the class equal to NOOP and for other words it sets EXECUTE. So people
still can use IMMEDIATE about the same way as in ANS. The new
possibilities are not simple to count. You can tick ' also words that
usually would have a DOES> - so for example
: foo create allot class> count ;
123 foo test
" abc" ' test place
Can be used to initialize a string. CLASS> is something very similar
to DOES> btw. but it sets the class of a word.
> E.g., Gforth does not have the header structure discussed above, but
> it has a concept called "compilation token", which is related to this.
You can assign actions to special tokens to be compiled? This can be
done with word classes too. HelFORTH makes a lot use of word classes
for loophole optimization.
> There are words like COMP' [COMP'] NAME>COMP "POSTPONE," and EXECUTE
> for getting and consuming compilation tokens, and a word
> INTERPRET/COMPILE: for defining a word with an arbitrary combination
> of interpretation and compiltion semantics. There is still IMMEDIATE,
> of course (it's Forth-94 compliant, after all), but also nothing that
> would be used in place of IMMEDIATE in most cases (one would use
> INTERPRET/COMPILE: as a better alternative to STATE-smart immediate
> words).
>
> >The first FORTH with this mechanism was something custom made for a
> >DOS debugger - "debscr". HelFORTH I developed as something to be like
> >Retroforth, but to use "word classes". There are at least 5 Forths as
> >of now that use "word classes":
>
> >* debscr
> >* HelFORTH
> >* Retroforth
> >* Reva
> >* 4p
>
> So originally RetroForth did not have word classes, then you wrote it
> into HelForth, and then RetroForth adopted word classes, too?
Yes, RetroForth adopted it. As Reva did.
> Depending on the answers to the questions above, it may (or may not)
> be easy to add the word class words to Gforth and (the new)
> Win32Forth. Then write up an RfD, and wait for some years for systems
> and programmers to adopt it.
The concept is at least much better than the IMMEDIATE-flag. I've to
note that it is possible to implement a completely ANS-compliant layer
on base of the word classes. At least it passes your tests ;)
-Helmar
Yes, and it works very well; it certainly reduces IMMEDIATE words to
near-zero. There are very few words that have exactly the same
interpretation and compile semantics, such as ( .
: s" ( -<string">- -- a1 n1 ) (s") compilation> drop [s"] ;
s" has two actions; one is the interpretation and the other the
compilation state. (The drop is to clear the xt of s" off the stack,
which compilation> returns.) However, I'm not entirely happy with the
syntax of compilation> as it doesn't work well with does>, among other
annoyances.
The new version is also native code. It's very slow in the
development, since I haven't had a great deal of time to work on it.
Currently it runs the benchmark from MPE at http://www.mpeforth.com/arena/benchmrk.fth
(slightly modified as there's currenly no ENVIRONMENT support), and it
passes your postpone test at http://www.complang.tuwien.ac.at/forth/postponetest.fs.
As in the original Win32Forth, it also meta-compiles itself, and has a
(very) primitive optimiser that does constant folding, inlining and
some limited optimisations. It doesn't yet support the class system;
that's work-in-progress.
>
> >For an immediate "normal" word the "word class" would be "EXECUTE".
> >For an immediate literal the "word class" would be like
> > STATE @ IF LITERAL THEN
>
> Ugh. You immediately spoil the nice idea with STATE-smartness.
... and it's completely STATEless; STATE could (and probably should)
be removed. It's only there for ANS compliance. If anyone is
interested, it can be anonymously downloaded from the CVS at
win32forth.cvs.sourceforge.net, folder /cvsroot/win32forth, module
win32forth-stc.
[snipped wordclass stuff]
--
Regards
Alex McDonald
We are following the work closely, and commenting when indicated. I
hope the effort will yield an improved standard, in which case FORTH,
Inc. will probably follow it.
Cheers,
Elizabeth
Hey, that's a very nice answer. I do think it is too nice, since
"improved standard" does not mean anything special. Forth 200x does
not cut anything off the current standard. To make something better
than before, I for example have to remove some things from the source
I made before. Especially in Forth I do this very often - to "factor"
the things also means to do not be that kind of person that puts
source code into stone.
So I'll compare it with to take some mud and make a statue from it.
Later, if you want to make that statue better, it's not a good thing
to only take some more mud and arrange it around the old statue. I
think the artist better takes a new piece of mud and arranges it to a
new statue. Forth 200x does not do so. So at some time Forth will be
something with a lot of mud around - something like a sphere - or a
ball of mud. At least it's "round" ;)
I dont know if you think this is good for your business. I'd like to
see some more fresh ideas...
Grüße,
-Helmar
If what you want is a new, better language what you say is correct.
That is not the objective of a language *standard*, however (regardless
of the language). The purpose of a language standard is to identify
common practice in various areas and codify it such that both producers
and users have a result that (in a revision of a standard) provides
needed capability with minimal conversion cost. It is perfectly
appropriate to discard features that are unused (for example, to delete
the words declared 'obsolescent' in Forth94).
There is a thread here somewhere about designing a new Forth-like
language, and maybe that's a discussion that would interest you more.
It's too easy to make another FORTH-like language. Do not
underestimate that I'm very much like you can call a "traditionalist".
But there is more around, far more. I see stength in simplicity but
also power in complexity. Dont simply tell people to go somewhere else
- I think werty did so. So may be a question is, where werty was
wrong?
-Helmar
PS: @werty, anything?
werty's great failing is common to many who post on usenet; a tendency
to assume that everyone "out there" is stupid, and missing some great
advance in technology to which only they hold the keys. His
understanding of hardware and software appears to be shallow and made
up of buzzwords; his obsession with GUIs demonstrates a lack of
understanding of what supports them; he posts obsessively about ARMs
and delivering MS/Linux killing free software to the masses, but he
does not appear to have delivered anything beyond the idle boast that
he is the world's greatest systems programmer. I would encourage you
to re-read his posts -- on any subject, for he's a prolific poster in
other newsgroups too (1745 posts across 119 newsgroups at the last
count), where he makes as little sense in those as he does here. (I
have him in my killfile, but he "leaks through" when someone replies.)
<quote from recent clf post>
Of what value is the word "popular"
Hitler was 100% popular in 1938 ..
Trade unionists have control on America .
They like C/C++ ....
They want to control Forth ....
Im a Union buster .....
English is the first to go ! No more stupid text .
</quote>
He's right on one count; he's eliminated English. Sadly for the
residents of clf, the stupid text remains a problem.
--
Regards
Alex McDonald
:)
At one point I looked at a lot of his Usenet posts, because I was
asking the question posed by the title of another recent thread. What
I found was apparently a US expat living in Thailand, harboring
misogynistic, racist and anti-Semitic tendencies, whose posts have
become progressively less coherent over time.
Therefore I don't reply to him in most cases - it would be too cruel.