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

why bother with standards ?

631 views
Skip to first unread message

Chris Hinsley

unread,
Nov 19, 2012, 11:03:53 AM11/19/12
to
I was mulling over my Forth hobby and I'm kinda coming to the
conclusion that I'm going to ditch most of the ANS words I've
implamented (educational though it may have been) and go off on my own
! I think I can see what Chuck is getting at when he said he didn't
agree with there being a standard !

My own thoughts are that the concept of Forth, as a way of programming
a machine at a low level, are the best thing about Forth. And I feel
constrained by the standard. So I'm going to strip things down to only
what I require and then go off and implament my project useing only
what I need.

I've not come to this desition lightly ! Lot's of questioning as to
what I want from Forth. And I'm sorry but it's not the 'standard' or
'compatability'. It's a mechanisum to enable me to be independant of
'other peoples' compilers and langauges, I don't really care if other
peoples code can run on my system, so long as my code does then I'm
happy.

Chris

Chris Hinsley

unread,
Nov 19, 2012, 11:06:13 AM11/19/12
to
Anybody who wants to grab what I have so far better do it now !

https://sites.google.com/site/chrishinsley/

Regards

Chris

daveyrotten

unread,
Nov 19, 2012, 11:15:26 AM11/19/12
to
I am of the same mindset. I do wonder, though, if a standard that was implemented in layers (instead of all or nothing) wouldn't be more useful. (And maybe the ANS standard is. I have to admit I have never read it.) So that, if two words were doing exactly the same thing, they would at least have the same name/identifier. The closer you get to the core, the more naturally things are standard anyway. Is anybody really going to call DUP anything other than DUP anymore (except make it lower case, of course).

rickman

unread,
Nov 19, 2012, 12:07:33 PM11/19/12
to
On 11/19/2012 11:15 AM, daveyrotten wrote:
>
> I am of the same mindset. I do wonder, though, if a standard that was implemented in layers (instead of all or nothing) wouldn't be more useful. (And maybe the ANS standard is. I have to admit I have never read it.) So that, if two words were doing exactly the same thing, they would at least have the same name/identifier. The closer you get to the core, the more naturally things are standard anyway. Is anybody really going to call DUP anything other than DUP anymore (except make it lower case, of course).

Yes, the ANSI standard is definitely designed in "layers" so to speak.
None of the optional word sets have to be implemented.

From the ANSI document...

5.1.1 System compliance
A system that complies with all the system requirements given in
sections 3. Usage requirements and
4.1 System documentation and their sub-sections is a Standard System. An
otherwise Standard System
that provides only a portion of the Core words is a Standard System
Subset. An otherwise Standard System
(Subset) that fails to comply with one or more of the minimum values or
ranges specified in 3. Usage
requirements and its sub-sections has environmental restrictions.

So you can have a subset of the core words and still be a standard
system subset. I think the idea is that to be "standard" by this
document, you have to do some things their way with minimums, maximums,
etc, and implement words they way they define them. But you don't have
to implement any particular words.

Going your own way is fine. The primary purpose of the ANSI standard is
to allow people to exchange code without having to worry that every
detail of their system implementation will be incompatible. If you plan
to write all your own code this is not much of a concern. But then
again, if you ever want others to use your code, compatibility with a
standard helps a lot.

Rick

Pablo Hugo Reda

unread,
Nov 19, 2012, 1:59:53 PM11/19/12
to
I agree with you, forth not need standard.

I disagree with the low level programing, forth (for me) is for all
level programing.

pablo

Rod Pemberton

unread,
Nov 19, 2012, 7:06:25 PM11/19/12
to
"Chris Hinsley" <chris....@gmail.com> wrote in message
news:2012111916035398607-chrishinsley@gmailcom...
> I was mulling over my Forth hobby and I'm kinda coming to the
> conclusion that I'm going to ditch most of the ANS words I've
> implamented (educational though it may have been) and go off on my own
> ! I think I can see what Chuck is getting at when he said he didn't
> agree with there being a standard !
>

Yes, ANS has some odd renamings and rather perverse changes to earlier Forth
words. I started mostly with fig-Forth but have been adapting to ANS.
Unfortunately, Hayes' core tests are the only tests I'm aware of which
confirm that Forth is implemented somewhat consistently. The Josh Grams
small tester does work well without needing many Forth system words, but
there is no test suite for it. I.e., it's likely your ANS words will be the
base for whatever future Forth you create. So, after you've got your ANS
words working, maybe then de-ANS, downgrade, re-fig-Forth, or otherwise
modify or customize them.

> I've not come to this desition lightly !

decision

>


Rod Pemberton


Elizabeth D. Rather

unread,
Nov 19, 2012, 7:25:32 PM11/19/12
to
Sure, as long as the system is strictly for your own use and you don't
care about being able to use code other people have written, there's no
need to adhere to a standard.

A standard is useful to enable multiple implementers to generate systems
that many people can use without excessive implementation-specific
training or difficulty porting code. The Forth community as a whole
needs a standard, and the systems that are widely available (gForth,
Win32Forth, the various systems from MPE and FORTH, Inc., etc.) wouldn't
have been viable without a standard. An individual who doesn't plan to
distribute an implementation or use other people's code doesn't have
those constraints.

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."
==================================================

Bernd Paysan

unread,
Nov 19, 2012, 8:27:23 PM11/19/12
to
daveyrotten wrote:
> I am of the same mindset. I do wonder, though, if a standard that was
> implemented in layers (instead of all or nothing) wouldn't be more
> useful. (And maybe the ANS standard is. I have to admit I have never
> read it.)

Hello, yes it is! There's a core wordset, which is the "bare
mininumum", and even that minimum you can provide as loadable source
(parts of it which you feel you don't need). On a desktop system,
people expect a standard Forth to be all-or-nothing, but on small
embedded systems, having less than the full core wordset is not that
odd.

The standard is a standard, it isn't that easy to read, and some things
can be improved. But arguing that "it would be better if" and not even
having read it is plain stupid.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

Winston19842005

unread,
Nov 19, 2012, 9:59:24 PM11/19/12
to
On 11/19/12 8:27 PM, in article 61519424....@sunwukong.fritz.box,
"Bernd Paysan" <bernd....@gmx.de> wrote:

> daveyrotten wrote:
>> I am of the same mindset. I do wonder, though, if a standard that was
>> implemented in layers (instead of all or nothing) wouldn't be more
>> useful. (And maybe the ANS standard is. I have to admit I have never
>> read it.)
>
> Hello, yes it is! There's a core wordset, which is the "bare
> mininumum", and even that minimum you can provide as loadable source
> (parts of it which you feel you don't need). On a desktop system,
> people expect a standard Forth to be all-or-nothing, but on small
> embedded systems, having less than the full core wordset is not that
> odd.

My first forth, a fig-forth, came with nothing loaded at run-time. Being a
noob to Forth, I proceeded to load all the modules that I thought should be
resident (BASIC-like thinking), then performed a SAVE-SYSTEM so they would
all load when I started Forth.

I finally realized a while later this was stupid. I filled my system's
memory with stuff I mostly never used. I found the original copy I had and
went back to it. Even though load-time was increased by loading the screens
I needed for my purposes (specific to each program), it was the Forth thing
to do -- and increased the amount of memory I had.

Plus, I've found that there are better ways of doing things sometimes than
using someone else's packages...

Jason Damisch

unread,
Nov 19, 2012, 10:21:28 PM11/19/12
to
I think that in the real world, you have two opposing forces of nature, one is to be the same, the other one is to be different. So, in the grand scheme of things, there will be standards, and there will be standard Forth, and then there will be new kinds of Forth, experimental Forths, and non-standard Forths. I don't personally have a problem with this. It's just the way of things.

Jason

Hugh Aguilar

unread,
Nov 19, 2012, 11:29:37 PM11/19/12
to
On Nov 19, 5:25 pm, "Elizabeth D. Rather" <erat...@forth.com> wrote:
> Sure, as long as the system is strictly for your own use and you don't
> care about being able to use code other people have written, there's no
> need to adhere to a standard.

This is a false dichotomy --- that a Forther must either adhere to the
ANS-Forth standard or work entirely alone. The third possibility is
that Chris' Forth will make more sense than ANS-Forth and the Forth
community will migrate from ANS-Forth to Chris-Forth as the new
standard.

Assuming that the guy has a 3-digit I.Q., it would be almost
impossible for his Forth to make less sense than ANS-Forth, so the
third possibility seems the most likely to me.

When my Straight Forth comes out, everything else will become obsolete
--- the question of Chris-Forth vs. ANS-Forth will become moot (well,
ANS-Forth certainly will be obsoleted; Chris-Forth might survive if it
is reasonably good).

Tell us Chris --- will you have closures?

Mark Wills

unread,
Nov 20, 2012, 4:33:18 AM11/20/12
to
On Nov 20, 3:21 am, Jason Damisch <jasondami...@yahoo.com> wrote:
> I think that in the real world, you have two opposing forces of nature, one is to be the same, the other one is to be different.  So, in the grand scheme of things, there will be standards, and there will be standard Forth, and then there will be new kinds of Forth, experimental Forths, and non-standard Forths.  I don't personally have a problem with this.  It's just the way of things.
>
> Jason

I've had a good think about this in the past, and have determined that
I think a live standard for Forth is a good thing.

Sure, if you are not that bothered about running code from others,
then plough your own furrow, as they say.

Of course, there are many different Forth systems around, all of
slightly different flavours, each injected with their owners take on
various improvements over the standard language. However, I would say
that "The Standard" is the sun around which most every Forth system
orbits, and I do think that is a good thing; without that
gravitational force, there would be a danger that they would just
drift off into space, lost to all but their authors, and metastasize
into something that barely resembles the Forth in its DNA.

I think it's important to realise that The Standard isn't the be-all-
and-end-all. It's the bare bones. It's supposed to be augmented with
additional facilities, and with respect to those additional
facilities, you're completely free to knock yourself out and have at
it!

Finally, I think we could all agree that we wish Forth were more
pervasive in the programming world. There are only two commercial
Forth vendors left in the world (that I know of). Having a live
standard is, in my opionion, very important indeed if you are a
commercial vendor; it's lends credence to the language, and reassures
their clients that they could (at least in theory) switch to another
vendor and stand a chance of having their code work. This would be an
important factor to any client thinking of placing a contract to
develop a software project with a Forth vendor. They would want the
peace of mind that in the event of (say) the chosen vendor going out
of business, they could take the source code of the project to another
vendor and have the project continue, or continue with it themselves.
If every Forth system was completely different, with no under-pinning
standard, then the only choice would be a ground up re-write from the
project specs. That might be enough to convince any potential client
that the risk was too high.

So, for those reasons, I think a standard is a good thing.

Hugh does too, that's why he's ploughing his own furrow with his new
standard. And I applaud the effort. I encourage Hugh to publish his
standard when he's ready; it doesn't have to be written like a
standard document, it could be a spreadsheet with a brief synopsis of
each word, and a brief rationale as to the thinking behind it etc.

I would also encourage others to review it with an open mind - who
knows, it could turn out to be great. At any rate, it's a brave move
to strike out on your own. But there again, that's exactly what Chuck
Moore did.

It didn't turn out too badly for him, did it?

Anton Ertl

unread,
Nov 20, 2012, 4:49:07 AM11/20/12
to
daveyrotten <danw...@gmail.com> writes:
>I am of the same mindset. I do wonder, though, if a standard that was imple=
>mented in layers (instead of all or nothing) wouldn't be more useful. (And =
>maybe the ANS standard is. I have to admit I have never read it.)

It's not all-or-nothing, and even where it is (the core wordset), as
long as you don't want to claim compliance, there's nobody to prevent
you from subsetting.

> So that, =
>if two words were doing exactly the same thing, they would at least have th=
>e same name/identifier. The closer you get to the core, the more naturally=
> things are standard anyway. Is anybody really going to call DUP anything o=
>ther than DUP anymore (except make it lower case, of course).

Yes, even Postscript calls DUP "dup", but SWAP is "exch":-) Or closer
to Forth, Chuck Moore's ColorForth calls XOR OR. All fine for his
private system, but if you are going to publish it, as he did, I
recommend not using standard names with a different meaning (using
standard meanings with a different name is far less problematic).

- 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 2012: http://www.euroforth.org/ef12/

Rod Pemberton

unread,
Nov 20, 2012, 5:42:48 AM11/20/12
to
"Hugh Aguilar" <hughag...@yahoo.com> wrote in message
news:82ed1dc6-9bf0-492f...@uk1g2000pbb.googlegroups.com...
> [...]
> When my Straight Forth comes out, everything else will
> become obsolete --- [...]
>

That claim is entirely open-ended. I'm sure you meant to restrict
"everything else" to "all other Forths". Do you seriously expect a
competent C or C++ programmer to give up C or C++ and adopt
Straight Forth so readily? Ruby? Perl? Lisp? etc. I.e., even if
Straight Forth conquers the Forth world, not everyone is going
to use Forth. :-)

That said, something must be a truly huge improvement, not just slightly
better, for widespread adoption by people. If something is marginally
better or insignificantly so, most people will just ignore it and keep using
the old method. Forth and C with their numerous faults are proof of that.
Of course, a design doesn't have to be new to be very good. The techniques
of "continuous improvement" work. But, they do so very slowly,
methodically, incrementally. Those techniques can take a marginal to bad
design and improve it immensely. Straight Forth, being new, won't have
benefitted from that method.

If you really want to make "everything else [...] become obsolete", then
Forth, or a Forth derivative, or even a radically improved Forth, just won't
be sufficient. You'd need to create an entirely new language with all new
programming paradigms. You'll need something radically new and different
and easy and exciting. You'd want to study modern dynamicly typed languages
and object-oriented languages for ideas. You'd ignore structured code
languages, "spaghetti" code languages, and free format or no syntax
languages, since those paradigms are now obsolete. (Think about that...)
But, you'd also want to keep structured coding concepts etc in mind to not
repeat mistakes of the past.

The minimal or marginal improvement problem is the same problem that plagues
most new handtool designs. Every year about this time a half dozen or more
appear on the market vying for your money. Most of them aren't much better
than the older tool designs. But, every now and then, one will be a
fantastic improvement.


Rod Pemberton



Alex McDonald

unread,
Nov 20, 2012, 6:07:56 AM11/20/12
to
That's irrelevant.

HTML was a standard that came from another, earlier standard (SGML).
It was based on SGML, but didn't conform to it until HTML4; it was a
de-facto standard (de-facto in the sense that one implementation
became the reference point for other implementations) until HTML2.
Javascript followed a similar model to be codified as ECMAscript; Ruby
got ISO/IEC standardisation this year after a decade of "benevolent
dictatorship". Perl never went that route; it's still a de-facto
standard. With Forth, a technical committee of interested users and
vendors took two earlier Forth-xx de-facto standards and codified it
in ANS Forth.

XML, another SGML derivative, didn't exist until it was codified in
1997/1998. CDMI, where I sit on the technical work group, was like
XML, and it was a standard before there were any applications. It's
now an ISO/IEC standard, and there are products that use it; but like
XML applications, they followed the original codification of the
spec.

Whichever model is used, de-facto or standard first, they all have one
thing in common; more than one person decides that This Is A Good
Thing (TIAGT). That will be the downfall of Chris-Forth, Straight
Forth and any number of other projects of this nature; the need for
other people to follow you, and the need for investment, and often
lots of both.

If you are proposing a standard that has no reference implementation,
and if my experience of CDMI is anything to go by, that's a tough
route for one person. I work for the company that "invented" this
protocol, but we lost control the day we proposed to a number of other
companies that TIAGT -- but we knew we couldn't do it alone, and we
needed an ecosystem of other CDMI compliant products to prevent it
being a proprietary (if open) standard. The price of interoperability
and a larger market was to spend lots of money and intellectual
capital in giving your idea to others for free.

At that point we lost control of our standard; and as inventor of
Straight Forth, if it's any good, you will too. It takes compromise to
achieve agreement amongst several parties that have competing
interests and goals. Plus experience has shown us on the technical
work group that some of the initial design criteria that looked good
on paper and in small scale research projects turned out not to be
such a good idea for interoperability or at scale, and the final ISO
draft is quite a bit different from the early proposals.

If you're proposing a de-facto standard reference implementation, then
in today's market it's going to have to be good. Very good indeed.
You'll need a base system and tools for several platforms, a
commitment to bug fixes and enhancements, and a few application
developers that are committed to getting your product (and hence you)
to work for them. You'll need assistance and help from a number of
talented coders, and perhaps one or two who can blog or speak to the
product in terms that attracts others. That's before you've got
anywhere.

The next step is the biggest. Whichever way you choose to do it, by
developing a standard or a product that you would like to see as a de-
facto standard, this does not ensure adoption. People do that. It has
to look technically strong, fix a well defined set of problems; and to
be appealing, effective, well communicated, and marketed. Being lucky
and in the right place at the right time helps too for the mass
audience you'll need to attract.

You'll find out if you start this process that some to many of these
people won't agree with you, or that they ignore you, or deride you
for your efforts. They may very well point out that there's already a
standard, with a reference implementation and many commercial and non-
commercial products that support it, so why should they switch?

You may find that you don't like these people you've attracted; gays,
people who disagree with you, and so on. You'll need tolerance, the
patience of a saint and a thick skin as well as technical, marketing
and sales talent, none of which you have in abundance.

But you may have a trick or two up your sleeve. Perhaps the desire to
succeed where others have seldom done so will change your approach. I
hope so, since I fear your stock of goodwill with the ANS folks is
exhausted. Working with them to make a better standard is probably out
of the question. You've committed yourself to either going it alone or
eating humble pie.

Andrew Haley

unread,
Nov 20, 2012, 6:09:21 AM11/20/12
to
Mark Wills <forth...@gmail.com> wrote:
> On Nov 20, 3:21?am, Jason Damisch <jasondami...@yahoo.com> wrote:
>> I think that in the real world, you have two opposing forces of nature, one is to be the same, the other one is to be different. ?So, in the grand scheme of things, there will be standards, and there will be standard Forth, and then there will be new kinds of Forth, experimental Forths, and non-standard Forths. ?I don't personally have a problem with this. ?It's just the way of things.
>>
>> Jason
>
> I've had a good think about this in the past, and have determined that
> I think a live standard for Forth is a good thing.
>
> Sure, if you are not that bothered about running code from others,
> then plough your own furrow, as they say.

