Users you DON'T want to have - or?

53 views
Skip to first unread message

The Beez

unread,
Apr 7, 2013, 3:21:42 AM4/7/13
to 4tH-compiler
Hi 4tH-ers!

I received a message which infuriated me. I wrote a response right
away, maybe something that I shouldn't have done. So, after a while I
thought, maybe I should ask you guys whether I should repent and
change my ways. Both messages are unabridged.

Hans Bezemer

On Sunday 07 April 2013, you wrote:
> Howard Shapiro made me aware of the RPi 4th package so I thought I'd check
> it out.  I'm a once-avid Forth hobbyist, I created a Forth for the Nintendo
> Gamecube called GC-Forth years ago.
Hi Roger!

Ok, here it starts. No decency to start with "Hi Hans" or something.

> Disappointed and frustrated.  Double clicking any of the binaries doesn't
> work, and no coherent directions for RPi are provided, and I'm not a Linux
> expert by any stretch, so the barrier to entry seems to be "know everything
> already".
That's the problem with you Nintento guys. You're probably a Windows
user, who
thinks everything works (or should work) like in Windows. That why I
wrote a
FIVEHUNDRED PAGE MANUAL! Have you had the decency to read ANY of it?
There is
an installation manual for Linux (wakeup call: it's Linux your
Raspberry is
running) and a "Guided tour" section.

So IMHO the problem of thinking to "know everything already" is
entirely in
your part. If you're intending to stay with your Raspberry you will
certainly
encounter "sketchy information" more frequently - as I happen to know
personally when I was trying to port the darn thing for you guys.

> Have no idea where the announcement about the package was made,
> and there are no links or blog feeds on your website.
And as far as my website is concerned (http://thebeez.home.xs4all.nl/
4tH/)
there is a link to Google groups and the ENTIRE manual - even if you
picked
up a SVN version there is plenty of stuff available.

> I'm almost personally offended - how do you old time programmers justify
> being so indifferent to users?  Waste of time.
Ok, even if there was just the sourcecode (like you will encounter
more often
than you want if you want to stick around) - it's free. It's written
in my
own free time and given to you to do with it whatever you like.
Estimated
cost: $206,946 and four man-years of work.

That is: excluding the manual you're consistently ignoring
(http://www.ohloh.net/p/12413/estimated_cost). I just wanted I was
there so I
could physically throw it to your head - It's 500 pagews, that's at
least 2
pounds. It hurts, believe me.

Hans Bezemer

TianMing

unread,
Apr 7, 2013, 3:22:49 AM4/7/13
to 4th-co...@googlegroups.com
hi,beez,do not worry,I have a question , if I learn forth well ,how I can earn some cash with forth as you?
> --
> You received this message because you are subscribed to the Google Groups "4tH-compiler" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to 4th-compiler...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>

Hans Bezemer

unread,
Apr 7, 2013, 3:33:39 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> hi,beez,do not worry,I have a question , if I learn forth well ,how I can
> earn some cash with forth as you? 在 2013-4-7,下午3:21,The Beez
> <the.bee...@gmail.com> 写道:

Hi TianMing!

Well, I guess you made as much cash as I have with Forth already. ;-) That is:
nothing! The model Ohloh uses estimates how long it would take and how much
money it would cost you to BUILD a project like 4tH. It doesn't estimate how
much you'll earn.

In total honesty, there is not too big a market for Forth. There are several
commercial vendors. A small number of programmers can make a living. So, if
you're in it for a job or the money, you better look elsewhere: C++, C,
HTML5, PHP, Java (Android!). There's more money and job opportunity there.

Inside tip (but still a gamble): there are massive numbers of COBOL and
mainframe people retiring and there seems to become a lack of those skills.

Hans Bezemer
--
I have no Facebook account. Consequently, I have no friends and I don't like
anything. Deal with it.

Visit our website! http://thebeez.home.xs4all.nl/4tH/

*** Home of the 4tH compiler! ***

TianMing

