Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #16751

Re: I Don't Make Mistakes. I Use C

From "Rod Pemberton" <do_not_have@notemailnotz.cnm>
Newsgroups comp.lang.forth
Subject Re: I Don't Make Mistakes. I Use C
Date 2012-10-26 19:55 -0400
Organization Aioe.org NNTP Server
Message-ID <k6f7lh$6st$1@speranza.aioe.org> (permalink)
References (2 earlier) <arKdnVMSfeE6rRXNnZ2dnUVZ_s6dnZ2d@supernews.com> <k6ael5$j60$1@speranza.aioe.org> <8fSdnSe9ZpDgcxXNnZ2dnUVZ_oCdnZ2d@supernews.com> <7xmwzae7kc.fsf@ruckus.brouhaha.com> <F7CdnfKu9NzOFRTNnZ2dnUVZ_rOdnZ2d@supernews.com>

Show all headers | View raw


"Elizabeth D. Rather" <erather@forth.com> wrote in message
news:F7CdnfKu9NzOFRTNnZ2dnUVZ_rOdnZ2d@supernews.com...
> On 10/25/12 8:21 AM, Paul Rubin wrote:
> > "Elizabeth D. Rather" <erather@forth.com> writes:
> > > [Rod Pemberton wrote:]
...

[You are snipping one too many reply authors above...]
[4 indents below matches 3 above]

> >>> My Forth interpreter is ITC ...
> >> So you must know that it's misleading to call it an interpreter.
> >
> > Of course you know such implementations are usually described as having
> > a text interpreter and an address interpreter.
>
> Of course. Within the Forth community we understand these terms. In the
> wide world of computing, there's a different connotation. From Wikipedia:
>
> "In computer science, an interpreter normally means a computer program
> that executes, i.e. performs, instructions written in a programming
> language. An interpreter may be a program that either
>
>      1. executes the source code directly.
>
>      2. translates source code into some efficient intermediate
> representation (code) and immediately executes this.
>
>      3. explicitly executes stored precompiled code made by a compiler
> which is part of the interpreter system.
>
> Early versions of the Lisp programming language and Dartmouth BASIC
> would be examples of type 1. Perl, Python, MATLAB, and Ruby are examples
> of type 2, while UCSD Pascal is an example of type 3.
>

I'll take it this reply to Paul...
is what you meant earlier in reply to me (Rod) about Forth not actually
being an interpreter, i.e., two interpreters...

Paul mentioned the two classic Forth interpreters above.  Mine has both.
Even so, my Forth is ITC.  ITC is the method used by inner/address
interpreter, not the outer/text interpreter.

> Forth mostly fits #3, but I think the common understanding of
> "interpreter" is 1 or 2. Particularly when you say something like,
> "Interpreted Forth has no error checking whatsoever" (in this thread) or
> "Forth is slow, because it's interpreted" (a common statement from
> people with only a vague understanding of Forth) you're ignoring the
> reality of mainstream Forth technology. Even 70's ITC Forths had a very
> useful level of error checking (I don't consider type checking useful
> :-) and good implementations had excellent performance.
>

I said those things, not Paul ...  although he responded similarly,
if someone thought he was me.

All interpreters are slow, as compared to compiled code.  This has nothing
to do with Forth.  All interpreters re-implement the processor, in one way
or another, in software.  It's technically impossible for an interpreter to
be as fast has the native hardware.