Or even reading it, for that matter. As much as anything else,
language standards are about communication: without some agreement
about language semantics it's impossible to say what a fragment of
code means. The result would be a tower of Babel, e.g. the recent

-- "Zero is just DUP OR if the stack is empty or DUP DUP OR if it
isn't. "

-- "Instead of "DUP OR", I think you meant "DUP XOR". "

-- "DUP OR is correct. OR on the F18 is an exclusive or. If you have a
concern about that, then as they say on the Charles Schwab commercials,
"talk to Chuck"."

Andrew.

Chris Hinsley

unread,
Nov 20, 2012, 12:12:23 PM11/20/12
to
> An individual who doesn't plan to
> distribute an implementation or use other people's code doesn't have
> those constraints.
>
> Cheers,
> Elizabeth

I plan to fully distribute what I end up with ! But it will use a Forth
like system. Wheather it is of interest to others if it dosn't stick to
the standards is debateable.

I am uncomfatable with aspects of the standard, increasingly so as I
have been moving from implamenting a Forth compiler to starting to
build what I'm after as an end result. 'Taos in Forth'. I want to
retain what Forth gives me, but it dosn't meet Taos requirements in
other aspects, so I need to bend it to the shape I desire.

I hope the Forth comunitee will forgive me !

Chris

Chris Hinsley

unread,
Nov 20, 2012, 12:21:54 PM11/20/12
to
> Tell us Chris --- will you have closures?

I do like them, blocks in Objective C let me recontly update my
genentic programming system to run multi core with very little effort !
But arguements about these sorts of 'langauge' features isn't why I'm
moving away. I'm pulled in a direction that began for me in 1988 ! Taos
! Forth could make a fine implamentation language that will acheive
what VP code did and provide both the low and high level progamming
enviroment. But there are aspects of Taos that Forth dosn't fit with,
and this is the source of my woes !

I could just use NASM, my own VM (again), and essentially create a high
level langauge from macros (again). But Forth has me in it's grip !
(you all know what that means), but it will need to serve a higher goal
if it's to replace VP code for Taos MK 2 !

Chris

Chris Hinsley

unread,
Nov 20, 2012, 12:23:54 PM11/20/12
to
> The minimal or marginal improvement problem is the same problem that plagues
> most new handtool designs. Every year about this time a half dozen or more
> appear on the market vying for your money. Most of them aren't much better
> than the older tool designs. But, every now and then, one will be a
> fantastic improvement.
>
>
> Rod Pemberton

So, your a Festool man Rod ? ;)

Chris

Josh Grams

unread,
Nov 20, 2012, 12:30:59 PM11/20/12
to
Chris Hinsley wrote: <2012112017122399207-chrishinsley@gmailcom>
> I am uncomfatable with aspects of the standard,

For instance?

--Josh

Chris Hinsley

unread,
Nov 20, 2012, 12:35:19 PM11/20/12
to
> Whichever model is used, de-facto or standard first, they all have one
> thing in common; more than one person decides that This Is A Good
> Thing (TIAGT). That will be the downfall of Chris-Forth, Straight
> Forth and any number of other projects of this nature; the need for
> other people to follow you, and the need for investment, and often
> lots of both.

In this context Forth or the language chosen is irrelevant. Taos does
not depend on any specific language ! It never did. A bunch of macros,
or a byte code intepreter, or a bytecode compiler, or your precious
Forth !!!

The structure of Taos never needed any specific language or language
feature ! That I would consider a Forth like replacement to VP1 or VP2
shows how much I respect Forth and Chuck !

I was chatting to a friend the other day about 'the old days' and I
said 'You know, after 5 Byte articles, Edge and IEEE front covers,
making people faint ! during a demo, booting a 320 node super computer
from the 286 PC they used as a doorstop. Everything else is gravey !'

Chris

Chris Hinsley

unread,
Nov 20, 2012, 12:48:20 PM11/20/12
to
OK, lets take one issue !

The input system ! Terminal and file input. Yuck, really bad ! I hit
this issue as soon as I tried to understand what INCLUDE did etc, I'm
sure you all laughed at that !

I want a simple stack of input streams ! The root being the terminal.
INCLUDE just stacks the next FD on the input source stack and that's
all. WORD just reads from the current top of input stack stream. And
real C style streams FFS ! Not some arse backwards set of IN> or
whatever the god damb word is. C streams using a BUFP and BUFE concept,
FD objects that wrap a stream of input, either via memory or disk file
or BLOCKS (jesus, what is all that about !).

Chris

Andy Valencia

unread,
Nov 20, 2012, 2:40:42 PM11/20/12
to
> I want a simple stack of input streams ! The root being the terminal.
> INCLUDE just stacks the next FD on the input source stack and that's
> all.

You'd think this would be great, but it doesn't work out in the
general case. There's a lot more flexibility if you design for
event driven I/O. So rather than take a "file" object (descriptor,
FILE *, whatever) and synchronously read() it, you have an input
dispatcher which gets invoked with the next input.

Interestingly, in classic Forth you can find the tension between these two
ways of looking at the world. 'eval is the vector to handle a given parsed
word. The words and their parse can be from the terminal, from
programmatically generated values, or (in ForthOS) from blocks. Whereas
things built on top of "token" use the synchronous style; you end up with a
lot of hassles getting "the" TIB (terminal input buffer) to play nicely with
your notional stack of input "streams". UNIX notwithstanding, there is
no inherent reason disk blocks need to be viewed as byte streams.

And, of course, as soon as you enter the world of GUI with its mice and
windows and menus, synchronous designs run out of gas quickly.

Andy

Chris Hinsley

unread,
Nov 20, 2012, 2:50:13 PM11/20/12
to
> And, of course, as soon as you enter the world of GUI with its mice and
> windows and menus, synchronous designs run out of gas quickly.
>
> Andy

Having designed and built upteen GUI's over the years, the underlying
input system, streams or otherwise don't come into it ! If it does your
doing it wrong !

Chris

Brad Eckert

unread,
Nov 20, 2012, 5:09:23 PM11/20/12
to
On Tuesday, November 20, 2012 12:40:44 PM UTC-7, Andy Valencia wrote:
>
> You'd think this would be great, but it doesn't work out in the
> general case. There's a lot more flexibility if you design for
> event driven I/O. So rather than take a "file" object (descriptor,
> FILE *, whatever) and synchronously read() it, you have an input
> dispatcher which gets invoked with the next input.
>

I dunno, if your Forth interpreter runs in its own thread, does it matter? Your GUI can jam keyboard input into a shared buffer, and the interpreter can take all the time it wants to process INCLUDED files. The GUI doesn't hang in the mean time.

I tried EVALUATing a line at a time in a Windows app. Didn't work, since stacks inside a callback go away when the callback exits.

The stream stack would eliminate a lot of complexity. The only drawback is memory size, since each stack element needs to have a big enough TIB to handle whatever source you throw at it. You could also use the stream stack as a place to put LEAVEs when compiling DO LOOP.

Alex McDonald

unread,
Nov 20, 2012, 6:41:12 PM11/20/12
to
So how do your GUIs get their input, and do their output?

Ed

unread,
Nov 20, 2012, 8:40:55 PM11/20/12
to
But where is this code "other people have written" that ANS Forthers
are constantly promising? If all that 20 years of ANS has achieved is
a few p/d forths written by another generation of bright sparks then
we're back where we were when L/P released F83 30 years ago in
the wake of Forth-83. Each Standard is heralded as Forth's new
beginning ... until the next one.

If someone has decided *not* to spend the rest of their life listening
and preparing for Forth's Great Coming and wants to actually
*experience* Forth before they get too old to care, then I wouldn't
dissuade them.



Rod Pemberton

unread,
Nov 20, 2012, 9:02:42 PM11/20/12
to
"Alex McDonald" <bl...@rivadpm.com> wrote in message
news:56d7bfbb-0dc0-4471...@kt16g2000pbb.googlegroups.com...
> On Nov 20, 4:29 am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:
> > On Nov 19, 5:25 pm, "Elizabeth D. Rather" <erat...@forth.com> wrote:
...

> > > Sure, as long as the system is strictly for your own use and you don't
> > > care about being able to use code other people have written, there's
> > > no need to adhere to a standard.
>
> > This is a false dichotomy --- that a Forther must either adhere to the
> > ANS-Forth standard or work entirely alone. The third possibility is
> > that Chris' Forth will make more sense than ANS-Forth and the Forth
> > community will migrate from ANS-Forth to Chris-Forth as the new
> > standard.
>
> > Assuming that the guy has a 3-digit I.Q., it would be almost
> > impossible for his Forth to make less sense than ANS-Forth, so the
> > third possibility seems the most likely to me.
>
> > When my Straight Forth comes out, everything else will become obsolete
> > --- the question of Chris-Forth vs. ANS-Forth will become moot (well,
> > ANS-Forth certainly will be obsoleted; Chris-Forth might survive if it
> > is reasonably good).
> >
> > Tell us Chris --- will you have closures?
>
> That's irrelevant.
...

> HTML was a standard that came from another, earlier standard (SGML).
> It was based on SGML, but didn't conform to it until HTML4; it was a
> de-facto standard (de-facto in the sense that one implementation
> became the reference point for other implementations) until HTML2.
> Javascript followed a similar model to be codified as ECMAscript; Ruby
> got ISO/IEC standardisation this year after a decade of "benevolent
> dictatorship". Perl never went that route; it's still a de-facto
> standard. With Forth, a technical committee of interested users and
> vendors took two earlier Forth-xx de-facto standards and codified it
> in ANS Forth.
>
> XML, another SGML derivative, didn't exist until it was codified in
> 1997/1998. CDMI, where I sit on the technical work group, was like
> XML, and it was a standard before there were any applications. It's
> now an ISO/IEC standard, and there are products that use it; but like
> XML applications, they followed the original codification of the
> spec.

This is irrelevant.

> Whichever model is used, de-facto or standard first, they all have one
> thing in common; more than one person decides that This Is A Good
> Thing (TIAGT).

"A camel is a horse designed by committee."

"Too many cooks spoil the broth."

The various problems with both Forth and C are a result of this. Other
people came along afterwards and said: "We need this." and "Why doesn't it
have this?". The "fixes" and additions created bugs and problems. What's
needed is a smart, visionary, programmer, or small team, who maintains tight
control until the software is developed enough that it can stand on it's own
with infrequent help from maintenance programmers.

> That will be the downfall of Chris-Forth, Straight
> Forth and any number of other projects of this nature; the need for
> other people to follow you, and the need for investment, and often
> lots of both.

It sounds like Chris is about to abandon his Forth. That's the "death
knell" for all open-source projects. The original creator is usually
critical to the "life" of an open-source project. He knows the software the
best and can implement any user desired changes in the most effective
manner. He is also the one going to be doing most of the coding, even after
being open-sourced. Other programmers 1) don't always understand what is
important to keep or what the code does, and 2) being less familiar with the
code, unintentionally "trash" the code base, i.e., novices.


Rod Pemberton




Rod Pemberton

unread,
Nov 20, 2012, 9:05:29 PM11/20/12
to
"Chris Hinsley" <chris....@gmail.com> wrote in message
news:2012112017235493336-chrishinsley@gmailcom...
> > The minimal or marginal improvement problem is the same problem
> > that plagues most new handtool designs. Every year about this time
> > a half dozen or more appear on the market vying for your money.
> > Most of them aren't much better than the older tool designs. But,
> > every now and then, one will be a fantastic improvement.
> >
>
> So, your a Festool man Rod ? ;)
>

Festool seems to be a tool brand ... No, that's the first I've heard of
them. So, is Festool supposed to represent high quality or novel designs?

I was mostly referring to infomercial tools, but just as an example of the
marginal improvement issue.

BTW, is it "okay" if I ask you to turn on your spelling checker ... Please?
(You've misspelled 13 words in this thread alone ...)


Rod Pemberton


Hugh Aguilar

unread,
Nov 20, 2012, 9:24:46 PM11/20/12
to
On Nov 20, 3:38 am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Hugh Aguilar" <hughaguila...@yahoo.com> wrote in message
>
> news:82ed1dc6-9bf0-492f...@uk1g2000pbb.googlegroups.com...
>
> > [...]
> > When my Straight Forth comes out, everything else will
> > become obsolete --- [...]
>
> That claim is entirely open-ended.  I'm sure you meant to restrict
> "everything else" to "all other Forths".  Do you seriously expect a
> competent C or C++ programmer to give up C or C++ and adopt
> Straight Forth so readily?  Ruby?  Perl?  Lisp?  etc.  I.e., even if
> Straight Forth conquers the Forth world, not everyone is going
> to use Forth.  :-)

Straight Forth is only for micro-controller programming. This means
that it competes almost entirely against C, that is used in 85% of
micro-controller projects. It also competes against assembly-language,
that is used in 10% of micro-controller projects (usually for small
chips such as the 8051 whose only virtues are low-cost and low-power).
It also competes against ANS-Forth and BASIC and the various other
languages (such as Spin for the Propeller), that are used in the other
5% (usually proprietary languages provided by the chip maker for their
own chip). I'm just pulling all of these percentages out of the usual
place that internet experts get their statistics, but they seem
realistic. There is also Java and Objective C that are used in smart
phones, but that is an entirely different world that I'm not
addressing at all --- I think Slava wants to make inroads there, and I
wish him luck.

As for desktop-computer and laptop programming, I intend to make
Scheme my "sister language." This means that all utility programs that
need to be written in conjunction with the micro-controller project
will be in this language for the sake of consistency. This typically
means transformation of data that goes to or from the micro-controller
and the desktop computer, from one format to another (for example, at
Testra I wrote a program to convert AutoCAD dxf files into CNC gcode).
Most likely I will specify Racket, as that is the most popular Scheme
with the most libraries and the best IDE (although I myself am using
Gambit right now).

Scheme has closures. If the brave Straight Forth user doesn't know
what closures are (and he wouldn't, if his background is C or ANS-
Forth), then he can learn about the concept while learning Scheme,
which all Straight Forth programmers will be expected to know. There
are beaucoup books on programming theory (such as SICP) that use
Scheme as their example language --- this is largely why I chose
Scheme rather than Python, although Python is more popular and has
more libraries available.

> That said, something must be a truly huge improvement, not just slightly
> better, for widespread adoption by people.  If something is marginally
> better or insignificantly so, most people will just ignore it and keep using
> the old method.  Forth and C with their numerous faults are proof of that.
> Of course, a design doesn't have to be new to be very good.  The techniques
> of "continuous improvement" work.  But, they do so very slowly,
> methodically, incrementally.  Those techniques can take a marginal to bad
> design and improve it immensely.  Straight Forth, being new, won't have
> benefitted from that method.

My sales pitch will be: "Straight Forth has closures, and C doesn't
--- nyah! nyah! nyah!"

Take that, Rod! :-)

Hugh Aguilar

unread,
Nov 20, 2012, 9:48:46 PM11/20/12
to
On Nov 20, 4:09 am, Andrew Haley <andre...@littlepinkcloud.invalid>
wrote:
> Mark Wills <forthfr...@gmail.com> wrote:
> > On Nov 20, 3:21?am, Jason Damisch <jasondami...@yahoo.com> wrote:
> >> I think that in the real world, you have two opposing forces of nature, one is to be the same, the other one is to be different. ?So, in the grand scheme of things, there will be standards, and there will be standard Forth, and then there will be new kinds of Forth, experimental Forths, and non-standard Forths. ?I don't personally have a problem with this. ?It's just the way of things.
>
> >> Jason
>
> > I've had a good think about this in the past, and have determined that
> > I think a live standard for Forth is a good thing.
>
> > Sure, if you are not that bothered about running code from others,
> > then plough your own furrow, as they say.
>
> Or even reading it, for that matter.  As much as anything else,
> language standards are about communication: without some agreement
> about language semantics it's impossible to say what a fragment of
> code means.  The result would be a tower of Babel...

The big difference between Straight Forth and the various other roll-
your-own Forth systems around, is that I will write a standards
document. I won't just have a big collection of words that I add to
whenever I feel like it. I will have a "core wordset" and various
optional "extension wordsets" and so forth, similar to ANS-Forth. All
of this will be documented so there is no question about what any
particular word does. Also, I will encourage other people to write
their own Straight Forth implementation, which they may either sell or
give away for free. Pelc, for example, will hopefully write a Straight
Forth (it may very well generate faster executing code than my own as
he has more experience with optimizers than I do). I will test any
implementation for conformance, for a nominal fee --- nobody can use
the name Straight Forth unless I say that their system conforms.

My standards document will be a lot smaller than the ANS-Forth
document, which is already small by language-standard standards. For
example, I won't have DO loops, and a lot of other 1970s-vintage cruft
that ANS-Forth has. A person should be able to read the entire
document from cover to cover over a weekend.

I wish Chris good luck on his system. I don't think that he's trying
to create a standard, so he's not really competing directly against
Straight Forth. If his system is good though, and a lot of people
start using it, then maybe it will become a de facto standard anyway.
I will look at it and perhaps learn something that I can put into
Straight Forth. I'm not like the Forth-200x committee --- I'm not
striving to limit everybody else to my own level of incompetence --- I
don't feel threatened by people who think for themselves.

Hugh Aguilar

unread,
Nov 20, 2012, 10:21:22 PM11/20/12
to
On Nov 20, 4:07 am, Alex McDonald <b...@rivadpm.com> wrote:
> You may find that you don't like these people you've attracted; gays,
> people who disagree with you, and so on. You'll need tolerance, the
> patience of a saint and a thick skin as well as technical, marketing
> and sales talent, none of which you have in abundance.

Well, there is a reason why it is called "Straight" Forth --- flaming
gays will get my boot in their behind to speed their way out the door.

I'm not so desperate for followers that I will tolerate the
association of losers --- only the most elite of humanity will become
Straight Forth programmers.

> But you may have a trick or two up your sleeve. Perhaps the desire to
> succeed where others have seldom done so will change your approach. I
> hope so, since I fear your stock of goodwill with the ANS folks is
> exhausted. Working with them to make a better standard is probably out
> of the question. You've committed yourself to either going it alone or
> eating humble pie.