unread,
Apr 7, 2013, 3:46:39 AM4/7/13
to 4th-co...@googlegroups.com
I am still in learning 4th, some details still loss the way of my mind , some questions I cannot speak out clearly by my suck English, so the 4th for PI ,what will you plan next?

TianMing

unread,
Apr 7, 2013, 3:55:19 AM4/7/13
to 4th-co...@googlegroups.com
hi,Hans
  let's talk about the  cell exec_4th (Hcode *Object, unsigned ArgN, char **ArgS,
                 unsigned VarN, …)

I almost see the function arguments in c program just in two , and the exec_4th has 4 arguments and the optional argument,can you tell me the meaning of each arg?
在 2013-4-7,下午3:33,Hans Bezemer <the...@xs4all.nl> 写道:

--
You received this message because you are subscribed to the Google Groups "4tH-compiler" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 4th-compiler+u...@googlegroups.com.

Hans Bezemer

unread,
Apr 7, 2013, 4:03:22 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> I am still in learning 4th, some details still loss the way of my mind ,
> some questions I cannot speak out clearly by my suck English, so the 4th
> for PI ,what will you plan next?
Hi TianMing!

I don't think I'm much of a planner where 4tH is concerned. I'll just see what
comes along. Yesterday some guy took interest in the Tiny Console
Spreadsheet, wanted a HTML export. That wasn't too much work itself, but it
really required "print range detection", so I created that one too. I added
ALLSHEET support as well, to make the code a lot leaner.

In the meanwhile, I cleaned up CSV2TCS - it's part of the package. It was made
before the likes of GETOPTS.4TH and RfC 4180, so it could do with a bit of
upgrading.

It goes like that all the time. Sometimes it's me that gets "hooked" on
something, sometimes it's my users that send me in a certain direction. And I
think it's good that way.

Major projects I want to do one time or another is a full fledged Forth
compiler ON TOP of 4tH, a regular expression engine and the likes of MD5 and
stuff are always welcome too.

If you find it difficult to WRITE your questions, consider SHOWING them to me
by means of YouTube. Several people have used that medium to make themselves
clear to me - and I used it the other way around as well.

Hans Bezemer

unread,
Apr 7, 2013, 4:22:26 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> hi,Hans
> let's talk about the cell exec_4th (Hcode *Object, unsigned ArgN, char
> **ArgS, unsigned VarN, …)
>
> I almost see the function arguments in c program just in two , and the
> exec_4th has 4 arguments and the optional argument,can you tell me the
> meaning of each arg? 在 2013-4-7,下午3:33,Hans Bezemer <the...@xs4all.nl> 写道:

1. The "Object" is just what comp_4th() or load_4th() returns. That's easy.
2. ArgN and ArgS are the 4tH equivalent of argc and argv. Does that ring a
bell? E.g.

char *(Args [MAXARGS]); /* interface to ExecuteCommands() */

This is pretty much *argv[] or **argv! Now this breaks up a string to
pointers:

case ('a'): PromptFor ("Arguments: ", CmdLine, sizeof (CmdLine));
for (space = TRUE, Argn = 1, x = 0;
(Argn < MAXARGS - 1) && (CmdLine [x] != '\0'); x++)
{ /* max 14 args, scan till end of cmd */
if (CmdLine [x] == ' ')
{ /* if space, terminate and signal */
CmdLine [x] = '\0';
space = TRUE;
}
else /* if it is a character, test for */
{ /* previous space and assign */
if (space == TRUE) Args [Argn++] = CmdLine + x;
space = FALSE;
} /* signal this was not a space */
} /* terminate argument list */
Args [Argn] = NULL; break;

The resulting Argn and **Args are passed to this one:

/*
This routine executes an object. It flushes stderr and stdout since
that may cause garbled output on some platforms.
*/

#ifndef ARCHAIC
void Execute4tH (int argn, char **args)
#else
void Execute4tH (argn, args) int argn; char **args;
#endif

{
cell Result; /* holds the result from the program */

fflush (stderr); /* prevent garbled output */
Result = exec_4th (Object, argn, args, 0);
fflush (stdout); /* execute the object */
Msg4tH ("Executing;");
if (Result != CELL_MIN) ErrMsg (MRESULT, "Executing;", Result);
} /* show only significant results */

