Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!princeton!caip!topaz!uwvax!astroatc!philm From: philm@astroatc.UUCP (Phil Mason) Newsgroups: net.arch,net.lang.forth Subject: Re: What's so good about FORTH? (long and controversial) Message-ID: <432@astroatc.UUCP> Date: Fri, 13-Jun-86 11:04:11 EDT Article-I.D.: astroatc.432 Posted: Fri Jun 13 11:04:11 1986 Date-Received: Tue, 17-Jun-86 07:59:35 EDT References: <201@pyuxv.UUCP> <3700003@uiucdcsp> <132@vaxb.calgary.UUCP> Reply-To: philm@astroatc.UUCP (Phil Mason) Organization: Astronautics ATC, Madison, WI Lines: 75 Keywords: FORTH, controversy, philosophy Xref: watmath net.arch:3437 net.lang.forth:420 As Chuck Moore (the inventor of FORTH) says : "You may have noticed that FORTH is a polarizing concept. It is just like religion and politics, there are people who love it and people who hate it and if you want to start an argument, just say, "Boy, FORTH is a great language." Well, I take a more positive view where FORTH is concerned. FORTH represents a different kind of computing environment. It is its own operating system, compiler, assembler, generic user-interface, development system - you name it. FORTH can be thought of as a set of software tools, a development system, a high-level language, a low-level language, or even an application specific language. It depends on the viewpoint of the actual user/programmer and the specific application whether or not FORTH fits into any category at all. FORTH is easily extensible in a way that few other computer languages are. You customize it for the application at hand. FORTH was designed at a time that memories and mass-storage devices were small. FORTH was created to match several criteria : * small size : theaded-code is about a small as you can get. * simplicity : FORTH's structure IS simple when it really comes down to it. * versatility : if you need to customize, no problem. Need speed? Embed assembly code among your actual FORTH source using a built-in assembler. FORTH really wasn't designed to make intelligent use of large memories, handle large applications, manage large mass-storage devices; but, FORTH CAN be customized, if desired, to tackle these enviroments. The only reason I would bother to extend FORTH for big machines would be for portability of applications from/to ANY micro-, mini- or super-computer. I have witnessed the same EXACT source code run on a big computer, a workstation and a microcomputer. Then again, you can do this with other languages as well, if you are careful. You generally can't do it with operating systems due either to the nature or size of them or copyright/proprietary/license hang-ups. There are three main dialects of the language : FIG, 79-Standard, and 83-Standard. Because FORTH is easily customized, there are literally THOUSANDS of unique installations of the language around the world. This can cause problems with portability unless code was based on one of the major dialects. FORTH is easy to bring up on most computer systems. A small amount of assembly coding is necessary for the innermost interpreter and I/O, then the vast majority of FORTH is written in FORTH itself. Only when you have really tried to learn a language and its methods and meaning, can you appreciate its strong points and shortcomings. Your first computer language was probably to hardest for you to learn. FORTH is different enough in philosophy to present an intellectual challenge to those who want it. You can write bad, unreadable, undocumented and thoroughly icky code in ANY language you choose. If you want to have an small, simple, extensible, self-contained development environment that will run on almost anything, FORTH is probably for you. If you want to go the regular route of C or PASCAL with a relatively hard to customize operating system that you can't run on your micro at home, fine. I happen to prefer using the enviroment suited for my application. It just so happens that I see applications for FORTH where others may not. --- Sorry for you guys in net.arch who are getting tired of HLL-->Assembly discussions, but I think that FORTH is an interesting topic in the context of direct treaded-code engines and self-contained environments as well as a language for describing algorithms. Flames (obnoxious or not) to /dev/null. Intelligent criticism accepted. -- =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Kirk : Bones ? Phil Mason, Astronautics Technical Center Bones : He's dead Jim. {Your Favorite System}!uwvax!astroatc!philm My opinions are mine and not necessarily those of my employer. (I would like to think that my employer believes in them too.) :-) =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=