What error checking does interpreted Forth have?  At best, it's trivial
things that you've already mentioned, e.g., stack under/overflow.  Does it
do anything important?  E.g., what checks does it do to prevent any integer
on the stack from being used as an xt?  E.g., what does it do to ensure only
correct return values on the return stack are used by EXIT/SEMIS?  E.g.,
what does it do to ensure ALLOT points the dictionary pointer to a valid
location?  (You know full well that ALLOT in an interpreted Forth is just
"DP +!" ...  I.e., no checking on DP's value.)  I.e., there are many ways to
"abuse" interpreted Forth's sufficiently that they'll crash or produce
incorrect data or corrupted data.  Sequencing of Forth words is another such
issue.  E.g., some Forth require using ALLOT _prior to_ storing a value into
the dictionary, versus immediately after storing a value.  Nothing else
should be writing to the dictionary.  Some such issues are probably
environment specific.  But, I bet if I were to start to attack various
Forths, that I'd find many such issues are common across multiple platforms.

> >> Serious programming mistakes are logical errors. No compilers can
> >> check for that. Testing can.
> >
> > Compilers certainly do check for logical errors, sometimes quite
> > effectively.  Of course they can't check for ALL possible logical
> > errors, and the error checks constrain the user's programming style,
> > creating trade-offs.  It's a perennial topic of debate whether a given
> > trade-off is good or bad, but to say the checking doesn't catch (some)
> > actual logical errors is just silly.
>
> How does a compiler detect that the programmer wasn't thinking clearly
> about how to do this operation?
>

Since Paul said that, I'll let him respond to it.

> >> Successful Forth programmers also use coding standards. They just
> >> don't expect a "god" compiler to enforce them.
> >
> > The compiler checks aren't god-like, they're just mechanisms.  Like the
> > warning buzzer in a car that alerts you if you turn off the motor with
> > the headlamps on.  Maybe a good thing, maybe bad, but fairly
> > straightforward either way.
>
> A good Forth implementation has a useful level of error checking. We
> just disagree on what constitutes "useful".
>

We?  Which "we" ... ?  You two are confusing me.

I don't think you realized Paul responded to you, and you responded to him
without realizing it wasn't me.  That may have something to do with you
snipping me as one of the people you replied to.  :-)  Paul didn't indicate,
if he realized it, that you were replying to him thinking it was me.


Rod Pemberton



Back to comp.lang.forth | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