And there you see them pop up as argn and args. In other words, This:

This is a line of arguments

Is broken up in:

This (1)
is (2)
a (3)
line (4)
of (5)
arguments (6)

Passed as Argn=6 and Args, so in 4tH:

argn 0 ?do i args type cr loop

Shows:

This
is
a
line
of
arguments

3. VarN shows the number of integers you're passing to 4tH:

e.g.
exec_4th (Object, 0, NULL, 3, 6, 18, 24);

6, 18 and 24 are 3 integers (hence: 3). These are passed to 4tH so:

app 0 th ?
app 1 th ?
app 2 th ?

Shows 6, 18 and 24.

TianMing

unread,
Apr 7, 2013, 4:23:43 AM4/7/13
to 4th-co...@googlegroups.com
I see ,thank you , are you in dutch?
> --
> You received this message because you are subscribed to the Google Groups "4tH-compiler" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to 4th-compiler...@googlegroups.com.

Hans Bezemer

unread,
Apr 7, 2013, 4:33:49 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> I see ,thank you , are you in dutch?
Yes, I'm Dutch. Don't hold it against me ;-)

TianMing

unread,
Apr 7, 2013, 4:34:10 AM4/7/13
to 4th-co...@googlegroups.com
I have dutch friend~

TianMing

unread,
Apr 7, 2013, 5:10:19 AM4/7/13
to 4th-co...@googlegroups.com
static int     Optimization;           /* peephole optimizer turned off */

 I do not understand the "/* peephole optimizer turned off */" meaning 
在 2013-4-7,下午4:34,TianMing <timi...@gmail.com> 写道:

I have dutch friend~
在 2013-4-7,下午4:33,Hans Bezemer <the...@xs4all.nl> 写道:

On Sunday 07 April 2013, TianMing wrote:
I see ,thank you , are you  in dutch?
Yes, I'm Dutch. Don't hold it against me ;-)

Hans Bezemer

--
I have no Facebook account. Consequently, I have no friends and I don't like
anything. Deal with it.

Visit our website! http://thebeez.home.xs4all.nl/4tH/

*** Home of the 4tH compiler! ***

--
You received this message because you are subscribed to the Google Groups "4tH-compiler" group.
To unsubscribe from this group and stop receiving emails from it, send an email to 4th-compiler+u...@googlegroups.com.

Hans Bezemer

unread,
Apr 7, 2013, 5:24:11 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> static int Optimization; /* peephole optimizer turned off */
It is a reminder for me NOT to start with the peephole optimizer turned on,
since there's nothing to optimize.

HB

TianMing

unread,
Apr 7, 2013, 5:26:59 AM4/7/13
to 4th-co...@googlegroups.com
peephole optimizer?such as
在 2013-4-7,下午5:24,Hans Bezemer <the...@xs4all.nl> 写道:

peephole optimizer

Hans Bezemer

unread,
Apr 7, 2013, 6:20:08 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
A peephole optimizer looks at a very small part of the code and tries to cut
out irrelevant sequences, e.g.

LITERAL (6)
LITERAL (5)
+ (+)

Can be compiled better as:

LITERAL (11)

Saves the overhead of two instructions.

Hans Bezemer

Hans Bezemer

unread,
Apr 7, 2013, 6:27:37 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, TianMing wrote:
> peephole optimizer?such as
Here is the proof. Didn't know 4tH was doing that, did you ;-)

(S)creen file: new.scr
(O)bject file: out

(E)dit (C)ompile (R)un (A)rguments

(Q)uit (G)enerate (B)uild (D)ecompile

>e
OK
l

Scr # 0
0 6 5 +
1
( ..)

4tH message: No errors at word 1
Object size: 1 words
String size: 0 chars
Variables : 0 cells
Strings : 0 chars
Reliable : Yes

[ 0] literal (11)

Ron K. Jeffries

