Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.forth > #16751
| 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> |
"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 | Next — Previous in thread | Next in thread | Find similar | Unroll 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