I have noticed that a lot of losers are attracted to fringe causes as
a way to hide their incompetence. I can make an analogy to history. It
would be a bad idea for a person who doesn't know anything about the
Civil War to claim to be an expert, because there are a lot of people
around who know a lot about the subject, and everybody knows at least
a little about the subject. By comparison, the person could claim to
be an expert on the Peloponnesian War and spout great quantities of
nonsense, and nobody will call him on it because almost nobody knows
anything more than the most rudimentary facts about the subject
themselves. Nowadays, Forth is very obscure. When I have mentioned to
programmers that I program in Forth, they typically think that I'm
mispronouncing "Fortran" --- they went through college and various
professional jobs and never even heard of Forth. This is why Passaniti
spends all of his time on comp.lang.forth pretending expertise,
although the only programming language that he knows is Perl ---
comp.lang.forth is a haven for losers who want to fake up expertise
and not get caught. Well, I'm not like Elizabeth Rather who embraces
every loser as one of her own --- I'll just boot them out --- that is
the only "trick" that I know for succeeding!

P.S. I went to the gun show the other weekend to get a deer rifle.
While I was there I bought a book: "The Devil Knows how to Ride ---
the true story of William Clarke Quantrill." I also noticed multiple
vendors selling t-shirts that say, "molon labe" (many of them written
in the Greek alphabet!), which I did NOT buy. It makes sense that
rednecks should know about the Civil War, as that is where the whole
redneck culture arose. It seems absurd that they should pretend to be
experts on ancient Greek history though. Anyway, that is where my
analogy above came from.

Alex McDonald

unread,
Nov 21, 2012, 4:34:37 AM11/21/12
to
You've made my point for me.

Rod Pemberton

unread,
Nov 21, 2012, 4:51:45 AM11/21/12
to
"Hugh Aguilar" <hughag...@yahoo.com> wrote in message
news:757d3586-8b4b-424c...@vb8g2000pbb.googlegroups.com...

> I'm not so desperate for followers that I will tolerate the
> association of losers --- [...]

So, Straight Forth has a psychology test included? Are you certified? How
do I pass it? What do I have to do to unlock Straight Forth once I pass it?
;-)

> [...] only the most elite of humanity will become
> Straight Forth programmers.

Isn't that the problem with most programming languages? I.e., too few
programmers to reach critical mass.

Most languages require some intelligence and education to program.
Shouldn't programming languages be designed for the, er... to borrow your
terms, the two-digit IQ crowd? Programming requires many man-hours as is.
That's expensive for employers. If everyone could program, wouldn't that do
for programming what reading and writing did for literature? I.e., wouldn't
that produce a diverse and immense amount of code that would benefit
society? The goals of FSF and FOSS movement seem to be to attack closed
source, copyrighted software. That's really not the problem. The problem
is the intellect that's required to program, or the elitism that excludes
people from programming, or the lack of access to programming tools.

> I have noticed that a lot of losers are attracted to fringe causes
> as a way to hide their incompetence.

How is that any different from politicians, physicists, mathematicians,
engineers, doctors, and lawyers? Many of them are completely incompetent
and many are attracted to fringe causes too. In many cases, it's purely the
way they present their perspective that prevents others from recognizing
them as total nutjobs. In other cases, membership in respected and
established organizations which present an otherwise strange ideology in a
non-threatening manner is used to hide radicalism. These people just
haven't been labeled radicals by society, or by intrusive, self-righteous,
authoritarian government agencies. Society doesn't know they are radicals
and can't label them as such. Agencies only "attack" what they receive
complaints about and deem to be a "threat". So, no one is going to complain
you're radical if your a member of say, "The Society for the Preservation of
and Enhancement of America", while that could mean it's a White Supremacist
organization, or even a Black Supremacist organization ... If no one is
complaining to the D.O.J. that incompetent fund manager Bernard Madoff was
sentenced to federal prison for 150 years and $7.2 Billion USD for his
illegal Ponzi scheme, but incompetent President Obama is a free man, beloved
by 47% of the populace, after implementing his illegal, expensive, already
failing, Ponzi scheme, i.e., Obamacare, then nothing gets done.

> P.S. I went to the gun show the other weekend to get a deer rifle. [...]

I'm not an animal activist or anything, since I'm strongly pro-gun rights.
Even so, I don't actually own a gun. And, I don't hunt animals ... Hey, I
didn't say I don't hunt. ;-) Well, I don't hunt. Or, more accurately, I
haven't yet and maybe never will, but may someday ... I.e., I'm not opposed
to it. Besides, you need gun rights for home defense. If someone comes
into your home alive without your permission, they need to be sent back out
dead, be it with or without a warrant. I'm just curious as to how one
rationalizes that shooting and killing a deer is any different from shooting
and killing a two to seven year old human child? That's effectively what
one is doing. If you can kill a deer as many hunters do or kill a cow as
many farmers do, why is it that we consider such people to be "good" people
and solid Americans? We clearly don't consider them to be a violent threat
or even potential murderers. We'd never even consider that they'd point a
gun at a child, unless they actually did. Yet, they - sometimes
repeatedly - kill something with the IQ of a child.

The point is related to the prior paragraph about radical beliefs. They're
frequently hidden in plain sight. In this example, it's acceptable to kill
an animal with an IQ the same as a human child, but it's entirely wrong to
kill a human child. We use intellect to justify not killing a child or we
belittle animals as "dumb" or declare an animal life being of less value
than a human life to justify killing them. So, that's a contradiction.
Both can't true. It's either wrong to kill both, or it's just to kill both.
The fact that humanity chooses to reject one and accept the other is one of
many examples which reinforces America's "willful blindness" towards the
abundant radical and strange beliefs that permeate our society.


Rod Pemberton



Alex McDonald

unread,
Nov 21, 2012, 5:04:21 AM11/21/12
to
On Nov 21, 1:58 am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Alex McDonald" <b...@rivadpm.com> wrote in message
A benevolent dictator. Unfortunately, most people don't have the
necessary skills to be one. You, I and Hugh Aguilar don't qualify.

>
> > That will be the downfall of Chris-Forth, Straight
> > Forth and any number of other projects of this nature; the need for
> > other people to follow you, and the need for investment, and often
> > lots of both.
>
> It sounds like Chris is about to abandon his Forth.  That's the "death
> knell" for all open-source projects.  The original creator is usually
> critical to the "life" of an open-source project.  He knows the software the
> best and can implement any user desired changes in the most effective
> manner.  He is also the one going to be doing most of the coding, even after
> being open-sourced.  Other programmers 1) don't always understand what is
> important to keep or what the code does, and 2) being less familiar with the
> code, unintentionally "trash" the code base, i.e., novices.
>

That's but one method of software development, and it doesn't scale.
It's not the way that commercial software or even the bulk of open
source is developed, where all sorts of standards and cooperation are
vital. Many successful open source products are funded by commercial
companies, where again, teams rather than individuals and standards
(both specified and de-facto) are employed. It takes more than one
brilliant and hyper productive individual banging out code to make a
successful code base. For example at scale, which I'm sure you're
aware of; http://www.linuxfoundation.org/.

> Rod Pemberton

Andrew Haley

unread,
Nov 21, 2012, 5:43:43 AM11/21/12
to
Rod Pemberton <do_no...@notemailnotz.cnm> wrote:

> Most languages require some intelligence and education to program.
> Shouldn't programming languages be designed for the, er... to borrow
> your terms, the two-digit IQ crowd?

"Don't blame me for the fact that competent programming, as I view it
as an intellectual possibility, will be too difficult for 'the average
programmer'. You must not fall into the trap of rejecting a surgical
technique because it is beyond the capabilities of the barber in his
shop around the corner." -- Dijsktra, EWD 512: Comments at a Symposium.

Andrew.

Albert van der Horst

unread,
Nov 21, 2012, 8:00:55 AM11/21/12
to
In article <2012112017215480428-chrishinsley@gmailcom>,
Chris Hinsley <chris....@gmail.com> wrote:
>> Tell us Chris --- will you have closures?
>
<SNIP>
>
>I could just use NASM, my own VM (again), and essentially create a high
>level langauge from macros (again). But Forth has me in it's grip !
>(you all know what that means), but it will need to serve a higher goal
>if it's to replace VP code for Taos MK 2 !

Switch to FASM it is superior for such purpose.

>
>Chris
>
--
Albert van der Horst, UTRECHT,THE NETHERLANDS
Economic growth -- being exponential -- ultimately falters.
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

Chris Hinsley

unread,
Nov 21, 2012, 9:24:50 AM11/21/12
to
On 2012-11-21 02:05:29 +0000, Rod Pemberton said:

> "Chris Hinsley" <chris....@gmail.com> wrote in message
> news:2012112017235493336-chrishinsley@gmailcom...
>>> The minimal or marginal improvement problem is the same problem
>>> that plagues most new handtool designs. Every year about this time
>>> a half dozen or more appear on the market vying for your money.
>>> Most of them aren't much better than the older tool designs. But,
>>> every now and then, one will be a fantastic improvement.
>>>
>>
>> So, your a Festool man Rod ? ;)
>>
>
> Festool seems to be a tool brand ... No, that's the first I've heard of
> them. So, is Festool supposed to represent high quality or novel designs?

They do make extreamly good tools ! But it's a system, buy one and it's
the thin edge of the wedge ! You just end up getting more, start tool
collecting rather tha making stuff ! :)

> BTW, is it "okay" if I ask you to turn on your spelling checker ... Please?
> (You've misspelled 13 words in this thread alone ...)
>
>
> Rod Pemberton

I can't find the spellchecker option on Unison, so no. Sorry about the
dyslexia, words just come out as they look right to me, I'm not being
lazy !

Chris

Chris Hinsley

unread,
Nov 21, 2012, 9:31:31 AM11/21/12
to
On 2012-11-21 13:00:55 +0000, Albert van der Horst said:

> In article <2012112017215480428-chrishinsley@gmailcom>,
> Chris Hinsley <chris....@gmail.com> wrote:
>>> Tell us Chris --- will you have closures?
>>
> <SNIP>
>>
>> I could just use NASM, my own VM (again), and essentially create a high
>> level langauge from macros (again). But Forth has me in it's grip !
>> (you all know what that means), but it will need to serve a higher goal
>> if it's to replace VP code for Taos MK 2 !
>
> Switch to FASM it is superior for such purpose.
>
>>
>> Chris

FASM ? OK, I'll take a look at that. Thanks.

Chris

Chris Hinsley

unread,
Nov 21, 2012, 9:43:16 AM11/21/12
to
Well they are feed from input devices at the low level, some OS's cook
that into a stream before you get to see it, some don't. I've generaly
had a task that 'reads' the keyboard or mouse and injects events, into
an object tree that represents the display heirachry. Last one I did I
used my own implamentation of Sarah Thomas's C++ sig/slots stuff, I
fixed a few bugs and simplified her design somewhat, plus added a few
missing features. That worked quite well, and I was thinking of
implamenting something similar in Forth for the GUI stuff this time.

Game GUI's don't general use this approach ! I've done several game
ui's that actually consist of 'live' animation objects and the
collision system is how user input if feed into the system. But
underneath that there was still the tasks that read the keyboard map or
the mouse serial port data and cooked it into a collision event.

Chris

Chris Hinsley

unread,
Nov 21, 2012, 9:51:01 AM11/21/12
to
> If someone has decided *not* to spend the rest of their life listening
> and preparing for Forth's Great Coming and wants to actually
> *experience* Forth before they get too old to care, then I wouldn't
> dissuade them.

I certainly count Forth as one of the best experiences I've had in my
love affair with machines !

It's underlying symplicty is what attracts me to it. And I'm finding I
don't require much other than the core stuff, which I've started to
build on. I could just ignore the fact that I'm dragging around a pile
of ANS stuff I implamented, but that dosn't sit well with me, it's just
nagging at me all the time. Resonltly I've been considering ditching
the STATE stuff and trying to recode the compiler/interpreter engine to
not use it. That might have problems I've not yet forseen, but I'd like
to give it a try.

Chris

Alex Wegel

unread,
Nov 21, 2012, 11:29:14 AM11/21/12
to
Hugo Aguliar <hughag...@yahoo.com> wrote:

> I'm not so desperate for followers that I will tolerate the
> association of losers --- only the most elite of humanity will become
> Straight Forth programmers.

You forget that you're a loser too.

Alex McDonald

unread,
Nov 21, 2012, 11:46:06 AM11/21/12
to
No, I meant (to use your example); where does the app get its
animation object data from? How does it store this data if the app is
"saved"? At bottom, GUIs are a front end for an engine that computes
on data, and not all that data will come from the GUI.

That aside, I'm interested in why you think Forth's mechanism of
handling the "stream" to parse is difficult to understand. It does
exactly what you might expect. You start with a terminal, include a
file, which may include others and so on until it returns to the
terminal. Or you run a script from the command line, which include a
file and so on until it returns to the command line.

The parser breaks this stream up into words and presents them one at a
a time to the compiler, which either executes them or compiles them,
depending on state.

I'm not clear on what you expect here.

Fritz Wuehler

unread,
Nov 21, 2012, 2:34:27 PM11/21/12
to
Big words coming from somebody who never produced anything of value (and
certainly no code) in his whole life. "Those who can do; those who can't
teach." This typifies the idiot Dijsktra perfectly.

Alex McDonald

unread,
Nov 21, 2012, 3:04:32 PM11/21/12
to
On Nov 21, 7:34 pm, Fritz Wuehler
<fr...@spamexpire-201211.rodent.frell.theremailer.net> wrote:
> Andrew Haley <andre...@littlepinkcloud.invalid> wrote:
And then there's you, another idiot barber on usenet.
http://www.cs.utexas.edu/users/EWD/

visua...@rocketmail.com

unread,
Nov 21, 2012, 5:38:10 PM11/21/12
to
On Wednesday, November 21, 2012 4:47:16 AM UTC-5, Rod Pemberton wrote:
> If everyone could program, wouldn't that do for programming what reading and writing did for literature? I.e., wouldn't that produce a diverse and immense amount of code that would benefit society? The goals of FSF and FOSS movement seem to be to attack closed source, copyrighted software. That's really not the problem. The problem is the intellect that's required to program, or the elitism that excludes people from programming, or the lack of access to programming tools.

We are working on this!
See http://www.4e4th.com/
http://www.complang.tuwien.ac.at/anton/euroforth/ef12/papers/bruehl.pdf
http://www.4e4th.com/4E4th-IDE-StartNotes.pdf

My vision is that using Forth the worker at his workbench is able to program his tools - I have this vision since a quarter century. Now the time is there to prove it.

DB.

Hugh Aguilar

unread,
Nov 21, 2012, 8:41:17 PM11/21/12
to
On Nov 21, 6:00 am, alb...@spenarnc.xs4all.nl (Albert van der Horst)
wrote:
> In article <2012112017215480428-chrishinsley@gmailcom>,
> Chris Hinsley  <chris.hins...@gmail.com> wrote:
>
> >> Tell us Chris --- will you have closures?
>
> <SNIP>
>
> >I could just use NASM, my own VM (again), and essentially create a high
> >level langauge from macros (again). But Forth has me in it's grip !
> >(you all know what that means), but it will need to serve a higher goal
> >if it's to replace VP code for Taos MK 2 !
>
> Switch to FASM it is superior for such purpose.

How is FASM superior?

I've used HLA and liked it. Unfortunately, HLA only supports 32-bit
x86 and I want 64-bit, so I'm currently switching over to NASM. My
criteria is that I want macros that share data. One macro is run to
generate the front-end of a block of code. That macro has local
variables. Later on, a second macro is run to generate the back-end of
that block of code, and it has access to the first macro's local
variables which have not gone out of scope. After it finishes, all of
the local variables of both macros go out of scope --- so they don't
conflict with later uses of the same macro pair that will be using
local variables with the same names. HLA did this. NASM does this too.
Does FASM?




Hugh Aguilar

unread,
Nov 21, 2012, 9:17:56 PM11/21/12
to
On Nov 21, 2:47 am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Hugh Aguilar" <hughaguila...@yahoo.com> wrote in message
>
> news:757d3586-8b4b-424c...@vb8g2000pbb.googlegroups.com...
>
> > I'm not so desperate for followers that I will tolerate the
> > association of losers --- [...]
>
> So, Straight Forth has a psychology test included?  Are you certified?  How
> do I pass it?  What do I have to do to unlock Straight Forth once I pass it?
> ;-)

You have to write programs that work.

I just want to avoid associating with people who are incompetent
programmers, in the sense that they can't write programs that work ---
but who want to be big experts, in the sense that they get to belittle
programs that work and spout a lot of pseudo-intellectual nonsense
about theories that they read about somewhere that seemed like they
would work, and generally bully programmers into treating them as
equals.

> > [...] only the most elite of humanity will become
> > Straight Forth programmers.
>
> Isn't that the problem with most programming languages?  I.e., too few
> programmers to reach critical mass.
>
> Most languages require some intelligence and education to program.
> Shouldn't programming languages be designed for the, er... to borrow your
> terms, the two-digit IQ crowd?  Programming requires many man-hours as is.
> That's expensive for employers.  If everyone could program, wouldn't that do
> for programming what reading and writing did for literature?  I.e., wouldn't
> that produce a diverse and immense amount of code that would benefit
> society?  The goals of FSF and FOSS movement seem to be to attack closed
> source, copyrighted software.  That's really not the problem.  The problem
> is the intellect that's required to program, or the elitism that excludes
> people from programming, or the lack of access to programming tools.

The problem is that there aren't any good ideas for making money
programming.

It is not all that difficult to write programs that work. My programs
work. I think that it would be easier in Straight Forth than in C ---
closures really do simplify programming --- but it is not impossible
in C. Heck, people have written programs that work in QBasic. It is
mostly just a matter of being diligent about testing as you go, so
that you never get faced with a big program that doesn't work and you
have no idea where the bugs are --- big programs that work evolve from
small programs that work.

visua...@rocketmail.com

unread,
Nov 21, 2012, 10:24:05 PM11/21/12
to
On Monday, November 19, 2012 11:03:53 AM UTC-5, Chris Hinsley wrote:
> I was mulling over my Forth hobby ... And I feel constrained by the standard.

Comp.lang.forth is not the only venue to discuss about standards, pros and cons ...

There are other people, too:

What’s The Difference Between De Jure And De Facto Standards?
Date Posted: November 13, 2012 03:09 PM Author: Karen Bartleson

She writes: "Formal standards organizations that create de jure standards have well-documented processes that must be followed. The processes can seem complex or even rigid. But they are necessary to ensure things like repeatability, quality, and safety. The standards organizations themselves may undergo periodic audits.

Because of the processes involved, de jure standards can be slow to produce. Development and approval cycles can take time as each documented step is followed through the process. Achieving consensus, while important and good, can be a lengthy activity.

This is especially apparent when not all members of the committee want the standard to succeed.

For various reasons—often competitive business—participants in a committee are there to stall or halt the standard. However, once a de jure standard completes the entire process, the implementers and consumers of the standard gain a high level of confidence that it will serve their needs well.

Open-source standards benefit from a general desire to make the standard successful.

If individuals purposely try to damage the standard, their input will not be included in future versions."

Source:
http://electronicdesign.com/article/embedded/whats-difference-de-jure-de-facto-standards-74668

Hugh Aguilar

unread,
Nov 21, 2012, 11:33:17 PM11/21/12
to
On Nov 21, 6:00 am, alb...@spenarnc.xs4all.nl (Albert van der Horst)
wrote:
> In article <2012112017215480428-chrishinsley@gmailcom>,
> Chris Hinsley  <chris.hins...@gmail.com> wrote:
>
> >> Tell us Chris --- will you have closures?
>
> <SNIP>
>
> >I could just use NASM, my own VM (again), and essentially create a high
> >level langauge from macros (again). But Forth has me in it's grip !
> >(you all know what that means), but it will need to serve a higher goal
> >if it's to replace VP code for Taos MK 2 !
>
> Switch to FASM it is superior for such purpose.

I downloaded FASM and discovered that it is only for 32-bit and 16-bit
x86, but not 64-bit. VFX is 32-bit, so if I'm going to beat it in
speed, making my system 64-bit would be an easy way to cheat. It is
not that the big registers are particularly useful, just that there
are 16 registers rather than 8, so a lot of the register-juggling can
be eliminated.

BTW --- Gambit Scheme comes with a 64-bit x86 assembler written in
Scheme. If you want powerful macros, that should do it!

visua...@rocketmail.com

unread,
Nov 22, 2012, 12:54:50 AM11/22/12
to
On Wednesday, November 21, 2012 10:24:06 PM UTC-5, visua...@rocketmail.com wrote:
> Comp.lang.forth is not the only venue to discuss about standards ...

Here another excerpt:

Don’t Underestimate The Value of Standards
by Karen Bartleson:

Many people take standards for granted, if they think of standards at all. Yet ... their value shouldn’t be underestimated. The semiconductor and electronic design industries rely heavily on technical standards.

Technical standards that are widely used in electronic design serve at least four purposes during the design cycle.

The first is interoperability.
The second purpose for technical standards ... is design portability and reuse.
A third aspect of standards is that they help make it possible for teams to collaborate.
A fourth reason that standards are important to the design cycle is that they improve quality.

Any time that data is translated into a different format, design description language, or database, there is a risk of errors being introduced... Whenever the design data is represented in a standard way, translation is not required, lowering the risk of introduced errors and increasing quality.

There can also be a psychological factor to consider. It can be a lot more fun and feel more rewarding to invent one’s own interface or database, but NIH (not invented here) and reinventing the wheel don’t always serve a company’s business goals—unless, of course, the interface or database is a significant improvement over what’s currently available.

Standards support technology and business... In essence, standards matter. Don’t underestimate them.

Source:
http://electronicdesign.com/article/eda/dont-underestimate-standards-73622

Mark Humphries

unread,
Nov 22, 2012, 1:00:57 PM11/22/12
to
On Thursday, November 22, 2012 12:33:17 PM UTC+8, Hugh Aguilar wrote:
> I downloaded FASM and discovered that it is only for 32-bit and 16-bit
> x86, but not 64-bit.

FASM does handle x86-64 instructions for both AMD64 and Intel 64 architectures.

Hugh Aguilar

unread,
Nov 22, 2012, 8:16:46 PM11/22/12
to
You're right --- sorry, but I didn't notice its "long mode" when I
scanned through the manual.

I'll examine it some more. The NASM macros do what I need, but maybe
FASM macros are easier and/or have some extra features.

Rod Pemberton

unread,
Nov 22, 2012, 9:19:47 PM11/22/12
to
"Alex McDonald" <bl...@rivadpm.com> wrote in message
news:b7c5c9ce-6cf0-4c32...@bq2g2000vbb.googlegroups.com...
> On Nov 21, 7:34 pm, Fritz Wuehler
> <fr...@spamexpire-201211.rodent.frell.theremailer.net> wrote:
> > Andrew Haley <andre...@littlepinkcloud.invalid> wrote:
> > > Rod Pemberton <do_not_h...@notemailnotz.cnm> wrote:
...

> > > > Most languages require some intelligence and education to program.
> > > > Shouldn't programming languages be designed for the, er... to borrow
> > > > your terms, the two-digit IQ crowd?
>
> > > "Don't blame me for the fact that competent programming, as I view it
> > > as an intellectual possibility, will be too difficult for 'the average
> > > programmer'. You must not fall into the trap of rejecting a surgical
> > > technique because it is beyond the capabilities of the barber in his
> > > shop around the corner." -- Dijsktra, EWD 512: Comments at a
> > > Symposium.
>
> > Big words coming from somebody who never produced anything of
> > value (and certainly no code) in his whole life. "Those who can do;
> > those who can't teach." This typifies the idiot Dijsktra perfectly.
>
> And then there's you, another idiot barber on usenet.
> http://www.cs.utexas.edu/users/EWD/
>

Ah, good, now I don't have to insult "Fritz" over Dijsktra. Thanks!

"Fritz" is an anonymous re-mailer pseudonym. If this "Fritz" is the "Fritz"
I believe it is, he is supposedly a real programmer - one who programs big
IBM "iron". Hence, I doubt he's being the "Devil's Advocate" on this one.
So, I think it's clear his attack on Dijsktra was to "troll" for someone,
perhaps me... Dijsktra and his ideas are very important to programming.


Rod Pemberton


Mark Wills

unread,
Nov 23, 2012, 5:05:57 AM11/23/12
to
On Nov 23, 2:15 am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Alex McDonald" <b...@rivadpm.com> wrote in message
> Rod Pemberton- Hide quoted text -
>
> - Show quoted text -

Really? Or did he just write down what a lot of other people thought
was obvious?

I nothing about the guy, but opinion seems quite divided about the
chap.

I wonder if opinion is divided along the lines of those that went to
university (and thus had an opportunity to study him) and those that
didn't. Those that didn't would have simply "got on with it".

I read a few papers. I'm afraid it was gobbledygook to me. But I don't
have a Phd. :-(

One of his "papers" that I read was an account of a trip to give a
speech to some bankers, and his travails with flight delays. I
understood that one.

Alex McDonald

unread,
Nov 23, 2012, 6:05:11 AM11/23/12
to
Consider the dates; it wasn't obvious then. Dijkstra wrote much that
may be obvious now, but we've had 30, 40, nearly 50 or more years of
soaking in the stuff.

>
> I nothing about the guy, but opinion seems quite divided about the
> chap.
>
> I wonder if opinion is divided along the lines of those that went to
> university (and thus had an opportunity to study him) and those that
> didn't. Those that didn't would have simply "got on with it".
>
> I read a few papers. I'm afraid it was gobbledygook to me. But I don't
> have a Phd. :-(

You underestimate yourself. Read http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html.
The discussion should remind you of Forth. The date of 1962 may
persuade you that no-one (with exception of Moore and Rather) was
"getting on with it" at that date.

Mark Wills

unread,
Nov 23, 2012, 6:22:09 AM11/23/12
to
> You underestimate yourself. Readhttp://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html.
> The discussion should remind you of Forth. The date of 1962 may
> persuade you that no-one (with exception of Moore and Rather) was
> "getting on with it" at that date.
>
>
>
>
>
> > One of his "papers" that I read was an account of a trip to give a
> > speech to some bankers, and his travails with flight delays. I
> > understood that one.- Hide quoted text -
>
> - Show quoted text -- Hide quoted text -
>
> - Show quoted text -

Thank you Alex, I'll have a read at lunchtime!

Mark

Hugh Aguilar

unread,
Nov 23, 2012, 6:52:39 AM11/23/12
to
On Nov 22, 7:15 pm, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Alex McDonald" <b...@rivadpm.com> wrote in message
> news:b7c5c9ce-6cf0-4c32...@bq2g2000vbb.googlegroups.com...> On Nov 21, 7:34 pm, Fritz Wuehler
> > > Big words coming from somebody who never produced anything of
> > > value (and certainly no code) in his whole life. "Those who can do;
> > > those who can't teach." This typifies the idiot Dijsktra perfectly.
>
> > And then there's you, another idiot barber on usenet.
> >http://www.cs.utexas.edu/users/EWD/
>
> Ah, good, now I don't have to insult "Fritz" over Dijsktra.  Thanks!
>
> "Fritz" is an anonymous re-mailer pseudonym.  If this "Fritz" is the "Fritz"
> I believe it is, he is supposedly a real programmer - one who programs big
> IBM "iron".  Hence, I doubt he's being the "Devil's Advocate" on this one.
> So, I think it's clear his attack on Dijsktra was to "troll" for someone,
> perhaps me...  Dijsktra and his ideas are very important to programming.

I doubt that Fritz was trying to bait you, Rod --- more likely, he was
just supporting my contention that to be a programmer it is necessary
to write programs that work. Most of the academians have seminal works
(such as TeX for Knuth), but I've never heard of Dijkstra having any
such program --- although I'm not really familiar with him, so maybe
he does that I'm not aware of.

If anybody here is a troll, it is Alex. Now he has even called barbers
"idiots." It is not a good idea to insult the guy who cuts your hair,
considering that it can take a couple of months to grow out a bad
haircut --- also, when he gives you a shave, he is holding a razor
over your jugular...

This reminds me of the old proverb:
"Never criticize a man until you've walked a mile in his moccasins ---
that way, you are a mile away, and he's barefoot."

Academics is a strange business though. For example, when I wanted to
learn how LLRB trees worked, I went straight to Robert Sedgewick's
writings (see the links from the Wikipedia page). I was amazed to
discover that none of that Java code he provides actually works. He is
using functions that are not provided at all, so the Java code won't
even compile --- and his implementation is not doing things that the
description said it should be doing, even if those missing functions
were provided. I had expect to be able to just port his Java program
over to Forth, but the job was much more difficult, as I had actually
figure out how the algorithm worked and essentially write my program
from scratch. I assume Sedgewick does have a working program
somewhere, that he is not making public. Most likely, the reason why
the broken program was published, was to prevent students from being
able to "just port his Java program over to xxx." It is a major hassle
for somebody like me though, as I'm not a student, and I just wanted a
Forth version of the algorithm. I would have been better off to not go
straight to the inventor's writings, but rather to go to an
implementation by somebody else (for example, there are a couple of CL
implementations) --- let somebody else figure out the algorithm and
write a program that works, then just port that to Forth.

BTS: I have Sedgewick's book on algorithms, which I bought at a used-
book store (it is quite old). That book contains an algorithm for
building a tree that is organized such that the most frequently
accessed nodes are closest to the top. This is essentially what my
symtab does. There are a couple of differences:
1.) His algorithm is optimal in the sense that it optimizes all of the
search paths in total, which may result in some nodes being below
nodes that have lower usage counts. By comparison, my algorithm just
puts the nodes with the higher usage counts above the nodes with lower
usage counts, which is optimal locally but not globally.
2.) His algorithm is a one-shot deal that builds the entire tree in a
single swoop. By comparison, my algorithm builds the tree on the fly
as nodes are added and removed. His algorithm doesn't require that the
usage counts be stored with the nodes, as they can be discarded after
the tree is built. My algorithm does require that the usage counts be
stored with the nodes, which takes up more memory --- but my algorithm
readjusts the tree as the usage counts go up and down relative to each
other, whereas his tree never changes after it is built.

I may implement Sedgewick's algorithm as a counter-point to symtab in
my next release of the novice package. I've built up some code in the
novice package, so I should do another release one of these days. My
enthusiasm for producing public-domain code is quite dampened though,
as everybody just says that it "sucks" without looking at it ---
afaik, nobody has ever used my novice package in any program. I don't
think this is because the novice package is bad, but it is just
because nobody is writing applications in Forth. If people were
actually writing application programs in Forth, they would have just
used the novice package in so much as they found it to be useful, and
they would have contributed code of their own in so much as they found
it to be lacking. I was totally expecting to get contributions of
code, but all I got was vulgar insults --- that is pathetic (I mean
the c.l.f. crowd, not me).

Lots of people claim that the FFL is "awesome" (that is Paul Rubin's
term), but this doesn't mean that anybody is actually using FFL in
application programs, as there really aren't any application programs.
Writing tools for Forth is just beating a dead horse --- that is
largely why I'm jumping over to Scheme now --- lots of people are
writing application programs in Scheme, and I might as well be one of
them.

Hugh Aguilar

unread,
Nov 23, 2012, 7:26:55 AM11/23/12
to
On Nov 21, 2:47 am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
wrote:
> "Hugh Aguilar" <hughaguila...@yahoo.com> wrote in message
> > P.S. I went to the gun show the other weekend to get a deer rifle.  [...]
>
> I'm not an animal activist or anything, since I'm strongly pro-gun rights.
> Even so, I don't actually own a gun.  And, I don't hunt animals ...  Hey, I
> didn't say I don't hunt.  ;-)  Well, I don't hunt.  Or, more accurately, I
> haven't yet and maybe never will, but may someday ...  I.e., I'm not opposed
> to it.  Besides, you need gun rights for home defense.  If someone comes
> into your home alive without your permission, they need to be sent back out
> dead, be it with or without a warrant.  I'm just curious as to how one
> rationalizes that shooting and killing a deer is any different from shooting
> and killing a two to seven year old human child?  That's effectively what
> one is doing.  If you can kill a deer as many hunters do or kill a cow as
> many farmers do, why is it that we consider such people to be "good" people
> and solid Americans?  We clearly don't consider them to be a violent threat
> or even potential murderers.  We'd never even consider that they'd point a
> gun at a child, unless they actually did.  Yet, they - sometimes
> repeatedly - kill something with the IQ of a child.

In Colorado where I'm from, we have a lot of deer. I noticed when I
was there the last time, that the deer periodically go to the top of a
particular hill. There will be 30 or 40 of them that travel in a group
and go there. Why do they do that? They don't have anything to do all
day except eat sagebrush, and sagebrush is everywhere, so why do they
have any plan at all? Also, if a particular deer gets the idea of
going to the top of that hill, how does he communicate his plan to the
others and explain his reasons, assuming that he has reasons? Also,
steep hills like that are bald, so there is no sagebrush up there to
eat.

This looks like a religious pilgrimage to me. I think the deer go up
there to worship the deer-god.

On a similar hill, when I was a boy I found a circle of stones that
the Ute people had left. Presumably they would have council meetings
up there and the circle of stones was for the common people to stand
behind, while the leaders in the middle made speeches --- they most
likely went to the top of the hill so the expansive view of the
countryside would give them lofty thoughts that the sagebrush-choked
valleys don't afford. Maybe the deer do the same thing. I was in
Colorado when I wrote most of the novice package, and I would often
climb the hills behind my father's ranch while I was working out the
design of the code in my head. All in all, climbing to the top of
steep hills is a good thing to do.

> The point is related to the prior paragraph about radical beliefs.  They're
> frequently hidden in plain sight.   In this example, it's acceptable to kill
> an animal with an IQ the same as a human child, but it's entirely wrong to
> kill a human child.  We use intellect to justify not killing a child or we
> belittle animals as "dumb" or declare an animal life being of less value
> than a human life to justify killing them.  So, that's a contradiction.
> Both can't true.  It's either wrong to kill both, or it's just to kill both.
> The fact that humanity chooses to reject one and accept the other is one of
> many examples which reinforces America's "willful blindness" towards the
> abundant radical and strange beliefs that permeate our society.

Well, if the deer are going to have a god, they might as well have a
devil too --- and that might as well be me --- hence the deer rifle.

In the late 1800s the white people killed off all of the wolves in
that region, and also forced the Ute people to leave. Since that time,
the deer have had a pretty cushy life, as the wolves and the Utes no
longer hunt them. All they have to do is eat sagebrush, and sagebrush
is everywhere --- if we didn't have our hunting season, they would
have a population explosion.

I remember when I was a boy, I had to feed the cattle in the winter-
time. It is an easy job, as you just drag the hay out into the field
with a snowmobile and toss it around so it isn't all in a single big
pile. It is quite cold in the morning though, and sometimes it is
snowing. Anyway, to liven up the job, I would imagine that the cows
were "Jews" and the hay was "manna" and I was "Yahweh" --- I don't
know if it is normal for a 13-year-old boy to imagine that he is God,
but that is what I was doing back then. I had read enough of the Bible
to know that there was only one character in the book that I could
personally relate to...

Ron Aaron

unread,
Nov 23, 2012, 8:28:22 AM11/23/12
to
That certainly explains a lot.

Andrew Haley

unread,
Nov 23, 2012, 10:12:39 AM11/23/12
to
Mark Wills <forth...@gmail.com> wrote:
> On Nov 23, 2:15?am, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
> wrote:
>> So, I think it's clear his attack on Dijsktra was to "troll" for someone,
>> perhaps me... Dijsktra and his ideas are very important to programming.
>>
>> Rod Pemberton- Hide quoted text -
>
> Really? Or did he just write down what a lot of other people thought
> was obvious?

Who, Dijkstra? No.

> I nothing about the guy, but opinion seems quite divided about the
> chap.

Not divided enough to prevent him from being presented the Turing
Award back in 1972.

> I wonder if opinion is divided along the lines of those that went to
> university (and thus had an opportunity to study him) and those that
> didn't. Those that didn't would have simply "got on with it".

Everybody has an opportunity to study. Dijkstra would be the first to
say that he wasn't worthy of study, but his ideas certainly were. He
made many contributions, but the most important ones were in the areas
of concurrency
<http://en.wikipedia.org/wiki/Semaphore_%28programming%29> and
Structured Programming, e.g.
<http://en.wikipedia.org/wiki/Go_To_Statement_Considered_Harmful>
<http://www.cs.utexas.edu/users/EWD/ewd02xx/EWD249.PDF> but these are
just the tip of an iceberg.

