Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Could Forth be getting a bit of traction?

1,432 views
Skip to first unread message

Mark Wills

unread,
Sep 1, 2015, 3:49:33 AM9/1/15
to
At last?

Check out this link:

https://moonforth.github.io/

Someone has spent a LOT of time on that. Also check out the links, which link to a lot of Forth related stuff that I haven't seen before.

Brilliant stuff.

menti...@gmail.com

unread,
Sep 1, 2015, 7:18:29 AM9/1/15
to
As a Forthcoder of Strong AI in English at

http://www.nlg-wiki.org/systems/Mind.Forth

and in German the language of science at

http://www.nlg-wiki.org/systems/Wotan

I thank you for your posting.

Cheers,

Arthur T. Murray/Mentifex
--
Major goal in life: Trigger a Technological Singularity;
Minor goal: Overthrow the unelected government of China;
Minor goal: Win a Nobel Prize in Physiology or Medicine;
Minor goal: [X] Reunification of East and West Germany.

Steve Graham

unread,
Sep 1, 2015, 12:51:42 PM9/1/15
to
Thanks, Mark. Very interesting.

---
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

Andreas Wagner

unread,
Sep 1, 2015, 1:23:39 PM9/1/15
to
"Could Forth be getting a bit of traction?"

I've been seeing the phrase "I'm new to Forth" quite a bit lately.

jo...@planet.nl

unread,
Sep 1, 2015, 3:37:26 PM9/1/15
to
The page tells:
"The reason why Forth is now seldom used is allegedly because
it is extremely low-level without having the performance advantages of C."

I wonder what kind of performance advantages that are.

Jos

Bernd Paysan

unread,
Sep 1, 2015, 4:02:11 PM9/1/15
to
jo...@planet.nl wrote:
> The page tells:
> "The reason why Forth is now seldom used is allegedly because
> it is extremely low-level without having the performance advantages of C."
>
> I wonder what kind of performance advantages that are.

If you write your own simple threaded code Forth, it's a lot slower than C,
especially if you use another slow interpretative language to start with
(yes, people do that). If you use an analytical compiler like VFX or
iForth, it's about as fast. If you use something in between like gforth-
fast, you lose a factor 2, for some codes that benefit particularly from an
analytic compiler even more.

That's for doing the same thing. Since C programmer rarely do the same thing
as Forth programmers (especially keeping it stupid simple), the real world
is different.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
net2o ID: kQusJzA;7*?t=uy@X}1GWr!+0qqp_Cn176t4(dQ*
http://bernd-paysan.de/

hughag...@gmail.com

unread,
Sep 2, 2015, 4:53:32 PM9/2/15
to
On Tuesday, September 1, 2015 at 10:23:39 AM UTC-7, Andreas Wagner wrote:
> "Could Forth be getting a bit of traction?"
>
> I've been seeing the phrase "I'm new to Forth" quite a bit lately.

Pretty much everybody who is new to Forth, will go directly to Standard Forth and will read the standard textbook: "Forth Application Techniques."

On Sunday, August 9, 2015 at 7:30:10 PM UTC-7, Elizabeth D. Rather wrote:
> Here's [an array definer] presented in my Forth Application Techniques that I think is
> far more useful than the FSL version:
>
> : ARRAY ( n -- ) CREATE DUP , CELLS ALLOT
> DOES> ( n -- a) SWAP OVER @ OVER < OVER
> 1 < OR ABORT" Out of Range" CELLS + ;

The newbie will then say: "This is stupid! The person who wrote this is not a programmer! But if the 'leading-expert' in Forth is a phony, then this implies that every Forth programmer is a phony, because otherwise why would they accept a phony as their leader? This implies that every story of success with Forth is a lie, and that nobody has ever succeeded in writing a Forth program that works."

That should kill the newbie's enthusiasm for Forth --- and, if that doesn't do it, Elizabeth Rather will denounce the newbie for being homophobic --- so, while many will say "I'm new to Forth," very few will get past this stage to the next stage in which they have learned how to write programs (Elizabeth Rather herself has never gotten to the stage in which she has learned how to write programs, and instead she jumped straight into teaching).

Greg

unread,
Sep 4, 2015, 8:35:52 PM9/4/15
to
------------------------------------------------

As somebody "new to Forth" I find "Forth Application Techniques" to be the
best introductory text to Forth I could get my hands on. Being mostly an
introductory text, maybe the title is a bit inflated, but it's still the best
Forth teaching book I could find. At least for somebody who is not totally
illiterate as far as computers go.

You seem to have such a low view of it though, may I know then what is the
better introductory Forth resource that you'd recommend?

Usually when you "take something out", some little common-sense dictates to
also be ready to put something else and place and not leave a "power-vacuum".

hughag...@gmail.com

unread,
Sep 4, 2015, 9:27:35 PM9/4/15
to
You could try: http://www.forth.org/novice.html

This isn't a book, although it is commented plus there are some documentation files.

The important thing about the novice package is that I provide general-purpose data-structures --- you can write application programs without getting bogged down in low-level code such as implementing arrays, lists, associations, etc. --- I think most who are "new to Forth" become discouraged because they aren't succeeding at writing application programs and they find implementing data-structures to be boring and difficult (I found ASSOCIATION.4TH to be a grind to implement, but it is done now so it doesn't have to be rewritten by me or anybody else) --- many novices quit Forth before they have ever written a single application program, just because they spent all their time on data-structures and their enthusiasm fizzled out, so they were done with Forth.

The important distinction between myself and Elizabeth Rather, is that I don't claim to set the standard for the industry and damn everybody else as being non-standard --- that, plus I write code that works!

Mux

unread,
Sep 5, 2015, 12:04:39 AM9/5/15
to
> The important distinction between myself and Elizabeth Rather, is that I don't claim to set the standard for the industry and damn everybody else as being non-standard --- that, plus I write code that works!

Alright, I'll chime in as I've been on my soap box for the last day or so :-)

Regardless of whether or not Elizabeth defined a standard or is a forth coding guru, she's the one person (and Stephen Pelc) who at least keep forth somewhat relevant by peddling their product. Yes, it might be self-serving but hey, everybody needs to eat.

If both Elizabeth and Stephen would throw in the towel, forth would pretty much get ZERO commercial coverage. Running a business is hard, especially in a niche area like this, so I commend them for doing there thing.

A lot of people have come and gone (Koopman, Eric La-Forest), kicked the forth tires and moved on to other fields. Given that,you've got to give her props for sticking with it, whatever the motivation.

If we want forth to become more popular / mainstream, we've got to get out of this mindset that there is only one forth and put up this wall to anyone who's new to forth is an idiot who needs to be put in his place.

Just my 2 cents...

-Mux

rickman

unread,
Sep 5, 2015, 12:27:57 AM9/5/15
to
Yer wasting your time with this one.

--

Rick

hughag...@gmail.com

unread,
Sep 5, 2015, 12:48:55 AM9/5/15
to
On Friday, September 4, 2015 at 9:04:39 PM UTC-7, Mux wrote:
> > The important distinction between myself and Elizabeth Rather, is that I don't claim to set the standard for the industry and damn everybody else as being non-standard --- that, plus I write code that works!
>
> Alright, I'll chime in as I've been on my soap box for the last day or so :-)
>
> Regardless of whether or not Elizabeth defined a standard or is a forth coding guru, she's the one person (and Stephen Pelc) who at least keep forth somewhat relevant by peddling their product. Yes, it might be self-serving but hey, everybody needs to eat.
>
> If both Elizabeth and Stephen would throw in the towel, forth would pretty much get ZERO commercial coverage. Running a business is hard, especially in a niche area like this, so I commend them for doing there thing.

Elizabeth Rather's contribution has always been negative --- she drives away far more people than she attracts --- worse, she drives away real programmers and attracts idiots, giving the Forth community the reputation of being a haven for idiots who have failed at programming the mainstream languages.

> If we want forth to become more popular / mainstream, we've got to get out of this mindset that there is only one forth and put up this wall to anyone who's new to forth is an idiot who needs to be put in his place.

This is an argument for ANS-Forth??? The premise of ANS-Forth has always been that ANS-Forth is the only Forth and everybody else can go to non-standard hell --- when I was new to ANS-Forth the first question I asked was why there was no D/ (I needed this for my continued-fractions program), and I was treated as an idiot who needed to be put in my place:

On Friday, November 20, 2009 at 12:07:12 AM UTC-7, Elizabeth D Rather wrote:
> Forth's design is pragmatic: it has functions that have been needed and
> that have proven their usefulness *in Forth*, not necessarily those that
> have been required in other languages. Generally speaking, Forth has
> the most flexible set of *integer* arithmetic operators of any language.
> In particular, M*/ was one of Chuck's most brilliant innovations. I'm
> sure if Chuck were trying to do your continued fractions that is what he
> would rely on. Yes, that sometimes requires thinking differently, like
> many other things in Forth.

This, of course, is nonsense --- I ended up using a D/ written in Forth (grossly inefficient) --- she is just telling me that I'm an idiot and putting me in my place, but she isn't providing any code for continued-fractions (she has no idea what continued-fractions are).

Thinking differently??? Differently from what? Reality?

I really don't believe that brown-nosing Elizabeth Rather is a viable path into the future --- it didn't work very well during the last two decades --- Forth's popularity plummeted after ANS-Forth came out in 1994, with almost everybody switching over to C.

BTW: What does "commercial coverage" mean? I'm not familiar with that term. Do you mean Forth being used in commercial products? Nobody really cares what language was used or even what micro-processor was used --- they just buy boards and expect them to do whatever it is that they do --- the bean-counters need something to count, and boards are what they count. Maybe by "commercial coverage" you mean programming jobs --- there are none in Forth, and there haven't been in two decades --- ANS-Forth killed that.

rickman

unread,
Sep 5, 2015, 1:10:54 AM9/5/15
to
On 9/5/2015 12:48 AM, hughag...@gmail.com wrote:
> On Friday, September 4, 2015 at 9:04:39 PM UTC-7, Mux wrote:
>>> The important distinction between myself and Elizabeth Rather, is that I don't claim to set the standard for the industry and damn everybody else as being non-standard --- that, plus I write code that works!
>>
>> Alright, I'll chime in as I've been on my soap box for the last day or so :-)
>>
>> Regardless of whether or not Elizabeth defined a standard or is a forth coding guru, she's the one person (and Stephen Pelc) who at least keep forth somewhat relevant by peddling their product. Yes, it might be self-serving but hey, everybody needs to eat.
>>
>> If both Elizabeth and Stephen would throw in the towel, forth would pretty much get ZERO commercial coverage. Running a business is hard, especially in a niche area like this, so I commend them for doing there thing.
>
> Elizabeth Rather's contribution has always been negative --- she drives away far more people than she attracts --- worse, she drives away real programmers and attracts idiots, giving the Forth community the reputation of being a haven for idiots who have failed at programming the mainstream languages.

See what I mean...

--

Rick

Mux

unread,
Sep 5, 2015, 1:19:14 AM9/5/15
to
> Elizabeth Rather's contribution has always been negative --- she drives away far more people than she attracts --- worse, she drives away real programmers and attracts idiots, giving the Forth community the reputation of being a haven for idiots who have failed at programming the mainstream languages.
>
The world isn't filled with 'real' programmers. I'd argue that the majority of programmers in the world are mediocre. That said, in order for forth to become a more mainstream language, you have to attract and educate those programmers in order to bring them over.

> This is an argument for ANS-Forth??? The premise of ANS-Forth has always been that ANS-Forth is the only Forth and everybody else can go to non-standard hell --- when I was new to ANS-Forth the first question I asked was why there was no D/ (I needed this for my continued-fractions program), and I was treated as an idiot who needed to be put in my place:

Nope. I really don't care about standards to be honest. That's one of the nice things about forth IMO. While that scuppers the portability of code, it nicely goes with Chuck's argument that a forth application consists of a minimal set of words that describes the problem.

> This, of course, is nonsense --- I ended up using a D/ written in Forth (grossly inefficient) --- she is just telling me that I'm an idiot and putting me in my place, but she isn't providing any code for continued-fractions (she has no idea what continued-fractions are).

This is kinda what I was getting at. For a newcomer to forth, this whole tit-for-tat doesn't do the community any good. If anything, it confuses people as they now don't know which solution to pick. Getting into these spats is a dead-end and doesn't help anyone.

> I really don't believe that brown-nosing Elizabeth Rather is a viable path into the future --- it didn't work very well during the last two decades --- Forth's popularity plummeted after ANS-Forth came out in 1994, with almost everybody switching over to C.

I'm not brown-nosing Elizabeth as I also included Stephen Pelc. I seriously doubt the arrival of ANS-forth is the main reason people switched to C. The arrival of RISC, more research and marketing money is what caused that.

> BTW: What does "commercial coverage" mean? I'm not familiar with that term. Do you mean Forth being used in commercial products? Nobody really cares what language was used or even what micro-processor was used --- they just buy boards and expect them to do whatever it is that they do --- the bean-counters need something to count, and boards are what they count. Maybe by "commercial coverage" you mean programming jobs --- there are none in Forth, and there haven't been in two decades --- ANS-Forth killed that.

By commercial coverage I mean trying to get your product noticed in a crowded market. At least Elizabeth and Stephen are actively trying to SELL forth, whatever the flaws they have may be. Without marketing or some sort of visibility, it's just not going to happen.

Totally agree that nobody really cares about language / CPU. Upside is that nobody cares which I see as an opportunity to market forth, downside is that people will have to move from what they know, which isn't easy.

As much as marketing and business sucks, it's the ONLY way to get the word out and have people pay attention.

-Mux

hughag...@gmail.com

unread,
Sep 5, 2015, 2:31:42 AM9/5/15
to
On Friday, September 4, 2015 at 10:19:14 PM UTC-7, Mux wrote:
> By commercial coverage I mean trying to get your product noticed in a crowded market. At least Elizabeth and Stephen are actively trying to SELL forth, whatever the flaws they have may be. Without marketing or some sort of visibility, it's just not going to happen.

