Jump to content

Talk:Forth (programming language)

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by 4.225.210.106 (talk) at 14:34, 11 June 2008 (Forth Humor: new section). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Good articleForth (programming language) has been listed as one of the Engineering and technology good articles under the good article criteria. If you can improve it further, please do so. If it no longer meets these criteria, you can reassess it.
Article milestones
DateProcessResult
June 4, 2006Peer reviewReviewed
June 21, 2006Featured article candidateNot promoted
June 23, 2006Good article nomineeListed
June 25, 2006Featured article candidateNot promoted
November 24, 2006Featured article candidateNot promoted
Current status: Good article
WikiProject iconComputer science GA‑class Mid‑importance
WikiProject iconThis article is within the scope of WikiProject Computer science, a collaborative effort to improve the coverage of Computer science related articles on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
GAThis article has been rated as GA-class on Wikipedia's content assessment scale.
MidThis article has been rated as Mid-importance on the project's importance scale.
Things you can help WikiProject Computer science with:

TO DOs

Mostly as a reminder to myself, here is a list of topics that could be covered by the article. However, most of this is probably too specific for an encyclopedia. I think the article already says most of what would be of interest to a casual reader.

  • typical length of Forth words, general layout of Forth code, stack comments, shadow screens, more on blocks?
  • vocabularies, wordlists (MARKER, FORGET)
  • cells and standard data types (doubles etc.)
  • memory allocation and cell alignment (HERE, comma, ALLOT, ALIGN, ALIGNED, PAD, ALLOCATE, FREE)
  • use of the return stack to reduce "stack gymnastics", interaction of looping constructs with the return stack, locals
  • explain naming conventions, explain bracketing convention for pairs of immediate and non-immediate words ('/['], CHAR/[CHAR], IF/[IF])
  • case (in-)sensitivity during parsing; some (older) Forths store word names as the leading (five?) characters plus the name length.
The first Forths stored three. Ideogram 15:59, 20 June 2006 (UTC)[reply]
  • definition words like CREATE/DOES>
This is a pretty important feature of Forth but difficult to explain. Ideogram 15:59, 20 June 2006 (UTC)[reply]
  • object-orientated extensions of Forth (mention object-method vs. method-object debate)
  • [IF], [THEN], [ELSE])
  • code examples

Tobias Bergemann 15:38, 20 June 2006 (UTC)[reply]

I think this article is already up to FA standards since the primary objection about not enough citations has been addressed. But by all means feel free to improve it further. If you can explain these concepts to a nontechnical reader it can only help. Ideogram 15:59, 20 June 2006 (UTC)[reply]

GA

I don't know about the FA but it is GA status as of now. Lincher 04:01, 23 June 2006 (UTC)[reply]

Good job everyone. Now on to Featured Article! Ideogram 04:22, 23 June 2006 (UTC)[reply]

Online interpreters

This section mentions two 'Forths' that break at the slightest typing error (unrecoverable), and in no way represent modern Forth. I say they are curiosities that should be deleted? Mhx 19:32, 12 July 2006 (UTC)[reply]

Sounds good to me. --Ideogram 01:20, 13 July 2006 (UTC)[reply]

Influences: sources

Influenced by B5500 - Chuck's HOPL II draft (The Early Years) Influenced Open Firmware - claimed on page (obvious) Influenced Factor programming language - claimed prominently on the author's web page.

On second look, it appears PostScript was also influenced by the B5500, via InterPress and John Gaffney. See the link at the bottom of the InterPress page. --IanOsgood 01:00, 14 July 2006 (UTC)[reply]

The following discussion is an archived debate of the proposal. Please do not modify it. Subsequent comments should be made in a new section on the talk page. No further edits should be made to this section.

The result of the debate was PAGE MOVED per discussion below. Even got the target right on the second try. -GTBacchus(talk) 07:07, 1 December 2006 (UTC)[reply]

Requested move

ForthForth programming language — Additionally move Forth (disambiguation) to Forth. Forth is ambiguous and until 1 April 2006 was a disambiguation page. This merely reverts the earlier move. Angus McLellan (Talk) 15:36, 24 November 2006 (UTC)[reply]

Survey

Add  * '''Support'''  or  * '''Oppose'''  on a new line followed by a brief explanation, then sign your opinion using ~~~~.

Discussion

Add any additional comments:

As Kieran said, it should be Forth (programming language), not Forth programming language. --Piet Delport 22:54, 24 November 2006 (UTC)[reply]

Nothing to stop the administrator who closes this taking note of the preferred move target, just so long as debate concerning that doesn't prevent this being moved to Forth (programming language) or Forth programming language, whichever is preferred. Angus McLellan (Talk) 20:05, 27 November 2006 (UTC)[reply]
The above discussion is preserved as an archive of the debate. Please do not modify it. Subsequent comments should be made in a new section on this talk page. No further edits should be made to this section.

