This is the
talk page for discussing improvements to the
Forth (programming language) article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google ( books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
Archives: 1 |
![]() | Forth (programming language) was one of the Engineering and technology good articles, but it has been removed from the list. There are suggestions below for improving the article to meet the good article criteria. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake. | ||||||||||||||||||||||||||||||
|
![]() | This article is rated C-class on Wikipedia's
content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||
|
|
![]() | This article links to one or more target anchors that no longer exist.
Please help fix the broken anchors. You can remove this template after fixing the problems. |
Reporting errors |
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.
MARKER
, FORGET
)HERE
, comma, ALLOT
, ALIGN
, ALIGNED
, PAD
, ALLOCATE
, FREE
)'
/[']
, CHAR
/[CHAR]
, IF
/[IF]
)CREATE
/DOES>
[IF]
, [THEN]
, [ELSE]
)— Tobias Bergemann 15:38, 20 June 2006 (UTC)
The statement that "C compilers may now generate code with more compactness and performance" is NOT true. Modern Forth systems are executing at 1000x the speed of equivelant C code when they are writen from scratch from the same requirements. This statement should be given a reference or removed. —Preceding unsigned comment added by 97.65.82.66 ( talk) 15:29, 13 September 2010 (UTC)
....? What? You can't just say that an not give an example of a system that went written in Forth is "1000x" faster. —Preceding unsigned comment added by 134.151.33.148 ( talk) 17:24, 15 January 2011 (UTC)
I don't know about the FA but it is GA status as of now. Lincher 04:01, 23 June 2006 (UTC)
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)
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)
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)
Forth → Forth 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)
As Kieran said, it should be Forth (programming language), not Forth programming language. -- Piet Delport 22:54, 24 November 2006 (UTC)
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)
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)
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)
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)
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)
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)
I would only call Forth "alive and well" for very limited values of alive or well. Rather like a Covid patient in the ICU, but not yet on a ventilator. Still, I'm using it as I find it optimal for what I do, mostly hardware interaction such as test including production test. Gnuarm ( talk) 19:48, 24 January 2022 (UTC)
It seems to me that a better example of a definition could be found. The current one is : X DUP 1+ . . ;
. It's a little confusing, as it's not quite clear what the function is supposed to do. I think we might want to show off a more obvious function, for example : DOUBLE DUP + . ;
. That way, the reader can intuit the purpose of the code, and not have to spend time figuring out the intent of the function.
Quentin mcalmott (
talk)
07:34, 9 July 2008 (UTC)
Wouldn't it be worth to link to http://forth.gsfc.nasa.gov/ ? 82.229.128.243 ( talk) 12:49, 9 July 2008 (UTC)
Page vii, PostScript Language Reference Manual: "Design System language and its successors (PostScript) bear a superficial resemblance to the FORTH programming language, their conception and development wer entirely independant of FORTH." Jeffz1 ( talk) 02:57, 21 July 2008 (UTC)
Like all programming languages, the PostScript language builds on elements and ideas from several of the great programming languages. The syntax most closely resembles that of the programming language FORTH. It incorporates a postfix notation in which operators are preceded by their operands. The number of special characters is small and there are no reserved words.
Yes, it's in the original publication of the PostScript Language Reference Manual, so far as I'm aware this is not online, only in print. The quote in the third edition says that it only "resembles" it does not actually say it was influenced by. In contrast, the quote from the first edition specifically says that the resemblance is only superficial and their conception, development were entirely independant of FORTH.
I've found this through google books: http://books.google.com/books?ei=nyF8SMm3MKXmtgOSu6CmDQ&id=6x4nzbwzxtEC&dq=0201101742&q=forth&pgis=1#search Jeffz1 ( talk) 01:56, 24 July 2008 (UTC)
Postscript isn't Forth. Postscript was designed by many people, many of whom had probably used Forth. It was also designed by people who had used Lisp. Considering we have no standards for what an "influence" is or isn't, the statement that one language influenced the other is pretty much meaningless, even if an original PS developer made it. To someone unfamiliar enough with Forth to think that its defining quality is postfix notation, they might seem similar. Truly, both can be parsed using a negligible amount of memory. But Forth is distinguished by having two stacks, no "native" local variables, and explicitly interactive compilation, none of which PS has. Moreover, any infix or prefix language such as C or Lisp can trivially be translated to postfix. I personally learned that in my first month of compiler class, which possibly didn't even mention Forth. Therefore, let's not grasp at nebulous statements. We do know the two languages are semantically unrelated, and it's bad journalistic/historical practice to scour the record for a particular statement, in order to report it as truth. Potatoswatter ( talk) 20:57, 24 July 2008 (UTC)
Potatoswatter's reasoning is fine with me, but its consequence is that the 'Influences' and 'Influenced' tags in the article header are in fact inappropriate. I would be in favor of replacing them with a 'Similar' field, limited to say five items. Mhx ( talk) 07:45, 25 July 2008 (UTC)
The iForth FAQ page, < http://home.iae.nl/users/mhx/i4faq.html>, hints at a "Forth20x0 standard". Perhaps this proposed or completed standard, if it exists, should be described?
2008-08-12T22:56:00Z, Mortense ( talk) 22:50, 12 August 2008 (UTC)
That is a tongue-in-cheek remark, designed to put some pepper in the committee members' pants. Unfortunately, they're all wearing flame-proof underpants and hair shirts. Mhx ( talk) 17:46, 13 August 2008 (UTC)
Perhaps we should also include a reference to the official Standard, I would prefer ISO/IEC 15145:1997, but ANSI X3.215-1994 would be acceptable PjK 81.174.158.49 ( talk) 12:54, 1 February 2014 (UTC)
For what it's worth, rewriting the code to use continuation passing style isn't the only alternative to the conventional call stack when implementing subroutines. On many old computers subroutines were implemented by saving the return address in a register or into a location before the subroutine. These implementations didn't generally support recursive subroutines, but they did support subroutines and they didn't use a call stack.
Systems based on expression rewriting are also able to support subroutines without a call stack. At each stage of evaluation, subroutine calls in the expression being evaluated are replaced by the body of the subroutine. They aren't popular, and most of the ones that I have seen were primarily meant for educational purposes, but they do exist. Kleg ( talk) 19:20, 27 January 2009 (UTC)
I still disagree that "All" computer languages use a stack for subroutine flow control, given the additional counter-example of lazily-evaluated languages such as Haskell and Kleg's call-through-rewriting example (which is one way of implementing lazy evaluation).
Given that computer languages exist that at least conceptually invoke functions without the use of a stack, the objection to the word "Most" seems puzzling. Hdan ( talk) 21:03, 27 January 2009 (UTC)
I suppose this may raise the ire of staunch Forth devotees, but several times in the past I have thought about dabbling in Forth -- just for curiosity's sake -- and been put off by the code examples. It seems that Forth code examples tend to jump directly from the completely trivial (e.g. EMIT-Q, HELLO) to stuff sufficiently abstruse as to put off anyone not already determined to learn Forth.
And this article's examples have shaped up the same way. In comparison most other languages publish plenty of intermediate pedagogical examples. Compare, for example, the following programming language examples here on Wikipedia:
So when people look at the Forth article and see EMIT-Q, I suspect they are thinking (as I often have) "not only is this language only suited to writing device drivers, but even for that it must be like squeezing blood from a stone."
As I am not a Forth programmer, I am not able to provide an alternative, but I would suggest that if none of the above examples are suitable, then it seems to me that the RC4 cipher might be particularly amenable to a simple Forth implementation. -- 203.20.101.203 ( talk) 07:36, 24 September 2009 (UTC)
Like this?
0 VALUE tmp 0 VALUE ii 0 VALUE jj CREATE S[] #256 CHARS ALLOT : ARCFOUR ( c -- x ) ii 1+ DUP TO ii #255 AND ( -- i ) S[] + DUP C@ ( -- 'S[i] S[i] ) DUP jj + #255 AND DUP TO jj ( -- 'S[i] S[i] j ) S[] + DUP C@ TO tmp ( -- 'S[i] S[i] 'S[j] ) OVER SWAP C! ( -- 'S[i] S[i] ) tmp ROT C! ( -- S[i] ) tmp + ( -- S[i]+S[j] ) #255 AND S[] + C@ ( -- c x ) XOR ; : ARCFOUR-INIT ( key len -- ) #256 UMIN LOCALS| len key | #256 0 DO I S[] I + C! LOOP 0 TO jj #256 0 DO ( key len -- ) key I len MOD + C@ S[] I + C@ + jj + #255 AND TO jj S[] I + DUP C@ SWAP ( c1 addr1 ) S[] jj + DUP C@ ( c1 addr1 addr2 c2 ) ROT C! C! LOOP 0 TO ii 0 TO jj ;
Mhx ( talk) 20:15, 25 September 2009 (UTC)
: ARCFOUR ( c -- x ) ... S[] + DUP C@ >R ( -- 'S[i] S[i] 'S[j] ) OVER SWAP C! ( -- 'S[i] S[i] ) R@ ROT C! ( -- S[i] ) R> + ( -- S[i]+S[j] ) ...
--- I rewrote from scratch the implementation discussed above, on 15h22, 3 April 2015. It's part of the article since then. I would also suggest to remove code examples which are too trivial to be of interest, and detailed explanations of the internals of the Forth system which would only distract uninitiated readers. We should instead concentrate on key concepts of Forth programming, like: distinction between interpretation time and run time, or: identity of data types and functions, eg. in my RC4 example "SArray" and "KeyArray" are defined differently yet both "behave" like arrays through their interface "get_byte, set_byte". — Preceding unsigned comment added by 2003:E9:2746:DA01:10C4:8C1:1B34:4B23 ( talk) 23:58, 1 September 2018 (UTC)
What is resident software and what is a resident development system? -- Abdull ( talk) 13:46, 28 January 2010 (UTC)
It is more precise to call figForth a de facto standard and F79 a failed standardisation attempt. Can you call F79 and f83 a "de facto" standard, if they are formal standardisation attempts? That doesn't seem right from a language point of view. 80.100.243.19 ( talk) —Preceding undated comment added 13:14, 15 February 2011 (UTC).
I was about to delete this but thought I'd better check first. BNF is a way of writing out a context-free grammar and it must be possible to have a stab at writing a BNF grammar for FORTH. So when the article says "Forth does not use a BNF grammar" I don't know what it means. The context seems to be that you can modify the language without having to recompile the compiler, but that doesn't explain the mention of BNF. GeorgeMacro ( talk) 18:25, 25 June 2011 (UTC)
I think the in the code example to FLOOR5 there should be an additional DROP. Can someone verify this?
: FLOOR5 ( n -- n' ) DUP 6 < IF DROP 5 ELSE DROP 1 - THEN ;
Georg Stillfried ( talk) 10:21, 30 July 2013 (UTC)
: FLOOR5 ( n -- n' ) DUP 6 < IF DROP 5 ELSE 1 - THEN ;
The [1] section seems to be lacking balance. Although all the facts there may be true, it is also true that Forth is not widely used outside of particular niches, and there are reasons for that, many of them probably to do with maintainability. It would be good to formulate a neutral justified statement of what they are. Subsolar ( talk) 23:58, 22 December 2013 (UTC)
This might be considered original research, but I'm sure that anyone who has ever used either GNU or Berkeley Make, (particularly the latter, as I have) as well as FORTH, will immediately notice that while simplified, syntactically Make is almost identical. Given my negative experiences with Wikipedia in the past, I will not attempt to add this myself; but I leave the idea here, for someone who considers themselves entitled to do so.
Petrus4 ( talk) 11:33, 30 January 2014 (UTC)
These two languages are really nothing alike and make is not syntactically similar, nor semantically, and they have completely different goals. Make was designed as one of many of the Unix mini-languages (like sed or awk) to do one task and to do it well, which is to order and build dependencies while doing the least amount of work. FORTH is a programming language with no set grammar, as it is possible to modify the FORTH grammar in FORTH, it is not possible to do that in make.
This article reads very defensively, as if Forth can only be discussed in relation to how it's misunderstood, lesser used, or otherwise somehow compared with C. Let the language speak for itself! Just state the facts! The in-line talk of "most" or "other" languages and and self-deprecating statements should go away. I'll fix what I can, but let this stand as a reminder for future editors. Dgpop ( talk) 17:15, 19 March 2015 (UTC)
mhx removed a link to '8th'. I would like to know on what basis.
His comment is about "Removed references to obscure, outdated, or certainly non-standard implementations", but only 8th was removed. Well why? Factor is definitely non-standard. SwithForth is definitely commercial. RonAaron ( talk) 13:13, 30 October 2015 (UTC)
The history section ends in the 80's. No mention of the ISO 1994 standard. no mention of landings on comets, Forth processors. Really? Overall this wiki article show a weak balance between relevant and less relevant subjects. — Preceding unsigned comment added by 80.100.243.19 ( talk) 15:54, 3 November 2016 (UTC)
Hello fellow Wikipedians,
I have just modified 3 external links on Forth (programming language). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018.
After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than
regular verification using the archive tool instructions below. Editors
have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the
RfC before doing mass systematic removals. This message is updated dynamically through the template {{
source check}}
(last update: 5 June 2024).
Cheers.— InternetArchiveBot ( Report bug) 10:12, 3 January 2017 (UTC)
Hello fellow Wikipedians,
I have just modified 7 external links on Forth (programming language). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018.
After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than
regular verification using the archive tool instructions below. Editors
have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the
RfC before doing mass systematic removals. This message is updated dynamically through the template {{
source check}}
(last update: 5 June 2024).
Cheers.— InternetArchiveBot ( Report bug) 16:06, 4 October 2017 (UTC)
On the page List of programming languages by type, FORTH is listed under:
And yet FORTH is not listed under "imperative languages" and there is no category for "threaded languages" or "threaded interpreted languages" (which, of course, only describes some implementations of FORTH).
So I ask, where should FORTH be listed on our list of programming languages by type?
Related: What is the Forth programming language?, The Evolution of Forth. -- Guy Macon ( talk) 15:17, 17 March 2020 (UTC)
It's easy to read this as "Forth has no grammar," but that's obviously not true. Qualifying the statement with "explicit" avoids this problem but is vague and easily misread. What's the opposite of an "explicit grammar"? An implicit grammar? Implicit in what?
I want to change this to something like "Forth has no formal grammar, relying instead on a simple parsing algorithm." But I'm not a language expert, so I'll leave it to those of you who are.-- Isaac Rabinovitch ( talk) 19:07, 1 November 2020 (UTC)
Firstly, thank you wiki for implementing the talk form suggestion.
The article is missing a lot. It is very basic. One of the most important historical consequences of the Forth language, is not just it's historical usefulness in earlier resource starved embedded electronics, but that it is one of the only high level languages most suitable to being implemented as microprocessor hardware, and it's heavy similarity to an early mainframe computer processing architecture. In this, forth at times, has been either implemented as one of the highest, or highest, performing microprocessors (at the time of the original Novix microprocessors) or the highest performing per unit of energy (starting in the forth MISC period with the Offete enterprises Mup21) and lowest energy processors in the last few decades, starting with either the company that was renamed Intelisys, or the Green Arrays company after the massive falling out, and leading notorious Async Processing patent dispute.
Even though it has not reached high popularity in microprocessor sales, it is a leading performance language architecture for implementing microprocessors. It is viewed as a failed competitor to resource hungry modern processing architectures loosely influenced by the C computer language from the Unix Operating System development, where such implementation was not due to any hardware implementation superiority in the C language, but simply to try to run computer programs faster, many of which where developed in C. The criticism, is that this has made microprocessors optimised to run compiled C code, very top heavy, and less efficient per watt of energy. Even though many modern Forth MISC (Minimum Instruction Set Computer) processor chips, have abandoned the costly endeavour to develop highest performance, or highest performance per unit of energy on continuos high speed processing, the low resource compact nature of the architecture has led to many chip designs and soft CPU designs for FPGA use, much more so than any other computer language. A useful computer history angle, as it is the most successful language by far, in this way. There other Misc processors, but Forth types tend to have better performance metrics.
A section listing on the usefulness trend, and all the hardware processor designs, as well as all the FPGA soft processor designs history, and a dedicated expansion on this in a Forth Processor main article, and the the academic work Stack Computers, about Forth Processor architecture, would round out this article.
A few websites with historical backups of information of these subjects, is at forth.org, Offete enterprises, and Ultra technology, all of which have microprocessor chip listing pages. There are other web site resources, and the versions in the internet archive (wayback machine) which preserves working pages and links.
Currently, there is a European effort to make a compact 6Ghz Forth chip, as referenced by the head of Microprocessor Engineering on comp.lang.forth Usenet forum.
Unfortunately, Wikipedia is good at leaving out and culling useful information in articles, which should be maintained for prosperity. For instance, the many FPGA soft, and physical, processor designs are most useful as they can be reused on newer FPGA chips, and some as new silicon chip implementations. 49.182.81.62 ( talk) 18:34, 11 May 2022 (UTC)
The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.
This 2006 listing contains massive amounts of uncited material, meaning the article does not meet GA criterion 2b). ~~ AirshipJungleman29 ( talk) 17:13, 13 January 2024 (UTC)
This is the
talk page for discussing improvements to the
Forth (programming language) article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google ( books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
Archives: 1 |
![]() | Forth (programming language) was one of the Engineering and technology good articles, but it has been removed from the list. There are suggestions below for improving the article to meet the good article criteria. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake. | ||||||||||||||||||||||||||||||
|
![]() | This article is rated C-class on Wikipedia's
content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||
|
|
![]() | This article links to one or more target anchors that no longer exist.
Please help fix the broken anchors. You can remove this template after fixing the problems. |
Reporting errors |
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.
MARKER
, FORGET
)HERE
, comma, ALLOT
, ALIGN
, ALIGNED
, PAD
, ALLOCATE
, FREE
)'
/[']
, CHAR
/[CHAR]
, IF
/[IF]
)CREATE
/DOES>
[IF]
, [THEN]
, [ELSE]
)— Tobias Bergemann 15:38, 20 June 2006 (UTC)
The statement that "C compilers may now generate code with more compactness and performance" is NOT true. Modern Forth systems are executing at 1000x the speed of equivelant C code when they are writen from scratch from the same requirements. This statement should be given a reference or removed. —Preceding unsigned comment added by 97.65.82.66 ( talk) 15:29, 13 September 2010 (UTC)
....? What? You can't just say that an not give an example of a system that went written in Forth is "1000x" faster. —Preceding unsigned comment added by 134.151.33.148 ( talk) 17:24, 15 January 2011 (UTC)
I don't know about the FA but it is GA status as of now. Lincher 04:01, 23 June 2006 (UTC)
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)
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)
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)
Forth → Forth 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)
As Kieran said, it should be Forth (programming language), not Forth programming language. -- Piet Delport 22:54, 24 November 2006 (UTC)
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)
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)
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)
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)
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)
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)
I would only call Forth "alive and well" for very limited values of alive or well. Rather like a Covid patient in the ICU, but not yet on a ventilator. Still, I'm using it as I find it optimal for what I do, mostly hardware interaction such as test including production test. Gnuarm ( talk) 19:48, 24 January 2022 (UTC)
It seems to me that a better example of a definition could be found. The current one is : X DUP 1+ . . ;
. It's a little confusing, as it's not quite clear what the function is supposed to do. I think we might want to show off a more obvious function, for example : DOUBLE DUP + . ;
. That way, the reader can intuit the purpose of the code, and not have to spend time figuring out the intent of the function.
Quentin mcalmott (
talk)
07:34, 9 July 2008 (UTC)
Wouldn't it be worth to link to http://forth.gsfc.nasa.gov/ ? 82.229.128.243 ( talk) 12:49, 9 July 2008 (UTC)
Page vii, PostScript Language Reference Manual: "Design System language and its successors (PostScript) bear a superficial resemblance to the FORTH programming language, their conception and development wer entirely independant of FORTH." Jeffz1 ( talk) 02:57, 21 July 2008 (UTC)
Like all programming languages, the PostScript language builds on elements and ideas from several of the great programming languages. The syntax most closely resembles that of the programming language FORTH. It incorporates a postfix notation in which operators are preceded by their operands. The number of special characters is small and there are no reserved words.
Yes, it's in the original publication of the PostScript Language Reference Manual, so far as I'm aware this is not online, only in print. The quote in the third edition says that it only "resembles" it does not actually say it was influenced by. In contrast, the quote from the first edition specifically says that the resemblance is only superficial and their conception, development were entirely independant of FORTH.
I've found this through google books: http://books.google.com/books?ei=nyF8SMm3MKXmtgOSu6CmDQ&id=6x4nzbwzxtEC&dq=0201101742&q=forth&pgis=1#search Jeffz1 ( talk) 01:56, 24 July 2008 (UTC)
Postscript isn't Forth. Postscript was designed by many people, many of whom had probably used Forth. It was also designed by people who had used Lisp. Considering we have no standards for what an "influence" is or isn't, the statement that one language influenced the other is pretty much meaningless, even if an original PS developer made it. To someone unfamiliar enough with Forth to think that its defining quality is postfix notation, they might seem similar. Truly, both can be parsed using a negligible amount of memory. But Forth is distinguished by having two stacks, no "native" local variables, and explicitly interactive compilation, none of which PS has. Moreover, any infix or prefix language such as C or Lisp can trivially be translated to postfix. I personally learned that in my first month of compiler class, which possibly didn't even mention Forth. Therefore, let's not grasp at nebulous statements. We do know the two languages are semantically unrelated, and it's bad journalistic/historical practice to scour the record for a particular statement, in order to report it as truth. Potatoswatter ( talk) 20:57, 24 July 2008 (UTC)
Potatoswatter's reasoning is fine with me, but its consequence is that the 'Influences' and 'Influenced' tags in the article header are in fact inappropriate. I would be in favor of replacing them with a 'Similar' field, limited to say five items. Mhx ( talk) 07:45, 25 July 2008 (UTC)
The iForth FAQ page, < http://home.iae.nl/users/mhx/i4faq.html>, hints at a "Forth20x0 standard". Perhaps this proposed or completed standard, if it exists, should be described?
2008-08-12T22:56:00Z, Mortense ( talk) 22:50, 12 August 2008 (UTC)
That is a tongue-in-cheek remark, designed to put some pepper in the committee members' pants. Unfortunately, they're all wearing flame-proof underpants and hair shirts. Mhx ( talk) 17:46, 13 August 2008 (UTC)
Perhaps we should also include a reference to the official Standard, I would prefer ISO/IEC 15145:1997, but ANSI X3.215-1994 would be acceptable PjK 81.174.158.49 ( talk) 12:54, 1 February 2014 (UTC)
For what it's worth, rewriting the code to use continuation passing style isn't the only alternative to the conventional call stack when implementing subroutines. On many old computers subroutines were implemented by saving the return address in a register or into a location before the subroutine. These implementations didn't generally support recursive subroutines, but they did support subroutines and they didn't use a call stack.
Systems based on expression rewriting are also able to support subroutines without a call stack. At each stage of evaluation, subroutine calls in the expression being evaluated are replaced by the body of the subroutine. They aren't popular, and most of the ones that I have seen were primarily meant for educational purposes, but they do exist. Kleg ( talk) 19:20, 27 January 2009 (UTC)
I still disagree that "All" computer languages use a stack for subroutine flow control, given the additional counter-example of lazily-evaluated languages such as Haskell and Kleg's call-through-rewriting example (which is one way of implementing lazy evaluation).
Given that computer languages exist that at least conceptually invoke functions without the use of a stack, the objection to the word "Most" seems puzzling. Hdan ( talk) 21:03, 27 January 2009 (UTC)
I suppose this may raise the ire of staunch Forth devotees, but several times in the past I have thought about dabbling in Forth -- just for curiosity's sake -- and been put off by the code examples. It seems that Forth code examples tend to jump directly from the completely trivial (e.g. EMIT-Q, HELLO) to stuff sufficiently abstruse as to put off anyone not already determined to learn Forth.
And this article's examples have shaped up the same way. In comparison most other languages publish plenty of intermediate pedagogical examples. Compare, for example, the following programming language examples here on Wikipedia:
So when people look at the Forth article and see EMIT-Q, I suspect they are thinking (as I often have) "not only is this language only suited to writing device drivers, but even for that it must be like squeezing blood from a stone."
As I am not a Forth programmer, I am not able to provide an alternative, but I would suggest that if none of the above examples are suitable, then it seems to me that the RC4 cipher might be particularly amenable to a simple Forth implementation. -- 203.20.101.203 ( talk) 07:36, 24 September 2009 (UTC)
Like this?
0 VALUE tmp 0 VALUE ii 0 VALUE jj CREATE S[] #256 CHARS ALLOT : ARCFOUR ( c -- x ) ii 1+ DUP TO ii #255 AND ( -- i ) S[] + DUP C@ ( -- 'S[i] S[i] ) DUP jj + #255 AND DUP TO jj ( -- 'S[i] S[i] j ) S[] + DUP C@ TO tmp ( -- 'S[i] S[i] 'S[j] ) OVER SWAP C! ( -- 'S[i] S[i] ) tmp ROT C! ( -- S[i] ) tmp + ( -- S[i]+S[j] ) #255 AND S[] + C@ ( -- c x ) XOR ; : ARCFOUR-INIT ( key len -- ) #256 UMIN LOCALS| len key | #256 0 DO I S[] I + C! LOOP 0 TO jj #256 0 DO ( key len -- ) key I len MOD + C@ S[] I + C@ + jj + #255 AND TO jj S[] I + DUP C@ SWAP ( c1 addr1 ) S[] jj + DUP C@ ( c1 addr1 addr2 c2 ) ROT C! C! LOOP 0 TO ii 0 TO jj ;
Mhx ( talk) 20:15, 25 September 2009 (UTC)
: ARCFOUR ( c -- x ) ... S[] + DUP C@ >R ( -- 'S[i] S[i] 'S[j] ) OVER SWAP C! ( -- 'S[i] S[i] ) R@ ROT C! ( -- S[i] ) R> + ( -- S[i]+S[j] ) ...
--- I rewrote from scratch the implementation discussed above, on 15h22, 3 April 2015. It's part of the article since then. I would also suggest to remove code examples which are too trivial to be of interest, and detailed explanations of the internals of the Forth system which would only distract uninitiated readers. We should instead concentrate on key concepts of Forth programming, like: distinction between interpretation time and run time, or: identity of data types and functions, eg. in my RC4 example "SArray" and "KeyArray" are defined differently yet both "behave" like arrays through their interface "get_byte, set_byte". — Preceding unsigned comment added by 2003:E9:2746:DA01:10C4:8C1:1B34:4B23 ( talk) 23:58, 1 September 2018 (UTC)
What is resident software and what is a resident development system? -- Abdull ( talk) 13:46, 28 January 2010 (UTC)
It is more precise to call figForth a de facto standard and F79 a failed standardisation attempt. Can you call F79 and f83 a "de facto" standard, if they are formal standardisation attempts? That doesn't seem right from a language point of view. 80.100.243.19 ( talk) —Preceding undated comment added 13:14, 15 February 2011 (UTC).
I was about to delete this but thought I'd better check first. BNF is a way of writing out a context-free grammar and it must be possible to have a stab at writing a BNF grammar for FORTH. So when the article says "Forth does not use a BNF grammar" I don't know what it means. The context seems to be that you can modify the language without having to recompile the compiler, but that doesn't explain the mention of BNF. GeorgeMacro ( talk) 18:25, 25 June 2011 (UTC)
I think the in the code example to FLOOR5 there should be an additional DROP. Can someone verify this?
: FLOOR5 ( n -- n' ) DUP 6 < IF DROP 5 ELSE DROP 1 - THEN ;
Georg Stillfried ( talk) 10:21, 30 July 2013 (UTC)
: FLOOR5 ( n -- n' ) DUP 6 < IF DROP 5 ELSE 1 - THEN ;
The [1] section seems to be lacking balance. Although all the facts there may be true, it is also true that Forth is not widely used outside of particular niches, and there are reasons for that, many of them probably to do with maintainability. It would be good to formulate a neutral justified statement of what they are. Subsolar ( talk) 23:58, 22 December 2013 (UTC)
This might be considered original research, but I'm sure that anyone who has ever used either GNU or Berkeley Make, (particularly the latter, as I have) as well as FORTH, will immediately notice that while simplified, syntactically Make is almost identical. Given my negative experiences with Wikipedia in the past, I will not attempt to add this myself; but I leave the idea here, for someone who considers themselves entitled to do so.
Petrus4 ( talk) 11:33, 30 January 2014 (UTC)
These two languages are really nothing alike and make is not syntactically similar, nor semantically, and they have completely different goals. Make was designed as one of many of the Unix mini-languages (like sed or awk) to do one task and to do it well, which is to order and build dependencies while doing the least amount of work. FORTH is a programming language with no set grammar, as it is possible to modify the FORTH grammar in FORTH, it is not possible to do that in make.
This article reads very defensively, as if Forth can only be discussed in relation to how it's misunderstood, lesser used, or otherwise somehow compared with C. Let the language speak for itself! Just state the facts! The in-line talk of "most" or "other" languages and and self-deprecating statements should go away. I'll fix what I can, but let this stand as a reminder for future editors. Dgpop ( talk) 17:15, 19 March 2015 (UTC)
mhx removed a link to '8th'. I would like to know on what basis.
His comment is about "Removed references to obscure, outdated, or certainly non-standard implementations", but only 8th was removed. Well why? Factor is definitely non-standard. SwithForth is definitely commercial. RonAaron ( talk) 13:13, 30 October 2015 (UTC)
The history section ends in the 80's. No mention of the ISO 1994 standard. no mention of landings on comets, Forth processors. Really? Overall this wiki article show a weak balance between relevant and less relevant subjects. — Preceding unsigned comment added by 80.100.243.19 ( talk) 15:54, 3 November 2016 (UTC)
Hello fellow Wikipedians,
I have just modified 3 external links on Forth (programming language). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018.
After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than
regular verification using the archive tool instructions below. Editors
have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the
RfC before doing mass systematic removals. This message is updated dynamically through the template {{
source check}}
(last update: 5 June 2024).
Cheers.— InternetArchiveBot ( Report bug) 10:12, 3 January 2017 (UTC)
Hello fellow Wikipedians,
I have just modified 7 external links on Forth (programming language). Please take a moment to review my edit. If you have any questions, or need the bot to ignore the links, or the page altogether, please visit this simple FaQ for additional information. I made the following changes:
When you have finished reviewing my changes, you may follow the instructions on the template below to fix any issues with the URLs.
This message was posted before February 2018.
After February 2018, "External links modified" talk page sections are no longer generated or monitored by InternetArchiveBot. No special action is required regarding these talk page notices, other than
regular verification using the archive tool instructions below. Editors
have permission to delete these "External links modified" talk page sections if they want to de-clutter talk pages, but see the
RfC before doing mass systematic removals. This message is updated dynamically through the template {{
source check}}
(last update: 5 June 2024).
Cheers.— InternetArchiveBot ( Report bug) 16:06, 4 October 2017 (UTC)
On the page List of programming languages by type, FORTH is listed under:
And yet FORTH is not listed under "imperative languages" and there is no category for "threaded languages" or "threaded interpreted languages" (which, of course, only describes some implementations of FORTH).
So I ask, where should FORTH be listed on our list of programming languages by type?
Related: What is the Forth programming language?, The Evolution of Forth. -- Guy Macon ( talk) 15:17, 17 March 2020 (UTC)
It's easy to read this as "Forth has no grammar," but that's obviously not true. Qualifying the statement with "explicit" avoids this problem but is vague and easily misread. What's the opposite of an "explicit grammar"? An implicit grammar? Implicit in what?
I want to change this to something like "Forth has no formal grammar, relying instead on a simple parsing algorithm." But I'm not a language expert, so I'll leave it to those of you who are.-- Isaac Rabinovitch ( talk) 19:07, 1 November 2020 (UTC)
Firstly, thank you wiki for implementing the talk form suggestion.
The article is missing a lot. It is very basic. One of the most important historical consequences of the Forth language, is not just it's historical usefulness in earlier resource starved embedded electronics, but that it is one of the only high level languages most suitable to being implemented as microprocessor hardware, and it's heavy similarity to an early mainframe computer processing architecture. In this, forth at times, has been either implemented as one of the highest, or highest, performing microprocessors (at the time of the original Novix microprocessors) or the highest performing per unit of energy (starting in the forth MISC period with the Offete enterprises Mup21) and lowest energy processors in the last few decades, starting with either the company that was renamed Intelisys, or the Green Arrays company after the massive falling out, and leading notorious Async Processing patent dispute.
Even though it has not reached high popularity in microprocessor sales, it is a leading performance language architecture for implementing microprocessors. It is viewed as a failed competitor to resource hungry modern processing architectures loosely influenced by the C computer language from the Unix Operating System development, where such implementation was not due to any hardware implementation superiority in the C language, but simply to try to run computer programs faster, many of which where developed in C. The criticism, is that this has made microprocessors optimised to run compiled C code, very top heavy, and less efficient per watt of energy. Even though many modern Forth MISC (Minimum Instruction Set Computer) processor chips, have abandoned the costly endeavour to develop highest performance, or highest performance per unit of energy on continuos high speed processing, the low resource compact nature of the architecture has led to many chip designs and soft CPU designs for FPGA use, much more so than any other computer language. A useful computer history angle, as it is the most successful language by far, in this way. There other Misc processors, but Forth types tend to have better performance metrics.
A section listing on the usefulness trend, and all the hardware processor designs, as well as all the FPGA soft processor designs history, and a dedicated expansion on this in a Forth Processor main article, and the the academic work Stack Computers, about Forth Processor architecture, would round out this article.
A few websites with historical backups of information of these subjects, is at forth.org, Offete enterprises, and Ultra technology, all of which have microprocessor chip listing pages. There are other web site resources, and the versions in the internet archive (wayback machine) which preserves working pages and links.
Currently, there is a European effort to make a compact 6Ghz Forth chip, as referenced by the head of Microprocessor Engineering on comp.lang.forth Usenet forum.
Unfortunately, Wikipedia is good at leaving out and culling useful information in articles, which should be maintained for prosperity. For instance, the many FPGA soft, and physical, processor designs are most useful as they can be reused on newer FPGA chips, and some as new silicon chip implementations. 49.182.81.62 ( talk) 18:34, 11 May 2022 (UTC)
The following discussion is closed. Please do not modify it. Subsequent comments should be made on the appropriate discussion page. No further edits should be made to this discussion.
This 2006 listing contains massive amounts of uncited material, meaning the article does not meet GA criterion 2b). ~~ AirshipJungleman29 ( talk) 17:13, 13 January 2024 (UTC)