I wouldn't be bothered by Elizabeth Rather if she represented herself as a salesperson for Forth Inc. and stuck to selling SwiftForth (good luck with that, as it is a crappy product worth maybe $40 as shareware). Every corporation has their legion of idiot salespeople selling their products, and I just ignore them.

What I find to be offensive is that she represents herself as the definer of what Forth is, and the leader for Forth programmers such as myself (actually, she says that I'm not a Forth programmer at all). That is grossly offensive! She has no right to represent herself as the leader for me! She has no right to represent herself as the leader for any Forth programmer anywhere outside of Forth Inc. --- this is a serious insult to all of the people who have written Forth programs successfully --- anybody who allows her to represent herself as their leader is a brown-noser.

You said that Elizabeth Rather is "actively trying to SELL forth" --- you didn't say that she is actively trying to sell SwiftForth --- this is a complete failure of common-sense on your part, to believe that a corporate salesperson is selling the Forth language on your behalf --- I think you are an idiot, and Elizabeth Rather thinks so too (and she is laughing all the way to the bank).

> As much as marketing and business sucks, it's the ONLY way to get the word out and have people pay attention.

No, we don't need corporate salespeople to get the word out --- there is no corporate salesperson representing herself as the "leading expert" in C, yet C somehow manages to be popular --- Forthers have to be successful at writing programs that work, and the word will get around (for one thing, they will post help-wanted ads for Forth programmers as their businesses grow --- that would be a real attention-getter for those of us who like money).

The C programmers are waiting to hear about success at Forth before they will consider Forth, and they are ignoring our bold marketing-genius with her idiotic advice on how to program, and her preposterous claim that she sets the standard for the entire Forth community --- they think that we are brown-nosed idiots that we allow her to represent us --- they are going to continue to ignore Forth so long as the Forth community continues to allow Elizabeth Rather get away with claiming to be a Forth programmer and even to be an expert.

By "idiotic advice," I mean this kind of statement:
"People are much too phobic about [global] variables. The cry, 'They aren't re-entrant' simply means you have to look at the whole application and how it is organized."

This only works for toy programs. The phrase "the whole application" implies that the programmer has access to all of the source-code (there are no code libraries being used), and the program is small enough that the programmer can keep track of the entire thing in his head (he can use PAD and not worry that a function he is calling doesn't also use PAD, because the entire program only contains a dozen or so functions and he just looks at them to see if they use PAD or not). This is not how professional programs are written --- nobody has programmed like this since the days of line-number BASIC on the 8-bit computers of the early 1980s --- nobody has programmed *professionally* like this since the days of COBOL in the 1970s.

And, here is another quote from Elizabeth Rather:
"In 1971-2 I managed a group of COBOL programmers and wrote a fair amt of COBOL myself. Yes, it was an interesting learning experience!"

rickman

unread,
Sep 5, 2015, 3:12:50 AM9/5/15
to
On 9/5/2015 1:19 AM, Mux wrote:
>> Elizabeth Rather's contribution has always been negative --- she drives away far more people than she attracts --- worse, she drives away real programmers and attracts idiots, giving the Forth community the reputation of being a haven for idiots who have failed at programming the mainstream languages.
>>
> The world isn't filled with 'real' programmers. I'd argue that the majority of programmers in the world are mediocre. That said, in order for forth to become a more mainstream language, you have to attract and educate those programmers in order to bring them over.

If you don't end this it will continue *ad nauseam*.

--

Rick

Mux

unread,
Sep 5, 2015, 10:28:31 AM9/5/15
to
> You said that Elizabeth Rather is "actively trying to SELL forth" --- you didn't say that she is actively trying to sell SwiftForth --- this is a complete failure of common-sense on your part, to believe that a corporate salesperson is selling the Forth language on your behalf --- I think you are an idiot, and Elizabeth Rather thinks so too (and she is laughing all the way to the bank).
>
Ignoring Rickman's advice (for now), I think you're missing the point. Both Stephen and Elizabeth built a business around forth and in doing so are at least spreading awareness about forth. Consumers don't know / care how something works and what it was programmed in. Without anyone evangelizing forth (whatever their motivation) or giving people options, it's just not going to even be on people's radar.

> No, we don't need corporate salespeople to get the word out --- there is no corporate salesperson representing herself as the "leading expert" in C, yet C somehow manages to be popular --- Forthers have to be successful at writing programs that work, and the word will get around (for one thing, they will post help-wanted ads for Forth programmers as their businesses grow --- that would be a real attention-getter for those of us who like money).
>
Oh, there are plenty of (self proclaimed) leading experts out in the field! Have you looked on Amazon for books on 'learn how to program C/C++'? Thousands of people are trying to cash in! Most of them probably with less knowledge about the language than a comp-sci freshman. My point is that if somebody types in 'learn to program', they're going to see those books first rather than forth related ones. So if anything, we need more people evangelizing forth :-)

Your code, however well written, is locked inside a black box and consumers will never see it. You're ONE guy who might be the world's best forther but nobody will know it. The first step is to make people aware of forth, the second is to have people write kick-ass code that justifies companies to consider it for their projects.

> The C programmers are waiting to hear about success at Forth before they will consider Forth, and they are ignoring our bold marketing-genius with her idiotic advice on how to program, and her preposterous claim that she sets the standard for the entire Forth community --- they think that we are brown-nosed idiots that we allow her to represent us --- they are going to continue to ignore Forth so long as the Forth community continues to allow Elizabeth Rather get away with claiming to be a Forth programmer and even to be an expert.
>
How about Stephen Pelc? He might not be as outspoken as Elizabeth but he's spreading the word. Negativity and bashing people doesn't help push forth. This group is a complete turn-off for anyone remotely interested in forth.

> By "idiotic advice," I mean this kind of statement:
> "People are much too phobic about [global] variables. The cry, 'They aren't re-entrant' simply means you have to look at the whole application and how it is organized."
>
> This only works for toy programs. The phrase "the whole application" implies that the programmer has access to all of the source-code (there are no code libraries being used), and the program is small enough that the programmer can keep track of the entire thing in his head (he can use PAD and not worry that a function he is calling doesn't also use PAD, because the entire program only contains a dozen or so functions and he just looks at them to see if they use PAD or not). This is not how professional programs are written --- nobody has programmed like this since the days of line-number BASIC on the 8-bit computers of the early 1980s --- nobody has programmed *professionally* like this since the days of COBOL in the 1970s.
>

> And, here is another quote from Elizabeth Rather:
> "In 1971-2 I managed a group of COBOL programmers and wrote a fair amt of COBOL myself. Yes, it was an interesting learning experience!"

Fair enough. Curious as to when those statements were made. Without that, it's kinda hard to put that in context. If there's one thing I've learned it's that technology alone doesn't sell products. Whether you like it or not, you need a way to make people aware. In this day and age of social media and what not, that's become easier than ever.

I'd love to see you start a blog (time permitting) about forth programming and your experiences.

-Mux

Alfred Singlestone

unread,
Sep 5, 2015, 11:10:59 AM9/5/15
to
On Saturday, September 5, 2015 at 2:31:42 AM UTC-4, hughag...@gmail.com wrote:

> ... it is a crappy product ...
> ... What I find to be offensive ...
> ... That is grossly offensive! ...
> ... She has no right ...
> ... this is a serious insult ...
> ... brown-noser ...
> ... a complete failure of common-sense on your part ...
> ... I think you are an idiot ...
> ... they think that we are brown-nosed idiots ...

I'm new to Forth. :) I'm enjoying myself and learning a lot. I don't know what my future in the Forth community will be, but if anything is to drive me out, it'd be stuff like this. It reminds me a lot of the Smug Lisp Weenie and the Insufferable Haskell P***k, of the attitude that "my opinion and views are the only valid ones, and if you disagree with me, then you're an idiot and destructive and you don't belong around here."

Ah well. I imagine I'll be called an idiot now, after which point I'll just let the matter drop. I just wanted to add my point of view on what is *really* destructive.

foxaudio...@gmail.com

unread,
Sep 5, 2015, 12:02:14 PM9/5/15
to
That must be what I am feeling in my stomach.

BF

foxaudio...@gmail.com

unread,
Sep 5, 2015, 12:05:41 PM9/5/15
to
Don't let these discussions colour your view.
Forth is a remarkable tool to have in the toolbelt.
Learning Forth will permanently affect how you code in other languages too.
I find it also allowed me to develop a more intimate feel for machine internals
by letting me explore low level concepts interactively.

BF

visua...@rocketmail.com

unread,
Sep 5, 2015, 12:07:56 PM9/5/15
to
On Saturday, September 5, 2015 at 11:10:59 AM UTC-4, Alfred Singlestone wrote:
You are right! That's destructive!

Do you know a way to encourage people to offer their opinions in a positive way?

I really would appreciate if we could get some people together who support Forth, this great unified programming language and operating system, which I am successfully using since 1984, making a self employed living from it.

And yes, we need education. That was the goal of my presentation at the EuroForth 2012 in Oxford, GB:
http://www.complang.tuwien.ac.at/anton/euroforth/ef12/papers/bruehl.pdf

Anton Ertl

unread,
Sep 5, 2015, 12:38:37 PM9/5/15
to
Alfred Singlestone <vit...@gmail.com> writes:
>I'm new to Forth. :) I'm enjoying myself and learning a lot.

Good for you.

> I don't know w=
>hat my future in the Forth community will be, but if anything is to drive m=
>e out, it'd be stuff like this. It reminds me a lot of the Smug Lisp Weenie=
> and the Insufferable Haskell P***k, of the attitude that "my opinion and v=
>iews are the only valid ones, and if you disagree with me, then you're an i=
>diot and destructive and you don't belong around here."

Well, most Usenet groups have their kooks, and in Usenet everybody has
to do the rating of posters and postings themselves, and all proper
Usenet clients have killfiles or other mechanisms for that purpose. I
think that Google Groups does not, so in that case just skip the
content manually, or switch to a proper Usenet client.

- 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 2015: http://www.rigwit.co.uk/EuroForth2015/

WJ

unread,
Sep 5, 2015, 12:49:28 PM9/5/15
to
hughag...@gmail.com wrote:

> Forth's popularity plummeted after ANS-Forth came out in 1994

It seemed to me that ANS-Forth took the fun out of Forth.

rickman

unread,
Sep 5, 2015, 1:08:18 PM9/5/15
to
This is a good group. It is full of intelligent, experienced
programmers and just plain good thinkers. The negative influences here
are sporadic and don't really dominate the group. But they do create a
point of focus that we tend to dwell on.

The best way to deal with the negativity is to ignore it. It only
achieves prominence when we give it our attention and bring it to the
foreground. Trying to salve negativity with reason is fruitless, giving
it any attention only encourages it more.

--

Rick

Alfred Singlestone

unread,
Sep 5, 2015, 2:13:33 PM9/5/15
to
I find myself mostly unaffected by ANS Forth. I started with Jonesforth about a month ago and have been slowly transforming it into something that's my own, something personal but still Forthy. (For example, the if-else-endif sequence is more or less second nature to me, so I use "endif" instead of "then".) My plan to maintain the fun, and even to accelerate it if I can. So far so good.

Mux

unread,
Sep 5, 2015, 3:11:14 PM9/5/15
to
> Ah well. I imagine I'll be called an idiot now, after which point I'll just let the matter drop. I just wanted to add my point of view on what is *really* destructive.

Welcome to forth! Appreciate your comment and chiming in. I've been on and off this group over the years and I really would like to see forth become more mainstream.

It's exactly the things you mentioned that made me (try) to make an effort and put a positive spin on all things forth and the philosophy around it.

-Mux

Bernd Paysan

unread,
Sep 5, 2015, 4:19:04 PM9/5/15
to
Anton Ertl wrote:
> Well, most Usenet groups have their kooks, and in Usenet everybody has
> to do the rating of posters and postings themselves, and all proper
> Usenet clients have killfiles or other mechanisms for that purpose. I
> think that Google Groups does not, so in that case just skip the
> content manually, or switch to a proper Usenet client.

And for those who's provider dropped the Usenet feed (many today do):
Eternal September just requires registration, but is free:
http://www.eternal-september.org/

Sharing killfiles is one of the things on my to-do list for a net2o social
network. Most social networks have a way to share friends (invitations),
but no way to share enemies in an unmoderated way.

Jason Damisch

unread,
Sep 5, 2015, 4:28:25 PM9/5/15
to
On Saturday, September 5, 2015 at 1:19:04 PM UTC-7, Bernd Paysan wrote:

> Sharing killfiles is one of the things on my to-do list for a net2o social
> network. Most social networks have a way to share friends (invitations),
> but no way to share enemies in an unmoderated way.

ENEMIES SHARE

That would Kick Butt!

hughag...@gmail.com

unread,
Sep 5, 2015, 5:20:04 PM9/5/15
to
On Saturday, September 5, 2015 at 9:38:37 AM UTC-7, Anton Ertl wrote:
> Alfred Singlestone <vit...@gmail.com> writes:
> >I'm new to Forth. :) I'm enjoying myself and learning a lot.
>
> Good for you.
>
> > I don't know w=
> >hat my future in the Forth community will be, but if anything is to drive m=
> >e out, it'd be stuff like this. It reminds me a lot of the Smug Lisp Weenie=
> > and the Insufferable Haskell P***k, of the attitude that "my opinion and v=
> >iews are the only valid ones, and if you disagree with me, then you're an i=
> >diot and destructive and you don't belong around here."
>
> Well, most Usenet groups have their kooks, and in Usenet everybody has
> to do the rating of posters and postings themselves, and all proper
> Usenet clients have killfiles or other mechanisms for that purpose. I
> think that Google Groups does not, so in that case just skip the
> content manually, or switch to a proper Usenet client.
>
> - anton

Anton Ertl is the same guy who wrote gForth:
1.) In gForth, tick aborts on a significant number (51) of the words in the ANS-Forth standard.
2.) FIND returns an xt for these special-case words, but it is a different xt depending upon whether STATE is true or false at the time that FIND executes.

Anton Ertl claims to be an expert on ANS-Forth, and claims that gForth is the reference compiler for ANS-Forth.

Why is Anton Ertl considered to be an expert on ANS-Forth, and why is gForth considered to be an ANS-Forth compiler? The answer, is because Elizabeth Rather says so --- ANS-Forth is a cult; it is all about brown-nosing Elizabeth Rather, and it has nothing to do with portability of programs.

The reason why Elizabeth Rather appointed Anton Ertl, is because Anton Ertl agreed to make gForth generate code that executes at less than half the speed of SwiftForth code, so gForth would not be competitive with SwiftForth.

Now Anton Ertl calls me a "kook" because I point out that Elizabeth Rather is not a Forth programmer:
On Sunday, August 9, 2015 at 7:30:10 PM UTC-7, Elizabeth D. Rather wrote:
> Here's [an array definer] presented in my Forth Application Techniques that I think is
> far more useful than the FSL version:
>
> : ARRAY ( n -- ) CREATE DUP , CELLS ALLOT
> DOES> ( n -- a) SWAP OVER @ OVER < OVER
> 1 < OR ABORT" Out of Range" CELLS + ;

This is just gross brown-nosing --- Anton has sold out his integrity to a corporate salesperson.

hughag...@gmail.com

unread,
Sep 5, 2015, 10:56:59 PM9/5/15
to
On Saturday, September 5, 2015 at 8:10:59 AM UTC-7, Alfred Singlestone wrote:
> "my opinion and views are the only valid ones, and if you disagree with me, then you're an idiot and destructive and you don't belong around here."

That is the attitude of the ANS-Forth-Standard promoters --- that is, in fact, the definition of the word "Standard" --- Elizabeth Rather has had this attitude since 1994 when ANS-Forth became the Standard (with a capital 'S') for the entire Forth community.

She was likely saying this before 1994 too --- but she didn't have the ANSI certification then --- after 1994 she had a club to beat people over the head with, that she had lacked previously.

Anton Ertl

unread,
Sep 6, 2015, 8:31:00 AM9/6/15
to
Bernd Paysan <bernd....@gmx.de> writes:
>Sharing killfiles is one of the things on my to-do list for a net2o social
>network.

There was an attempt of that for Usenet, called NoCeM
<http://www.cm.org/faq.html>. Somehow it did not catch on. It did
not have that much support in clients, and apparently traditional
cancelbots were good enough for spam, and traditional killfiles were
good enough for dealing with trolls and kooks for traditional Usenet
users.

There were supposedly many people who did not want to maintain (and
maybe not know about) their own killfiles, and they apparently left
for web fora that had moderators and/or a user-based rating
functionality. In the meantime the web fora are no longer that
popular, either, apparently people now go for social networks or
stackoverflow.com. But these give general ratings, not personalized
ones (while Google and Amazon give personalized results, but under
their, not your control).

Greg

unread,
Sep 6, 2015, 12:39:57 PM9/6/15
to
Searching this forum for miscellaneous things one can run into some great ideas
some bright minds have contributed here over the years. But there seems to
be a need to shift through a lot of "ore" before one can get to the scattered
pieces of gold.

Here are some questions though that I have based on some posts I run into while
searching the forum for who knows what:

1) Jeff Fox on his http://www.ultratechnology.com and some of the posts here
seemed to be so anti-ANSI and anti-'C' yet they decided at iTV to use, of all,
a Forth implemented in 'C' and an ANSI one - gForth. And opposite to some of
the posts in this thread, he was quite positive about its performance claiming
it surpassed some of the commercial offerings out there.

