Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!genrad!decvax!tektronix!hplabs!hao!noao!terak!anasazi!chad From: chad@anasazi.UUCP (Chad R. Larson) Newsgroups: net.arch,net.lang.forth Subject: Re: What's so good about FORTH? Message-ID: <347@anasazi.UUCP> Date: Mon, 16-Jun-86 15:35:47 EDT Article-I.D.: anasazi.347 Posted: Mon Jun 16 15:35:47 1986 Date-Received: Thu, 19-Jun-86 19:38:02 EDT References: <201@pyuxv.UUCP> <3700003@uiucdcsp> <132@vaxb.calgary.UUCP> Reply-To: chad@anasazi.UUCP (Chad R. Larson) Followup-To: net.lang.forth Distribution: net Organization: Anasazi, Phoenix Az. Lines: 66 Keywords: FORTH Xref: watmath net.arch:3489 net.lang.forth:429 In article <2199@peora.UUCP> jer@peora.UUCP (J. Eric Roskos) writes: > >I'm not entirely sure what this has to do with net.arch, but aside from >that, this raises an issue that's been puzzling me for several years. >...what is the real *advantage* of FORTH? You're right, it probably doesn't belong here, so I've directed followups to net.lang.forth, where it may start a new discussion and/or flame war. The two main advantages of Forth are user extensibility and interactive development. Most of the stuff about threaded dictionaries and all that you hear are there to bring about the two above features. (I'm talking about a true Forth here, not just a compiler that can handle Forth syntax. A true Forth is an environment for the programmer, not only a set of tools.) The interactive environment is one where you can test each new function or primitive (called "words") right from your keyboard as you enter it. There is not (at least in the usual sense) an edit-compile- link-load-debug cycle. You figure out a function you need, type it in and test it. If it works as you wish, it is now available to be used in any new words _right_now! You can test any portion of your program from the highest level definition to the lowest primitive at any time to satisfy yourself on their working. Not under a debugger... just as you are working along. You don't have to wait several minutes for MAKE to do its thing in order to test a one word change. The user extensibility is the real productivity aid, and the thing that gives Forth its "Forthness". Programming in Forth is actually developing a new language, specifically tailored to your application. You start with the set of primitive words all Forth's come with and string them together to define new words that do some function you need done. Those new words are used to define higher function words until you eventually have a rich vocabulary of functions keyed exactly to what you are trying to do. When your program is done, and the user inevitably requests "just one more thing", you can frequently add it in a couple of minutes by creating another word made up of six or eight words you already have, since those words are so well fitted to what you are up to. Programs only grow by a dozen or so bytes when you do this. Sometimes Forth fans tend to take on religious fervor. This sometimes is off-putting to interested people, but in many ways Forth is a religion (or at least a state of mind). When you put your Forth hat on, you tend to look at programming problems in a different light. If I haven't bored you yet, some good books are "Starting Forth" and "Thinking Forth" by Leo Brodie. The first deals with the language and an implementation of it, the second with how good Forth programmers tend to approach problems. Disclaimer: Others undoubtably have their own Favorite Forth Features. Remember the religious aspects. : ?DISAGREE IF FLAME ELSE :-) THEN ; -- "I read the news today...oh, boy!" -John Lennon _____________________________________________________________________ UUCP: {mot}!anasazi!chad Voice: Hey, Chad! Ma Bell: (602) 870-3330 ICBM: N33deg,33min Surface: International Anasazi, Inc. W112deg,03min 7500 North Dreamy Draw Drive Suit 120 Phoenix, AZ 85020