Of Structured Programming it's common enough to hear people say "Well,
that's obvious!" but it wasn't at the time.

> I read a few papers. I'm afraid it was gobbledygook to me. But I don't
> have a Phd. :-(
>
> One of his "papers" that I read was an account of a trip to give a
> speech to some bankers, and his travails with flight delays. I
> understood that one.

Sure, but the trip reports aren't really his technical contibutions.

Andrew.

Alex McDonald

unread,
Nov 23, 2012, 10:34:44 AM11/23/12
to
On Nov 23, 11:52 am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:
> On Nov 22, 7:15 pm, "Rod Pemberton" <do_not_h...@notemailnotz.cnm>
> wrote:
> > "Alex McDonald" <b...@rivadpm.com> wrote in message
> >news:b7c5c9ce-6cf0-4c32...@bq2g2000vbb.googlegroups.com...> On Nov 21, 7:34 pm, Fritz Wuehler
> > > > Big words coming from somebody who never produced anything of
> > > > value (and certainly no code) in his whole life. "Those who can do;
> > > > those who can't teach." This typifies the idiot Dijsktra perfectly.
>
> > > And then there's you, another idiot barber on usenet.
> > >http://www.cs.utexas.edu/users/EWD/
>
> > Ah, good, now I don't have to insult "Fritz" over Dijsktra.  Thanks!
>
> > "Fritz" is an anonymous re-mailer pseudonym.  If this "Fritz" is the "Fritz"
> > I believe it is, he is supposedly a real programmer - one who programs big
> > IBM "iron".  Hence, I doubt he's being the "Devil's Advocate" on this one.
> > So, I think it's clear his attack on Dijsktra was to "troll" for someone,
> > perhaps me...  Dijsktra and his ideas are very important to programming.
>
> I doubt that Fritz was trying to bait you, Rod --- more likely, he was
> just supporting my contention that to be a programmer it is necessary
> to write programs that work. Most of the academians have seminal works
> (such as TeX for Knuth), but I've never heard of Dijkstra having any
> such program --- although I'm not really familiar with him, so maybe
> he does that I'm not aware of.

Stradivari made some of the world's finest musical instruments, but
from what I can gather was not a gifted musician. You confuse (and
others here do the same, so you're not alone on that score)
engineering with science.

>
> Academics is a strange business though. For example, when I wanted to
> learn how LLRB trees worked, I went straight to Robert Sedgewick's
> writings (see the links from the Wikipedia page). I was amazed to
> discover that none of that Java code he provides actually works. He is
> using functions that are not provided at all, so the Java code won't
> even compile --- and his implementation is not doing things that the
> description said it should be doing, even if those missing functions
> were provided. I had expect to be able to just port his Java program
> over to Forth, but the job was much more difficult, as I had actually
> figure out how the algorithm worked and essentially write my program
> from scratch. I assume Sedgewick does have a working program
> somewhere, that he is not making public. Most likely, the reason why
> the broken program was published, was to prevent students from being
> able to "just port his Java program over to xxx." It is a major hassle
> for somebody like me though, as I'm not a student, and I just wanted a
> Forth version of the algorithm. I would have been better off to not go
> straight to the inventor's writings, but rather to go to an
> implementation by somebody else (for example, there are a couple of CL
> implementations) --- let somebody else figure out the algorithm and
> write a program that works, then just port that to Forth.

Translating a novel from German to English does not make you an author
in either language. What you describe (Java to Forth, or CL to Forth)
isn't programming.
You had an extensive review of the claims you made for symtab. Which
is actually a splay tree iirc, but you hadn't read any of the
literature and claimed, contrary to what you write above, never to
have looked at or used other people's code. It didn't meet the
performance claims you made of it at the time, and describing it as
"vulgar criticism" is (as usual) hyperbolic.


Andrew Haley

unread,
Nov 23, 2012, 10:57:28 AM11/23/12
to
Alex McDonald <bl...@rivadpm.com> wrote:
> On Nov 23, 11:52?am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:

>> I doubt that Fritz was trying to bait you, Rod --- more likely, he was
>> just supporting my contention that to be a programmer it is necessary
>> to write programs that work. Most of the academians have seminal works
>> (such as TeX for Knuth), but I've never heard of Dijkstra having any
>> such program --- although I'm not really familiar with him, so maybe
>> he does that I'm not aware of.
>
> Stradivari made some of the world's finest musical instruments, but
> from what I can gather was not a gifted musician. You confuse (and
> others here do the same, so you're not alone on that score)
> engineering with science.

Actually, no such excuse is needed for Dijkstra: see
http://en.wikipedia.org/wiki/THE_multiprogramming_system

Andrew.

Alex Wegel

unread,
Nov 23, 2012, 1:12:14 PM11/23/12
to
Hugh Aguilar <hughag...@yahoo.com> wrote:

> that is
> largely why I'm jumping over to Scheme now

You're leaving - that's great news.

Only - you really should get some kind of therapy before jumping
anywhere, or you will just keep falling over your ego, probably hurting
more people (and yourself) on the way.

Not that i particularly care about you, but you are mistreating truth
and mobbing people to an extent where it really pisses me off that such
stuff happens in CLF.

To put it positively: Fix yourself, and you might even be able to keep a
job in the future.

Ciao brutto.

visua...@rocketmail.com

unread,
Nov 23, 2012, 3:13:10 PM11/23/12
to
On Friday, November 23, 2012 6:05:11 AM UTC-5, Alex McDonald wrote:
> Read http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html. The discussion should remind you of Forth. The date of 1962 may persuade you that no-one (with exception of Moore and Rather) was "getting on with it" at that date.

Thanks, Alex!
That's quite interesting! I read EWD28, and it really looks like a description of "how to write a Forth language"!

At the end Dijkstra writes: "... the Machine presented here is so ridiculously inefficient that every practical implementation of a practical algorithmic language in all probability can be regarded as an optimization of it" - seems to be Chuck Moore did this task of practical implementation and optimisation - as far as I know nobody else did this.

This link to EWD28 has been mentioned before at c.l.f. in "Influences on Moore & other Qs" by Tony Bartolini in June 2006.

Alex McDonald

unread,
Nov 23, 2012, 3:24:04 PM11/23/12
to
On Nov 23, 8:13 pm, visualfo...@rocketmail.com wrote:
> On Friday, November 23, 2012 6:05:11 AM UTC-5, Alex McDonald wrote:
> > Readhttp://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD28.html. The discussion should remind you of Forth. The date of 1962 may persuade you that no-one (with exception of Moore and Rather) was "getting on with it" at that date.
Which is interesting as it clarifies a number of dates; thank you.
(Incidentally I started that post, and completely forgot about about
the reply you refer to.
http://groups.google.com/group/comp.lang.forth/browse_frm/thread/5cb273cdcfd88646/e9a2906cafb03de3?lnk=gst&q=ewd28#e9a2906cafb03de3

Moore' work was almost a decade after Dijkstra's note.

Elizabeth D. Rather

unread,
Nov 23, 2012, 3:43:38 PM11/23/12
to
But AFAIK not influenced by it. Chuck had no interest in academic
computer science, and did not follow the literature. In the early 70's I
was giving a talk on Forth, and someone asked if this was "structured
programming." I hadn't heard the term, so later I asked Chuck and he
hadn't either. We researched it, found Dijkstra's papers, and Chuck
said, "it just seems like good programming to me."

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."
==================================================

Andrew Haley

unread,
Nov 23, 2012, 4:10:30 PM11/23/12
to
Elizabeth D. Rather <era...@forth.com> wrote:
> On 11/23/12 10:24 AM, Alex McDonald wrote:
>>
>> Moore' work was almost a decade after Dijkstra's note.
>>
>
> But AFAIK not influenced by it.

The influence is indirect, I think.
Dijkstra -> Burroughs 5500 -> Chuck Moore.

Andrew.

Paul Rubin

unread,
Nov 23, 2012, 4:40:11 PM11/23/12
to
"Elizabeth D. Rather" <era...@forth.com> writes:
>> Moore' work was almost a decade after Dijkstra's note.
> But AFAIK not influenced by it. Chuck had no interest in academic
> computer science, and did not follow the literature.

I think Chuck has mentioned Forth being influenced by Lisp, and that he
studied Lisp with McCarthy in the early 1960's. Lisp was a different
branch of programming evolution than the Algol branch that Dijkstra was
involved in though, I guess.

Alex McDonald

unread,
Nov 23, 2012, 4:44:09 PM11/23/12
to
On Nov 23, 9:40 pm, Paul Rubin <no.em...@nospam.invalid> wrote:
Sure was. Dijkstra disliked Lisp intensely.

Bernd Paysan

unread,
Nov 23, 2012, 7:29:09 PM11/23/12
to
McCarthy is explicitely mentioned in Dijkstra's paper as one of the
persons he discussed that idea at length. So there is only a one-hop
way between Dijkstra and Chuck, and it's the correct time-frame. As
Chuck was influenced Burroughs B5000 (finished in 1961, actually *ahead*
of Dijkstra's publication date), it could well be that the actual root
of both ideas is the B5000.

Ideas do spread even when you don't actually read the papers yourself.
It's completely sufficient when your teacher does so. And in Chuck's
case, we know that the teacher did discuss this paper at length with its
author.

We have other denials of influence in the greater Forth history, too.
Adobe denied for quite a long time that Postscript was inspired by
Forth. However, just about half a year before they started the
Postscript project, a Forth programmer did a demo at Adobe,
demonstrating his graphics language, written in Forth.

As Picasso said, good artists copy, great artists steal, great artists
usually take mental ownership of ideas of others. They quickly forget
who inspired them, as their ego otherwise wouldn't allow them to follow
that path. People like Chuck like to reinvent everything themselves.
They actually don't, but they deny influence.

--
Bernd Paysan
"If you want it done right, you have to do it yourself"
http://bernd-paysan.de/

Hugh Aguilar

unread,
Nov 23, 2012, 11:09:22 PM11/23/12
to
On Nov 23, 8:34 am, Alex McDonald <b...@rivadpm.com> wrote:
> You had an extensive review of the claims you made for symtab. Which
> is actually a splay tree iirc, but you hadn't read any of the
> literature and claimed, contrary to what you write above, never to
> have looked at or used other people's code. It didn't meet the
> performance claims you made of it at the time, and describing it as
> "vulgar criticism" is (as usual) hyperbolic.

Symtab isn't a Splay-Tree. Passaniti was promoting the Splay-Tree as
an alternative to symtab:
https://groups.google.com/group/comp.lang.forth/browse_thread/thread/c37b473ec4da66f1/

You routinely express strong opinions on subjects that you know
nothing about. You are exactly the kind of person that I won't allow
in the Straight Forth community --- you and Passaniti and Elizabeth
Rather deserve each other.

Hugh Aguilar

unread,
Nov 24, 2012, 1:00:14 AM11/24/12
to
On Nov 23, 8:12 am, Andrew Haley <andre...@littlepinkcloud.invalid>
wrote:
> Of Structured Programming it's common enough to hear people say "Well,
> that's obvious!" but it wasn't at the time.

I'm not all that big of a fan of "structured programming." That often
results in lengthy stair-step indented functions. Djikstra is
associated with Algol (which became Pascal etc.) and disliked Lisp ---
by comparison, I dislike Pascal etc. (although I did like HLA to some
extent) and am learning Scheme/Lisp --- so I'm moving in the opposite
direction.

See this thread for an example of my style:
https://groups.google.com/group/comp.lang.forth/browse_thread/thread/200c9fe301cc4e28/7ce0fe0e616a881b

This is an excerpt:

On Oct 31, 4:10 pm, Hugh Aguilar <hughaguila...@yahoo.com> wrote:
> On Oct 31, 4:58 am, Mark Wills <forthfr...@gmail.com> wrote:
> > The following routine is checking to see if a string is "}}" i.e.
> > consists of two consequtive right curly braces.
>
> > : }}? ( addr len -- addr len flag)
> >   dup 2= if
> >     over dup c@   swap 1+ c@   125 =   swap 125 =   and
> >   else
> >     false
> >   then ;
>
> > As can be seen, the first check is the length; if the length is not
> > exactly 2 then we just return false. If the length is 2 then we check
> > to see if both characters are ASCII 125. That's the bit I am looking
> > at and saying "Meh... seems a bit convoluted/lengthy.
>
> > Is there a better way?
>
> > I was thinking maybe:
>
> > ... c@ 125 OR swap   1+ c@ 125 OR  125 XOR 0=
>
> > Which is perhaps "cleverer" but not as clear as to the intention of
> > the code and no shorter...
>
> I think that nested conditionals should be avoided as much as
> possible. I just EXIT out. Here is mine:
>
> : }}?  ( adr cnt -- flag )
>     2 <>                       if  drop  false exit then
>     dup  c@ [char] }  <>       if  drop  false exit then
>     1+   c@ [char] }  <>       if        false exit then
>     true ;
>
> Here is a more readable one with locals (the { is in my novice
> package):
>
> : }}?  { adr cnt -- flag }
>     cnt 2 <>                    if  false exit then
>     adr c@     [char] }  <>     if  false exit then
>     adr 1+ c@  [char] }  <>     if  false exit then
>     true ;
>
> Here is one with a macro to get rid of some of the redundancy:
>
> macro: bounce
>     if  false exit then ;
>
> : }}?  { adr cnt -- flag }
>     cnt 2 <>                    bounce
>     adr c@     [char] }  <>     bounce
>     adr 1+ c@  [char] }  <>     bounce
>     true ;
>
> All of this is untested as I haven't yet installed a Forth system on
> my new computer. This is pretty simple though, so it should work.
>
> I don't like nested conditionals because they are ugly and confusing.
> In this case you are only testing three things, which isn't too bad.
> Imagine if you were testing more though --- you would have a stair-
> step Pascal-like function and it would be very confusing as to what
> was going on. This is Forth not Pascal --- use EXIT. The vast majority
> of the time, several things have to all be true to get a TRUE, so if
> anything is false, you can immediately EXIT with a FALSE and you are
> done.
>
> Also, don't be afraid to add some extra white-space as I did to make
> everything line up. There is no law that says your source-code has to
> be compressed up against the left margin. I make my source-code line
> up like this all the time --- see the novice package for examples.http://www.forth.org/novice.html
>
> Note that I did not factor out the test of the } char. That would be
> bad factoring. It is unlikely that you are going to test the same char
> more than once. In this case you are, but that is unusual. It is more
> readable if you explicitly test each char as I did above. This way the
> reader can easily see which chars are being tested for.
>
> P.S. Look at my alien-alphabet programhttps://groups.google.com/group/comp.lang.forth/browse_thread/thread/...
> for an example of generating pattern-matching code and compiling it,
> at run-time. This is a very Forthy method, I think.
>
> P.P.S. Look at SPLIT in my novice package (list.4th) for code that
> splits strings up. This is primarily for comma-delimited data, such as
> from a database dump. That is somewhat similar.

Hugh Aguilar

unread,
Nov 24, 2012, 1:39:13 AM11/24/12
to
On Nov 23, 11:12 am, awe...@arcor.de (Alex Wegel) wrote:
Wasn't Brutus the guy who killed Julius Ceasar? There is a
Shakespearean play about that. Does this mean that Elizabeth Rather is
Ceasar?

Instead of always attacking me, why don't you write a package of code
for novices and put it in the public domain? If it is comparable to
mine, or even halfway useful, then I would take more notice of you as
somebody to pay attention too --- right now, I just see you as being
another Passaniti wannabe, hoping that Elizabeth Rather will praise
you too.

Try to make your code a little bit more readable than you did here:
https://groups.google.com/group/comp.lang.forth/browse_thread/thread/dd8e30fcc7589749
You didn't provide stack-picture comments for any of your functions
--- it was obvious that you were obfuscating your code.
This reminds me of the famous Nietzsche quote:
"Nor are poets clean enough for me --- they muddy the water to make it
appear deep."

I'm just learning Scheme to better myself. Given that I mostly only
program in Forth, I really don't know a lot about computer-science
theory. Straight Forth is going to have closures, and Scheme is famous
for closures --- so it makes sense for me to learn Scheme --- I'm
largely taking my time in coming out with Straight Forth so that I can
learn more Scheme in the meantime, as I intend for Straight Forth to
borrow heavily from Scheme. There are a lot of aspects of Scheme that
are a no-go for micro-controllers (such as tagged data (dynamic OOP)),
but there are a lot of aspects that can be carried over (such as
closures). I'm always going to be a Forth programmer though --- Forth
is my bailiwick --- besides that, desktop-computer software is given
away for free, and micro-controllers get sold for money, so dropping
Forth in favor of Scheme would be economically foolish. I do think
that it is a good idea to drop ANS-Forth though, as it is a complete
failure.

Andrew Haley

unread,
Nov 24, 2012, 5:54:20 AM11/24/12
to
Bernd Paysan <bernd....@gmx.de> wrote:
>
> We have other denials of influence in the greater Forth history, too.
> Adobe denied for quite a long time that Postscript was inspired by
> Forth. However, just about half a year before they started the
> Postscript project, a Forth programmer did a demo at Adobe,
> demonstrating his graphics language, written in Forth.

Not exactly. The Geocities page has expired, so here's the article,
in full.

Andrew.

PLATO is resurrected!

The Genesis of Postscript (1981)

By Jim Bowery
Version 20010406
Copyright 2001
The author grants the right to copy, without modification.

The Challenge

From 2001 through 2007 I offered, with no takers, $500 to the first
person who could document the existence of a Xerox PARC communication
concerning post-fix notation for page description languages prior to
my visit to that facility in November 1981 in my capacity as Manager
of Interactive Architectures for Viewdata Corporation of America, the
videotex joint venture between AT&T and Knight-Ridder
News. Communiques regarding "JaM" were disqualified unless they
specifically use the term "page description language", "typesetting
language" or some equivalent phrase, and are appropriately dated.

The History

What was the true genesis of the Postscript?

Here's a perspective out of left field:

It started with the first scientific pocket calculator ever produced
-- the Hewlett-Packard 35 -- and its reverse polish "postfix"
notation.