2) I know Jeff Fox is no longer here to defend but it will help me to understand
if it is worth spending some of the limited time I have on investigating Jeff's
claims/ideas. To me it seemed like he had a little tendency to exaggerate what he was able to do, what had been accomplished, etc. He and his team would have
been "able" to take on MS and steal their cash cow from them, yet when faced
with reality they didn't even implement their own "best" non-ANSI Forth but
settled for a 'C' based, ANS Forth, open source implementation. Am I missing
something here? Or did he became Anti-'C'/Anti-Ans Forth after iTV going belly
up?

3) It would seem that Jeff and Chuck would dismiss a library like Hugh's
novice package as just another attempt to 'C'-ify Forth. But then my question
is, what would you use instead of say C structures/unions (or records in
Pascal) which to me seem essential?

By the way, Jeff Fox was quite positive about Elizabeth teaching abilities and
the good Forth skills/techniques those who follow her books/classes acquire, in
a bunch of the posts here that I run into...

Richard Owlett

unread,
Sep 6, 2015, 2:27:27 PM9/6/15
to
Anton Ertl wrote:
> Bernd Paysan <bernd....@gmx.de> writes:
>> Sharing killfiles is one of the things on my to-do list for a net2o social
>> network.
>
> There was an attempt of that for Usenet, called NoCeM
> <http://www.cm.org/faq.html>. Somehow it did not catch on. [snip]

It didn't 'cause it couldn't ;/
It didn't/doesn't address the actual problem.

There are those whose posts are inherently "white noise".
Those are conveniently handeled by so-called "killfiles".
[I've implemented that for c.l.f by marking any post by H...
A..... as read and
only displaying "unread" posts.]

Now if only I could do the same for "H... A..... said/wrote"

m...@iae.nl

unread,
Sep 6, 2015, 4:01:46 PM9/6/15
to
On Sunday, September 6, 2015 at 6:39:57 PM UTC+2, Greg wrote:
[..]
> 3) It would seem that Jeff and Chuck would dismiss a library [..]
> as just another attempt to 'C'-ify Forth.

I think they dismiss(ed) libraries not because of C-isms,
but because of their belief one should solve the immediate
problem, and *only* the immediate problem (i.e. every
incarnation will be slightly different from the previous
one).

> But then my question
> is, what would you use instead of say C structures/unions
> (or records in Pascal) which to me seem essential?

Which immediate computing problem do *you personally*
have that needs generalized structures/unions/records
(*not* somebody else's problem or the one from the
C/Pascal cookbooks)?

I have written thousands of Forth programs that didn't
need structures, and those where I attempted s/u/r the
constructs probably wouldn't survive a rewrite if I
revised them. There are cases where *something like*
s/u/r naturally follows from the problem, but where
Forth allows one to implement it in a way that is not
normally recognized as a structure.

A C-program I help maintain has an enormous amount of
structures. It also has structures that contain pointers
to other structures (but also other things :-), and
where macros are used to abbreviate the syntax of
these nested constructs. The end result is that one
is completely dependent on very advanced tools
(Intellisense) to understand what is going on. It
leads to having to recompile the complete programma
so you can use the debugger to see what the source
code means.

-marcel

bor...@gmail.com

unread,
Sep 6, 2015, 9:48:05 PM9/6/15
to
Thanks Marcel, I am starting work on my first real Forth application, I will see if I can get by without s/u/r.
But it's a little bit of a stretching of the mind for me, because these days anytime I approach a problem, one of the first things I do is identifying and designing the structures (classes).

hughag...@gmail.com

unread,
Sep 6, 2015, 10:43:14 PM9/6/15
to
On Sunday, September 6, 2015 at 6:48:05 PM UTC-7, bor...@gmail.com wrote:
> Thanks Marcel, I am starting work on my first real Forth application, I will see if I can get by without s/u/r.
> But it's a little bit of a stretching of the mind for me, because these days anytime I approach a problem, one of the first things I do is identifying and designing the structures (classes).

All of my programs rely heavily structs --- the novice package's data-structures obviously require structs to hold the data --- I don't think that anybody can write a "real Forth application" without structs.

The last time that I programmed without benefit of structs, was QBasic --- I worked around the lack of structs by having an array for each field, and using an index rather than an address --- that was pretty crude.

BTW: I don't know what "s/u/r" means.

hughag...@gmail.com

unread,
Sep 6, 2015, 11:52:46 PM9/6/15
to
On Saturday, September 5, 2015 at 2:20:04 PM UTC-7, hughag...@gmail.com wrote:
> On Saturday, September 5, 2015 at 9:38:37 AM UTC-7, Anton Ertl wrote:
> > Alfred Singlestone <vit...@gmail.com> writes:
> > >I'm new to Forth. :) I'm enjoying myself and learning a lot.
> >
> > Good for you.

My first-ever ANS-Forth program was the LowDraw.4th program (in the novice package now). It was pretty simple and I didn't run into any problems. Nobody said, "good for you," but nobody denounced me either.

My second ANS-Forth program was the LC53 encryption-cracking program:
https://groups.google.com/forum/#!searchin/comp.lang.forth/lc53/comp.lang.forth/wP5nw1ClzsM/E-TV9v2y9RoJ

In this case, I got denounced for not knowing ANS-Forth, because my program didn't work on gForth (I had only tested it on SwiftForth). It turned out that in gForth tick will abort when given ; to look up. Anton Ertl says that this is not a bug in gForth, but that this compliant with the ANS-Forth standard, and I should have known. I have since rewritten my macro word to use late-binding rather than early-binding so I don't have to obtain xt values anymore, so now my program works under gForth too (everything in the novice package has been tested under SwiftForth, gForth, Win32Forth and now VFX). Anton Ertl has never taken back what he said about me not being an ANS-Forth programmer, and he continues to say that I'm not an ANS-Forth programmer. Elizabeth Rather has always insisted that I'm not a Forth programmer at all --- she conflates ANS-Forth with Forth in general.

> > > I don't know w=
> > >hat my future in the Forth community will be, but if anything is to drive m=
> > >e out, it'd be stuff like this. It reminds me a lot of the Smug Lisp Weenie=
> > > and the Insufferable Haskell P***k, of the attitude that "my opinion and v=
> > >iews are the only valid ones, and if you disagree with me, then you're an i=
> > >diot and destructive and you don't belong around here."
> >
> > Well, most Usenet groups have their kooks, and in Usenet everybody has
> > to do the rating of posters and postings themselves, and all proper
> > Usenet clients have killfiles or other mechanisms for that purpose. I
> > think that Google Groups does not, so in that case just skip the
> > content manually, or switch to a proper Usenet client.
> >
> > - anton
>
> Anton Ertl is the same guy who wrote gForth:
> 1.) In gForth, tick aborts on a significant number (51) of the words in the ANS-Forth standard.
> 2.) FIND returns an xt for these special-case words, but it is a different xt depending upon whether STATE is true or false at the time that FIND executes.

Anton Ertl is the worst possible choice to be the chairperson of the Forth-200x committee, because he either doesn't understand the concept of portability or he is actively opposed to it. His bizarre tick and FIND are not compatible with any other ANS-Forth system, and are in fact not compatible with any Forth of any kind that has ever existed.

Stephen Pelc (also on the ANS-Forth committee) has a completely different take on the above 51 words. In VFX it is possible to obtain an xt for them with tick or FIND, but the xt aborts when executed (it is a non-executing execution-token). Weirdly enough, these words are non-immediate in VFX, although they are immediate in SwiftForth and every other Forth that I know of going back 30 years.

Anyway, I have a way to disambiguify all of these words. With the following code, all of these words will provide an xt when given to tick or FIND, it will be immediate, and it will work properly when the xt is given to EXECUTE.

I figured out how to write disambiguifiers in this thread (although Anton Ertl had already hinted about how to write disambiguifiers in the thread mentioned above):
https://groups.google.com/forum/#!topic/comp.lang.forth/oXXQAGDKP7w%5B1-25%5D

And, (drum roll.....), here are the disambiguifiers:

: +loop state @ 0= abort" *** no interpretation semantics for: +LOOP ***" postpone +loop ; immediate
: ." state @ 0= abort" *** no interpretation semantics for: .quote ***" postpone ." ; immediate
: ; state @ 0= abort" *** no interpretation semantics for: ; ***" postpone ; ; immediate
: >r state @ 0= abort" *** no interpretation semantics for: >R ***" postpone >r ; immediate
: abort" state @ 0= abort" *** no interpretation semantics for: ABORTquote ***" postpone abort" ; immediate
: begin state @ 0= abort" *** no interpretation semantics for: BEGIN ***" postpone begin ; immediate
: do state @ 0= abort" *** no interpretation semantics for: DO ***" postpone do ; immediate
: does> state @ 0= abort" *** no interpretation semantics for: DOES> ***" postpone does> ; immediate
: else state @ 0= abort" *** no interpretation semantics for: ELSE ***" postpone else ; immediate
: exit state @ 0= abort" *** no interpretation semantics for: EXIT ***" postpone exit ; immediate
: I state @ 0= abort" *** no interpretation semantics for: I ***" postpone I ; immediate
: if state @ 0= abort" *** no interpretation semantics for: IF ***" postpone if ; immediate
: J state @ 0= abort" *** no interpretation semantics for: J ***" postpone J ; immediate
: leave state @ 0= abort" *** no interpretation semantics for: LEAVE ***" postpone leave ; immediate
: literal state @ 0= abort" *** no interpretation semantics for: LITERAL ***" postpone literal ; immediate
: loop state @ 0= abort" *** no interpretation semantics for: LOOP ***" postpone loop ; immediate
: postpone state @ 0= abort" *** no interpretation semantics for: POSTPONE ***" postpone postpone ; immediate
: r> state @ 0= abort" *** no interpretation semantics for: R> ***" postpone r> ; immediate
: r@ state @ 0= abort" *** no interpretation semantics for: R@ ***" postpone r@ ; immediate
: recurse state @ 0= abort" *** no interpretation semantics for: RECURSE ***" postpone recurse ; immediate
: repeat state @ 0= abort" *** no interpretation semantics for: REPEAT ***" postpone repeat ; immediate
: s" state @ 0= abort" *** no interpretation semantics for: Squote ***" postpone s" ; immediate
: then state @ 0= abort" *** no interpretation semantics for: THEN ***" postpone then ; immediate
: unloop state @ 0= abort" *** no interpretation semantics for: UNLOOP ***" postpone unloop ; immediate
: until state @ 0= abort" *** no interpretation semantics for: UNTIL ***" postpone until ; immediate
: while state @ 0= abort" *** no interpretation semantics for: WHILE ***" postpone while ; immediate
: [ state @ 0= abort" *** no interpretation semantics for: [ ***" postpone [ ; immediate
: ['] state @ 0= abort" *** no interpretation semantics for: ['] ***" postpone ['] ; immediate
: [char] state @ 0= abort" *** no interpretation semantics for: [CHAR] ***" postpone [char] ; immediate
: 2>r state @ 0= abort" *** no interpretation semantics for: 2>R ***" postpone 2>r ; immediate
: 2r> state @ 0= abort" *** no interpretation semantics for: 2R> ***" postpone 2r> ; immediate
: 2r@ state @ 0= abort" *** no interpretation semantics for: 2R@ ***" postpone 2r@ ; immediate
: ?do state @ 0= abort" *** no interpretation semantics for: ?DO ***" postpone ?do ; immediate
: again state @ 0= abort" *** no interpretation semantics for: AGAIN ***" postpone again ; immediate
: c" state @ 0= abort" *** no interpretation semantics for: Cquote ***" postpone c" ; immediate
: case state @ 0= abort" *** no interpretation semantics for: CASE ***" postpone case ; immediate
: compile, state @ 0= abort" *** no interpretation semantics for: COMPILE, ***" postpone compile, ; immediate
: endcase state @ 0= abort" *** no interpretation semantics for: ENDCASE ***" postpone endcase ; immediate
: endof state @ 0= abort" *** no interpretation semantics for: ENDOF ***" postpone endof ; immediate
: of state @ 0= abort" *** no interpretation semantics for: OF ***" postpone of ; immediate
: [compile] state @ 0= abort" *** no interpretation semantics for: [COMPILE] ***" postpone [compile] ; immediate
: 2literal state @ 0= abort" *** no interpretation semantics for: 2LITERAL ***" postpone 2literal ; immediate
: fliteral state @ 0= abort" *** no interpretation semantics for: FLITERAL ***" postpone fliteral ; immediate
: (local) state @ 0= abort" *** no interpretation semantics for: (LOCAL) ***" postpone (local) ; immediate
: locals| state @ 0= abort" *** no interpretation semantics for: LOCALS| ***" postpone locals| ; immediate
: ;code state @ 0= abort" *** no interpretation semantics for: ;CODE ***" postpone ;code ; immediate
: ahead state @ 0= abort" *** no interpretation semantics for: AHEAD ***" postpone ahead ; immediate
: cs-pick state @ 0= abort" *** no interpretation semantics for: CS-PICK ***" postpone cs-pick ; immediate
: cs-roll state @ 0= abort" *** no interpretation semantics for: CS-ROLL ***" postpone cs-roll ; immediate
: sliteral state @ 0= abort" *** no interpretation semantics for: SLITERAL ***" postpone sliteral ; immediate
Message has been deleted

hughag...@gmail.com

unread,
Sep 7, 2015, 2:18:41 AM9/7/15
to
On Sunday, September 6, 2015 at 9:39:57 AM UTC-7, Greg wrote:
> 3) It would seem that Jeff and Chuck would dismiss a library like Hugh's
> novice package as just another attempt to 'C'-ify Forth. But then my question
> is, what would you use instead of say C structures/unions (or records in
> Pascal) which to me seem essential?

I really can't imagine anybody seriously programming without structs --- as I said, QBasic is the last language in which that was done.

I was in private communication with Jeff Fox in the last year prior to his death and he never denounced my novice package. He seemed to be okay with it. I've never been in communication with Chuck Moore.

Elizabeth Rather has said many times that Chuck Moore hated code libraries such as my novice-package, and that he would always hand-write every line of every program in order to make it super-optimized for the task at hand. Can you provide links to quotes from Jeff Fox or Chuck Moore that corroborate this? Maybe this is just her COBOL background speaking, but she is putting her words in Chuck Moore's mouth to give herself more credibility than she would have if she expressed it as her own opinion.

Jeff Fox and Chuck Moore did successfully get Forth programs to work --- I find it very difficult to believe that they did this without structs and without code-libraries --- that really sounds like an urban legend: fan-boys promoting Chuck Moore's god-like genius, imagining how super-optimized code flows from his fingertips to the keyboard, and ignoring the reality of how programs actually get written by flesh-and-blood programmers.

That LowDraw.4th program of mine was written before the novice package. I did not write super-optimized code. For example, I used a bubble-sort --- I just didn't want to stop in the middle of what I was doing and delve into a complicated sort algorithm, and it was a small array anyway, so I wrote a bubble-sort and continued with minimal interruption --- this is pretty typical of what happens when people program without benefit of code libraries, and it is very rare for them to go back and upgrade that stuff because the low-level code is mixed in with the application code and there is no good way to separate it. Most of the time, if a Forth program proves to be too inefficient, it gets rewritten in C.

> By the way, Jeff Fox was quite positive about Elizabeth teaching abilities and
> the good Forth skills/techniques those who follow her books/classes acquire, in
> a bunch of the posts here that I run into...

Once again, can you provide links?

This is what Jeff said to me in private email after I had said to him that I considered Elizabeth Rather to be an "ultra-liberal" because she was using comp.lang.forth to promote homosexual rights, championing John Passaniti in his right to say that my code "sucks" and is "crap" on the basis of him being gay, and also saying that he is a real Forth programmer and I'm not.

"Elizabeth Rather is not one of my favorite people. But you should realize
that lots of people in c.l.f think she is their only success story. Some
also feel that no one should argue with her 'because she is only a woman.'

My recommendation is to ignore the Passaniti troll and deal with Rather
more thoughtfully. BTW. She doesn't live in California and is anything
but a liberal. I don't think she cares about homosexual rights at all
but learned that John would quit saying crap about her if she praised
him once in a while and that he would also focus on anyone who would
argue with her. It is as simple as that."

Most likely, Elizabeth Rather was paying John Passaniti to attack her enemies (mostly Jeff Fox, but also myself) --- John Passaniti quit comp.lang.forth after Jeff Fox died, indicating that he had no interest in comp.lang.forth other than attacking Jeff Fox (the only code he ever posted was in Perl, which seems to be the only programming language he knows) --- I think Jeff Fox went to his grave never considering that "the Passaniti troll" was not just a random troll but was actually getting paid to torment him.

Alexander Wegel

unread,
Sep 7, 2015, 6:57:40 AM9/7/15
to
<hughag...@gmail.com> wrote:

Lies and crap as usual. What a bozo.

Anton Ertl

unread,
Sep 7, 2015, 11:44:45 AM9/7/15
to
I guess some newsreaders can, if you work hard enough on the kill
rule.

But NoCeMs (or sharing of killfile information) would be another way
to deal with that: The first reader sees such a posting, rates it
down, the newsreader sends out a NoCeM posting, and everyone who reads
the group later and trusts this first reader would not see that
posting.

So if that is "the actual problem", NoCeMs would provide relief (not a
total solution, but still).

Or maybe by combining the two ideas you would get a total solution
(but I would be nervous about having very general rules by other
people automatically added to my killfile).

hughag...@gmail.com

unread,
Sep 7, 2015, 12:46:32 PM9/7/15
to
On Monday, September 7, 2015 at 8:44:45 AM UTC-7, Anton Ertl wrote:
> So if that is "the actual problem", NoCeMs would provide relief (not a
> total solution, but still).

Wouldn't it be easier just to accept the disambiguifiers?

Right now, ANS-Forth completely fails to provide portability between programs. SwiftForth, VFX and gForth all handle tick and FIND completely differently. The special-case words (such as IF etc.) are also sometimes immediate and sometimes non-immediate, and they sometimes work in EXECUTE and sometimes not, plus we have that very bizarre "feature" (your term; I couldn't make this stuff up) in which FIND returns a different xt depending upon whether STATE is true or not at the time that FIND executes.

The disambiguifiers fix all of this. Tick and FIND work for all of these words, all of the words are immediate, all of them have an xt (only one xt) and it works when given to EXECUTE. The disambiguifiers are written in ANS-Forth and they allow ANS-Forth code to be totally portable!

Also, you don't have to give me any credit at all --- you can say that you invented the disambiguifiers yourself way back in 2009:
https://groups.google.com/forum/#!searchin/comp.lang.forth/lc53/comp.lang.forth/wP5nw1ClzsM/E-TV9v2y9RoJ

On Thursday, November 26, 2009 at 3:24:06 AM UTC-7, Anton Ertl wrote:
> Hugh Aguilar <hugoa...@rosycrew.com> writes:
> >On Nov 25, 4:14=A0am, an...@mips.complang.tuwien.ac.at (Anton Ertl)
> >wrote:
> >> >On Nov 25, 8:57=3DA0am, Hugh Aguilar <hugoagui...@rosycrew.com> wrote:
> >> >> I don't use gforth. What does that error message mean? What is a
> >> >> "compile-only word?"
> >>
> >> A word without interpretation semantics.
> >>
> >> >It doesn't like you taking the address of ";" , though I don't
> >> >understand why.
> >>
> >> Because ";" has no execution or interpretation semantics. =A0The
> >> execution token returned by ['] represents the execution semantics,
> >> but since ";" does not have that ...
> >
> >I don't understand how a word can not have execution semantics.
>
> That's quite simple: By not defining execution semantics in the
> definition of the word in the standard document. Look up the
> definition of ";" in the standard, and you will see that there is no
> "Execution:" section there; and there are other labeled sections
> there, so the "omitted label" sentence of 3.4.3.1 does not apply.
>
> >For immediate words (IF, ;, etc.)
>
> IF and ";" are not immediate words in the standard. A system can
> implement them as immediate words, but a program cannot rely on their
> immediacy.
>
> >I looked up ['] in the ANS-Forth document and it says:
> >
> >"Place name's execution token xt on the stack."
>
> What's the execution token of a word that has no execution semantics.
>
> Hmm, since you think that ";" is immediate, I guess you want an
> execution token that, when executed, performs the compilation
> semantics. You can get that as follows. Before the rest of the
> program, define:
>
> : ; postpone ; ; immediate
>
> Now you have an immediate ";" with an execution semantics that's the
> same as the compilation semantics, and you can tick it.

I can think of some reasons why you won't accept the disambiguifiers:
1.) If tick and FIND work correctly, the user can write an outer-interpreter, which is a crucial aspect of writing a cross-compiler. Cross-compilers are where the money is (for MPE and Forth Inc.), so you want to prevent gForth from being used to write a cross-compiler in competition with MPE and Forth Inc..
2.) You want to prevent ANS-Forth programs from being portable. MPE and Forth Inc. rely heavily on vendor lock-in to hold their customers --- they don't want Forth programmers to be able to port programs to a competitor's Forth system --- so you promote the idea that it is legal ANS-Forth for tick and FIND to work (or just abort, as in gForth) completely differently from one ANS-Forth system to the next.
3.) Leon Wagner told you not to accept the disambiguifiers, and you do what he tells you to do --- it is not for you to question why --- you don't actually know why they are disallowed, but you wish Leon Wagner had told you that they were disallowed before you invented them in 2009 and described them in that thread mentioned above (you think that I'm too dumb to invent them myself, and in fact it did take me until 2015 to find the solution on my own).

hughag...@gmail.com

unread,
Sep 7, 2015, 12:55:22 PM9/7/15
to
On Monday, September 7, 2015 at 3:57:40 AM UTC-7, Alexander Wegel wrote:
> <hughag...@gmail.com> wrote:
>
> Lies and crap as usual. What a bozo.

You are opposed to structs too?

Down with structs! Only bozos put their data in structs! Real Forth programmers use... um, ahh, something else!

What do you use to hold data if not structs?

Well, lets get some wisdom from our "leading expert" Elizabeth Rather:

"Truly, I don't see the point of all this paranoia about reentrancy, particularly in systems without a multitasker. VARIABLE was *designed* for things that would be used in multiple definitions. I remember the horror of (*gasp*) global variables back in the 1960's in Fortran. But, frankly, in 30+ years of programming in Forth I never found them a problem. I think this is all about mythical dragons."

So, f** Hugh Aguilar, and the mythical dragon that he rode in on!!!

WJ

unread,
Sep 7, 2015, 2:29:22 PM9/7/15
to
hughag...@gmail.com wrote:

> This is what Jeff said to me in private email after I
> had said to him that I considered Elizabeth Rather to
> be an "ultra-liberal" because she was using
> comp.lang.forth to promote homosexual rights,
> championing John Passaniti in his right to say that my
> code "sucks" and is "crap" on the basis of him being
> gay, and also saying that he is a real Forth programmer
> and I'm not.
>
> "Elizabeth Rather is not one of my favorite people. But you should realize
> that lots of people in c.l.f think she is their only success story. Some
> also feel that no one should argue with her 'because she is only a woman.'

The Feminist driven into a corner endeavours to save his face by
flatly denying matters open to common observation and admitted
as obvious by all who are not Feminists. Such facts are the
pathological mental condition peculiar to the female sex,
commonly connoted by the term hysteria; the absence, or at best
the extremely imperfect development of the logical faculty in
most women; the inability of the average woman in her judgment
of things to rise above personal considerations; and, what is
largely a consequence of this, the lack of a sense of abstract
justice and fair play among women in general. The aforesaid
peculiarities of women, as women, are, I contend, matters of
common observation and are only disputed by those persons---to
wit Feminists---to whose theoretical views and practical demands
their admission would be inconvenient if not fatal.
--- E. Belfort Bax, _The Fraud of Feminism_ (1913)