Early Forth history

Is there a reason the article doesn't mention early Forth history? I mean the "pre-standard" era when FIG Forth and Forth Inc. were King and Queen? Isn't it curious that the article has many links to the FIG Forth site, but FIG doesn't even merit a direct mention? Also, I have several old Forth books, including Starting Forth, Thinking Forth, and Byte's Threaded Interpretive Languages. Have I just missed something, or is this info not considered important? – 2*6 05:22, 18 January 2007 (UTC)[reply]

As far as I can see, the only reason that the article doesn't talk much about early Forth history is that no editor felt knowledgable enough to add this information. It would certainly be a most valuable and important addition to the article, IMHO. —Tobias Bergemann 07:55, 18 January 2007 (UTC)[reply]
I found an excellent place to start -- The Evolution of Forth at the Forth, Inc. site. The problem is going to be condensing that information as well as having other sources so as not to be simply a synopsis of what they already did. Ack, I just checked; the article already provides a link in its History subsection of External links. Hmm, would a bulleted list of key events would fit well within the article's structure? I'm envisioning a new History section of the article which would include the bulleted list as well as include specific mention (and link) to the Evolution piece. Hesitant to just do it on an article which has received such scrutiny. – 2*6 20:55, 18 January 2007 (UTC)[reply]
Be bold! Don't be afraid to start, even with just one source (it is a very good source, nearly authoritative). Another source would be History of Programming Languages II. --IanOsgood 15:49, 21 January 2007 (UTC)[reply]
I finally took it upon myself to split out a History section. Have at it! Aside from the notable standards like the FIG-Forth model, it might be interesting to note some of the application areas where Forth found a niche, such as robotics, machine control and space probes. --IanOsgood 18:28, 5 July 2007 (UTC)[reply]