I Don’t Make Mistakes. I Use C visualforth@rocketmail.com - 2012-10-23 16:09 -0700
  Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-23 16:43 -0700
  Re: I Don’t Make Mistakes. I Use C jacko <jackokring@gmail.com> - 2012-10-23 16:50 -0700
    Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-23 18:58 -0700
      Re: I Don’t Make Mistakes. I Use C jacko <jackokring@gmail.com> - 2012-10-24 15:12 -0700
  Re: I Don’t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-23 14:02 -1000
    Re: I Don’t Make Mistakes. I Use C Bernd Paysan <bernd.paysan@gmx.de> - 2012-10-24 02:51 +0200
      Re: I Don’t Make Mistakes. I Use C Mark Wills <forthfreak@gmail.com> - 2012-10-24 04:23 -0700
    Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-23 19:20 -0700
    Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-24 05:04 -0500
      Re: I Don?t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-24 08:04 -1000
        Re: I Don?t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-24 13:11 -0700
          Re: I Don?t Make Mistakes. I Use C Pavel Klinkovsky <pavel.klinkovsky@gmail.com> - 2012-10-24 13:21 -0700
          Re: I Don?t Make Mistakes. I Use C Fritz Wuehler <fritz@spamexpire-201210.rodent.frell.theremailer.net> - 2012-10-25 20:00 +0200
            Re: I Don?t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 11:30 -0700
              Re: I Don?t Make Mistakes. I Use C Anonymous <nobody@remailer.paranoici.org> - 2012-10-26 09:00 +0000
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-26 05:01 -0500
                Re: I Don?t Make Mistakes. I Use C Brad Eckert <hwfwguy@gmail.com> - 2012-10-26 08:46 -0700
            Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-25 23:05 -0500
              Re: I Don?t Make Mistakes. I Use C Anonymous <nobody@remailer.paranoici.org> - 2012-10-28 15:35 +0000
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-28 12:06 -0500
                Re: I Don?t Make Mistakes. I Use C Bernd Paysan <bernd.paysan@gmx.de> - 2012-10-28 21:38 +0100
                Re: I Don?t Make Mistakes. I Use C jacko <jackokring@gmail.com> - 2012-10-28 16:34 -0700
                Re: I Don?t Make Mistakes. I Use C Anonymous <nobody@remailer.paranoici.org> - 2012-10-29 10:56 +0000
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-29 06:11 -0500
                Re: I Don?t Make Mistakes. I Use C rickman <gnuarm@gmail.com> - 2012-10-29 13:51 -0400
                Re: I Don?t Make Mistakes. I Use C Anonymous <nobody@remailer.paranoici.org> - 2012-10-29 20:45 +0000
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-30 04:20 -0500
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-30 04:16 -0500
    Re: I Don’t Make Mistakes. I Use C rickman <gnuarm@gmail.com> - 2012-10-25 10:04 -0400
      Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 14:16 -0700
        Re: I Don’t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-25 15:51 -1000
          Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 20:14 -0700
            Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-25 23:11 -0500
              Re: I Don?t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 21:53 -0700
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-26 01:27 -0500
                Re: I Don?t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-26 07:06 -0700
                Re: I Don?t Make Mistakes. I Use C Andrew Haley <andrew29@littlepinkcloud.invalid> - 2012-10-26 11:34 -0500
                Re: I Don?t Make Mistakes. I Use C Bernd Paysan <bernd.paysan@gmx.de> - 2012-10-26 19:13 +0200
                Re: I Don?t Make Mistakes. I Use C Alex McDonald <blog@rivadpm.com> - 2012-10-27 04:49 -0700
                Re: I Don?t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-25 21:20 -1000
            Re: I Don’t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-25 21:23 -1000
              Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-26 00:53 -0700
          Re: I Don’t Make Mistakes. I Use C "Stanley Daniel de Liver" <notagoodone@invalid.org.invalid> - 2012-11-21 16:21 +0000
  Re: I Don't Make Mistakes. I Use C "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-10-24 06:55 -0400
    Re: I Don't Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-24 08:17 -1000
      Re: I Don't Make Mistakes. I Use C "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-10-25 00:23 -0400
        Re: I Don't Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-24 22:18 -0700
        Re: I Don't Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-24 21:47 -1000
          Re: I Don't Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 11:21 -0700
            Re: I Don't Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-25 08:43 -1000
              Re: I Don't Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-25 12:18 -0700
              Re: I Don't Make Mistakes. I Use C "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-10-26 19:55 -0400
                Re: I Don't Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-26 17:38 -1000
            Re: I Don't Make Mistakes. I Use C Brad Eckert <hwfwguy@gmail.com> - 2012-10-26 09:07 -0700
          Re: I Don't Make Mistakes. I Use C "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-10-26 19:56 -0400
            Re: I Don't Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-26 17:47 -1000
              Re: I Don't Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-26 22:04 -0700
                Re: I Don't Make Mistakes. I Use C visualforth@rocketmail.com - 2012-10-27 07:27 -0700
                Re: I Don't Make Mistakes. I Use C Bernd Paysan <bernd.paysan@gmx.de> - 2012-10-27 19:14 +0200
    Re: I Don't Make Mistakes. I Use C Brad Eckert <hwfwguy@gmail.com> - 2012-10-24 11:48 -0700
      Re: I Don't Make Mistakes. I Use C rickman <gnuarm@gmail.com> - 2012-10-25 19:14 -0400
  Re: I Don’t Make Mistakes. I Use C Hugh Aguilar <hughaguilar96@yahoo.com> - 2012-10-24 10:41 -0700
    Re: I Don’t Make Mistakes. I Use C Pavel Klinkovsky <pavel.klinkovsky@gmail.com> - 2012-10-24 13:10 -0700
      Re: I Don’t Make Mistakes. I Use C "Elizabeth D. Rather" <erather@forth.com> - 2012-10-24 14:00 -1000
        Re: I Don’t Make Mistakes. I Use C Pavel Klinkovsky <pavel.klinkovsky@gmail.com> - 2012-10-24 23:54 -0700
      Re: I Don't Make Mistakes. I Use C "Rod Pemberton" <do_not_have@notemailnotz.cnm> - 2012-10-25 00:29 -0400
        Re: I Don't Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-24 22:25 -0700
          Re: I Don't Make Mistakes. I Use C Pavel Klinkovsky <pavel.klinkovsky@gmail.com> - 2012-10-24 23:57 -0700
        Re: I Don't Make Mistakes. I Use C Pavel Klinkovsky <pavel.klinkovsky@gmail.com> - 2012-10-25 00:11 -0700
    Re: I Don’t Make Mistakes. I Use C visualforth@rocketmail.com - 2012-10-24 16:14 -0700
      Re: I Don’t Make Mistakes. I Use C Paul Rubin <no.email@nospam.invalid> - 2012-10-24 17:16 -0700
        Re: I Don’t Make Mistakes. I Use C visualforth@rocketmail.com - 2012-10-24 17:47 -0700
      Re: I Don’t Make Mistakes. I Use C rickman <gnuarm@gmail.com> - 2012-10-25 10:17 -0400

csiph-web