WJ

unread,
Sep 7, 2015, 2:47:32 PM9/7/15
to
hughag...@gmail.com wrote:

> > Lies and crap as usual. What a bozo.

How does this creature think that he knows that you did not
accurately quote an email from Jeff Fox?

With no proof whatsoever, he labels your statements "lies".

He must be an absolute punk, and he is probably a cultural Marxist.

>
> You are opposed to structs too?
>
> Down with structs! Only bozos put their data in structs! Real
> Forth programmers use... um, ahh, something else!

These mindless Forth-fanatics who are incapable of learning
simple programming techniques really give the language a
bad name.

Hiring one of them would be like hiring a handyman who knows
how to use no tool but a hammer.

bor...@gmail.com

unread,
Sep 7, 2015, 3:23:36 PM9/7/15
to
"... when asked, "How would you implement C style structures which are
essential to my work?" Chuck's reply was his famous, "I wouldn't." [Moore, 2002]
http://www.ultratechnology.com/essence.htm

https://groups.google.com/d/msg/comp.lang.forth/h7dZBYQlSwg/w1J1LsuuGVAJ
"... I would be very suprised if Forth Inc. had
these kind of problems because they are experts on Classic Forth and
teach people how to do it properly."

"Forth Inc. doesn't give away their excellent software or their excellent
training in how to write and think Forth."

I've read other posts like that, and they are found thoroughout this forum.

Anyway, the kind of language you are using is not something that I can condone
and unless we can stick to discussing technology and what is forum is about,
I'll start ignoring your posts. Why not follow Jeff's reasonable advice, BTW?

rickman

unread,
Sep 7, 2015, 4:14:39 PM9/7/15
to
On 9/7/2015 3:23 PM, bor...@gmail.com wrote:
>
> Anyway, the kind of language you are using is not something that I can condone
> and unless we can stick to discussing technology and what is forum is about,
> I'll start ignoring your posts.

Oh, please, please do!

--

Rick

Alexander Wegel

unread,
Sep 7, 2015, 6:13:17 PM9/7/15
to
<hughag...@gmail.com> wrote:

> On Monday, September 7, 2015 at 3:57:40 AM UTC-7, Alexander Wegel wrote:
> > <hughag...@gmail.com> wrote:
> >
> > Lies and crap as usual. What a bozo.
>
> You are opposed to structs too?

No, i'm pissed off by you persistantly offending people in a mean and
stupid way in my favorite forum.

But then: Do you even fathom what i'm about?

Alexander Wegel

unread,
Sep 7, 2015, 6:13:17 PM9/7/15
to
WJ <w_a_...@yahoo.com> wrote:

> hughag...@gmail.com wrote:
>
> > > Lies and crap as usual. What a bozo.
>
> How does this creature think that

By utilizing my brain. Unfortunately a butt doesn't work the same way,
so you might not understand.

>he knows that you did not accurately quote an email from Jeff Fox?

Yes i do. For example there's no context given.
(Hugh probably bugged J.F. about that "Passaniti conspiracy" until J.F.
had to write something back. We all know Hugh can be persistent as a
hemorrhoid. And Hugh hinted that JF probably didn't buy his conspiracy
nonsense)

But that's not even the part that i had in mind writing "lies". Keep on
guessing.

BTW: Calling other people "creature" as you did earns you the "dumbest
goebbels impersonator of the week" awards. Are you collecting them?

Bernd Paysan

unread,
Sep 7, 2015, 7:51:04 PM9/7/15
to
Alexander Wegel wrote:

> BTW: Calling other people "creature" as you did earns you the "dumbest
> goebbels impersonator of the week" awards. Are you collecting them?

A "don't feed the trolls" to you, as well. It's pretty obvious who the
trolls are here, please put them into your killfile, and be done with it.
There's no intelligent life out there in these troll caves, every word is
wasted.

hughag...@gmail.com

unread,
Sep 7, 2015, 8:39:06 PM9/7/15
to
On Monday, September 7, 2015 at 12:23:36 PM UTC-7, bor...@gmail.com wrote:
> "... when asked, "How would you implement C style structures which are
> essential to my work?" Chuck's reply was his famous, "I wouldn't." [Moore, 2002]
> http://www.ultratechnology.com/essence.htm
>
> https://groups.google.com/d/msg/comp.lang.forth/h7dZBYQlSwg/w1J1LsuuGVAJ
> "... I would be very suprised if Forth Inc. had
> these kind of problems because they are experts on Classic Forth and
> teach people how to do it properly."
>
> "Forth Inc. doesn't give away their excellent software or their excellent
> training in how to write and think Forth."
>
> I've read other posts like that, and they are found thoroughout this forum.

Well, who knows --- maybe Jeff Fox actually hated structs, and hence hated my novice package in which the data-structures rely entirely on structs --- he was just being polite by not telling me my code really does "suck" and really is "crap."

> Anyway, the kind of language you are using is not something that I can condone
> and unless we can stick to discussing technology and what is forum is about,
> I'll start ignoring your posts. Why not follow Jeff's reasonable advice, BTW?

Nobody else has ever felt burdened by this need for politeness. Going way back to 2009 when I first visited c.l.f. there has been constant criticism. John Passaniti uses the homo words such as "suck," but the theme is the same even without the vulgar words --- earlier I showed Elizabeth Rather's response to me asking why there is no D/ in ANS-Forth:

On Friday, November 20, 2009 at 12:07:12 AM UTC-7, Elizabeth D Rather wrote:
> Forth's design is pragmatic: it has functions that have been needed and
> that have proven their usefulness *in Forth*, not necessarily those that
> have been required in other languages. Generally speaking, Forth has
> the most flexible set of *integer* arithmetic operators of any language.
> In particular, M*/ was one of Chuck's most brilliant innovations. I'm
> sure if Chuck were trying to do your continued fractions that is what he
> would rely on. Yes, that sometimes requires thinking differently, like
> many other things in Forth.

Within days of that, she denounced me for being homophobic and said that I was not a Forth programmer. Then within days of that we had this fun thread in which Marcel Hendrix posted my code with my name removed from the copyright notice:
https://groups.google.com/forum/#!topic/comp.lang.forth/wP5nw1ClzsM%5B1-25%5D

In this thread Anton Ertl denounced me for not expecting that tick would abort on semicolon --- he has never given me credit for being an ANS-Forth programmer since that time, or of being a Forth programmer as he conflates ANS-Forth with Forth --- I think part of the reason for why gForth has these bizarre features is that Anton enjoys having confused students come to him with questions, so he can educate them and get some brown-nosing out of them.

This is why I consider ANS-Forth to be a cult. It is all about brown-nosing --- my question about D/ was very inappropriate, so I got smacked down by a fabulous tale of how Chuck Moore would use M*/ (if he were writing my code for me, and if he had magical powers that give arithmetic functions more precision than they actually have). I was expected to apologize --- say something like: "You are the master and I am just a grasshopper!" Same with Anton telling me that tick is supposed to abort on most of the words in the language, and that nobody would expect FIND to return the same xt for a given word every time: "You are the master and I am just a grasshopper!" Same with Bernd Paysan telling me that it is impossible for a quotation to access the local variables in the parent function, and that nobody would ever want that anyway: "You are the master and I am just a grasshopper!" I think that everybody who "succeeds" at ANS-Forth does it this way --- you will too, when you get past writing simple programs and start bumping into the many many problems in ANS-Forth --- when I wrote my first-ever ANS-Forth program (LowDraw.4th) I was an ANS-Forth programmer, but I haven't been since then according to the committee, because I didn't stick with the simplistic style of programming that is required.