God I used to love this language. Learned it as a teenager, and became obsessed with it. Even made my own compiler in about 4 or 5 pages of Turbo pascal. There was a really fantastic book on it, thats apparently a classic, on learning Forth. Real old book, but has a chatty and informative style that just nailed down how it works. Anyone remember what that was? ('scuse the talk page hijack here :) ) Duck Monster (talk) 00:52, 21 November 2007 (UTC)[reply]

Starting Forth. Forth, Inc. just made a web version; check the article refs. Thinking Forth by the same author is also now in e-book form. --IanOsgood (talk) 17:17, 21 November 2007 (UTC)[reply]

Merge from FCode

Stub article which is directly pertinent to Forth's use in Open Firmware. A merge would be a great way of bringing implementation details into this article as opposed to it being a how-to. Chris Cunningham 09:29, 4 July 2007 (UTC)[reply]

Shouldn't this comment be on Talk: Forth (programming language) rather than Talk:Forth? — Tobias Bergemann 10:23, 4 July 2007 (UTC)[reply]
D'oh! Moving. Chris Cunningham 10:40, 4 July 2007 (UTC)[reply]
Agreed. Although the last edit to remove threaded code I believe a mistake; it's definitely a good See Also candidate, much better than (for instance) the reference to MUF (which is in error; it should really be to MUF_(programming_language)). Alex 16:09, 4 July 2007 (UTC) (see below for a change of heart Alex 22:34, 4 July 2007 (UTC))[reply]
This article is wikilinked from within the programming section so doesn't need a seealso. Chris Cunningham 08:37, 5 July 2007 (UTC)[reply]
Disagree. FCode is an implementation detail of Open Firmware. If you must merge it, merge it into Open Firmware. --IanOsgood 19:52, 4 July 2007 (UTC)[reply]
Good point; I'm going to change my vote. Disagree. Alex 22:34, 4 July 2007 (UTC)[reply]
We need more information on actual use of Forth in this article as opposed to it being a guide to syntax. I don't mind if the merge is either way, but more implementation information needs to be added to this article at some point. Chris Cunningham 08:37, 5 July 2007 (UTC)[reply]
What do you have in mind for implementation information? The major implementations are already mentioned in the info box. To be complete is impossible (if you have n Forth programmers in a room, they are likely to be using n+1 different Forth implementations, since a basic Forth is so easy to implement).
Actually, what does this article need? Is there a style guide for what topics should be covered in a programming language article? Personally, I think this article should be more of a general overview (summary, concepts, culture, history, short example) and less about syntax and implementation details. For example, the detail sections such as Forth (programming language)#Dictionary entry which use "Starting Forth" as a reference are totally obsolete. There is the WikiBook b:Forth and the many online tutorials for getting into the nitty-gritty details. --IanOsgood 16:51, 5 July 2007 (UTC)[reply]
I haven't seen an actual guide, but you're absolutely right about how it should be laid out and that's what I normally aim for. Right now we're very syntax-heavy.
For implementations I meant giving a little more time to the most common real-world implementations of Forth. At the moment most are basically just rattled though. Open Firmware is the biggie for me I suppose. Chris Cunningham 17:06, 5 July 2007 (UTC)[reply]
Found the style guide from the CS project page, and copied it into Wikipedia:WikiProject Programming languages. This article is giving way to much detail. In fact, I think everything from "Programmer's Perspective" down to "See also" should be moved to the b:Forth. The condensed concepts would fit in just a few paragraphs.
An Implementations section is suggested. The challenge for Forth is drawing the line at what constitutes major, since there as so dang many implementations out there supporting zillions of desktop and embedded platforms, compared to more centrally managed languages like Python and Ruby. I'll start it off with my shortlist. --IanOsgood 17:32, 5 July 2007 (UTC)[reply]

Removal of the "Structure of the language" section

I reverted the removal of the "Structure of the language" section. While I agree that the article can do with some major restructuring I do not agree that the section contains "hopelessly outdated and overspecific details of Forth internals", to quote IanOsgood's reasoning for the removal. At least the notion of immediate words needs to be explained as they provide the central mechanism for extension of Forth. — Tobias Bergemann 07:48, 6 July 2007 (UTC)[reply]

Very little of that section is of note to people who aren't looking to write an implementation of the language. I don't see that even the immediate words section need be saved; surely this is still an implementation detail? I agree with the removal. Chris Cunningham 08:03, 6 July 2007 (UTC)[reply]
How can immediate words be an implementation detail when they are the central mechanism of language extension for the users of the language? — Tobias Bergemann 08:16, 6 July 2007 (UTC)[reply]
Ah, right, sorry. The section is so opaque that I didn't get that. Chris Cunningham 08:33, 6 July 2007 (UTC)[reply]
Yes, drastic. But the article is much too long and documenting things which are both obsolete and that a casual reader does not care about. There is a reason that the ANS Forth standard does not specify implementation details, only behavior. If you were to split out a FORTH-83 article, then some of these implementation details like its dictionary structure would fit there.
I felt it safe to delete the IMMEDIATE stuff in that section because it is also covered more clearly in the final code example. --IanOsgood 14:56, 6 July 2007 (UTC)[reply]
I am still not convinced that complete removal of the "Structure of the language" section is a way to improve the article. However, I won't revert if you or anybody else removes that section again. — Tobias Bergemann 15:28, 6 July 2007 (UTC)[reply]
Here is my more detailed critique:
  • Programmers perspective: delete or move to the RPN article (the PostScript article also does this). Move the IF-THEN stuff to the Example section
  • Facilities: poor title (Interpreter? Basic syntax?)
  • OS, Files, Multitasking: retain only the lead sentence of each paragraph
  • Cross compilation: lead sentences only
  • Structure of the language: delete. This is describing a model which differs from Forth to Forth, so should not be described here in detail. The dictionary is also not the "basic data structure".
  • Dictionary entry: delete, likewise.
  • Structure of the compiler: delete or condense. If you must mention that control structure words are IMMEDIATE, do it in only one place.
  • Compilation state: delete, way too nitpicky for an encyclopedia article
  • Immedate: delete, already covered above, FORTH-83 obsolete standard
  • Execution tokens: keep a few sentences and C comparison
  • Parsing words: condense and move to discussion of compiler.
  • Structure of code: move threading stuff to the History section.
  • Data objects: ok. Maybe discuss Forth memory-model here.
  • Programming: good.
  • Code examples: good, but not Hello World. There is a whole page about hello world that already has Forth examples. Move the other snippets here.
  • Mixing state: ok. This is one of the big stumbling blocks of a new Forth programmer.
--IanOsgood 15:36, 6 July 2007 (UTC)[reply]
I still believe your proposed changes would remove too much valuable information. I agree that much of the content of the article as it currently stands is not relevant to modern Forth. However, I do think that what you call implementation details were (at least historically) defining characteristics of Forth in the sense that Forth traditionally meant threaded implementation and mixing state, and therefore I think these details relevent for an encyclopedic article. So, instead of completely removing this content, I would prefer to keep it but condense and integrate it into a "History" section.
Anyway, this is only my opinion. You are of course free to improve the article in any way you see fit. — Tobias Bergemann 09:05, 7 July 2007 (UTC)[reply]

"typeless" discipline?

Is it right to call Forth typeless? ANS defines several types. I think a more accurate description would be "static, no checking." Potatoswatter (talk) 11:16, 26 May 2008 (UTC)[reply]

Forth Humor

I wouldn't dare try to put this in the article but I have to at least mention the cartoon from a few decades back, with Yoda saying: "Forth programmer I am!"

I tinkered a bit with Forth back in the 1980s -- surprised to see it alive and well, I thought it was dead. I'll have to get back to it again. MrG 4.225.210.106 (talk) 14:34, 11 June 2008 (UTC)[reply]