Talk:Forth (programming language)/Archive 1
This is an archive of past discussions about Forth (programming language). Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page. |
Archive 1 |
Naming
Its name is derived from Mr. Moore's belief that it was a "fourth-generation computer language"
I believe this is wrong. Fourth-generation languages are declarative languages like SQL, which Forth is not, as far as I know. I believe that the inventor thought that Forth was the fourth higher computer language ever written. That is something completely different. Spektr 21:15, 2004 Jun 4 (UTC)
Mr. Moore thought that FORTH was a fourth generation language, even if it isn't so in fact. The article is correct. --Prosfilaes 06:58, 8 Jun 2004 (UTC)
- "Fourth-generation language" in the sense of "SQL" was a marketing buzzword. To my knowledge it does not mean anything objective and is not used by actual practitioners of computer science as a meaningful categorization of languages (as categories such as "pure-functional language" or, orthogonally, "strongly typed language" are). It is as null as Larry Wall's categorization of Perl as a "postmodern programming language". --FOo 02:04, 21 Jun 2004 (UTC)
The story I heard is that Forth was devised on an IBM computer which allowed only five-letter filenames (incredible nowadays, but true — I once worked on such a computer), and is so-called because the FIRST, SECND and THIRD attempts all failed to work; the FORTH was the one which worked, and the name stuck. Korax1214 15:49, 4 June 2007 (UTC)
Spelling
On the Lisp programming language article we have decided that despite the varying orthography we will spell that language's name "Lisp" rather than "LISP". This reflects the common practice of current Lisp users. The language "Forth" is also sometimes spelled "FORTH". Which orthography is preferred among current Forth/FORTH users? --FOo 02:04, 21 Jun 2004 (UTC)
Three basic instructions
Reading this article reminds me of a fantasy that I read as a child whereby a teenager gets summoned to a world of magic to defeat an evil wizard. Noticing that wizards discover spells on a trial-and-error basis he realizes that he can create new spells simply by combining three basic spells. Now I know he was really a Forth programmer!
- Update: Had I thought of using "What links here?" I would immediately have found WIZ-DOS...
Stack-oriented language
"Stack-oriented" seems far more important for Forth than "data-structured" in the main description. Data-structured doesn't seem nearly as common a term, either, and it's semi-redundant with "reflective" in there. Benhoyt 01:51, 28 October 2005 (UTC)
FORTH vs. Forth
StepsTogether recently changed
- Since the name is not an acronym, it is typically not spelled in all capital letters.
to
- Although the name is not an acronym, it is still frequently spelled in all capital letters, following the customary usage during its earlier years.
I am not sure I agree with this change. As far as I can tell, the only people spelling Forth in all capital letters are the same people that also spell Lisp, Fortran and Ada in all capital letters. —Tobias Bergemann 07:50, 15 November 2005 (UTC)
- If you read Forth message boards such as comp.lang.forth, you'll see that a significant percentage of people do still write "FORTH". How these people may write other names doesn't change the fact that FORTH is still often written in all caps. Anyway, it's apparent that neither "frequently" nor "occasionally" is NPOV, so I changed the wording to "sometimes", which has the virtue of being unarguably true. StepsTogether 19:08, 15 November 2005 (UTC)
- That is a nice compromise. Thanks. (I hadn't read clf for some time and was probably misremembering the situation.) —Tobias Bergemann 08:21, 16 November 2005 (UTC)
- For a start, it's not an acronym because the word "forth" already existed — if composed from initials, it would be an acrostic. Secondly, acronyms are words (e.g. radar, laser) and as such are spelt in sentence case as is usual for words. It's initialisms which are usually spelled in upper case. —The preceding unsigned comment was added by Korax1214 (talk • contribs) 15:56, 4 June 2007.
- I don't know where you get your definition of acrostic from, but I believe acronym to be the correct usage; acrostic; [1] and acronym: [2]. I can't find a definition of initialisms? Can you also sign your comments with four tildes please? Alex 16:42, 4 June 2007 (UTC)
- If you read Forth message boards such as comp.lang.forth, you'll see that a significant percentage of people do still write "FORTH". How these people may write other names doesn't change the fact that FORTH is still often written in all caps. Anyway, it's apparent that neither "frequently" nor "occasionally" is NPOV, so I changed the wording to "sometimes", which has the virtue of being unarguably true. StepsTogether 19:08, 15 November 2005 (UTC)
What is the justification for listing Forth as a .NET language?
Hi, 68.68.2.115, as for Talk:Microsoft .NET the comments in the main article have been formatted. Comments are expressed in the talk page, here.
Mark Hurd 05:52, 18 December 2005 (UTC)
Call for "natural language" example of Forth code
The article claims "A well-designed Forth program reads like natural language". Without an example, this seems quite POV and depends on one's definition of "natural language". Can someone contribute a chunk of code to illustrate this claim? Thanks. --Ds13 07:45, 20 February 2006 (UTC)
- Here's an example (from www.forth.com); ignore the line numbers. The "main" in this code is the word WASHER.
0 ( Washing Machine Application ) HEX 1 7000 CONSTANT MOTOR 7006 CONSTANT DETERGENT 700A CONSTANT CLUTCH 2 7002 CONSTANT VALVE 7008 CONSTANT TIMER 7010 CONSTANT LEVEL 3 7004 CONSTANT FAUCETS DECIMAL 4 5 : ON ( port) -1 SWAP OUTPUT ; : OFF ( port) 0 SWAP OUTPUT ; 6 : SECONDS ( n) 1000 * MS ; : MINUTES ( n) 60 * SECONDS ; 7 : ADD ( port) DUP ON 10 SECONDS OFF ; 8 : TILL-FULL BEGIN LEVEL INPUT UNTIL ; 9 : DRAIN VALVE ON 3 MINUTES VALVE OFF ; 10 : AGITATE MOTOR ON 10 MINUTES MOTOR OFF ; 11 : SPIN CLUTCH ON MOTOR ON 5 MINUTES MOTOR OFF CLUTCH OFF ; 12 : FILL FAUCETS ON TILL-FULL FAUCETS OFF ; 13 : WASH FILL DETERGENT ADD AGITATE DRAIN ; 14 : RINSE FILL AGITATE DRAIN ; 15 : WASHER WASH SPIN RINSE SPIN ;
- Pretty natural, no? Alex 23:04, 20 February 2006 (UTC)
- Thanks, Alex. Well, the second half of it reads as naturally as any example I've seen. I say add it unless something better comes along! --Ds13 00:38, 21 February 2006 (UTC)
Example code
Hi BACbKA. I see you've reverted my edit as "incorrect" and you suggest that I did not test on a "standard Forth system". The great thing about Forth standards is there's so many to choose from! ;-) My edit was tested on Gforth, which is an implementation of ANS Forth. Seems "standard" enough to me. At any rate, the existing code that you put back does not product "the same output" as the article suggests. At least two things are incorrect in its output when I run that example: 1) there is a " after the !, 2) there's no carriage return at the end. Does that code really output correctly on your system? --Ds13 23:39, 23 February 2006 (UTC)
- Corrected by Benhoyt. Cheers. --Ds13 04:36, 24 February 2006 (UTC)
I didn't notice the ", sorry. I saw that the main change of the edit that I had reverted was changing something of the form .( whatever)
to ." whatever else"
, which is wrong since the ."
semantics is not defined in the interpretation state. The other two changes are fine, but they're only cosmetic (i.e., what will be output precisely in the end), whereas the .( vs ." difference can be something that will preclude anything from being printed properly! As for gforth, a lot of systems, gforth included, extend undefined areas of the language to support as much DWIMmery as possible, and this is one of the cases. Sorry to have told you "you should have tested it" when you actually had run it! --BACbKA 13:46, 24 February 2006 (UTC)
- No sweat, BACbKA. I enjoyed learning that what I thought was "standard" may not be, afterall. It's good to question assumptions, especially when code compatibility is at issue. Cheers. --Ds13 03:27, 26 February 2006 (UTC)
Operating system, compilation and implementation rewrite
I've tinkered with these sections, but this bit could do with a rewrite; basically, moving the File System & Multitasking pieces under the Operating System heading and removing some of the repetitions; there are also parts in the Self (meta) and cross compilation and Implementation of a Forth System that I'm not happy with. Suggestions? Alex 15:35, 1 March 2006 (UTC)
- OK, I'll take the silence as approval... Alex 21:34, 10 March 2006 (UTC)
Example code
In the example code section, there's a 5-line Python function, and then the same function written as a 1-liner in Forth:
: FLOOR5 ( n -- n' ) 1- 5 MAX ;
I know you're trying to show how terse Forth can be, but do we have to be so obviously biased? If you can use the MAX builtin for Forth, it's not really fair to avoid the max() builtin for Python:
def floor5(v): return max(v-1, 5)
—The preceding unsigned comment was added by 130.76.32.167 (talk • contribs) 04:24, 5 April 2006 (UTC2)
- I don't think it's an attempt at bias; I think the example is rather a poor one, actually, and I'll look for a better one. Lines of source code is not the point with Forth; it's the size of the resulting binary that's the key, as many Forth applications are designed for running in extremely constrained systems with very small amounts of memory. The concept of a "builtin" is also alien to Forth; although ANS-compliant Forths must define the word MAX (as its in the core ANS wordset), some define it in terms of other, simpler Forth words. There are Forths that have only 30 (or less) "builtin" words; all other required words are defined in terms of these.
- Oh, and could you sign your comments with four tildes please? Alex 12:05, 5 April 2006 (UTC)
- OK, how about
: fib ( n -- n' ) dup 1 > if dup 1- recurse swap 2 - recurse + then ;
- Lowercase is OK in Forth; it's not case-sensitive. There are examples (including Python) at Fibonacci number program. The Python version is
def fib(n): if n < 2: return n else: return fib(n - 1) + fib(n - 2)
- Better? Alex 21:43, 5 April 2006 (UTC)
Actually, when I think on it, this may serve to contrast/compare better with the Forth example;
def fib(n): if n > 1: return fib(n - 1) + fib(n - 2) else: return n
Unfortunately, neither of the Forth examples shows the return of multiple values on the stack, something most other languages can only do via structures. Alex 13:43, 12 April 2006 (UTC)
- I consider
/MOD ( numerator denominator -- mod div )
to be a great example for this. --IanOsgood 23:34, 10 July 2006 (UTC)
Here are a few variants. The last one, fibo, returns two values per call.
: ifib ( n -- res ) 0 1 ROT 0 ?DO TUCK + LOOP NIP ; : rfib1 ( n a b -- res ) 2 PICK 0= IF NIP NIP ( b) EXIT ENDIF ROT 1- -ROT TUCK + RECURSE ; : rfib ( n -- res ) 0 1 rfib1 ; \ fibo n = fst (h n) \ h 0 = (1,0) \ h n | even n = (a^2+b^2,b*(2*a-b)) where (a,b) = h (n div 2) \ h n | odd n = (a*(2*b+a),a^2+b^2) where (a,b) = h (n div 2) : SQR ( a -- a^2 ) DUP * ; : H ( n -- res1 res2 ) DUP 0= IF DROP 1 0 EXIT ENDIF DUP 1 AND IF 2/ RECURSE 2DUP 2* OVER + * -ROT SQR SWAP SQR + ELSE 2/ RECURSE 2DUP SQR SWAP SQR + -ROT SWAP 2* OVER - * ENDIF ; : FIBO ( n -- res ) h DROP ; : TEST ( n -- ) LOCAL n CR ." iterative FIB : " TIMER-RESET 0 #1000000 0 DO DROP n ifib LOOP 0 .R ." , " .ELAPSED CR ." recursive FIB : " TIMER-RESET 0 #1000000 0 DO DROP n rfib LOOP 0 .R ." , " .ELAPSED CR ." recursive FIB2 : " TIMER-RESET 0 #1000000 0 DO DROP n fibo LOOP 0 .R ." , " .ELAPSED ; FORTH> 34 test iterative FIB : 9227465, 0.083 seconds elapsed. recursive FIB : 9227465, 0.201 seconds elapsed. recursive FIB2 : 9227465, 0.137 seconds elapsed. ok
--Mhx 15:07, 13 May 2006 (UTC)
http://quartus.net/products/forth/compare.shtml -- a decent example, using Quartus Forth for the Palm handhelds, compares Forth and C in a complete "HelloWorld.exe" application. The comparison is written by Neal Bridges ( find email for him at Quartus.net). Raystm2 02:40, 1 March 2007 (UTC)
- I just spoke with Neal and he doesn't consider this an example of comparison between the two languages. His exact quote --
- "Raystm2, my comparison page shows what Palm advocates as a programming model vs. what Quartus Forth abstracts more simply. It isn't really a comparison between the two languages, as much as a comparison between the two approaches." Raystm2 02:52, 1 March 2007 (UTC)
Reason for RPN
> The rationale for postfix notation is that it is closer to the machine language the computer will eventually use, and should therefore be faster to execute.
Fast execution has nothing to do with this. IMHO, the real reason is that with RPN variables can remain nameless. There is thus an obvious space-saving advantage. 80.56.233.149 04:35, 6 April 2006 (UTC)
- There are several advantages to RPN;
- 1. As you say, no variables as they're on the stack. However, there's little to no space saved, as temporary named variables in C end up on the stack in an activation record anyhow, and intermediate temporaries may be optimised away entirely.
- 2. It's easier and faster to compile (no operator precedence to worry about).
- I believe this is the real reason. infix notation requires a parser and a grammar, which leads to operator precedence and operators looking different from function calls, which either reduces extensibility in the case where new functions can be added but not new operators (C) or complicates extensibility in the case of operator overloading (C++). The fact that forth words "do their own work" and don't use a parser enhances extensibility because you don't have to change the parser to add a new operator. Lisp also has no parser or grammar and gains similar power and extensibility from using prefix notation.
- for the definitive answer we could always ask Chuck http://www.colorforth.com/ Ideogram 04:45, 27 May 2006 (UTC)
- 3. Forth is a "zero address" language (operators don't have addresses), and the langage constructs better match the underlying architecture of stack based machines; so the resulting code is much more optimal than the equivalent C for such machines, hence faster to execute.
- In general, I agree that the statement needs refined. What would you suggest? Alex 20:09, 6 April 2006 (UTC)
Re 1: When Forth began, no such optimization was possible and variable names would have cost a bulky and (ultimately) useless word header (additionally slowing down compilation). Hmmm, in the ol' days VARIABLEs would certainly have been *much* slower than a SWAP or an OVER. So you actually have a point (with respect to both compilation and execution speed) there.
Re 2: Here we come near the true reason (IMHO). I don't agree operator precedence is a problem for the compiler. A parser for integers (no strings, no floats, no nothing) is only a few lines. But keeping the precedence system / parser extensible with the user being free to add compiler words and CREATE DOES> tricks was surely impossible, given the constrained resources of early Forth compilers.
Re 3: I doubt very much Charles Moore designed Forth with real Forth hardware in mind. It's more likely that he wanted to eliminate a few, in his eyes, unnecessary compiler layers. Don't forget that optimization (in those days) meant multi-pass processing, disk files, and certainly no interactive debugging and inspection. In the compiler texts I know, they start with building an interpreter that executes stack code. The next step is a "simple" compiler for the stack code, and that is where incredible complexity begins. Once again, I must admit that the answer has to do something with speed. But not execution speed, compilation speed.
NB. Even on stack chips, the code executed is not *pure* Forth. So what 'language' does a C compiler for such a chip emit? IMHO, for any imaginable (solvable) problem one can write a pure Forth or pure C program, and, given enough perspiration, both language compilers will emit exactly the same machine (stack) instructions.
80.56.233.149 20:50, 7 April 2006 (UTC)
- Re re 2; That's the beauty of Forth. In interpretation mode; if it's a number, stick it on the stack. If it's not, find and execute the word. In compilation mode; if it's a number, compile code to put the number on the stack at run time. If it's not, find and compile a "call" to the word. That's it; none of this messy bracketing, precedence, or operator parameter checking. As to CREATE DOES>, the word CREATE is a parsing word (it parses the input stream), as are : (colon), VARIABLE , CONSTANT etc. All these words generate a dictionary header entry. Btw, PostScript takes a different approach here.
- Re re 3; right, Moore didn't have Forth chips in mind; the reason you give is correct. However (and answering your NB), Forth and stack machines are very, very intimately connected; words like DUP SWAP ROT OVER and most others that deal with the stack or control structures like IF/ELSE/THEN will normally have a single opcode parallel. The code is just about pure Forth. The perspiration is all C's; Forth doesn't even break a sweat generating code for this kind of architecture. On x86 and register based machines designed for C (take a look at the Intel manuals!) then Forth has a lot more to do; using stack opcodes as an intermediate representation is difficult to optimise. Alex 23:07, 7 April 2006 (UTC)
Re Re 2:That's the beauty of Forth.
I am not contradicting you! That feature of Forth (interactivity and extensibility) is essential and must be in anything that dares to call itself Forth. Apparently it is difficult to write a simple and compact implementation of an extensible infix interpreter/compiler.
Re Re 3:The code is just about pure Forth. The perspiration is all C's; Forth doesn't even break a sweat generating code for this kind of architecture. On x86 and register based machines designed for C (take a look at the Intel manuals!) then Forth has a lot more to do; using stack opcodes as an intermediate representation is difficult to optimise.
Everybody says this, I wonder where it comes from. It is very easy to compile stackcode on x86 (I am iForth's author, and also wrote pl0 and TinyKiss with various backends). The difficulty is when you start optimizing, and then the complexity for Forth and "something else" is comparable. Proof: how many good optimizers are there for Forth, and how long did it take them to get where they are now? An efficient stack chip will have a PICK primitive that will completely do away with user-written stack orderings (SWAP DUP ROT etc.) Another way to look at it is to ask yourself what useful *work* SWAP does... Nothing of course, so it can be optimized out.
—The preceding unsigned comment was added by 80.56.233.149 (talk • contribs) 08:12, 8 April 2006 (UTC2)
- Well, hello Marcel! I'm the Alex McDonald that's maintaining Win32forth. Yes, stack code is easy to generate for an x86, but it's not terribly efficent. I've been trying to write a decent optimiser for w32f for some time now, and as a first step abandoned the itc in favour of stc. Now, I'm looking at a variety of techniques, and will probably settle on some variant of Anton's work for basic block optimisation. IMHO, there are very few good optimisers for Forth; but because the Forth implementor's desire to produce an specific architecture code generator is that much less given the adequate performance of DTC or simple inlining in STCs, and the loss of portability. Jeff Fox might disagree with your PICK opcode; he has on more than one occasion castigated on clf those that "dig into" the stack below the top two or three entries.
Back to the original topic, now that I've taught my grandmother to suck eggs; how should the verifiable benefits of Forth be expressed?
—The preceding unsigned comment was added by Alextangent (talk • contribs) 01:10, 9 April 2006 (UTC2)
- Well, hello Marcel! I'm the Alex McDonald that's maintaining Win32forth. Yes, stack code is easy to generate for an x86, but it's not terribly efficent. I've been trying to write a decent optimiser for w32f for some time now, and as a first step abandoned the itc in favour of stc. Now, I'm looking at a variety of techniques, and will probably settle on some variant of Anton's work for basic block optimisation. IMHO, there are very few good optimisers for Forth; but because the Forth implementor's desire to produce an specific architecture code generator is that much less given the adequate performance of DTC or simple inlining in STCs, and the loss of portability. Jeff Fox might disagree with your PICK opcode; he has on more than one occasion castigated on clf those that "dig into" the stack below the top two or three entries.
Forth reasons for RPN:
- 1 The parser is very simple and consistent. This is a concern when you are keeping your implementation small and simple, and porting it to every new piece of equipment you need to work on, as Chuck did.
- 2 Functions are now operandless, and thus are easier to factor.
- 3 As Chuck has said, postfix is a good fit for an imperative language, and fits the way Chuck thinks. Postfix code is executed in exactly the order it is written (with the exception of a few parsing words which parse-ahead for symbol and string data). No need to worry about operator precedence or the order in which you evaluate parameters to functions.
--IanOsgood 23:13, 10 July 2006 (UTC)
verifiable benefits of forth
I would say the widely agreed benefits of forth are the interactivity (fast edit/test/debug cycle) and the power, which is primarily due to the extensibility.
Ideogram 04:27, 27 May 2006 (UTC)
category .NET programming languages
How is Forth a .NET programming language? Ideogram 22:08, 29 May 2006 (UTC)
Never mind I saw the citation above. Ideogram 22:54, 29 May 2006 (UTC)
Image for infobox
The C article uses the cover of K&R for its infobox image. I was thinking the cover of Starting Forth (2nd ed.) might make a good image here. Can anyone produce a good image and upload it? My copy is looking a bit ragged. Ideogram 22:53, 29 May 2006 (UTC)
There's an image on amazon.com [3].
It's of the first edition, and not great, but it's better than nothing. Anyone know how we can get a copy to use here? Ideogram 23:00, 29 May 2006 (UTC)
- Copyright problems; the book is still copyrighted by Leo Brodie. Don't know what copyright pertains to the cover. Alex 16:05, 30 May 2006 (UTC)
- See the K&R book cover (click on it) for a fair use rationale. Ideogram 16:43, 30 May 2006 (UTC)
- OK, if it's fair use; is Amazon the source? Alex 00:23, 1 June 2006 (UTC)
- See the K&R book cover (click on it) for a fair use rationale. Ideogram 16:43, 30 May 2006 (UTC)
images
There's a request for more images. Anyone have any good ideas? Ideogram 23:02, 29 May 2006 (UTC)
- Forth doesn't have any images; I can only suggest approaching Forth Inc and asking for a GFDL picture of Moore. Alex 15:55, 30 May 2006 (UTC)
- There's a picture of Chuck on http://www.colorforth.com/ Ideogram 16:45, 30 May 2006 (UTC)
- I was thinking we might have a use for stack diagrams, like the ones in Starting Forth (but without the cartoon characters). Ideogram 00:11, 3 June 2006 (UTC)
- I have added these. Unfortunately the images overlie the blockquote box, and I don't know how to fix this. Ideogram 03:56, 4 June 2006 (UTC)
- Personally, I think stack pictures would be better put on the RPN page, which already does a good job of explaining the stack concepts. Do many of the other programming language pages have lots of images? I wouldn't think so. --IanOsgood 23:37, 10 July 2006 (UTC)
references
The books from Books. tutorials, and classes should be moved to the References section. They also need ISBN numbers. There's also an article citation under History of Forth. Ideogram 03:21, 30 May 2006 (UTC)
Infobox reference to LISP and ALGOL
Ideogram; there's a reference to LISP and ALGOL as influences on Forth. AFAIK, Moore never programmed in either LISP or ALGOL, and I can't see any features of ALGOL in Forth at all. If anything, it may have been influenced by Moore's bad experience with other programming languages. I'll ask on comp.lang.forth and see if Elizabeth Rather (the world's second Forth programmer, and author of some of this entry) can help out.
Plus, the major implementations; this is one of these areas where you'll get a whole bunch of people up in arms! Alex 16:02, 30 May 2006 (UTC)
- I do seem to recall a mention of Lisp as an influence (Algol I'm not so sure about). I'll try to dig up a reference.
- As for major implementations, Forth Inc. should be uncontroversial. We can discuss the others. Ideogram 16:47, 30 May 2006 (UTC)
- I was wrong about Lisp and APL; Moore took a programing course under McCarthy, and explicitly refers to APL in his website. APL added back in Alex 11:32, 4 June 2006 (UTC)
- Moore also programmed in Algol (and many, many, other languages of that time, including COBOL), see his website again. However, I think mentioning Lisp and APL as influential for Forth is enough.Mhx 14:47, 4 June 2006 (UTC)
- Moore also borrowed from FORTRAN (DO-LOOP) and assembly languages (DUP, DROP, SWAP). Ref: his HOPL II draft. --IanOsgood 23:41, 10 July 2006 (UTC)
- True, but he himself does not acknowledge anything but Lisp and ALGOL (see his letter below). Do you still want to stick to the B5500 reference? Mhx 08:43, 16 July 2006 (UTC)
Moore
I am planning on sending email to Moore asking for permission to use his photo and about why he chose RPN. Any other questions I should ask? And does he have a PhD, should I address him as Mr. Moore or Dr. Moore? Ideogram 20:28, 31 May 2006 (UTC)
- copyright lies with the photographer and the subject; we'd need both iirc. Title? Dunno; Dr sounds suitably polite. Alex 00:22, 1 June 2006 (UTC)
The email address chipchuck@colorforth.com fails, but I did a whois on colorforth.com and got an email address from the registration information. Let's just hope it's not so choked with spam he abandoned it.
Here is the email I sent:
Dear Dr. Moore:
I am working on the Wikipedia article on Forth. We would like to ask you some questions. What would you say are the advantages of RPN that led you to use it? What other languages influenced you when developing Forth? Finally, we would like to use a picture of you for the article, perhaps the one you currently have on colorforth.com. We would need your permission and that of the photographer.
If you are interested, you can see the article at
http://en.wikipedia.org/wiki/Forth
We would certainly love to have your help in improving it. You can easily edit the article directly without our intervention.
Thank you for your time,
Adam Kao
- Dammit it failed too. The phone number listed is disconnected. How is your attempt to contact Elizabeth Rather going? Ideogram 00:27, 3 June 2006 (UTC)
- I found the company Moore is working at right now and sent them the email and asked them to forward it to him. It looks like we will also have material to update Charles H. Moore. Ideogram 00:40, 3 June 2006 (UTC)
- Moore can be contacted through Jeff Fox ( fo x @ ultr a technology dot com ) Alex 11:29, 4 June 2006 (UTC)
I have received a reply from Chuck. Here it is:
- Happy to answer questions. Haven't time for a critical review of article.
- I chose to use RPN for 2 reasons:
- It seemed to naturally translate many English expressions, ie. 6 feet. I wanted a more natural programming language, though not so verbose as COBOL.
- It was easy to implement. Infix notation is not difficult, but is always translated into postfix. I could save the translation step and give the programmer direct access to the stack.
- I knew all the languages of the late 60's. The most interesting were LISP and APL. I couldn't abide the parentheses caused by LISP's use of prefix notation. Nor its representation of everything as binary trees. APL's right-left parsing seemed contrived. And I disagreed with its choice of basic operations.
- You may certainly use that photograph. Either my wife or myself was probably the photographer.
I'm not sure exactly how to work this material into the article. Ideogram 03:04, 12 June 2006 (UTC)
- Excellent! Perhaps a section Moore on Forth or somesuch? Lightly editted reply to indent btw Alex 10:24, 12 June 2006 (UTC)
Size
65.12.192.254 edited the main text as follows:
> Compiled Forth has the unique property of actually being smaller in size than hand optimized assembler.
As it stands, this makes no sense and will be seen as unsubstantiated propaganda. What are the compared programs trying to accomplish? Are they optimizing for size, for speed, for power consumption? For instance, it is quite easy to make program A smaller than program B when A is allowed to be slower.Mhx 21:02, 8 June 2006 (UTC)
- I don't like the text either. At a minimum it needs to be referenced. Ideogram 21:36, 8 June 2006 (UTC)
- It's unsubstantiatable (wow, what a word!) and doesn't actually make sense at all. Reverting Alex 21:42, 8 June 2006 (UTC)
- The article on threaded code describes how any given sequence of subroutines (such as the main loop of a typical program) is smaller in size when implemented in threaded code (such as a typical compiled Forth program) than in typical hand-written assembler (as a series of subroutine calls). Please tell me if the threaded code article also "makes no sense", and give me some clues as to how to patch it up. -- DavidCary --70.189.73.224 11:52, 21 June 2006 (UTC)
- "hand optimized assembler" is not the same thing as "typical hand-written assember". It's pretty clear that assembler hand optimized for space can do anything a Forth compiler can do. Ideogram 14:20, 21 June 2006 (UTC)
footnotes, citations, references
we need these. Does anyone have a citation for the Byte special issue on Forth? Ideogram 06:24, 9 June 2006 (UTC)
Mhx you are awesome!!! Those citations were the biggest thing still missing!!! Ideogram 20:14, 19 June 2006 (UTC)
The remaining citation on multiprogramming can come from Brodie's Starting Forth (find appropriate chapter and verse). The citation on Forth programming can come from the online gForth manual. I have no time to look this up now, sorry. Mhx 04:53, 20 June 2006 (UTC)
- I'll look into it. Ideogram 12:43, 20 June 2006 (UTC)
- I read through the top node of the online gForth manual and couldn't find anything appropriate. I think I still need your help on this. Ideogram 13:47, 20 June 2006 (UTC)
- I guessed at an applicable citation, I'm not sure it qualifies though, since I'm not sure gForth is really a "professional Forth system". Ideogram 13:57, 20 June 2006 (UTC)
reduce external links
The Featured Article Candidate commentators have recommended we reduce the number of external links (see that page for details). I expect the decisions on what to keep and what to cut will be controversial, especially for the implementations links which they recommend we cut "drastically." Help! Ideogram 21:28, 13 June 2006 (UTC)
- How about finding (or making) a link which links to all the sites. Then we only need one external link. Ideally, all relevant content should be in the article anyway. Stephen B Streater 22:03, 13 June 2006 (UTC)
- I think their point is that Google already provides that service. Ideogram 22:10, 13 June 2006 (UTC)
- Except that a search on Forth gets you lots and lots of hits that have not a great deal to do with Forth the language, but Forth the river. This has been an issue for most Forth advocates for a long time; it's difficult stuff to find. Alex 08:35, 14 June 2006 (UTC)
- Try it, it works surprisingly well. Mhx 20:36, 14 June 2006 (UTC)
- You can bring up your point with the commentator, if you like. Ideogram 06:09, 15 June 2006 (UTC)
- I'm coming in way late to this discussion. IIRC, one of the guidelines mentions the possibilibity of linking to the dmoz.org category to cover a broad spectrum of external links. In this case, it also works surprisingly well. – 2*6 09:11, 18 January 2007 (UTC)