I saw an HP-35 advertised in Scientific American during my senior year
in high school, in 1972, and thought:

"I want one."

That's why I worked all summer with "Shorty" the ex-convict, driving
garbage trucks with 18 gears I was never properly trained to use and
drinking beers so as to Lorenz-contract the days that were punctuated
with hot steaming maggots down my neck as bemused debs reclined in
their back yards nurturing their future basal cell carcinomas. When I
started at the University of Iowa, I forked over my saved up $495 to
Hewlett-Packard and instead of a slide-rule on my belt, I had this
neat little black pouch that could do it all while flashing tiny red
light-emitting-diode numbers -- reverse polish operation. I found only
one other person on campus who had one -- a chemistry professor.

Well, OK, I lied.

What really happened was that while I was working as a garbage man to
earn enough money for my HP-35, many mornings at 6AM they would tell
me they didn't need me that day, which is when I would head over to
Drake University and wait for my brother to get out of class at
noon. That was almost 6 hours away, and I needed some way to pass the
time. After poking around a bit on campus, I found this little old 2
story house that had a "Mathematics Department" sign. Inside, off to
the left, was a long room. In that room was a desk-top Hewlett-Packard
calculator with a flat-bed pen plotter hooked to it. It had more
buttons than you could shake a stick at and this little magnetic card
you could insert to record the buttons you were pressing, which
included comparison and conditional branch buttons. You could program
it to not only do calculations, but to move the pen around on the
plotter bed that held the paper down with static. It was really
cool. I could finally use a lot of that worthless junk about
polynomials and stuff I had learned in high school and draw lots of
neat op-art patterns with a pseudo-3D look to them.

That desk calculator (I don't recall the model number), of course,
also used reverse polish notation -- postfix -- to drive its plotter.

By the time I got my HP-35 that fall, postfix operations were second
nature to me. When the HP-35 fell in price by a factor of two later
that year, it taught me my first lesson of consumerism in the early
stages of Moore's Shockwave, but I never felt jealous of the guys who
bought the cheaper Texas Instruments calculators with all that
parenthetic noise. Who could think like that?

Postfix was obviously the right way to do things.

Ignoring some history we cut to the chase:

In August 1980, Byte magazine published its issue on the Forth
programming language.

At that time, I was working with Control Data Corporation's PLATO
project, pursuing a mass market version of that system using the
Intelligent Student Terminal (IST). The IST's were Z80 processor
terminals sporting 512*512 bit mapped displays with touch sensitive
screens and 1200bps modems that went for about $1500. We were shooting
for, and actually successfully tested, a system that could support
almost 8,000 simultaneous users on 7600-derived Cybers (the last
machine designed by Seymour Cray to be marketed by CDC --with 60 bits
per word, 6 bits per character, no virtual memory, but very big and
very fast) with under 1/4 second response time (all keys and touch
inputs went straight to the central processor) for $40/month flat rate
including terminal rental. Ray Ozzie had been working at the
University of Illinois on offloading the PLATO central system to the
Z80 terminal through downloaded assembly language programming, doing
exotic things like "local key echo" and such functions.

I was interested in extending Ray's work to offload the mass-market
version of the PLATO central system. In particular I was looking at a
UCSD Pascal-based approach to download p-code versions of terminal
functions -- and even more in particular the advanced scalable vector
graphics commands of TUTOR (the "relative/rotatable" commands like
rdraw, rat, rcircle, rcircleb, etc.) if not entire programs, to be
executed offline. Pascal was an attractive choice for us at the time
because CDC's new series of computers, the Cyber 180 (aka Cyber 800)
was to have virtual memory, 64 bit words, 8 bit characters and be
programmed in a version of the University of Minnesota Pascal called
CYBIL (which stood for Cyber Implementation Language). Although this
was a radically different architecture than that upon which PLATO was
then running, I thought it worthwhile to investigate an architecture
in which a reasonable language (you should have seen what we were used
to!) could be made to operate on both the server and the terminal so
that load could be dynamically redistributed. This idea of dynamic
load balancing would, later, contribute to the genesis of Postscript.

Over one weekend a group of us junior programmers managed to implement
a good portion of TUTOR's (PLATO's authoring language) advanced
graphics commands in CYBIL. Our little hunting pack at CDC 's Arden
Hills Operations was in a race against the impending visit of Dave
Anderson of the University of Illinois' PLATO project who was
promoting what he called "MicroTUTOR". Anderson was going to take the
TUTOR programming language and implement a modified version of it for
execution in the terminal -- possibly in a stand-alone mode. Many of
us didn't like TUTOR, itself, much. Indeed, I had to pull teeth to get
the authorization to put local variables into TUTOR -- and we were
determined to select a better board from our quiver with which to surf
Moore's Shockwave into the Network Revolution. CDC management wasn't
convinced that such a radical departure from TUTOR would be wise, and
we hoped to demonstrate that a p-code Pascal approach could accomplish
what microTUTOR purported to -- and more. We quickly ported a TUTOR
central system program to CYBIL -- a vocabulary lesson called "The
Great Elendo" (teaching how endings are added on to words) -- because
it had been written in a particularly "structured" manner (by Tom
Czwornog for Gary Michael's crew in Champaign-Urbana on the PLATO
system there), and therefore fit well the "structured programming"
paradigm pushed by Pascal adherents of the day.

A dramatic aside: We had a bit of a scare when David Woolley the
author of PLATO Notes (which would become the inspiration for Ray
Ozzie's Lotus Notes), came in on Monday and was so impressed with what
we'd accomplished over the weekened that he swam through all the code
we'd written. Unfortunately, there was some confusion and, quite
uncharacteristically for Dave, he deleted the wrong file -- the one
with our code in it which hadn't yet been backed up by the system
operators. Thankfully, rather than committing hara-kiri, Dave just
quietly expressed his deep remorse, turned around and during the next
24 hours rewrote the entire program which he had inspected so
carefully; all in time to save the demo. Dave is one of the most
meticulous people with whom I've worked. This is born out by the fact
that virtually anyone who has worked in computers for any length of
time has made an error like this, but few of us have been able to
recover our honor so quickly, gracefully and decisively.

Our little hunting pack bagged the demo, and we continued to be
interested in Pascal both on the central server and on the terminal,
as a means of dynamically distributing load, but the Cyber 180's
hardware architecture was inadequate and the conversion problems to
reimplement PLATO too great for this approach to be practical. It
looked as though we would be stuck with Cray's older architecture that
had demonstrated such economic performance in my tests of a version of
the PLATO system targeting the mass market (tests run at CDC's
Benchmark Laboratory next to CDC headquarters, right across from the
airport in Bloomington).

A tragic aside: CDC mangement refused even to run a market test of the
mass market version of PLATO, despite the fact that the financials
looked promising, the system was up and running at CDC's Benchmark
Laboratory with fully capable telephone and cable head end interfaces
and there were indications that the demand for email, alone, within a
metropolitan area would have ensured PLATO's success in the mass
market. I don't hold CDC's Bill Norris accountable for this except to
the extent that he probably should have just fired all his middle
management down to the grunts and spun CDC off into a bunch of small
companies, each with its own "Seymour" -- something that would have
placed Norris in jeopardy from the forces already arrayed against him
in Wall Street. If he had taken that draconian action on behalf of
CDC's stockholders, he would almost certainly have produced an
explosion of innovation fueled by the high-achieving Midwestern baby
boomer population as they entered their careers. Opposition to Norris
infected CDC itself, often incited by institutional investors who did
not agree with Norris' vision and were able to set fashions for the
fashion-conscious via their influence on the business press. If not
for them subverting CDC's culture of innovation with a culture of
popular fashion, combined with Norris' failure to ruthlessly rid CDC
of insubordinates, Norris could have delivered on his vision. I know
-- I was there and saw to it that PLATO was benchmarked out and ready
to ship to the masses at $40/month including IST rental, at the same
time HBO was making its first inroads, at least a year before IBM cut
its deal with Bill Gates and 4 years before Steve Jobs paid a buxom
valkyrie lookalike do a hammer-toss-and-jiggle on his behalf before
the stunned eyes of football fans everywhere. I did push on this
aspect of the PLATO project hard enough within the programming teams
that I became the person most associated with mass-marketing of PLATO
in the eyes of my peers and immediate supervisors, and was therefore
the person recommended for a key position with Viewdata Corporation of
America when that company advertised for a PLATO expert -- after, of
course, CDC management had rejected my proposed market test of
PLATO. It wasn't enough to be a 26 year old programmer pulling down a
Carter-inflation-wage-and-price-controlled $20,000/year. I was in a
poor position to by-pass 7 levels of middle management to gain Norris'
ear and Norris' bet-the-company strategy on filling unmet social needs
never meshed with the profound tactical strengths available in the
well-funded PLATO system that he was so intent on supporting. The
"Personal Computer" might never have risen to the prominence it
did. Rather we could have begun the evolution of the "Network
Computer" in 1980. It is no exaggeration to say that as a result of
CDC's failure to deploy PLATO to the mass market, Bill Gates is the
richest man in the world, midwest computing lost its leadership (which
began with the first computer) to the West and the network revolution
was delayed at least 15 years. The further ramifications of this
critical juncture in history, given the demographic power of the
recently-urbanized baby boomer generation on entry to its marrying
years in 1980, are radical and profound. I'm sure there are people
from Xerox PARC who have similar retrospective concerns, but did Xerox
have a man of Norris' publically articulated vision in the position of
command contending with a virtual mutiny of his officers?

It's interesting if not predictable that it was from the PLATO IST
that some of the key thinking directly parallel to, if not critical
to, Postscript would arise. The IST was the closest thing to the Apple
Macintosh in price and capability prior to the release of the Mac
(which was the first PC to use Postscript). It's also interesting that
the Mac ended up with a version of Pascal as its primary system
language. Something worthy of study by metahistorians, is that so
little history has been recorded about the PLATO IST. At $1500 it was
perhaps the most advanced technology of its kind at that time. People
had been playing remote 3D graphical multiuser games, at resolutions
similar to those supported by the Macintosh, on PLATO, for over 5
years by 1980 when the IST was being produced by the thousands at this
low price for use with PLATO.

Having looked at UCSD Pascal's threaded p-code, the Byte magazine
issue on Forth made a good case for considering the Forth virtual
machine, not only because of its own compactness, but also the
compactness of the programs that it could execute. Although we weren't
so tight on RAM with the IST that we were forced to consider Forth
over p-code, the compact representation of executable programs in
Forth was a big plus for transmission across the limited bandwidth
modems of the era. It wasn't so compelling compared to p-code as to
force an immediate reorientation -- particularly given the fact that
Pascal was a higher level language than was Forth, as well as matching
the central system implementation language CYBIL, and was therefore
more appropriate as a primary authoring language. Nevertheless,
Forth's postifix notation reminded me of the good old days with my
first HP calculators and drawing those cool pictures on the flat bed
plotter.

I admit it -- I was hooked on the ideas in Forth and wanted get my
hands on a working implementation.

As a consequence of CDC's refusal to pursue a test of PLATO in the
much larger markets made possible by a $40/month service, I accepted a
position with Viewdata Corporation of America, a joint venture between
AT&T and Knight-Ridder News, as its Manager of Interactive
Architectures -- primarily because AT&T and Knight-Ridder were
familiar with mass markets and were targeting them from the outset. My
responsibilities included design of an "authoring system" for the
Viewtron videotex system which was being developed by Viewdata for
deployment in those mass markets. Unfortunately, I was hampered in
this by the prior choice of a Tandem T-16 as the central system upon
which to run the service. The T-16 was abysmally weak as a central
system compared to the Cyber 760's (modernized 7600's) upon which I
had benchmarked the mass-market version of PLATO. Nevertheless, I
accepted the position with the impression that it might be possible to
select a different central system vendor. Certainly it makes little
sense to choose a central system vendor before acquiring a manager
responsible for "architectures".

I started at Viewdata the same month that Byte magazine put out it's
famous August 1981 Smalltalk issue. It was immediately apparent that
the Smalltalk language and programming environment was superior to
anything associated with Pascal. Further, Smalltalk had a similar
target audience to PLATO -- Alan Kay had even wanted children to be
able to program in it. As the person most responsible for devising an
authoring system, I was immediately hooked. I had seen the film of
Stanford Research Institute's mouse interface while working on the
PLATO Communications Project in 1974 (developing a computer-based
Delphi conferencing system) and the Smalltalk system was quite
reminiscent of some of what I had seen. This was for good reason, of
course, since Smalltalk's user interface design had benefitted from
SRI's pioneering work.

However, in addition to being saddled with the T-16 as the central
system, the Viewtron terminals being designed by Western Electric,
although quite capable in other ways, had very limited RAM. What ROM
was available in them was being committed to interpret the North
American Presentation Level Protocol Syntax (NAPLPS) -- which is a
fancy way of saying they displayed a vector graphics extension to the
ASCII character set. NAPLPS had a marginal "macro" and font definition
capability, but was otherwise very limited in its programmability.