Now everybody self-promotes themselves to be the lofty judge of internet etiquette so they can denounce me for saying that Elizabeth Rather is not actually a programmer at all, and providing evidence (the only Forth code she has ever posted that wasn't copied directly out of "Starting Forth"):

On Sunday, August 9, 2015 at 7:30:10 PM UTC-7, Elizabeth D. Rather wrote:
> Here's [an array definer] presented in my Forth Application Techniques that I think is
> far more useful than the FSL version:
>
> : ARRAY ( n -- ) CREATE DUP , CELLS ALLOT
> DOES> ( n -- a) SWAP OVER @ OVER < OVER
> 1 < OR ABORT" Out of Range" CELLS + ;

But all of these lofty judges are mysteriously silent when I get attacked (presumably distracted by adjusting their halos). Here are just a few typical quotes from Alex McDonald (John Passaniti's replacement):

"You have a serious misunderstanding of how pointers work."

"Most, if not all, of your macros [in the novice package] would benefit by not being macros."

"You really don't understand how CREATE DOES> works."

On Sunday, July 5, 2015 at 2:36:05 AM UTC-7, Alex McDonald wrote:
> Then, as Hugh complains about Bernd's "faked quotations", his FMITE is no
> more than :NONAME syntactic sugar. Perhaps worse, as from what I read
> there the language does not permit use of the quotation outside of its
> enclosing word.

I get sick and tired of this. It is impossible to discuss technical issues on c.l.f. because every time that I do I get some snarky retort such as this --- Forth-200x is a cult --- they rely entirely upon describing anybody who isn't loyal to them as a low-grade moron who doesn't know what pointers are, doesn't know how CREATE DOES> works, etc., and they avoid technical discussions like the plague.

How hard would it be to just accept the disambiguifiers? They work perfectly! In one fell swoop they allow portability between the several grossly divergent ANS-Forth compilers (VFX, SwiftForth, gForth, and everything else afaik) --- and they are ANS-Forth compliant themselves --- I would really expect praise for solving this problem, but instead Anton calls me a "kook" and recommends that nobody ever read a word that I write.

All of the Forth-200x committee members are afraid --- they just refuse to allow themselves to be drawn into any technical discussion of Forth, even of fundamental concepts such as how tick and FIND work --- this reek of fear is the sign of cults everywhere (no doubt the Heaven's Gate members had a similar fear of technical discussions regarding comets).

rickman

unread,
Sep 8, 2015, 1:40:03 AM9/8/15
to
The Japanese declared war on the US in a message of 13 parts. The
Unabomber had the papers publish his manifesto. I think you could take
some of Hugh's longer rants and string them together as a manifesto in
13 parts, especially since he seems to be declaring war on Forth.

--

Rick

Mux

unread,
Sep 8, 2015, 6:45:18 AM9/8/15
to
So while we're on (de)structs... In ye olde days of 6502 programming, I used what I called 'vertical arrays' which is basically a struct, and to this day, I use as an alternative to structs.

variable x 16 allot
variable y 16 allot
variable z 16 allot

: get_x ( index -- x ) x + @ ;
: get_y ( index -- y ) y + @ ;
: get_z ( index -- z ) z + @ ;

while technically not a struct in the C sense in that the, it's every bit as powerful without having to declare / create structures in forths that don't have them.

-Mux

Elizabeth D. Rather

unread,
Sep 8, 2015, 1:54:54 PM9/8/15
to
Your use of @ implies you meant this to be an array of cells, but you
ALLOTed in bytes :-)

more Forthish way to do this is:

: ARRAY ( n -- ) CREATE CELLS ALLOT
DOES> ( i -- a ) SWAP CELLS + ;

ARRAY X ARRAY Y ARRAY Z

And if you wanted to build in bounds checking, etc., you can do it
centrally in ARRAY. Not at all C-ish.

Cheers,
Elizabeth

--
==================================================
Elizabeth D. Rather (US & Canada) 800-55-FORTH
FORTH Inc. +1 310.999.6784
5959 West Century Blvd. Suite 700
Los Angeles, CA 90045
http://www.forth.com

"Forth-based products and Services for real-time
applications since 1973."
==================================================

humptydumpty

unread,
Sep 8, 2015, 2:48:41 PM9/8/15
to
Hi!

Maybe next few questions would be of use to ask and respond yourself:

From where comes data that populate that structure? Where is used?
How long most live informations that populates that structure?
Are there functional dependencies between fields of that structure?
Are there information for that structure available at compile-time?

That could be some questions to break a structure. Of course,
this questions should be responded generally for program states
no matter if that states belongs to a structure or not.

I hope it could help,
humptydumpty

WJ

unread,
Sep 8, 2015, 3:48:45 PM9/8/15
to
hughag...@gmail.com wrote:

> On Sunday, September 6, 2015 at 6:48:05 PM UTC-7, bor...@gmail.com wrote:

> > Thanks Marcel, I am starting work on my first real Forth
> > application, I will see if I can get by without s/u/r. But

Why?

Why would depriving yourself of structures make programming easier?

Why would depriving yourself of structures make your programs
more readable and maintainable?

Do you really want to accept the advice of a simpleton as the
word of God?

Having no structs in Forth doesn't make things easier for the
users of Forh. It may, however, make it easier for the lazy
implementors of Forth.


> > it's a little bit of a stretching of the mind for me,
> > because these days anytime I approach a problem, one of the
> > first things I do is identifying and designing the
> > structures (classes).
>
> All of my programs rely heavily structs --- the novice
> package's data-structures obviously require structs to hold
> the data --- I don't think that anybody can write a "real
> Forth application" without structs.

"Ms." Rather's assertion that Forth doesn't need structures
(records) because different programs use different data
arranged in different ways is mindless.

One could say that Forth doesn't need strings for the same
reason. Some can't grasp that different programs use strings that
are different in length and that contain different characters.

Similarly, different programs use structures that have different
fields. The data layout doesn't have to be the same.

bor...@gmail.com

unread,
Sep 8, 2015, 4:28:19 PM9/8/15
to
On Tuesday, September 8, 2015 at 2:48:45 PM UTC-5, WJ wrote:
At this stage I am learning Forth just to expand my horizon. So to be real
honest, who cares? For mind "expansion", learning to program without
structures would be an interesting mind exercise indeed. I learn Forth
completely as a hobby, I don't really need to, my day work is in a much
different fold, a fold where almost everything is done opposite of how
things are advocated here.

Also note that both Jeff Fox (when he was amongst us) and Chuck Moore are
of exactly the same mindset as Elizabeth as far as this topic is concerned.
So maybe the ala HA epithets don't quite apply? I haven't been around these
parts much, but I already begin to wonder if HA and WJ have something in
common, like being one and the same person?

jim.bra...@ieee.org

unread,
Sep 8, 2015, 8:27:54 PM9/8/15
to
Have mixed feelings about Forth and why it never outgrew its roots:
It's great to have a complete environment on a small embedded processor.
Forth is great for embedded debug/development. Highly factored Forth words result in the best code density available.

However, the notation is archaic. ( ) [ ] { } are all taken and have idiosyncratic usage. Tick has the right meaning. Would prefer JSON be supported: [ ] { } and : would need to have dedicated meanings that would break most existing Forth code? Of course one can create a JSON vocabulary and overwrite existing usage for the duration of the JSON data (done already?).

Then there is optimization: ITC, DTC, subroutine threaded, etc. are understood and supported. However conditionals and looping can be expressed at a higher level using concatenative or JSON syntax and letting the compiler inline the anonymous subroutines into the traditional conditional and loop code format. It would open up usage of higher level functional programming constructs.

A way forward is for the Forth standard to embrace as many higher level abstractions (both data and code) as possible and state the meaning. Let the vendors and open source community worry about implementation.

rickman

unread,
Sep 8, 2015, 9:24:12 PM9/8/15
to
Not much chance of that I think. They both exhibit some odd personality
traits, but not the same ones.

With Hugh, ER is something of an obsession, or would that be a
compulsion to write about her in his many demented ways. It's a shame
really. Hugh could be a significant contributor if it weren't for his
social neuroses.

--

Rick

Bernd Paysan

unread,
Sep 8, 2015, 9:35:22 PM9/8/15
to
jim.bra...@ieee.org wrote:

> A way forward is for the Forth standard to embrace as many higher level
> abstractions (both data and code) as possible and state the meaning. Let
> the vendors and open source community worry about implementation.

The standard is made by the vendors and free software community that worry
about the implementation. It's not like standards come out of thin air and
someone else has to implement them.

hughag...@gmail.com

unread,
Sep 8, 2015, 10:08:33 PM9/8/15
to
On Tuesday, September 8, 2015 at 10:54:54 AM UTC-7, Elizabeth D. Rather wrote:
> On 9/8/15 12:45 AM, Mux wrote:
> > So while we're on (de)structs... In ye olde days of 6502 programming, I used what I called 'vertical arrays' which is basically a struct, and to this day, I use as an alternative to structs.
> >
> > variable x 16 allot
> > variable y 16 allot
> > variable z 16 allot
> >
> > : get_x ( index -- x ) x + @ ;
> > : get_y ( index -- y ) y + @ ;
> > : get_z ( index -- z ) z + @ ;
> >
> > while technically not a struct in the C sense in that the, it's every bit as powerful without having to declare / create structures in forths that don't have them.
>
> Your use of @ implies you meant this to be an array of cells, but you
> ALLOTed in bytes :-)
>
> more Forthish way to do this is:
>
> : ARRAY ( n -- ) CREATE CELLS ALLOT
> DOES> ( i -- a ) SWAP CELLS + ;
>
> ARRAY X ARRAY Y ARRAY Z
>
> And if you wanted to build in bounds checking, etc., you can do it
> centrally in ARRAY. Not at all C-ish.
>
> Cheers,
> Elizabeth

The use of multiple arrays, one for each field, is the work-around that was used in QBasic as I described previously.

Note that the code Elizabeth Rather is presenting was copied directly out of "Starting Forth." It has the index beginning at 0 as is typical. AFAIK, all the code in "Starting Forth" was written by Chuck Moore.

The following is the ONLY example of code that that Elizabeth Rather has ever posted that wasn't copied directly out of "Starting Forth," but which she wrote herself:

On Sunday, August 9, 2015 at 7:30:10 PM UTC-7, Elizabeth D. Rather wrote:
> Here's [an array definer] presented in my Forth Application Techniques that I think is
> far more useful than the FSL version:
>
> : ARRAY ( n -- ) CREATE DUP , CELLS ALLOT
> DOES> ( n -- a) SWAP OVER @ OVER < OVER
> 1 < OR ABORT" Out of Range" CELLS + ;

Here she has the index starting at 1 rather than 0 because that is what she learned in COBOL --- at the time that she wrote this, she no longer had Chuck Moore around to write her code for her, so she had to take a stab at writing code herself.

Aside from the fact that using multiple arrays rather than struts is clumsy and inefficient, none of these array definers are any good anyway. They aren't general-purpose because they only work for cell-sized elements. Also, the use of CREATE DOES> makes them grossly inefficient. The inherent inefficiency of CREATE DOES> has been discussed many times before, most recently here:

https://groups.google.com/forum/#!topic/comp.lang.forth/yTvD4nqPGA4%5B101-125%5D

BTW: Does anybody else find it ironic that this thread is titled, "Could Forth be getting a bit of traction?" --- and yet, we now have Elizabeth Rather promoting the use of multiple arrays each for a field, rather than structs --- our car is getting plenty of traction, but unfortunately we have our gear-shift in reverse...

hughag...@gmail.com

unread,
Sep 8, 2015, 10:24:12 PM9/8/15
to
On Tuesday, September 8, 2015 at 1:28:19 PM UTC-7, bor...@gmail.com wrote:
> On Tuesday, September 8, 2015 at 2:48:45 PM UTC-5, WJ wrote:
> > Having no structs in Forth doesn't make things easier for the
> > users of Forh. It may, however, make it easier for the lazy
> > implementors of Forth.
> ...
> Also note that both Jeff Fox (when he was amongst us) and Chuck Moore are
> of exactly the same mindset as Elizabeth as far as this topic is concerned.
> So maybe the ala HA epithets don't quite apply? I haven't been around these
> parts much, but I already begin to wonder if HA and WJ have something in
> common, like being one and the same person?

WJ is conflating ANS-Forth and Forth --- I don't make that mistake as I know that they are completely different --- I love Forth but hate ANS-Forth. WJ loves Gauche Scheme and hates everything else, especially Common Lisp, so he is on comp.lang.forth and comp.lang.lisp (maybe other forums as well) posting Scheme programs inappropriately. I have nothing against languages such as Scheme, Lisp, Factor, OForth, etc. --- they aren't for me --- but, to each his own.

My own experience with Jeff Fox is that he didn't hate structs or general-purpose data-structures --- afaik, he wrote programs that worked, and I really doubt that he relied on such a clumsy inefficient technique as using multiple arrays one for each field rather than just use a struct, because he would never have gotten past writing toy programs if this were true --- I have never actually examined any of his code though, and I doubt that anybody else here has either, so claiming to know how he programmed seems a bit arrogant.

Note that I have never used a sock puppet on any of these forums.

Paul Rubin

unread,
Sep 8, 2015, 10:48:59 PM9/8/15
to
jim.bra...@ieee.org writes:
> A way forward is for the Forth standard to embrace as many higher
> level abstractions (both data and code) as possible and state the
> meaning.

I think part of the Forth spirit is to collapse away abstraction rather
than add more. This is both enabling and limiting, in their own ways.

hughag...@gmail.com

unread,
Sep 8, 2015, 11:28:24 PM9/8/15
to
According to Temple Grandin, the distinction between humans and animals is that humans abstractify the world whereas animals view the world primarily in concrete terms with very little abstraction. She is autistic and consequently does much less abstractification than regular people do, and she believes that her own view of the world gives her insight into how animals view the world. The advantage of abstract thinking is that you can free your mind from a lot of tedious detail. For example, if you are walking and you see a dog, you immediately classify it as a dog and you immediately know a lot about it, and you can continue without giving it any further thought and can focus your mind on more important matters. An autistic person can't think abstractly and will have to mentally compare the dog to remembered images of specific animals seen in the past (dogs, cats, horses, etc.) and will have to use a best-match to determine what kind of animal it is. This is very time-consuming and largely prevents autistic people from thinking about important matters, as they get bogged down in thinking about tedious details that regular people skim over. The disadvantage of abstract thinking is that if you see something you have never seen before, you will typically misclassify it and you will not realize that you have seen something new. Regular people don't look at the details, but they assume they see everything they need to know by subconsciously abstractifying what they see, and consequently they can have huge blind spots and be totally unaware of this.

BTW: Another thing that I'm sick and tired of, is people talking about the "Forth spirit" as if it were some mystical state of mind that distinguishes Forth programmers from regular people. This is also what Elizabeth Rather was saying: "M*/ was one of Chuck's most brilliant innovations. I'm sure if Chuck were trying to do your continued fractions that is what he would rely on. Yes, that sometimes requires thinking differently, like many other things in Forth." This is nonsense --- just focus on reality --- there is no need to "think differently" like some quasi-mystical dealer in mumbo-jumbo.

I don't think that you are qualified to tell us about the "Forth spirit." I remember not long ago that you showed up on comp.lang.forth as a newbie, and I don't recall have ever seen you post any Forth code since that time. I think that you are similar to Elizabeth Rather in that you have promoted yourself to be a teacher of Forth without having ever written any Forth programs.

jim.bra...@ieee.org

unread,
Sep 8, 2015, 11:48:11 PM9/8/15
to
On Tuesday, September 8, 2015 at 9:48:59 PM UTC-5, Paul Rubin wrote:
Programming in the large (e.g. using vectors and arrays as in Numpy) is both terse and avoids writing/testing a lot of loop code. One way to implement vector and array operators is to generate them dynamically, so it is useful to treat word lists as strings, put together the loop code and execute. Of course this can be done by adding a tool vocabulary. It would be good to have some standardization.

Another favorite is to have a precedence parser to convert an algebraic expression (starting from the character string representation) to a word definition (that uses locals?), and vice versa.

Paul Rubin

unread,
Sep 9, 2015, 12:00:56 AM9/9/15
to
jim.bra...@ieee.org writes:
> Programming in the large (e.g. using vectors and arrays as in Numpy)
> is both terse and avoids writing/testing a lot of loop code.

Well there is FSL (Forth Scientific Library) though I haven't used it.

> One way to implement vector and array operators is to generate them
> dynamically, so it is useful to treat word lists as strings, put
> together the loop code and execute. Of course this can be done by
> adding a tool vocabulary.

Not sure what you mean by tool vocabulary, but the above is certainly in
the range of existing Forth metaprogramming techniques.

> Another favorite is to have a precedence parser to convert an
> algebraic expression (starting from the character string
> representation) to a word definition (that uses locals?), and vice
> versa.

Things like this have been done but I don't remember specifics.

hughag...@gmail.com

unread,
Sep 9, 2015, 12:35:53 AM9/9/15
to
On Tuesday, September 8, 2015 at 9:00:56 PM UTC-7, Paul Rubin wrote:
> jim.bra...@ieee.org writes:
> > Another favorite is to have a precedence parser to convert an
> > algebraic expression (starting from the character string
> > representation) to a word definition (that uses locals?), and vice
> > versa.
>
> Things like this have been done but I don't remember specifics.

Ching's ABCforth.

Ron Aaron

unread,
Sep 9, 2015, 12:42:14 AM9/9/15
to


On 9/9/15 03:27, jim.bra...@ieee.org wrote:
> On Tuesday, September 8, 2015 at 3:28:19 PM UTC-5, bor...@gmail.com wrote:

> However, the notation is archaic. ( ) [ ] { } are all taken and have idiosyncratic usage. Tick has the right meaning. Would prefer JSON be supported: [ ] { } and : would need to have dedicated meanings that would break most existing Forth code? Of course one can create a JSON vocabulary and overwrite existing usage for the duration of the JSON data (done already?).


I see you stumbled upon 8th, which does use JSON as a data description
format.

Best regards,
Ron

Elizabeth D. Rather

unread,
Sep 9, 2015, 2:55:16 AM9/9/15
to
> Thanks Marcel, I am starting work on my first real Forth application, I will see if I can get by without s/u/r.
> But it's a little bit of a stretching of the mind for me, because these days anytime I approach a problem, one of the first things I do is identifying and designing the structures (classes).

Rather than feeling deprived, I recommend that you investigate the
opportunities for designing your own data structures, a facility that is
far more flexible and useful that C structures in that you can not only
specify the nature of the structure but also its behavior when a member
of a class of structures that you define is invoked. Look into any
detailed book on Forth (or system documentation) for information on
"Defining words".

Elizabeth D. Rather

unread,
Sep 9, 2015, 2:59:25 AM9/9/15
to
On 9/8/15 10:28 AM, bor...@gmail.com wrote:
...
> At this stage I am learning Forth just to expand my horizon. So to be real
> honest, who cares? For mind "expansion", learning to program without
> structures would be an interesting mind exercise indeed. I learn Forth
> completely as a hobby, I don't really need to, my day work is in a much
> different fold, a fold where almost everything is done opposite of how
> things are advocated here.

"Mind expansion" is an excellent motivation for learning Forth, as it
encourages very different problem-solving approaches. May I ask, what
books or resources do you have available, and what Forth system are you
using?

Anton Ertl

unread,
Sep 9, 2015, 3:50:04 AM9/9/15
to
m...@iae.nl writes:
>On Sunday, September 6, 2015 at 6:39:57 PM UTC+2, Greg wrote:
>> But then my question
>> is, what would you use instead of say C structures/unions
>> (or records in Pascal) which to me seem essential?
>
>Which immediate computing problem do *you personally*
>have that needs generalized structures/unions/records
>(*not* somebody else's problem or the one from the
>C/Pascal cookbooks)?

Needs? I have found that fields along the lines of

: tree-left ( tree -- addr )
<offset> + ;

useful many times, and we have finally standardized them in
Forth-2012. Differences in wordsets for defining such fields (e.g.,
the standard wordset and
<http://www.complang.tuwien.ac.at/forth/struct.fs> are less due to
different needs, rather than preferences in programming.

>There are cases where *something like*
>s/u/r naturally follows from the problem, but where
>Forth allows one to implement it in a way that is not
>normally recognized as a structure.

A classical way is to write, say CELL+ instead of TREE-RIGHT, or
somesuch. I find code that uses that approach hard to read, because I
have to know what is on the stack to interpret the intention of CELL+,
whereas the intention of TREE-RIGHT is much clearer.

- 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 2015: http://www.rigwit.co.uk/EuroForth2015/

hughag...@gmail.com

unread,
Sep 9, 2015, 5:18:48 AM9/9/15
to
Novices interested in trees can look at ASSOCIATION.4TH or SYMTAB.4TH in the novice package: http://www.forth.org/novice.html

Anton says:
> A classical way is to write, say CELL+ instead of TREE-RIGHT, or some such.

Classical where? Who does this?

Note that because I have ALLOCATION I can also have CLONE-NODE and so I can clone an entire tree even if the nodes are of different data types of different sizes (they would all have to be in the same inheritance chain, of course) --- Leon Wagner killed ALLOCATION for Forth-200x though...

hughag...@gmail.com

unread,
Sep 9, 2015, 5:28:57 AM9/9/15
to
On Tuesday, September 8, 2015 at 11:55:16 PM UTC-7, Elizabeth D. Rather wrote:
> On 9/6/15 3:48 PM, bor...@gmail.com wrote:
> > ...I am starting work on my first real Forth application, I will see if I can get by without s/u/r.
> > But it's a little bit of a stretching of the mind for me, because these days anytime I approach a problem, one of the first things I do is identifying and designing the structures (classes).
>
> Rather than feeling deprived, I recommend that you investigate the
> opportunities for designing your own data structures, a facility that is
> far more flexible and useful that C structures in that you can not only
> specify the nature of the structure but also its behavior when a member
> of a class of structures that you define is invoked. Look into any
> detailed book on Forth (or system documentation) for information on
> "Defining words".
>
> Cheers,
> Elizabeth

CREATE DOES> (what people will find if the look up "defining words" in most books) is not useful for building data structures because it just creates a single struct with a name --- data structures, by definition, contain multiple structs connected with link pointers --- structs are typically on the heap.

CREATE DOES> is mostly only used for arrays (that was the only example given in "Starting Forth"), and it grossly inefficient compared to my 3ARRAY etc., and ARY in the novice package. See this thread for a discussion of arrays:
https://groups.google.com/forum/#!topic/comp.lang.forth/yTvD4nqPGA4%5B101-125%5D

BTW: I still don't know what s/u/r means.

novembe...@gmail.com

unread,
Sep 9, 2015, 6:36:28 AM9/9/15
to
Earlier in this thread someone shortened structures/unions/records to s/u/r

NN

Marek Brunda

unread,
Sep 9, 2015, 6:59:14 AM9/9/15
to

> Another thing that I'm sick and tired of, is people talking about the
> "Forth spirit" as if it were some mystical state of mind that
> distinguishes Forth programmers from regular people.

You elaborate about human mind and abstraction but You can't understand the right sense of "Forth spirit" :-) I think you can but you don't want to. You want Forth to be rich general purpose language with all that cool structs, trees, locals, maybe OOP etc. You don't want to recognize that there are people, who like Forth primarily for example for its simpicity, flexibility, interactivity,.... When I look at some "modern" Forth source, I often recognize it's Forth only by colon and semicolon. The rest is C with Forth like "syntax" without parentheses.

Elizabeth D. Rather

unread,
Sep 9, 2015, 1:34:14 PM9/9/15
to
A better way to think of it is "Forth programming style." Every language
has an inherent intended programming style that is best suited to its
particular toolset. Good Forth style is, like other aspects of Forth,
quite different from good C style or good style in any other language,
just as good architectural design using bricks is different from good
architectural design using aluminum & glass.

To write successful Forth programs you need to master the Forth tools as
well as effective Forth style.

WJ

unread,
Sep 9, 2015, 3:00:57 PM9/9/15
to
hughag...@gmail.com wrote:

> BTW: I still don't know what s/u/r means.

structures / unions / records

Whammo

unread,
Sep 9, 2015, 3:29:00 PM9/9/15
to
The thing is, every case is a special case. General purpose libraries are not forth in the same sense that being a dick to people isn't cricket. There is a huge difference between abstraction and 'I am the great and powerful Oz, never mind that man behind the curtain'.
One cannot factor library code. Library code can only be 'good enough', which is arbitrary and so disempowers the programmer. Every time one codes something a greater understanding of the problem can be achieved. This is transcendental in every sense of the word.

jim.bra...@ieee.org

unread,
Sep 9, 2015, 3:32:10 PM9/9/15
to
Having spent most of a career using locals, don't have much facility with stack manipulations (e.g., can't keep track of where things are).

However, the ability to efficiently factor code deeply and at a fine granularity is unique to Forth, and that to me is the essence of Forth style.

Which brings up another issue: should an optimizing compiler have the liberty to choose between locals and stack manipulations?

Mux

unread,
Sep 9, 2015, 6:00:29 PM9/9/15
to
> Your use of @ implies you meant this to be an array of cells, but you
> ALLOTed in bytes :-)
>
> more Forthish way to do this is:
>
> : ARRAY ( n -- ) CREATE CELLS ALLOT
> DOES> ( i -- a ) SWAP CELLS + ;
>
> ARRAY X ARRAY Y ARRAY Z
>
> And if you wanted to build in bounds checking, etc., you can do it
> centrally in ARRAY. Not at all C-ish.
>
> Cheers,
> Elizabeth
>
Actually, I didn't. My forth core doesn't do bytes and only words :-) I've got my own minimal set of forth instructions similar to Chuck's machine forth which suffices nicely, at least for me.

