<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7880115</id><updated>2012-01-21T07:08:47.630-08:00</updated><category term='Approximations'/><category term='Hardware  HCI'/><category term='Forth'/><title type='text'>forthwith</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7880115.post-2129542611471057215</id><published>2007-12-31T10:00:00.001-08:00</published><updated>2007-12-31T12:26:31.848-08:00</updated><title type='text'>Why December is the Twelfth Month</title><content type='html'>A post by Wil Baden in comp.lang.forth, dated 1999:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;January was made the first month around 153 BC.  Before then&lt;br /&gt;January was the 12th month and February was the 11th month.&lt;br /&gt;January is named after Januus, who is two-faced so he can &lt;br /&gt;look at the year past and the year to-come.  I think that &lt;br /&gt;the idea was to get the new year running after the solstice,&lt;br /&gt;which was then the 25th day of a 29-day December.&lt;br /&gt; &lt;br /&gt;Between then until Caesar changed things, the months were&lt;br /&gt;January February March April May June Quintilis Sextilis&lt;br /&gt;September October November December, alternating 30 and 29&lt;br /&gt;days.  &lt;br /&gt; &lt;br /&gt;An extra month, usually called Mercedonius, alternating 22 or &lt;br /&gt;23 days, was supposed to be inserted six days before the end &lt;br /&gt;of February every other year. &lt;br /&gt; &lt;br /&gt;For political reasons the people who were supposed to proclaim&lt;br /&gt;the extra month, often did not.&lt;br /&gt; &lt;br /&gt;By 47 BC (whatever it was called) the calendar was a 100 &lt;br /&gt;days early, so Caesar, with the advice of Sosigenes of Alexandria, &lt;br /&gt;put 15 months in 46 BC: January February Mercedonius March &lt;br /&gt;April May June Quintilis Sextilis September October November &lt;br /&gt;December Undecember Duodecember.  &lt;br /&gt; &lt;br /&gt;In 45 BC things were supposed to be fixed, with the month of &lt;br /&gt;Caesar's birth renamed July, and the days of the months&lt;br /&gt;31 29 31 30 31 30 31 30 31 30 31 30,  Every 4 years an extra&lt;br /&gt;day was to be inserted before the 25 of February.&lt;br /&gt; &lt;br /&gt;However they started by putting in a extra day every three years.&lt;br /&gt;Augustus fixed this by saying that until they caught up there &lt;br /&gt;would be no leap years.  So there were no leap years between 12&lt;br /&gt;BC and 8 AD.  He renamed Sextilis after himself, took another &lt;br /&gt;day from February, and changed the days in the months after &lt;br /&gt;July.&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-2129542611471057215?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/2129542611471057215/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=2129542611471057215' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/2129542611471057215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/2129542611471057215'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2007/12/why-december-is-twelfth-month.html' title='Why December is the Twelfth Month'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-9069162337192007031</id><published>2007-12-20T12:19:00.000-08:00</published><updated>2007-12-31T10:31:07.692-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Hardware  HCI'/><title type='text'>Low-Cost Multi-point Interactive Whiteboards Using the Wiimote</title><content type='html'>This is a really neat bit of inverted thinking. &lt;br /&gt;&lt;br /&gt;A Nintendo Wii Remote can be used with an ordinary PC. It tracks its position in space relative to fixed infra-red light sources. It can work just as well if the sensor is static and the light sources move.  &lt;a href="http://www.cs.cmu.edu/~johnny/projects/wii/"&gt;Johnny Chung Lee&lt;/a&gt; demonstrates how a fixed Wiimote can track up to four points simultaneously, adding multitouch or head-tracking capabilities cheaply to any PC display.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-9069162337192007031?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/9069162337192007031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=9069162337192007031' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/9069162337192007031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/9069162337192007031'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2007/12/low-cost-multi-point-interactive.html' title='Low-Cost Multi-point Interactive Whiteboards Using the Wiimote'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-2932188835437946667</id><published>2007-12-19T08:26:00.000-08:00</published><updated>2007-12-19T08:29:04.079-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Approximations'/><title type='text'>Six Days of Creation</title><content type='html'>Six days from the Big Bang, each hour lasting approx 100 million years.&lt;br /&gt; &lt;br /&gt;Earth appears in the last hour of the fourth day.&lt;br /&gt; &lt;br /&gt;Oceans form by the start of the fifth day.&lt;br /&gt;The ancestor of all living cells appears around the middle of the day, and by the start of the sixth day its descendants have filled the atmosphere with oxygen, and chloroplasts develop.&lt;br /&gt; &lt;br /&gt;In the middle of the sixth day the first dry land appears. Two or three hours later, fungi appear, and plants an hour or so later.&lt;br /&gt;With five or six hours to go to the end of the day, fish and insects.&lt;br /&gt;Three hours to go - amphibians.&lt;br /&gt;Three minutes later seed-bearing plants colonise the land and reptiles follow them 12 minutes later.&lt;br /&gt;Two and a half hours to go - the Permian extinction, after which the dinosaurs develop.&lt;br /&gt;By the start of the last hour there are flowering plants, and the first birds and mammals.&lt;br /&gt;Forty minutes to go - the first grass appears, and shortly afterwards the big dinosaurs are gone.&lt;br /&gt; &lt;br /&gt;Four minutes, last common ancestor of humans and chimps.&lt;br /&gt;100 seconds, genus Homo.&lt;br /&gt;One minute, controlled use of fire.&lt;br /&gt;8 seconds, Homo sapiens&lt;br /&gt; &lt;br /&gt;Recorded history, 1/5 of a second.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-2932188835437946667?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/2932188835437946667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=2932188835437946667' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/2932188835437946667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/2932188835437946667'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2007/12/six-days-of-creation.html' title='Six Days of Creation'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-113235170958193400</id><published>2005-11-18T13:51:00.000-08:00</published><updated>2007-12-18T10:10:11.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>The Future of FIG UK</title><content type='html'>The &lt;a href="http://www.figuk.plus.com/"&gt;FIG UK web site&lt;/a&gt; and the accompanying magazine Forthwrite has been dormant for some time now for lack of volunteers. &lt;br /&gt;&lt;br /&gt;I've established a &lt;a href="http://ccgi.figuk.plus.com/forum"&gt;forum&lt;/a&gt; and it is possible, given enough interest, that Forthwrite will return in a new form. That interests you, and there is some way in which you can help, please get in touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-113235170958193400?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/113235170958193400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=113235170958193400' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/113235170958193400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/113235170958193400'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2005/11/future-of-fig-uk.html' title='The Future of FIG UK'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-112732089110753340</id><published>2005-09-21T09:37:00.000-07:00</published><updated>2007-12-18T10:10:11.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>Mixing and Matching Control Structures</title><content type='html'>Forth uses IMMEDIATE words  to build control structures at compile time. The various opening and closing words communicate with each other by passing items on a control stack to ensure proper nesting.&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;What goes on the control stack&lt;/h2&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;BEGIN   leaves   &lt;i&gt;dest&lt;/i&gt;    to be consumed by UNTIL or AGAIN&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;AHEAD and IF  leave   &lt;i&gt;orig&lt;/i&gt;    to be consumed by THEN&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;(AHEAD compiles an unconditional forward jump)&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;DO and ?DO  leave  &lt;i&gt;do-sys&lt;/i&gt;  to be consumed by LOOP or +LOOP&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;CASE  leaves &lt;i&gt;case-sys&lt;/i&gt; to be consumed by ENDCASE&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;OF  leaves &lt;i&gt;of-sys&lt;/i&gt;  to be consumed by ENDOF&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt; Sometimes, however, strict nesting is not what is needed, and the Standard provides the words CS-PICK and CS-ROLL to change the&lt;br /&gt;order of items on the stack. (0 CS-ROLL is a no-op,  1 CS-ROLL is a swap; 0 CS-PICK is a dup, 1 CS-PICK is an over, and so on...). The details of the control stack and the size and format of items is implementation-dependant, but by far the most common choice is to use the data stack, with either one or two items for each item.&lt;br /&gt;&lt;br /&gt;In the examples below I shall use CS-PICK and CS-ROLL explicitly, but they are intended to be used for the definition of new control structure words, as in the examples of ELSE and WHILE below:&lt;br /&gt;&lt;br /&gt;: ELSE   \ orig1  -- orig2&lt;br /&gt;    POSTPONE  AHEAD   \ orig1 orig2&lt;br /&gt;       1 CS-ROLL   POSTPONE  THEN  ; \  consumes orig1&lt;br /&gt;IMMEDIATE&lt;br /&gt;&lt;br /&gt;:  WHILE  \  dest -- orig dest&lt;br /&gt;    POSTPONE   IF   1 CS-ROLL ;  IMMEDIATE&lt;br /&gt;&lt;br /&gt;Using WHILE&lt;br /&gt;BEGIN  ... WHILE  is normally resolved by  REPEAT, which is another way of saying AGAIN THEN  - but  could also be closed  with &lt;br /&gt;&lt;br /&gt;    ... UNTIL  &lt;i&gt;do this on normal exit only&lt;/i&gt;  THEN ...&lt;br /&gt;&lt;br /&gt;and you can use multiple WHILEs  within the loop, each resolved by its own THEN outside&lt;br /&gt;&lt;br /&gt;    BEGIN  ... WHILE ... WHILE  ...  UNTIL ...  THEN ... THEN&lt;br /&gt;&lt;br /&gt;But you’ll notice that WHILE does not modify the dest on the top of the control stack. In fact, unless your Forth is overly pedantic, any other item will do as well. For example, in:&lt;br /&gt;&lt;br /&gt;    IF ... WHILE ... THEN ... THEN&lt;br /&gt; &lt;br /&gt;(I don't recommend this - each time I look at it I have to work out again what it actually does).&lt;br /&gt;&lt;br /&gt;Generally it is best to strictly nest both forward branches and loops, but it is sometimes useful to branch out of a loop (as in the examples above) or into the middle of a loop:&lt;br /&gt;&lt;br /&gt;    IF BEGIN &lt;i&gt;maybe ignore first time&lt;/i&gt;  [  1 CS-ROLL ] THEN  &lt;i&gt;the rest of the loop&lt;/i&gt;  UNTIL&lt;br /&gt;&lt;br /&gt;WHILE may equally well be used to exit a  DO  ... LOOP, but here you need to use UNLOOP to get rid of the redundant loop index.&lt;br /&gt;&lt;br /&gt;    DO ... WHILE ...  LOOP &lt;i&gt;normal exit&lt;/i&gt; ELSE &lt;i&gt;early exit&lt;/i&gt;  UNLOOP THEN&lt;br /&gt;&lt;br /&gt;is very messy, even more so with multiple WHILEs.  It would be better to place the ELSE clauses within the loop, changing the sense of the test:   &lt;br /&gt;&lt;br /&gt;    DO ... IF  &lt;i&gt;early exit&lt;/i&gt;  UNLOOP  ELSE [ 1 CS-ROLL ]  ... LOOP  &lt;i&gt;normal exit&lt;/i&gt; THEN ...&lt;br /&gt;&lt;br /&gt;Of course. if the definition ends at THEN, you can simply do an early return&lt;br /&gt;&lt;br /&gt;    DO ... IF   &lt;i&gt;early exit&lt;/i&gt;  UNLOOP EXIT   THEN  ... LOOP  &lt;i&gt;normal exit&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Or if you just want to exit the loop and perform whatever code follows in all cases:&lt;br /&gt;&lt;br /&gt;    DO ... IF   &lt;i&gt;early exit&lt;/i&gt;  LEAVE   THEN  ... LOOP  &lt;i&gt;all exits&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Branching to a Common Start&lt;/h2&gt;&lt;br /&gt;This can be done using CS-PICK. The simplest example mimics the Java’s continue keyword:&lt;br /&gt;&lt;br /&gt;    BEGIN ... WHILE ... [ 0 CS-PICK ] REPEAT ... UNTIL&lt;br /&gt;   &lt;br /&gt;    DO ... WHILE ...[ 0 CS-PICK ] REPEAT ... LOOP&lt;br /&gt;&lt;br /&gt;may possibly compile too, but is not guaranteed  to work, since  do-sys may not be identical to dest. In this case, since the loop counter is decremented by LOOP rather than DO, each time the program hits REPEAT it effectively repeats the same iteration.&lt;br /&gt;&lt;br /&gt;The same trick can be used within a CASE statement. Suppose you want the same action for a range of values, with one exception:&lt;br /&gt;&lt;br /&gt;    CASE&lt;br /&gt;        &lt;i&gt;exception&lt;/i&gt; OF   &lt;i&gt;do-exception&lt;/i&gt;   ENDOF&lt;br /&gt;        DUP &lt;i&gt;range&lt;/i&gt; WITHIN   IF DROP   &lt;i&gt;do-range&lt;/i&gt;   ELSE [ 1 CS-ROLL ]&lt;br /&gt;        ...&lt;br /&gt;    ENDCASE&lt;br /&gt;    THEN&lt;br /&gt;&lt;br /&gt;On some (perhaps most) Forths this is unnecessary, since OF is the strict equivalent of  OVER IF DROP  and so can be paired with THEN, or IF paired with ENDOF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-112732089110753340?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/112732089110753340/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=112732089110753340' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112732089110753340'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112732089110753340'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2005/09/mixing-and-matching-control-structures.html' title='Mixing and Matching Control Structures'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-112722320634598126</id><published>2005-09-20T06:31:00.000-07:00</published><updated>2007-12-18T10:10:11.574-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>EuroForth 2005</title><content type='html'>October 20th - 24th, Santander, Spain&lt;br /&gt;The 21st conference for Forth and other extensible postfix languages,&lt;br /&gt;virtual machine design, and stack based architectures.&lt;br /&gt; &lt;br /&gt;Full conference details including a booking form may be found &lt;a href="http://personales.unican.es/ceballof/ef05/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-112722320634598126?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/112722320634598126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=112722320634598126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112722320634598126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112722320634598126'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2005/09/euroforth-2005.html' title='EuroForth 2005'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-112680334307019316</id><published>2005-09-15T08:43:00.000-07:00</published><updated>2007-12-18T10:10:11.575-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>All the Standard Words</title><content type='html'>Somehow this puts me in mind of C K Ogden and his 850 words of &lt;a href ="http://ogden.basic-english.org/basiceng.html"&gt;Basic English&lt;/a&gt;...&lt;br /&gt;&lt;br /&gt;Neal Bridges has produced a four-sheet reference for Standard Forth -- all 371 words with their respective Standard stack diagrams.  It's in &lt;a href ="http://quartus.net/files/PalmOS/Docs/stdref.pdf"&gt;PDF format&lt;/a&gt;, and if printed '4-up' makes a pretty handy single-sheet reference (if a bit hard on the eyes).&lt;br /&gt;&lt;br /&gt;I haven't seen this anywhere else in so compact a form. It's very useful for reminding yourself what words are in the Standard and how they are spelt.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-112680334307019316?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/112680334307019316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=112680334307019316' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112680334307019316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/112680334307019316'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2005/09/all-standard-words.html' title='All the Standard Words'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-109182013934586854</id><published>2004-08-06T12:21:00.000-07:00</published><updated>2007-12-18T10:10:11.575-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>Win32Forth discussion group</title><content type='html'>Win32Forth is probably the oldest-established Windows-based Forth for hobbyists. It has recently received a lot of development. A discussion group has been set up at http://groups.yahoo.com/group/win32forth/ and now has over 170 subscribers.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-109182013934586854?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/109182013934586854/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=109182013934586854' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109182013934586854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109182013934586854'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2004/08/win32forth-discussion-group.html' title='Win32Forth discussion group'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-109182002455936337</id><published>2004-08-06T12:17:00.000-07:00</published><updated>2007-12-18T10:06:59.821-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>Forth Wikis</title><content type='html'>First port of call should be &lt;a href="http://www.forthfreak.net/"&gt;ForthFreak&lt;/a&gt;   - a nicely laid out and fairly active site.&lt;br /&gt;&lt;br /&gt;Sleepless Night Wiki &lt;span style="font-weight: bold;"&gt;http://kristopherjohnson.net/wiki/&lt;/span&gt; is more focussed on Quartus Forth for the Palm, but it has a good &lt;a href ="http://kristopherjohnson.net/cgi-bin/twiki/view/Main/GeneralForthTopics"&gt; starting point for beginners&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"It includes a beginners Q&amp;A page and various tutorials.  It would make&lt;br /&gt;a very good starting point for expansion.  Its Wiki implementation&lt;br /&gt;(Twiki) is also very full featured.  They've even extended it to&lt;br /&gt;conveniently display colorForth code and hyperlink from Forth words to&lt;br /&gt;the ANS Forth spec." (Ian Osgood)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The orginal and biggest Wiki  &lt;span style="font-weight: bold;"&gt;http://c2.com&lt;/span&gt;  deals with "Extreme Programming" and Software Patterns. The Extreme Programming methodology has a lot in common with good Forth practice, so it is no surprise to find &lt;span style="font-weight: bold;"&gt;http://c2.com/cgi/wiki?ForthLanguage&lt;/span&gt;  Any Forth content added to this wiki should be revelant to the main themes in order to aviod forming a "Walled Garden" - a sub-wiki with no links out to the main body.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-109182002455936337?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/109182002455936337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=109182002455936337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109182002455936337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109182002455936337'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2004/08/forth-wikis_06.html' title='Forth Wikis'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7880115.post-109181933236716623</id><published>2004-08-06T12:06:00.000-07:00</published><updated>2009-10-30T05:20:55.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Forth'/><title type='text'>What is different about Forth?</title><content type='html'>I like this summation in a comp.lang.forth Usenet post by Joe Knapka, and particularly the reply from Jeff Fox, one of great names of Forth &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Joe Knapka's  post &lt;br /&gt;Date: Wed, 07 Apr 2004&lt;br /&gt;&lt;br /&gt;Subject: Re: ANN : Forth Versus C  - some Infrequently Asked Questions &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Agreed.  I'm trying to like Forth, but a lot of the Forth evangelism &lt;br /&gt;really reads as if it's directed toward cult members: "People who use &lt;br /&gt;other languages often think X, Y, or Z. Those people are misguided; &lt;br /&gt;you can tell because it takes them three times as long to write their &lt;br /&gt;code. They don't care about making high-quality products; only *we* &lt;br /&gt;care about making high-quality products. Drink the Kool-Aid now..." &lt;br /&gt;It's really quite a turn-off. I've produced what I consider to be &lt;br /&gt;high-quality products in perhaps a dozen different languages; I don't &lt;br /&gt;really like being told that's impossible. &lt;br /&gt;&lt;br /&gt;It usually works better to simply say, "Welcome to Language X, which &lt;br /&gt;is based on the W principle: everything is a Widget. This Widget- &lt;br /&gt;centric approach addresses the following specific perceived &lt;br /&gt;shortcomings of the object-oriented, functional, and thingamajig-based &lt;br /&gt;paradigms: ....  Language X also provides the following specific &lt;br /&gt;unique features that are not available in any other language: ..." &lt;br /&gt;People who are intrigued by the introduction will then dive in &lt;br /&gt;and write some code, and decide for themselves whether they like &lt;br /&gt;it. &lt;br /&gt;&lt;br /&gt;Let's see. &lt;br /&gt;&lt;br /&gt;"Welcome to Forth, a mid-level, interactive, stack-based &lt;br /&gt;language. Forth's interactive and stack-based nature addresses the &lt;br /&gt;following specific perceived shortcomings of other mainstream &lt;br /&gt;languages: &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt; Unlike many popular languages, Forth is fully-interactive; no &lt;br /&gt;edit/compile/test cycle is required. Instead, you can edit and run &lt;br /&gt;code directly from the Forth command line. This means that &lt;br /&gt;exploratory programming is very easy in Forth. (However, the fact &lt;br /&gt;that control structures usually can't be used outside procedure &lt;br /&gt;definitions somewhat limits one's ability to run ad-hoc code at &lt;br /&gt;the command prompt. [Does any Forth permit loops etc in &lt;br /&gt;interpreted code?])&lt;/li&gt;&lt;li&gt; Unlike many popular scripting languages, Forth can compile &lt;br /&gt;directly to native code, which means you can have native-code &lt;br /&gt;performance in a fully-interactive environment. &lt;/li&gt;&lt;li&gt; Unlike many popular languages, Forth does not impose any &lt;br /&gt;particular structure to your code (no "everything is an X"); you &lt;br /&gt;are free to use procedural, structured, object-oriented, and &lt;br /&gt;limited functional techniques as circumstances warrant. (However, &lt;br /&gt;you may need to build your own toolbox.)&lt;/li&gt;&lt;li&gt; Unlike virtually all popular languages, a complete Forth &lt;br /&gt;development environment can run in a surprisingly small memory &lt;br /&gt;footprint (a few 10's of K for a really large, highly-functional &lt;br /&gt;implementation), and without an underlying general-purpose &lt;br /&gt;operating system. Furthermore, the Forth compiler typically &lt;br /&gt;produces very compact object code. This makes Forth ideal for &lt;br /&gt;exploratory programming in embedded and resource-constrained &lt;br /&gt;environments. &lt;/li&gt;&lt;li&gt; Unlike most popular languages, Forth makes it possible and natural &lt;br /&gt;to directly manipulate the hardware on which the Forth system &lt;br /&gt;runs. Such direct manipulation can be done from the Forth command &lt;br /&gt;line -- another advantage when doing exploratory development in &lt;br /&gt;embedded environments.&lt;/li&gt;&lt;li&gt; Unlike most popular languages, Forth is extensible - it allows the &lt;br /&gt;programmer to add to the language facilities (such as control &lt;br /&gt;structures) that are completely indistinguishable from the &lt;br /&gt;built-in facilities. Forth takes you beyond the ability to design &lt;br /&gt;libraries, and makes you a partner in the design of the language &lt;br /&gt;itself; building a high-level language atop the Forth environment &lt;br /&gt;is therefore fairly simple. Further, any such high-level language &lt;br /&gt;can be made immediately available to the user as well as the &lt;br /&gt;programmer. (Note: do not use this power in the service of evil!)&lt;/li&gt;&lt;li&gt; Unlike nearly all popular languages, the internal structure of a &lt;br /&gt;Forth development environment is extremely simple and easy to &lt;br /&gt;understand, even for folks with little programming experience. &lt;br /&gt;While to an experienced C programmer, for example, Forth may seem &lt;br /&gt;to be full of strange inconsistencies and edge cases, a full &lt;br /&gt;understanding of the nature of Forth makes it clear that all of &lt;br /&gt;its features are natural consequences of its simple and elegant &lt;br /&gt;implementation; and such a full understanding is easy to achieve. &lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt;Jeff's reply: &lt;br /&gt;Date: 11 Apr 2004 &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I would have probably said something similar to describe Forth &lt;br /&gt;in my first twenty years of working with the language.  I have &lt;br /&gt;come to think of it as the most common misconception about Forth &lt;br /&gt;among Forth programmers. &lt;br /&gt;&lt;br /&gt;Forth is based on the word.  Words are like subroutines but &lt;br /&gt;shorter.  To facilitate Forth style factoring of code into &lt;br /&gt;words a parameter passing stack is used. &lt;br /&gt;&lt;br /&gt;Words also are names.  To allow to programmer to focus on the &lt;br /&gt;things that are important enough to be given names there is a &lt;br /&gt;parameter stack where items do not have names. &lt;br /&gt;&lt;br /&gt;These aspects of Forth address shortcomings of languages with &lt;br /&gt;rigid syntax and unchangable keywords.  The use of short word &lt;br /&gt;definitions increased code re-use and eliminates much of the &lt;br /&gt;work required in other languages to duplicate sections of &lt;br /&gt;their own code.  Short word definitions are easier to write, &lt;br /&gt;debug, and maintain. &lt;br /&gt;&lt;br /&gt;Forth only requires single pass compilation which in combination &lt;br /&gt;with the use of highly factored code facilitates very fast &lt;br /&gt;compilation times and supports a very fast interactive edit- &lt;br /&gt;compile-test cycle.  Forth uses a dictionary to contain and &lt;br /&gt;access words by their name.  The dictionary is similar to &lt;br /&gt;the ubiquitous file directories that most programmers use &lt;br /&gt;except that they are early bound and under explicit control &lt;br /&gt;of the programmer while file directories add runtime overhead &lt;br /&gt;by being late bound and remove control from the programmer to &lt;br /&gt;give it to a file system. &lt;br /&gt;&lt;br /&gt;In short, Forth uses two stacks as a mechanism to support &lt;br /&gt;a language based on space delimited words.  I think it helps &lt;br /&gt;to realize that Forth is word based, not stack based. &lt;br /&gt;&lt;br /&gt;If a programmer focuses on stacks as the basis of the language &lt;br /&gt;it is likely that a programmer will not be as focused on factoring &lt;br /&gt;into words, will write stack juggling routines, or may even start &lt;br /&gt;giving stack items names. &lt;br /&gt;&lt;br /&gt;I know for the first twenty years that I did Forth while thinking &lt;br /&gt;of it as a stack based language I wrote more code than I needed to &lt;br /&gt;write and made it less readable, less maintainable, and generally &lt;br /&gt;speaking experienced less productivity than when I approached &lt;br /&gt;Forth as a word based language.  Of course I am sure that there &lt;br /&gt;were other factors as well that contributed to my learning to &lt;br /&gt;use the language more effectively.&lt;/blockquote&gt;&lt;br /&gt;In the light of Jeff's reminder that "Forth is based on the word," it might be a good idea to have a look at one of the classic references for writing clear English: William Strunk's &lt;i&gt;Elements of Style&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;Compare: &lt;blockquote&gt;The use of short word definitions increased code re-use and eliminates much of the work required in other languages to duplicate sections of their own code. Short word definitions are easier to write, debug, and maintain.&lt;/blockquote&gt;&lt;br /&gt;to: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Vigorous writing is concise. A sentence should contain no unnecessary words, a paragraph no unnecessary sentences, for the same reason that a drawing should have no unnecessary lines and a machine no unnecessary parts. This requires not that the writer make all his sentences short, or that he avoid all detail and treat his subjects only in outline, but that every word tell.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7880115-109181933236716623?l=figuk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://figuk.blogspot.com/feeds/109181933236716623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7880115&amp;postID=109181933236716623' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109181933236716623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7880115/posts/default/109181933236716623'/><link rel='alternate' type='text/html' href='http://figuk.blogspot.com/2004/08/what-is-different-about-forth_06.html' title='What is different about Forth?'/><author><name>Jenny Brien</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