Since the Viewtron system was planned to roll-out to all the
metropolitan areas in which Knight-Ridder had newspapers, as well as
in cities where partner companies had a presence, the architectural
challenge of the authoring system involved allowing for geographically
distributed programming as well as offloading of the central
processors to the terminal processors. PLATO had just started down the
path of a distributed file system and networked notes (ala Usenet), so
the issues, while not entirely alien, were somewhat new to me. Some of
the better work at the time was with Intel's research into the iMAX
operating system and its distributed file system based on the ideas of
MIT's David P. Reed and his 1978 doctoral thesis. Reed's work had been
closely associated with the CLU programming language which was an
early object oriented language with strong affinities to
Smalltalk. Although the iMAX OS itself ran on Intel's wildly advanced
iAPX432 processor (at PLATO, Dave Woolley and I christened it "the
UFO"), and was therefore geared toward the Department of Defense's
design-by-committee language, Ada, the version of "Ada" implemented on
the 432 was actually more dynamic than that specified by the
DoD. Indeed, the iMAX OS was designed to allow device drivers and
system libraries to be dynamically added and altered without
rebooting. The "Ada" running on the iMAX OS was so dynamic, it
actually had a lot more in common with Smalltalk than the folks at
Xerox PARC might have liked to believe. Although I didn't (and still
don't) see object-oriented programming as the long-term solution to
the distributed computing problem, and was in communication with one
of the iMAX OS's contributors, Bruce MacLennan, regarding a radically
different approach to programming based on the relational calculus, I
did see the Smalltalk and the iMAX's dynamic "Ada" systems as being
mature enough to ride on their strength for the next 5 to 10 years
until the relational paradigm was ready for deployment. I hoped that
the 432's hardware design could be sped up as Intel applied its best
hardware experts to demultiplexing its microprogramming enough that
its fault tolerance and distributed programming strengths could be
applied to Viewdata's unique requirements -- if not during the initial
roll-out, then in the next generation of the Viewtron network. The
first rollout of the 432 would rely on iMAX with its dynamic "Ada" and
then later deploy a distributed Smalltalk environment throughout the
network, including demand-driven downloads of Smalltalk to the
terminals themselves as they became genuine network computers.

All of this led me to begin seriously considering the migration paths
from the current "dumb" NAPLPS terminal with T-16 central systems to a
programmable terminal which could eventually execute Smalltalk.

As I admitted above, I was hooked on the very idea of Forth, and as it
turned out, so was another key figure within Viewdata, Jim
Thompson. Thompson, who would later develop Viewtron's postfix Game
Oriented Language for Business and Leisure (GOLFBAL) for actual
storage of execution on Viewtron, had a subscription to the Forth
Interest Group newsletter and was happy to provide me with all the
back issues. It made sense that with less than 8K of RAM in the
Western Electric terminals (far less than the PLATO ISTs), and only a
little more ROM, the best way to make them fully programmable was to
burn the ultra-compact Forth virtual machine into the ROM and use what
precious little RAM was available to store tightly threaded,
dynamically downloaded Forth "words" for the execution of high level
vector graphics primitives through low level interactive graphics
programs, transmitted as a stream of compressed definitions and
subsequent invocations over the limited-bandwidth phone connections.

A postfix language for page description was thereby conceived -- not
surprisingly -- as part of the first experiment in electronic
transmission of newspapers in a highly compressed form.

The migration path from such a low-capability terminal to a
fully-distributed authoring system was still unclear, but one thing
was clear about Forth's virtual machine: It could act as a virtual
machine for any higher level language, especially a language like
Smalltalk. Being a fan of, and having programmed, Seymour Cray's
parsimonious instruction sets and elegantly simple hardware
architectures, I appreciated the design intelligence that Chuck Moore
brought to the Forth virtual machine. Viewed in this light, Forth was
a macro assembly language for a future Forth microprocessor --
entirely capable of executing Smalltalk as one of its higher level
languages.

The trip to Xerox PARC was inevitable. I was among those from Viewdata
who in November of 1981 visited Xerox PARC.

A few things about that trip stand out, but one thing is for certain:

When the subject of NAPLPS came up, I was shown source code written in
a page description language in use by Xerox by a member of the
Smalltalk team. It was definitely not, a postfix notation. I then
spoke on our thoughts of using a tokenized Forth communication
protocol to store and transmit programmable graphics for Viewtron's
electronic newsprint. When I did so, I saw an immediate look of
reflection pass over the face of our presenter. It was my definite
impression that I was seeing the "Aha!" lights turn on at Xerox PARC
right then. But our time was limited and the focus was on Smalltalk
rather than page description languages, so we moved on with the
demonstrations. I honestly don't recall the name of the person who was
showing their PDL, nor who else was present during that
conversation. It seemed a causual exchange between two programmers at
the time -- exchanges in which such "Aha!" events are quite common.

Next year, in 1982, Xerox engineers spec-ed out the "Interpress" page
description language -- purportedly the first postfix page description
language ever. Official accounts vary on whether Interpress was
derived from Xerox's "JaM", from Xerox's "Press Format" PDL, or
both. It is possible I was shown a "Press Format" source file as it
was not a postfix notation. JaM, however, was derived from the "Design
System" postfix language for representation of 3D objects developed at
Evans and Sutherland and folks from the University of Utah. I can
believe that Evans and Sutherland beat the PLATO culture to the punch
on this one, as they had a habit of doing on a number of important 3D
innovations. But the PLATO system had it's own coups over Evans and
Sutherland, including the first ray traced 3D image of a solids model
by Don Lee -- PLATO system programmer -- under a challenge from Ron
Resch, who was from the same University of Iowa computer graphics
facility within which I would later write the first 3D multiuser
virtual reality game. Ron Resch went on to work with Evans and
Sutherland and the University of Utah where he would teach the likes
of Alan Kay and others who eventually ended up at Xerox PARC.

Crucial questions remain:

Why was it that in the most advanced aspect of Xerox PARC -- the
Smalltalk project -- the PDL being demonstrated to representatives of
a major electronic newspaper project was "Press Format" rather than
"JaM"? Was the look of epiphany on the face of the PARC demonstrator
upon being told of the device-independent PDL based on Forth, actually
him recalling that PARC had its own postfix notation PDL in "JaM" and
he simply didn't mention it for fear of a breach of some sort? We were
under nondisclosure agreement at the time, and we were clearly
interested in deploying such technology and we were capable of paying
for it if not contributing to its standardization -- so why not just
spit it out? Was the subsequent specification of Interpress merely a
concidence, merely parallel development or was it perhaps energized by
the realization that a major electronic newspaper project could be on
the verge of introducing a JaM-like standard for page layout to the
international standards committees?

In the final analysis, except for a billion dollars here or there, and
where the profits might have been invested, it hardly matters who
actually invented the first postifix page description language. Given
the densely entangled identities of the University of Iowa, University
of Illinois and University of Utah from which the creation of
"Interpress" emerged, not to mention PLATO, Smalltalk and advanced 3D
rendering technologies, it is clear that the identity of the actual
inventor of the postfix PDL, as well as these other technologies, was
a pioneering culture. That culture was plowing new territory cleared
out by Moore's Shockwave with the same energy that plowed the loam, a
century earlier, around the locations of those same land grant
colleges.

The only real question remaining is whether the capital accumulation
will be used to open up fertile fields for future generations to plow,
or whether it will merely decay as did Xerox?

Alex McDonald

unread,
Nov 24, 2012, 7:53:55 AM11/24/12
to
On Nov 24, 4:09 am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:
> On Nov 23, 8:34 am, Alex McDonald <b...@rivadpm.com> wrote:
>
> > You had an extensive review of the claims you made for symtab. Which
> > is actually a splay tree iirc, but you hadn't read any of the
> > literature and claimed, contrary to what you write above, never to
> > have looked at or used other people's code. It didn't meet the
> > performance claims you made of it at the time, and describing it as
> > "vulgar criticism" is (as usual) hyperbolic.
>
> Symtab isn't a Splay-Tree. Passaniti was promoting the Splay-Tree as
> an alternative to symtab:https://groups.google.com/group/comp.lang.forth/browse_thread/thread/...

Yes, I remembered incorrectly. The rest still stands.

>
> You routinely express strong opinions on subjects that you know
> nothing about.

One example would do. Do you have one?

> You are exactly the kind of person that I won't allow
> in the Straight Forth community --- you and Passaniti and Elizabeth
> Rather deserve each other.

Is it just God-a-fearin' straight white guys who get to sign up?

Bernd Paysan

unread,
Nov 24, 2012, 8:32:08 AM11/24/12
to
Alex McDonald wrote:
>> You are exactly the kind of person that I won't allow
>> in the Straight Forth community --- you and Passaniti and Elizabeth
>> Rather deserve each other.
>
> Is it just God-a-fearin' straight white guys who get to sign up?

Being a homophobic redneck is required. Show up with your gun, and you
are in. Hugh reminds me of the guy from Texas at the start of Catch-22,
who said "only people like me should be allowed to vote".

Alex Wegel

unread,
Nov 24, 2012, 10:54:03 AM11/24/12
to
Hugh Aguilar <hughag...@yahoo.com> wrote:

> On Nov 23, 11:12 am, awe...@arcor.de (Alex Wegel) wrote:
> > Hugh Aguilar <hughaguila...@yahoo.com> wrote:
> > > that is
> > > largely why I'm jumping over to Scheme now
> >
> > You're leaving - that's great news.
> >
> > Only - you really should get some kind of therapy before jumping
> > anywhere, or you will just keep falling over your ego, probably hurting
> > more people (and yourself) on the way.
> >
> > Not that i particularly care about you, but you are mistreating truth
> > and mobbing people to an extent where it really pisses me off that such
> > stuff happens in CLF.
> >
> > To put it positively: Fix yourself, and you might even be able to keep a
> > job in the future.
> >
> > Ciao brutto.
>
> Wasn't Brutus the guy who killed Julius Ceasar? There is a
> Shakespearean play about that. Does this mean that Elizabeth Rather is
> Ceasar?

No, it's to say that you are a moron.

> Instead of always attacking me, why don't you write a package of code
> for novices and put it in the public domain? If it is comparable to
> mine, or even halfway useful, then I would take more notice of you as
> somebody to pay attention too

I'm not writing about silly packages that nobody needs here, especially
not for getting your attention.

You got *my* attention because you misbehave so badly that you hurt
other people for your egos sake.

I hang out in CLF for roughly 2 decades now (in contrast to what some
wannabe group-oldests here fantasized), and you are easily one of the
most abusive persons i experienced here.

Stop *your* lowly attacks on other people here, and i might stop
attacking you.

I might just stop attacking you anyway, because i'm fed up of our sick
game since long, and the only reason you're actually not in my kill
filter is that i think you should be watched, and if possible, be kept
from commiting further offenses.

> --- right now, I just see you as being
> another Passaniti wannabe, hoping that Elizabeth Rather will praise
> you too.

You already mentioned that you're paranoid, and that you dream of CLF
people chasing you. That's one of the things i believe you (even though
-as you might know inside- they really should be after you).

Concerning the names you just dropped: You successfully avoided
answering (or even understanding) their objections towards your claims
by swamping CLF with lies and backbiting for about 3 years now.
Congrats, prick.

> Try to make your code a little bit more readable than you did here:
> https://groups.google.com/group/comp.lang.forth/browse_thread/thread
> /dd8e30fcc7589749

Oh, another Hugh citation.

Actually that thread is yet another example of you not living up to your
outrageous mouthwork, even not being able to read and understand
specifications, then stumbling over your own praised "packages"
shortcomings, then loosing the challenge by quite a margin (taking you
about 3 days instead of the few hours you thought it would).

Later you wrote that "you made a challenge", and that you finished
"sufficiently fast". LOL. That kind of little lies probably got you
layed off already. Fix yourself, and don't think that you can fool all
bystanders on the cheap.

> You didn't provide stack-picture comments for any of your functions

Anyway the task then was to find out about the alien invasion *before*
it happens, so it was rather pointless to waste time for stack comments.

The aliens still laugh about how your package made their invasion a
triumphant success.

> --- it was obvious that you were obfuscating your code.

*You* thought that.
First you wrote that you like my solution, and you want to include it in
"your" package. Later you wrote that you don't understand it w/o stack
comments. LOL.

BTW my solution was <1000 characters long, just a letter-sized print in
rather big writing, and didn't have any hidden "tricks" or inclusions of
obscure "packages".

> This reminds me of the famous Nietzsche quote:
> "Nor are poets clean enough for me --- they muddy the water to make it
> appear deep."

You repeat yourself.
My answer to this: Nietzsche died poor, but at least he did.

> I'm just learning Scheme to better myself.

My point was: You should start by tackling your personal & social
defects if you really want to better yourself.


Stop trying to make yourself appear bigger than you are if you don't
wnat to get belittled,
stop lying about others to divert from their criticism if you want to
communicate with anyone,
actually try to understand what others wrote instead of beating them up
right away.


It doesn't hurt so much to back down from exaggerated claims from time
to time, it surely hurts less than trying to push them through against
reality.
Just fixing this first thing (brag less) can reduce the trouble you run
into (=call for) by an estimated order of magnitude (!)

As it stands, your praises of your software look much sleazier than the
"sleazy sales people" you always love to criticize.

> Given that I mostly only
> program in Forth, I really don't know a lot about computer-science
> theory.

That's a false excuse.
As JP wrote: Programming isn't just Coding.
You'd at times better listen to what people say, or you'll die stupid.

So that was a longer version. Point being: Stop pissing around, then
maybe we can talk about technical topics someday.
(I actually did look at your package, partly because i wondered why the
heck i have to load 60K of code for a simple program like your alien
language solution [which then adds another 1.5K of source w/o comments],
a problem that takes only <1K using plain forth with no extra packages.)

PS: If you dislike my language - well, it's part of the message. I've
finally gotten tired of your repeating crap.

The Beez

unread,
Nov 24, 2012, 11:03:11 AM11/24/12
to
On Nov 19, 5:03 pm, Chris Hinsley <chris.hins...@gmail.com> wrote:
Well, I don't like the ANS-standard any better than you do. As a
matter of fact, my own compiler started off as a Forth-79 one, because
I thought (and in some respects still think) it's much cleaner.
However, Wil Baden convinced me not to ignore ANS-Forth. I never
regret I listened to him. Because when that tiny experiment got bigger
there were lots of code I could use. And the more features I added
(modeled after ANS-Forth or with ANS-Forth in mind) the easier it got.

No, I don't think I surrendered. +LOOP still works the '79 way and the
truth is still just a single bit. I got my own I/O system with an
optional ANS-Forth layer on top. But getting well-written ANS code IN
is much easier - and so is porting TO ANS-Forth. That's what a
standard can do.

However, if you don't feel code is reusable (like Chuck) and want to
write your very own bubblesort and stuff over and over again, why not?
Have phun!

Hans Bezemer

Paul Rubin

unread,
Nov 24, 2012, 1:41:10 PM11/24/12
to
Chris Hinsley <chris....@gmail.com> writes:
> I am uncomfatable with aspects of the standard, increasingly so as I
> have been moving from implamenting a Forth compiler to starting to
> build what I'm after as an end result.

I think there is value to standardization not just for program
portability but for programmer portability if you use more than one
system.

I got an MSP430 TI Launchpad recently, so I wrote some code last night
using gforth on my pc, with the idea of porting to 4e4th (Camelforth) on
the Launchpad later. Immediately I see that I'm going to be faced with
headaches remembering which words work in gforth and which ones work in
4e4th. 4e4th has some non-ANSI-isms that seem kind of gratuitous to me
and I think it would be better if both systems followed the standard, to
make moving between them easier.

visua...@rocketmail.com

unread,
Nov 24, 2012, 2:37:21 PM11/24/12
to
On Saturday, November 24, 2012 1:41:11 PM UTC-5, Paul Rubin wrote:
> Chris Hinsley <chris> writes: > I am uncomfatable with aspects of the standard, increasingly so as I > have been moving from implamenting a Forth compiler to starting to > buld what I'm after as an end result. I think there is value to standardization not just for program portability but for programmer portability if you use more than one system. I got an MSP430 TI Launchpad recently, so I wrote some code last night using gforth on my pc, with the idea of porting to 4e4th (Camelforth) on the Launchpad later. Immediately I see that I'm going to be faced with headaches remembering which words work in gforth and which ones work in 4e4th. 4e4th has some non-ANSI-isms that seem kind of gratuitous to me and I think it would be better if both systems followed the standard, to make moving between them easier.

As far as I know Camelforth and 4e4th are touted to follow the ANSI standard.

Please name these non-ANSI-isms which you have found!

Alex McDonald

unread,
Nov 24, 2012, 3:20:57 PM11/24/12
to
On Nov 24, 6:39 am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:
[snip]
>
> I'm just learning Scheme to better myself. Given that I mostly only
> program in Forth, I really don't know a lot about computer-science
> theory. Straight Forth is going to have closures, and Scheme is famous
> for closures --- so it makes sense for me to learn Scheme --- I'm
> largely taking my time in coming out with Straight Forth so that I can
> learn more Scheme in the meantime, as I intend for Straight Forth to
> borrow heavily from Scheme. There are a lot of aspects of Scheme that
> are a no-go for micro-controllers (such as tagged data (dynamic OOP)),
> but there are a lot of aspects that can be carried over (such as
> closures).

Re closures; how will you do GC on a resource constrained and slow
micro-controller? Or have you a method that doesn't require GC; for
instance, restricting support of full closures?

visua...@rocketmail.com

unread,
Nov 24, 2012, 7:56:56 PM11/24/12
to
On Saturday, November 24, 2012 5:54:21 AM UTC-5, Andrew Haley wrote:
> ... Being a fan of, and having programmed, Seymour Cray's parsimonious instruction sets and elegantly simple hardware architectures, I appreciated the design intelligence that Chuck Moore brought to the Forth virtual machine. Viewed in this light, Forth was a macro assembly language for a future Forth microprocessor -- entirely capable of executing Smalltalk as one of its higher level languages.

It's amazing that Jim Bowery in 1981 has foreseen that Chuck Moore will develop a Forth microprocessor!

Andrew, thank you so much for this interesting story! It opens another window of computing history for me. Up to now I only knew about the roots of modern computers back to Xerox PARC in Palo Alto and the DARPA people working there inventing the mouse, Ethernet, and bit mapped screens, where Steve Jobs had a visit and immediately picked up the significance - having LISA as result. But now I see that the people around PLATO have been earlier.

There are several Wikipedia websites, as interesting to read, but from different point of views:
http://en.wikipedia.org/wiki/PLATO_(computer_system) - doesn't mention Forth.

http://en.wikipedia.org/wiki/Interpress
"Interpress is a page description language developed at Xerox PARC, based on the Forth programming language and an earlier graphics language called JaM."

http://en.wikipedia.org/wiki/PostScript
"PostScript is an interpreted, stack-based language similar to Forth but with strong dynamic typing, data structures inspired by those found in Lisp, scoped memory and, since language level 2, garbage collection"

http://en.wikipedia.org/wiki/Portable_Document_Format - doesn't mention Forth.

The full story with links is available on http://www.oocities.org/jim_bowery/psgenesis.html
Jim Bowery has an remarkable resume, too, with links: http://www.oocities.org/jim_bowery/ProfessionalFacts.html
He even was Founding member of the Hutter Prize Committee:
http://prize.hutter1.net/#committee - this is about compression and Artificial Intelligence.

Hugh Aguilar

unread,
Nov 24, 2012, 11:45:12 PM11/24/12
to
I'm not going to have GC --- that has no place in Forth.

The closures don't have to be on the heap --- they can be on the
locals stack of the parent function --- they don't exist beyond the
lifespan of the parent function. To some extent, this is "restricting
support of full closures" --- however, I never thought that it was a
good idea for closures to be used after their parent function had gone
out of scope. If the user tries to execute some closure that is
sitting in a global data structure after its parent has gone out of
scope, this will get caught at run-time and will abort the program
with a helpful error message. If people want to hold onto the xt of a
function forever, they will have to create it with :NONAME in the
usual way. Using closures for this is an abuse of the closure system.

I primarily want to support code similar to EACH in my novice package.
In the case of EACH etc., the passed-in function communicated with its
parent function on the parameter stack. To do this, it was necessary
for EACH to keep all of its internal data on the return stack so that
it wouldn't get in the way. That was a hassle. With my closures, the
passed-in function (the closure) will be able to communicate with the
parent function by way of the parent function's local variables.

I want to have closures because they make programs a lot simpler. I
like being able to bury code inside of an iterator. The traditional
Forth way is to just cut-and-paste this code repeatedly. That is very
error-prone, and it clutters up the source-code. For example, in my
slide-rule program I used EACH over 30 times --- rewriting the code
for traversing a list that many times would have cluttered up the
program significantly. Besides that, the code for traversing a list is
quite small and simple --- the code for traversing the LLRB tree is
larger and more complicated. When programmers have to rewrite the code
for traversing a data-structure every time that they need to do this,
they are motivated to use only simple data-structures and to avoid
complicated data-structures --- that is a big part of the reason why
Forth has a reputation for being a simplistic language that is lacking
in features --- by comparison, in the Scheme/Lisp world, all kinds of
data-structures are readily available and easy to use.

Hugh Aguilar

unread,
Nov 25, 2012, 12:01:35 AM11/25/12
to
On Nov 24, 5:53 am, Alex McDonald <b...@rivadpm.com> wrote:
> Is it just God-a-fearin' straight white guys who get to sign up?

You don't have to be white --- I don't judge people by their race.
You don't have to be God-fearing either --- I'm not --- considering
that I likened "God's Chosen People" to cows, I'm certainly on
Yahweh's kill list (I'd be worried if I thought that Yahweh actually
existed, which I don't).
You don't have to be a guy --- I'm okay with women programmers; I've
never met one, but I would like to.

Just try to behave in a respectable manner --- that is the best way to
get respect --- also, you have to write programs that work.

Paul Rubin

unread,
Nov 25, 2012, 1:32:51 AM11/25/12
to
visua...@rocketmail.com writes:
> As far as I know Camelforth and 4e4th are touted to follow the ANSI standard.
> Please name these non-ANSI-isms which you have found!

Here are a few:

- the WORD primitive in 4e4th (according to the glossary pdf, I haven't
checked the source code or tested it) has signature

( char -- c-addr n )

i.e. it results in address + count. The gforth version and the ANS spec
say it's supposed to return a pointer to a counted string, i.e. the
signature is

( char -- c-addr )

I think 4e4th's version of WORD is what ANS calls PARSE. 4e4th doesn't
appear to have anything called PARSE, which is an ext-core word in ANS.

- The STRING extensions are annoyingly only partway present. CMOVE
and CMOVE> are there but COMPARE is not there. There are nonstandard
words S= and N= that appear to do something similar, but the difference
between them isn't explained.

Rod Pemberton

unread,
Nov 25, 2012, 5:09:23 AM11/25/12
to
"Alex Wegel" <awe...@arcor.de> wrote in message
news:1ku2i07.ytrmr61jcyrsdN%awe...@arcor.de...
> Hugh Aguilar <hughag...@yahoo.com> wrote:
...

> You got *my* attention because you misbehave so badly that you hurt
> other people for your egos sake.
>

Hugh, I think he may have mistaken me for you ... I gave him a large list
of the reasons he shouldn't post, after he unjustly attacked me.

> I hang out in CLF for roughly 2 decades now (in contrast to what some
> wannabe group-oldests here fantasized), [...]

That's true.

You post once or twice a year. You post nothing in regards to Forth. You
don't ask about Forth. You don't post replies helping others with Forth.
Why are you here at all? It seems you're just here to complain or agree.