But yeah, if you're going to go by Ans-forth, you're correct.

-Mux

Greg

unread,
Sep 9, 2015, 6:47:59 PM9/9/15
to
On Wednesday, September 9, 2015 at 1:59:25 AM UTC-5, Elizabeth D. Rather wrote:
Sure, I have read or just browsed through:

1) Starting Forth - read on-line

2) Forth Application Techniques - read but skipped multi-tasking stuff for now.
While going through FAT, all the sudden I was like, why was I so scared of the
stack, it is quite natural to work with it. It did feel like a light turned on.

I mentioned it before, I find Forth Application Techniques to be the best
introduction to Forth I could lay my hands on. If it weren't for some useless,
contrary noise I run into on this forum, I would have started with it earlier.

3) Forth Programmer's Handbook - skipped assembler stuff for now, etc.

4) I started at some point with Stephen Pelc's "Programming Forth" but it felt
like it wasn't quite the best for somebody who's never heard of Forth before.
At times, the text makes use of constructs/concepts before they've been
explained. Or at least so it seemed to me. I plan on coming back to it at some
point.

5) Thinking Forth - I am reading it right now.

I also spent some time on Jeff Fox's site, reading a bunch of articles there.
If you have some recommendations, I'd gladly accept, thanks.

Also I have iForth and downloaded SwiftForth/VFX and GForth. GForth seems to
have more liberty to add new features faster, experimental features, etc. so
I like to play with it too. Plus GForth installs on pads and stuff.
Recommendations are welcomed.

rickman

unread,
Sep 9, 2015, 11:19:36 PM9/9/15
to
Nothing in ANS Forth that says a byte has to be 8 bits. So the code can
work ok. The only non-ANS aspect is that the code should use CELLS to
make it work correctly if run on another Forth system. Obviously not
important in your case.

--

Rick

rickman

unread,
Sep 9, 2015, 11:27:23 PM9/9/15
to
On 9/9/2015 3:10 AM, Anton Ertl wrote:
> m...@iae.nl writes:
>
>> There are cases where *something like*
>> s/u/r naturally follows from the problem, but where
>> Forth allows one to implement it in a way that is not
>> normally recognized as a structure.
>
> A classical way is to write, say CELL+ instead of TREE-RIGHT, or
> somesuch. I find code that uses that approach hard to read, because I
> have to know what is on the stack to interpret the intention of CELL+,
> whereas the intention of TREE-RIGHT is much clearer.

I understand that point. I also have seen code that so hides the man
behind the curtain that if I need to know more than "TREE-RIGHT", it can
be hard. So hiding the information is not a bad thing inherently, but
it can be nice if you leave bread crumbs of some sort.

--

Rick

hughag...@gmail.com

unread,
Sep 10, 2015, 3:12:17 AM9/10/15
to
On Tuesday, September 8, 2015 at 1:28:19 PM UTC-7, Greg wrote:
> At this stage I am learning Forth just to expand my horizon. So to be real
> honest, who cares? For mind "expansion", learning to program without
> structures would be an interesting mind exercise indeed.

Elizabeth Rather is all about telling Forth programmers what they can't do. She was telling me that I can't use D/ for my continued-fraction program. Why isn't D/ in ANS-Forth? Obviously, because nobody at Forth Inc. could figure out how to write it, so it wasn't put in the standard --- now I have to write it in high-level Forth rather than assembly-language so my code will be ANS-Forth compliant. I don't think this is mind-expanding --- you believe that learning to program without structures is an interesting mind-exercise --- maybe you also believe that learning to get by without shoes is an interesting mind-exercise.

> I learn Forth
> completely as a hobby, I don't really need to, my day work is in a much
> different fold, a fold where almost everything is done opposite of how
> things are advocated here.

My goal with the novice-package was that people could write non-trivial programs --- I see no reason for Forth to be relegated to the hobby realm --- I know from experience that Forth can be used commercially, as it was my "day work" on two occasions in the past.

As a rule, if a teacher is telling you to do almost everything opposite of how it is done in the real world, then your teacher is just blowing hot air --- find another teacher.

> Also note that both Jeff Fox (when he was amongst us) and Chuck Moore are
> of exactly the same mindset as Elizabeth as far as this topic is concerned.
> So maybe the ala HA epithets don't quite apply?

So, HA's ideas about Forth don't apply --- you have only been programming Forth for a few weeks and you are a self-proclaimed hobbyist, but you have already defeated me --- Elizabeth Rather is proud of you...

m...@iae.nl

unread,
Sep 10, 2015, 6:20:25 PM9/10/15
to
On Wednesday, September 9, 2015 at 5:48:11 AM UTC+2, jim.bra...@ieee.org wrote:
> On Tuesday, September 8, 2015 at 9:48:59 PM UTC-5, Paul Rubin wrote:
> > jim.brak...@ieee.org writes:
[..]
> Another favorite is to have a precedence parser to convert an
> algebraic expression (starting from the character string
> representation) to a word definition (that uses locals?),
> and vice versa.

Like this?

NEEDS -xopg
0-VALUE GVAL a 0-VALUE GVAL b 0-VALUE GVAL c 0-VALUE GVAL disc
: quadraticroot ( F: a b c -- y1 y2 )
TO c TO b TO a
LET disc=SQRT(b*b-4*a*c):
LET ((-b+disc)/(2*a),(-b-disc)/(2*a)):
;
( x*x-3*x+2=0 ) LET quadratic root (1,-3, 2) :
CR .PRINT CR .PRINT
1.0000000000000000000000000000000000000000e+0000
2.0000000000000000000000000000000000000000e+0000 ok

( goldenratio ) CR LET. MAX(quadraticroot (1,-1,-1)):
1.6180339887498948482045868343656381177203e+0000 ok


\ Or Ferrari's quartic solver:

0-VALUE GVAL Alpha PRIVATE
0-VALUE GVAL Beta PRIVATE
0-VALUE GVAL Gamma PRIVATE
0-VALUE GVAL A PRIVATE
0-VALUE GVAL B PRIVATE
0-VALUE GVAL C PRIVATE
0-VALUE GVAL D PRIVATE
0-VALUE GVAL E PRIVATE

4 GARRAY qsol PRIVATE

LET 1e-40 GVAL qeps

: Beta=0? ( -- bool )
LET greater(ABS(Beta),REAL(qeps)): IF FALSE EXIT ENDIF
LET -B/(4*A): GLOCAL a1
0-VALUE GLOCAL a2p
0-VALUE GLOCAL a2m
LET a2p = SQRT(( SQRT(Alpha^2 - 4*Gamma)-Alpha)/2):
LET a2m = SQRT((-SQRT(Alpha^2 - 4*Gamma)-Alpha)/2):
LET qsol[0]=a1+a2p:
LET qsol[1]=a1-a2p:
LET qsol[2]=a1+a2m:
LET qsol[3]=a1-a2m:
TRUE ; PRIVATE

-- result in qsol
: COMPUTE-QUARTIC ( ??: za zb zc zd ze -- )
TO E TO D TO C TO B TO A
LET Alpha = C/A-0.375*(B/A)^2:
LET Beta = (B/A)^3/8-(B*C)/(2*A*A)+D/A:
LET Gamma = E/A - 3*(B/A)^4/256 + (B*B*C)/(16*A^3) - (B*D)/(4*A*A):
Beta=0? ?EXIT

LET -Alpha^2/12 - Gamma: GLOCAL P
LET -Alpha^3/108 + Alpha*Gamma/3 - Beta^2/8: GLOCAL Q
LET CBRT(-Q/2 + SQRT(Q^2/4+P^3/27)): GLOCAL pU

LET smaller(ABS(pU),REAL(qeps)):
IF LET -5*Alpha/6 - CBRT(Q):
ELSE LET -5*Alpha/6 + pU - P/3/pU:
ENDIF GLOCAL y

LET SQRT(Alpha+2*y): GLOCAL W
LET 3*Alpha+2*y: GLOCAL term1
LET 2*Beta/W: GLOCAL term2
LET -B/(4*A): GLOCAL a1
LET W/2: GLOCAL a2
LET SQRT(-term1-term2)/2: GLOCAL a3p
LET SQRT(-term1+term2)/2: GLOCAL a3m