unread,
Apr 7, 2013, 10:50:09 AM4/7/13
to 4th-co...@googlegroups.com

Tiny Console Spreadsheet ?

After Googling for ten minutes more or less I found nothing that references Tiny Console Spreadsheet.

Ron K Jeffries

Hans Bezemer

unread,
Apr 7, 2013, 11:11:14 AM4/7/13
to 4th-co...@googlegroups.com
On Sunday 07 April 2013, Ron K. Jeffries wrote:
> Tiny Console Spreadsheet ?
> After Googling for ten minutes more or less I found nothing that references
> Tiny Console Spreadsheet.
Hi Ron!

It's better known under the name "TCS". If you have a vanilla installation,
all you have to do is type:

4th cxq tcs.4th

And you'll see the familiar "OK" prompt. Next type "." and you'll see why it
is called "Console".

Next enter:

0 a = 45.45
0 b = ' +'
0 c = 68.68
0 d = ' ='
0 e = 0 a 0 c +

And you'll see why it is called "Spreadsheet". Do an 'ls' in your 4th
directory to see why it's called "Tiny". ;-)

Note it is fairly "bare bones" (only 12 columns and 32 rows (64K limit on
DOS), virtually no functions), but made to be expanded easily.

David Johnson

unread,
Apr 7, 2013, 3:26:15 PM4/7/13
to 4th-co...@googlegroups.com
Hi Hans,

This gentleman is simply missing an opportunity to use 4tH and the fantastic (and free) support you provide to learn something about his hardware and system.  Too bad he is blaming you for his frustrations. If he keeps this attitude it will limit his success in future endeavours.

As always your work is much appreciated.

David Johnson


Ed

unread,
Apr 23, 2013, 10:10:53 AM4/23/13
to 4tH-compiler
Hi Hans,

Greetings from c.l.f

Oh my! There are ways to tell a newbie to RTFM but this
wasn't it :)

When I get such enquiries I enjoy quoting the exact line
of the manual they failed to read. In virtually all cases they're
impressed the information was at their fingertips all the time!

regards





Hans Bezemer

unread,
Apr 23, 2013, 12:49:05 PM4/23/13
to 4th-co...@googlegroups.com
On Tuesday 23 April 2013, Ed wrote:
Hi Ed!

> Oh my! There are ways to tell a newbie to RTFM but this
> wasn't it :)
I know.. and I agree! But this one was particularly infuriating. Everyone
knows that "clicking" console based executables does nothing in Linux - only
Windows reacts that way. If you haven't gotten that far while "exploring" a
new operating system, you need to tone down a bit and catch up on your
general reading.

You can't blame people who write programs that they don't include a
manual "Linux for absolute and complete dummies" with any program they
provide.

Second, if you're entering a platform like the Raspberry, don't expect
everything to be in the same order of thing as when you buy a new TV or a new
smartphone. In a sense you're pioneering - and that brings frusrtation as
well as Eureka's. I know, I've been there ;-)

> When I get such enquiries I enjoy quoting the exact line
> of the manual they failed to read. In virtually all cases they're
> impressed the information was at their fingertips all the time!
Regular users of this forum know that's what I do most of the time ;-) And
that's very ok with me. Finding something in over 500 pages is a bit of a
task by any measure - no matter how well it is organized or written. I
understand that very well - and it's no trouble at all.

What I do expect though (except for c.l.f. regulars ;-) ;-) since things get
hairy every now and then over there with guys like gavino and Hugh Aigular)
is simple politeness.

If I made a grave error (and that can happen anytime, no matter how many
double checks I put in there) I'll be the first to say sorry and do all in my
power to correct it as soon as possible. I can't undo it, that's the way it
is, and I'm sorry for all the hours and effort you put in to it, but I'll fix
it.

If you made an error and I put many hours and effort into it, searching for a
non-existent bug - still best friends. That's all in the game.

But to bash into the door, slam the entire interior, calling me names and then
leave - sorry: I don't react too well to that. It must be a character flaw,
but I can live with it.
Reply all
Reply to author
Forward
0 new messages