What you do is incite. If there is an argument, especially one which
doesn't involve YOU, you attempt to increase the anger further. How
are you any better than Passaniti?

> I might just stop attacking you anyway, because i'm fed up of our sick
> game since long, and the only reason you're actually not in my kill
> filter is that i think you should be watched, and if possible, be kept
> from commiting further offenses.
>

While I don't agree with Hugh's attacks on Ms. Rather, many can be taken as
humorous or ludicrous or using Ms. Rather as a proxy for one of Hugh's
apparent enemies: "Forth Gods" ...

I do agree with Hugh's attacks on Passaniti. Passanitti has harshly
attacked people on comp.lang.forth for years. There is thread on c.l.f. in
2002 with people complaining about him. There are probably others even
earlier. If you look at his posting history, you'll see that all John did
for his first ten years posting to Usenet was insult people. That's it.
That's all he did. He leaves for a while, then returns, no wiser ...

> You already mentioned that you're paranoid, and that you dream of CLF
> people chasing you. That's one of the things i believe you (even though
> -as you might know inside- they really should be after you).
>
> Concerning the names you just dropped: You successfully avoided
> answering (or even understanding) their objections towards your claims
> by swamping CLF with lies and backbiting for about 3 years now.
> Congrats, prick.

I don't recall anyone attacking YOU in the past six years, except me,
recently, when you unjustly attacked me. You post so infrequently that no
one is even _aware_ that you post here, or remember what your name is ...

> > Try to make your code a little bit more readable than you did here:
> > [link]
> > /dd8e30fcc7589749
>
> Oh, another Hugh citation.
>
> Actually that thread is yet another example of you not living up to your
> outrageous mouthwork, even not being able to read and understand
> specifications, then stumbling over your own praised "packages"
> shortcomings, then loosing the challenge by quite a margin (taking you
> about 3 days instead of the few hours you thought it would).
>
> Later you wrote that "you made a challenge", and that you finished
> "sufficiently fast". LOL. That kind of little lies probably got you
> layed off already. Fix yourself, and don't think that you can fool all
> bystanders on the cheap.
>

I'd swear that was directly from Passaniti ...
Are you his proxy? Is he spoofing you?


Rod Pemberton


Andrew Haley

unread,
Nov 25, 2012, 5:16:55 AM11/25/12
to
visua...@rocketmail.com wrote:

> Andrew, thank you so much for this interesting story! It opens
> another window of computing history for me. Up to now I only knew
> about the roots of modern computers back to Xerox PARC in Palo Alto
> and the DARPA people working there inventing the mouse, Ethernet,
> and bit mapped screens, where Steve Jobs had a visit and immediately
> picked up the significance - having LISA as result. But now I see
> that the people around PLATO have been earlier.

The origins of this technology are pre-Xerox PARC. Doug Engelbart at
Stanford Research Institute pioneered bitmapped displays and invented
the mouse. DARPA funded it, true enough. J. C. R. Licklider was the
central figure in all of this.

Andrew.

Alex McDonald

unread,
Nov 25, 2012, 5:21:05 AM11/25/12
to
These sound like "anonymous quotations"; this was discussed at length
here:
http://groups.google.com/group/comp.lang.forth/browse_frm/thread/c7c8543a3d4c7ad5/dd65eafc55280513?lnk=gst&q=anonymous+quotation#dd65eafc55280513

In which case, it's trivially implementable, as here;

STC Experimental 32bit: 0.06.05 Build: 6
: foo {: local :} [: local 1+ ;] execute ; ok
10 foo . 11 ok

The LOCAL local is "lexically" bound and in scope during FOO's
execution. However, the following doesn't work, since the variable
LOCAL is outside the scope and isn't properly bound;

: bar {: local :} [: local 1+ ;] ;
10 bar execute

That requires value lifetimes outside of the enclosing word, and some
form of GC.

Alex McDonald

unread,
Nov 25, 2012, 5:22:27 AM11/25/12
to
Respect is a two way street.

Alex McDonald

unread,
Nov 25, 2012, 5:27:43 AM11/25/12
to
On Nov 24, 12:53 pm, Alex McDonald <b...@rivadpm.com> wrote:
> On Nov 24, 4:09 am, Hugh Aguilar <hughaguila...@yahoo.com> wrote:

>
> > You routinely express strong opinions on subjects that you know
> > nothing about.
>
> One example would do. Do you have one?
>

Still waiting. Either provide evidence or withdraw the statement.

Marcel Hendrix

unread,
Nov 25, 2012, 6:33:04 AM11/25/12
to
awe...@arcor.de (Alex Wegel) writes Re: why bother with standards ?

Be assured that your efforts are appreciated.

-marcel


visua...@rocketmail.com

unread,
Nov 25, 2012, 10:54:43 AM11/25/12
to Mic...@4e4th.eu, b...@t-recursive.com, di...@4e4th.eu
On Sunday, November 25, 2012 1:32:52 AM UTC-5, Paul Rubin wrote:
> visualforth.com writes: > As far as I know Camelforth and 4e4th are touted to follow the ANSI standard. > Please name these non-ANSI-isms which you have found! Here are a few: - the WORD primitive in 4e4th (according to the glossary pdf, I haven't checked the source code or tested it) has signature ( char -- c-addr n ) i.e. it results in address + count. The gforth version and the ANS spec say it's supposed to return a pointer to a counted string, i.e. the signature is ( char -- c-addr ) I think 4e4th's version of WORD is what ANS calls PARSE. 4e4th doesn't appear to have anything called PARSE, which is an ext-core word in ANS. - The STRING extensions are annoyingly only partway present. CMOVE and CMOVE> are there but COMPARE is not there. There are nonstandard words S= and N= that appear to do something similar, but the difference between them isn't explained.

Thanks, Paul!
4E4th has been tested with a Forth-Verifier, but I will check what's going on there.

visua...@rocketmail.com

unread,
Nov 25, 2012, 8:02:06 PM11/25/12
to Mic...@4e4th.eu, b...@t-recursive.com, di...@4e4th.eu
> On Sunday, November 25, 2012 1:32:52 AM UTC-5, Paul Rubin wrote:
>> visualforth.com writes:
>> As far as I know Camelforth and 4e4th are touted to follow the ANSI standard.
>> Please name these non-ANSI-isms which you have found!

> Here are a few: - the WORD primitive in 4e4th (according to the glossary pdf, I haven't checked the source code or tested it) has signature ( char -- c-addr n ) i.e. it results in address + count. The gforth version and the ANS spec say it's supposed to return a pointer to a counted string, i.e. the signature is ( char -- c-addr ) I think 4e4th's version of WORD is what ANS calls PARSE. 4e4th doesn't appear to have anything called PARSE, which is an ext-core word in ANS.

> The STRING extensions are annoyingly only partway present. CMOVE and CMOVE> are there but COMPARE is not there. There are nonstandard words S= and N= that appear to do something similar, but the difference between them isn't explained.

Thanks, Paul! 4E4th has been tested with a Forth-Verifier, but I will check what's going on there.

Here are the results:
The behavior of the word is correct, but the stack comment is wrong. This error goes back to the original CamelForth/MSP430 source code and will be fixed in an upcoming release.

PARSE will be added to the next release of CamelForth/MSP430, though this is an extension word and not required for a minimal ANSI Forth - therefore it will not be with the educational 4E4th because of memory constraints.

S= is a string compare with both strings in Data space. N= (Name-equal)
is a string compare with one string in Data space and the other in Code
or Header space; this is for Harvard architectures (e.g. 8051) and
multiple-segment architectures (e.g. 8086). On the MSP430 N= and S= are
equivalent - therefore N= will be removed from 4E4th to save memory space. Thanks!

The function of S= is slightly different from COMPARE -- COMPARE takes two lengths, and S= takes only one.

Paul, you wrote "Here are a few:" - are there more? Would be really helpful if you let us know about your findings. Critics and suggestions are always welcome!

Elizabeth D. Rather

unread,
Nov 25, 2012, 9:20:59 PM11/25/12
to
On 11/25/12 3:02 PM, visua...@rocketmail.com wrote:
...
> S= is a string compare with both strings in Data space. N= (Name-equal)
> is a string compare with one string in Data space and the other in Code
> or Header space; this is for Harvard architectures (e.g. 8051) and
> multiple-segment architectures (e.g. 8086). On the MSP430 N= and S= are
> equivalent - therefore N= will be removed from 4E4th to save memory space. Thanks!
>
> The function of S= is slightly different from COMPARE -- COMPARE takes two lengths, and S= takes only one.

That sounds like -TEXT (pronounced "not-text" -- the dash looks kind of
like a logical 'not' symbol) which takes two addresses and a length and
returns 'true' if they are not equal for that length. It was widely used
in polyFORTH's data base system, and for many other uses. We found that
"true if no match" was much more useful than "true if match" (usually
saved several words).

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."
==================================================

Paul Rubin

unread,
Nov 25, 2012, 10:44:20 PM11/25/12
to
visua...@rocketmail.com writes:
> The behavior of the word is correct, but the stack comment is
> wrong. This error... code and will be fixed in an upcoming release.

Ah, great.

> PARSE will be added to the next release of CamelForth/MSP430, though
> this is an extension word and not required for a minimal ANSI Forth -
> therefore it will not be with the educational 4E4th because of memory
> constraints.

I think PARSE is better for a memory constrained system and makes a
natural factor of WORD, rather than the other way around (this was
apparently discussed during the ANS process). The Launchpad is rather
more severely constrained by RAM than code space, and the current 4e4th
supposedly uses just 6k of the 16k of code space in the chip. The
remaining 10k is enough space for quite a large program, probably larger
than a typical educational user would write.

So I think for educational purposes it may be better to supply more
capabilities to make the learner's experience easier, even if it
consumes a bit more of the code space, let's say up to 8k or even
10-12k. That allows adding major features like locals, an assembler,
etc.

By the time someone is advanced enough to fill the remaining space, they
can probably rebuild the system themselves to make a minimal version if
that's what they want. Or they could just move up to a board with a
bigger processor. It would be nice if TI would put some of the fancier
432's into that DIP package so they would work in the Launchpad...

> N= and S= are equivalent - therefore N= will be removed from
> 4E4th to save memory space. Thanks!

Why not get rid of both of them, and supply COMPARE, which is standard?
Or implement S= using COMPARE, which is trivial.

> Paul, you wrote "Here are a few:" - are there more? Would be really
> helpful if you let us know about your findings.

I'll let you know if anything else comes up. There were a few things I
remembered that turned out to be wrong-- I may have confusing 4e4th with
one of the other small Forths that I've been looking at.

> Critics and suggestions are always welcome!

It's a really nice effort, thanks for your part in it.

Albert van der Horst

unread,
Nov 26, 2012, 9:48:34 AM11/26/12
to
In article <bc4bba35-ba97-43ad...@googlegroups.com>,
<visua...@rocketmail.com> wrote:
>On Saturday, November 24, 2012 5:54:21 AM UTC-5, Andrew Haley wrote:
>> ... Being a fan of, and having programmed, Seymour Cray's parsimonious
>instruction sets and elegantly simple hardware architectures, I
>appreciated the design intelligence that Chuck Moore brought to the
>Forth virtual machine. Viewed in this light, Forth was a macro assembly
>language for a future Forth microprocessor -- entirely capable of
>executing Smalltalk as one of its higher level languages.
>
>It's amazing that Jim Bowery in 1981 has foreseen that Chuck Moore will
>develop a Forth microprocessor!

Hardly amazing. The time was ripe. Round these times the Dutch Forth
Chapter developed such a processor up and including a working emulator
(running on a CP/M machine). It was not further pursued when Chuck
Moore beat us to it.

Groetjes Albert
--
Albert van der Horst, UTRECHT,THE NETHERLANDS
Economic growth -- being exponential -- ultimately falters.
albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst

Albert van der Horst

unread,
Nov 26, 2012, 9:59:10 AM11/26/12
to
In article <7x4nkdc...@ruckus.brouhaha.com>,
S= -TEXT or CORA (as I call it) is more primitive, more useful and
easier to use than COMPARE.

>
>> Paul, you wrote "Here are a few:" - are there more? Would be really
>> helpful if you let us know about your findings.
>
>I'll let you know if anything else comes up. There were a few things I
>remembered that turned out to be wrong-- I may have confusing 4e4th with
>one of the other small Forths that I've been looking at.
>
>> Critics and suggestions are always welcome!
>
>It's a really nice effort, thanks for your part in it.


visua...@rocketmail.com

unread,
Nov 26, 2012, 2:37:16 PM11/26/12
to b...@t-recursive.com, Mic...@4e4th.eu, Di...@4e4th.eu
On Sunday, November 25, 2012 10:44:26 PM UTC-5, Paul Rubin wrote:
> ... The Launchpad is rather more severely constrained by RAM than code space, and the current 4e4th supposedly uses just 6k of the 16k of code space in the chip.

The 4e4th version which I am using occupies $1F20 = 7968 bytes - may be you have an older version.

> The remaining 10k is enough space for quite a large program, probably larger than a typical educational user would write.

The MSP430G2553 FLASH is divided in two parts of 8k each - 8k for the Forth system and 8k for the user. This is because of the bulk erasing constraints.

> So I think for educational purposes it may be better to supply more capabilities to make the learner's experience easier, even if it consumes a bit more of the code space, let's say up to 8k or even 10-12k.

8k for the Forth system and 8 k for the user is an equal share. We decided this from early on. It doesn't make sense to have a Forth operating system larger than the user space. To make the learner's experience easier, we put a lot of goodies into our 4E4th-IDE.

Our goal is to help newbees to get started with programming Forth on the MSP430 LaunchPad as easy as possible - no complicated toolchains, no monster IDE.
The 4E4th-IDE needs only 4.4 MB on disk, including the FLASH programmer and support for the MSP430G2553 I/O constants - to download the IAR-IDE you need 1GB of disk space, 227 times as much. An Editor function is integrated to allow real straightforward incremental programming for one or more projects with one or more LaunchPads.

> That allows adding major features like locals, an assembler, etc.

There is no space to include locals. Newbees don't necessarily need an assembler. We are working on an assembler for download or as a cross assembler.

> By the time someone is advanced enough to fill the remaining space, they can probably rebuild the system themselves to make a minimal version if that's what they want.

Forth for Education - 4E4th - has been made to make programming an easy task for newbees - education to write programs using Forth, not education how to make another Forth.

> Or they could just move up to a board with a bigger processor.

Of course that's a possibility. The idea behind 4E4th is to encourage young people to use Forth. If they recognize the merits of Forth, they will look for Forth on microprocessors or microcontrollers of their choice - I hope there will be opportunities. We are focusing on TI's MSP430 line.

> It would be nice if TI would put some of the fancier 432's into that DIP package so they would work in the Launchpad...

We don't wait for this!

> It's a really nice effort, thanks for your part in it.

Thank you so much!
Thanks for your suggestions and critics!

DB.

Paul Rubin

unread,
Nov 26, 2012, 4:05:09 PM11/26/12
to
visua...@rocketmail.com writes:
>> the current 4e4th supposedly uses just 6k of the 16k of code space in
>> the chip.
> The 4e4th version which I am using occupies $1F20 = 7968 bytes - may
> be you have an older version.

I'm going by the start page of the 4e4th wiki, which says 6k, though
maybe that refers to the non-4e4th Camelforth, or to an old version of
4e4th.

> The MSP430G2553 FLASH is divided in two parts of 8k each - 8k for the
> Forth system and 8k for the user. This is because of the bulk erasing
> constraints.

Oh ok, I haven't examined how this works yet. My Launchpad is still in
its box til I get some time to mess with it.

> 8k for the Forth system and 8 k for the user is an equal share. We
> decided this from early on. It doesn't make sense to have a Forth
> operating system larger than the user space.

Well, I don't know that it's inherently not sensible, but ok, 8k/8k is a
reasonable sounding division.

> we put a lot of goodies into our 4E4th-IDE.

I didn't know about this IDE! I thought 4e4th was a standalone Forth
that communicates with a terminal emulator, i.e. no host software to
speak of. I certainly suggest updating the web site to describe the
IDE.

> The 4E4th-IDE needs only 4.4 MB on disk, including the FLASH
>programmer and support for the MSP430G2553 I/O constants

I have to wonder what even this 4.4MB is doing, and I hope it's not
Windows dependent.

> to download the IAR-IDE you need 1GB of disk space,

Oh that sounds horrendous. You can run a complete Linux system with
much less space than that. I figured I'd use the GCC toolchain for C
stuff, and I expect that to be much smaller than 1GB as well.

>> That allows adding major features like locals, an assembler, etc.
> There is no space to include locals.

I've been wondering how Forth locals are usually implemented. It might
be possible to do them with very little memory.

> Newbees don't necessarily need an assembler.

I guess I don't consider this type of system to be suitable for a
complete programming novice, who is better off with a more forgiving
language (higher level features, less memory constraints, and extensive
error checking with good diagnostic messages and debugging tools) that
runs on a normal PC without external hardware.

4e4th seems like a great into to embedded microcontroller programming
and that's how I've been thinking of it. Microcontroller programming is
a particular niche in the programming world awhich I think is not really
the right initial entry point to programming for most people. Someone
getting involved with it probably ought to get some exposure to
assemblers since they will likely need at least a little bit of it if
they're developing actual microcontroller applications.

> We are working on an assembler for download or as a cross assembler.

An assembler in Forth that can be loaded into 4e4th would be great.

If you're going to have a host-side application at all though, maybe
it's time to think about a cross-compiled Forth. That gets the text
interpreter out of the MSP430, so you can put more user friendliness
into the (host-side) compiler, and it frees up lots of space in the
target, so you can use the smaller Launchpad cpu (2k program space, 128
bytes ram) though you may have to shrink some memory areas like the
stacks.

It occurs to me something like this could be done in Javascript or
Python pretty straightforwardly. There is already an ANS Forth in
Javascript (JSForth) and the proposed ANS cross-compilation extensions
look pretty simple. The Launchpad image would just have an address
interpreter besides the existing code to communicate with the host. Or
in a more ambitious system there could be a host-side native code
compiler, either a real one, or some combination of subroutine threading
and code templates for primitives.
It is loading more messages.
0 new messages