LET qsol[0]=a1+a2+a3p: \ the sign distribution is tricky
LET qsol[1]=a1+a2-a3p:
LET qsol[2]=a1-a2-a3m:
LET qsol[3]=a1-a2+a3m: ; PRIVATE

: .QUARTIC ( ??: za zb zc zd -- )
COMPUTE-QUARTIC
4 0 ?DO CR ." x" I 1+ 0 .R ." = " LET. qsol[i]: LOOP ;

-marcel

hughag...@gmail.com

unread,
Sep 10, 2015, 8:10:59 PM9/10/15
to
On Wednesday, September 9, 2015 at 10:34:14 AM UTC-7, Elizabeth D. Rather wrote:
> On 9/9/15 12:59 AM, Marek Brunda wrote:
> >
> >> Another thing that I'm sick and tired of, is people talking about the
> >> "Forth spirit" as if it were some mystical state of mind that
> >> distinguishes Forth programmers from regular people.
> >
> > You elaborate about human mind and abstraction but You can't understand the right sense of "Forth spirit" :-) I think you can but you don't want to. You want Forth to be rich general purpose language with all that cool structs, trees, locals, maybe OOP etc. You don't want to recognize that there are people, who like Forth primarily for example for its simpicity, flexibility, interactivity,.... When I look at some "modern" Forth source, I often recognize it's Forth only by colon and semicolon. The rest is C with Forth like "syntax" without parentheses.

I don't expect the Forth language to provide trees --- I can do that myself --- I also don't consider OOP to be a good fit for Forth (it is not in C either, so it doesn't really belong in your list). You are saying that I'm opposed to simplicity, flexibility and interactivity (you forgot to mention motherhood and apple-pie), but none of this is true. What I'm opposed to is people demanding that Forth be a toy language incapable of writing non-trivial programs, and claiming that this is the "Forth spirit."

You are also saying that my code is like C. That isn't true. In my novice-package I have general-purpose data-structures in which a higher-order function takes the xt of a function (called a "toucher" in my documentation, which was an awkward term) that is given to EXECUTE for every node in the data-structure. I've never seen this done in C --- pointers to functions in C are complicated and almost never used --- also, you would have to use void pointers to the data that the toucher works on because you don't know what data-type it is at compile-time. The only higher-order function that I've ever seen in C was QSORT, and it is written in assembly-language not C because it is part of the standard library. Also, in my novice-package I have CLONE-NODE that can clone any node of any data-type or size. Nothing like this exists in C.

All in all, I am moving away from C rather than toward C.

> A better way to think of it is "Forth programming style." Every language
> has an inherent intended programming style that is best suited to its
> particular toolset. Good Forth style is, like other aspects of Forth,
> quite different from good C style or good style in any other language,
> just as good architectural design using bricks is different from good
> architectural design using aluminum & glass.
>
> To write successful Forth programs you need to master the Forth tools as
> well as effective Forth style.

You don't know how to program in C either, so you don't know anything about "good C style" --- this is all just hot air, claiming to be an expert on programming style in a variety of languages without having ever done any programming in anything other than COBOL in the 1970s.

jim.bra...@ieee.org

unread,
Sep 10, 2015, 8:26:19 PM9/10/15
to
Yes
(preferred syntax may vary, but that's just a vocabulary renaming issue: here would prefer LET be lower case and have a non-alphabetic lead in character)

As one wanders the Forth websites am finding most of these ideas have been implemented in one way or another (functional programming, locals, optimization, Unicode, data interchange, etc.). Starting to look at libraries to see if something resembling Python's huge library collection is possible?

One issue that is not unique to Forth is data bit size requirements: What does it take to have code run correctly on any word size processor. One approach is to state the datum bit size as an enumeration: for Forth the user gets to specify a numeric range for "cell" and "character" and accuracy and exponent range for floats. The compiler either punts or "does the right thing", e.g., cobbles enough addressable units together to form an adequate representation. As a minimum putting this info at the front of your code puts the reader on notice.

Elizabeth D. Rather

unread,
Sep 10, 2015, 8:57:47 PM9/10/15
to
The current practice is that programs make no assumptions about cell or
char size, but use the portability words (e.g. CELLS, CELL+, CHARS,
etc.) in user code. System providers are supposed to specify the sizes
of these things, and there's a way to find out (environmental constants).
Message has been deleted

Marcel Hendrix

unread,
Sep 11, 2015, 4:49:21 AM9/11/15
to
jim.bra...@ieee.org write Re: Could Forth be getting a bit of traction?

> On Thursday, September 10, 2015 at 5:20:25 PM UTC-5, m...@iae.nl wrote:
>> On Wednesday, September 9, 2015 at 5:48:11 AM UTC+2, jim.bra...@ieee.org wrote:
>> > On Tuesday, September 8, 2015 at 9:48:59 PM UTC-5, Paul Rubin wrote:
>> > > jim.brak...@ieee.org writes:
[..]
>> > Another favorite is to have a precedence parser to convert an
>> > algebraic expression (starting from the character string
>> > representation) to a word definition (that uses locals?),
>> > and vice versa.

>> Like this?

> Yes
> (preferred syntax may vary, but that's just a vocabulary renaming issue: here
> would prefer LET be lower case and have a non-alphabetic lead in character)

Actually, the upper case is just a convention, current Forths are not
case-sensitive, although some implementations are written so that you
can still make use of case-sensitivity (e.g. by using a global
CASESENSITIVE variable). The non-alphabetic lead is already possible
because identifiers oby the same rules as Forth idenitifiers (i.e no rules).
It gets even better, instead of e.g. QuadraticRoot you can also write Quadratic
Root (i.e embedded spaces or ALGOL syntax).

> One issue that is not unique to Forth is data bit size requirements: What
> does it take to have code run correctly on any word size processor. One
> approach is to state the datum bit size as an enumeration: for Forth the user
> gets to specify a numeric range for "cell" and "character" and accuracy and
> exponent range for floats. The compiler either punts or "does the right
> thing", e.g., cobbles enough addressable units together to form an adequate
> representation. As a minimum putting this info at the front of your code
> puts the reader on notice.

XOPG does it approximately like that. There is a standard choice before
loading the library between CELLs (integers, in my case 64 bits),
single (32b), double (64b) and extended (80b) precision IEEE floats,
double precision (64b) complex and arbitrary precision floats and complex
numbers (MPFR library). Of course one can choose arbitrary floats everywhere
and then set up the number of digits in that format (default is 256 bits).

The 'problem' with using all these types is that the compiler must correctly
handle the conversions between them (in XOPG that is from 7 type to others
is 7 x 7 combinations already).

One other feature is to ask for the exquivalent Forth code to be shown:

FORTH> .INTEGER.P ok
FORTH> debug ON 0-VALUE GVAL a 0-VALUE GVAL b 0-VALUE GVAL c 0-VALUE GVAL disc ok
FORTH> : quadraticroot ( F: a b c -- y1 y2 )
<3>[FORTH>] TO c TO b TO a
<3>[FORTH>] LET disc=SQRT(b*b-4*a*c): b b * 4 a * c * - SQRT TO disc
<3>[FORTH>] LET ((-b+disc)/(2*a),(-b-disc)/(2*a)): b NEGATE disc +
2 a * / b NEGATE disc - 2 a * /
<3>[FORTH>] ; ok

Notice the Forth generated by LET .. : echoeing during compilation.

-marcel

bor...@gmail.com

unread,
Sep 11, 2015, 11:15:18 AM9/11/15
to
Wow, Thinking Forth and other Forth literature I am reading changes the
way I write software now. Quite surprised to see Leo's tips nagging at me in
my mind.

It's exciting, because I wasn't sure at first if I wasn't wasting time with
my Forth adventure.

jim.bra...@ieee.org

unread,
Sep 11, 2015, 1:16:49 PM9/11/15
to
RE type conversions:
Full generality inferred type coercion is NP complete, not something for a small Forth environment. Would hash the operator (word) with its operand types so the correct variant can be found quickly (at most 7 variants). Programmer responsible for all type changes and that would be a single word with at most 7 x 7 variations.

visua...@rocketmail.com

unread,
Oct 4, 2015, 10:59:35 PM10/4/15
to
I started with RSC-Forth in 1984 and worked with Forth - making a living self employed - ever since.

Back then it was easy to start with Forth. There only was FIG-Forth, and RSC-Forth had differences very well documented - mostly differences because it was a Forth especially for microcontrollers.

For a newcomer nowadays it is not that easy to decide which Forth to start with, especially with microcontrollers. Using Forth commercially it would be a good advice to use a commercial Forth, but for using Forth in one's free time this is quite a bit expensive in most cases.

It would be great if each Forth offered would offer a compatibility package to make running all Forth programs possible on it. Forth is extensible, so this is feasible.

DB.

Elizabeth D. Rather

unread,
Oct 4, 2015, 11:48:13 PM10/4/15
to
For private exploration or hobby programming, the evaluation versions of
the commercial packages are a great choice. They are well-engineered and
extremely well documented. They are basically limited only in that you
cannot make commercial apps for distribution.

> It would be great if each Forth offered would offer a compatibility package to make running all Forth programs possible on it. Forth is extensible, so this is feasible.

The standards all go to great lengths to point out where an application
may have dependencies or restrictions, so you have good advice as to
what to do or avoid if you intend your program to be portable.

And every standard-conforming Forth documents the implementation
decisions it has made. This information allows a person with a Forth
application to know what is needed for portability based on differences
from the other system(s) it was written for. There's a very large set of
those possible alternative choices, so it's impossible for an
implementer who knows the choices he or she has made to know the
universe of possible other expectations a "compatibility package" would
have to consider.

Paul Rubin

unread,
Oct 5, 2015, 12:10:36 AM10/5/15
to
"Elizabeth D. Rather" <era...@forth.com> writes:
>> For a newcomer nowadays it is not that easy to decide which Forth to
>> start with, especially with microcontrollers.
> For private exploration or hobby programming, the evaluation versions
> of the commercial packages are a great choice.

Are any of them available for microcontrollers? I thought they were
just for Windows/Linux/Mac.

Hmm actually there's MPE Lite:

http://mpeforth.com/xc7lite.htm

There are some code size limitations but it sounds usable, at least on
certain devices.

I don't see a comparable version of Swift? Maybe I'm not looking in the
right place.

Meanwhile, I see Forth Application Techniques is $500 a copy on Amazon!

http://www.amazon.com/dp/0966215613

Might be time for a new edition or printing ;-)

Roberto Waltman

unread,
Oct 5, 2015, 12:53:54 AM10/5/15
to
Paul Rubin wrote:
>
>Meanwhile, I see Forth Application Techniques is $500 a copy on Amazon!
>
> http://www.amazon.com/dp/0966215613
>
>Might be time for a new edition or printing ;-)

Done - Listed in the same page for $18.99

R.W.

Elizabeth D. Rather

unread,
Oct 5, 2015, 12:58:33 AM10/5/15
to
On 10/4/15 6:10 PM, Paul Rubin wrote:
> "Elizabeth D. Rather" <era...@forth.com> writes:
>>> For a newcomer nowadays it is not that easy to decide which Forth to
>>> start with, especially with microcontrollers.
>> For private exploration or hobby programming, the evaluation versions
>> of the commercial packages are a great choice.
>
> Are any of them available for microcontrollers? I thought they were
> just for Windows/Linux/Mac.

SwiftX is an interactive cross-development system. The host runs on
Windows/Linux/Mac, and there are target for most popular
microcontrollers. It's really a far more convenient and satisfactory
development environment than running a limited compiler entirely on the
target.

> Hmm actually there's MPE Lite:
>
> http://mpeforth.com/xc7lite.htm
>
> There are some code size limitations but it sounds usable, at least on
> certain devices.
>
> I don't see a comparable version of Swift? Maybe I'm not looking in the
> right place.

Here: http://www.forth.com/embedded/index.html
>
> Meanwhile, I see Forth Application Techniques is $500 a copy on Amazon!
>
> http://www.amazon.com/dp/0966215613
>
> Might be time for a new edition or printing ;-)

That's actually the 2006 spiral-bound edition (historical artifact?).
The current updated version is $18.99 :-)

Paul Rubin

unread,
Oct 5, 2015, 2:35:49 AM10/5/15
to
"Elizabeth D. Rather" <era...@forth.com> writes:
> Here: http://www.forth.com/embedded/index.html

Nice! Somehow I missed that there was an evaluation version, and I
thought that I had checked.

>> http://www.amazon.com/dp/0966215613
>> Might be time for a new edition or printing ;-)
> That's actually the 2006 spiral-bound edition (historical
> artifact?). The current updated version is $18.99 :-)

I see a 2008 paperback edition for $248.26:

http://www.amazon.com/dp/B00JYHV1XA

I also see a paperback course notebook for $18.99:

http://www.amazon.com/dp/1419685767

Is that the actual book? I saw it earlier but thought "course notebook"
meant it was some kind of supplemental material that accompanied the
main book. You might want to clarify that on the Amazon page.

Paul Rubin

unread,
Oct 5, 2015, 2:44:24 AM10/5/15
to
Paul Rubin <no.e...@nospam.invalid> writes:
>> Here: http://www.forth.com/embedded/index.html
> Nice! Somehow I missed that there was an evaluation version

Unfortunately it looks like they're all Windows .exe's. I might be able
to try one out sometime but Linux would be much easier. It would be
extra interesting to have an ARM Linux version that could be hosted on a
Raspberry Pi or Beaglebone. I'm not really the target audience for this
sort of thing though.

Elizabeth D. Rather

unread,
Oct 5, 2015, 3:22:02 AM10/5/15
to
Yes, it's the same book, latest edition. "Course notebook" is an
accurate description, as it is descended from the course notebook from
which courses were taught at FORTH, Inc. as well as IBM, Apple, NASA,
and countless other sites.
It is loading more messages.
0 new messages