Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!ucsd!ucbvax!MITCH.ENG.SUN.COM!wmb From: wmb@MITCH.ENG.SUN.COM Newsgroups: comp.lang.forth Subject: Purity of essence Message-ID: <9007310619.AA15045@ucbvax.Berkeley.EDU> Date: 30 Jul 90 21:56:40 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: wmb%MITCH.ENG.SUN.COM@SCFVM.GSFC.NASA.GOV Organization: The Internet Lines: 64 > You really have to see [ a line editor ] done right before condeming them > outright. ... if you are counting keystrokes you can't beat them. Just > think about it the next time you are moving the cursor down to the bottom > of the screen in your favorite screen editor. Count how many times the > arrow key repeats and compare that to the job of typing F followed by the > string you moved the cursor to, or T to the line number. Apparently the author has never seen a screen editor done right. In my favorite screen editor (EMACS), one can move to the bottom of the screen in 2 keystrokes. "Find a particular string" takes 1 keystroke, plus you don't have to think about how much of the string you need to type to make it unique; just start typing the search string and the editor starts to search for matches on whatever partial string you have typed so far. Stop when the cursor is on the right one. > I would say that poor editors have contributed to the bad > rap the block files have gotten True only if you accept the proposition that it is the editor's job to paper-over the deficiencies of BLOCKs. Even a super-duper editor won't correct the major deficiency of BLOCKs, which is that they make Forth into an island in itself, preventing easy interoperability with all the thousands of file-based programs available outside of the Forth world. > I.e. HEX 0315 VOCABULARY ASSEMBLER DECIMAL > > defines the assembler vocabulary that searches thread 5 (assembler > definitions), then thread 1 (forth defs) and finally 3 (editor). > The threads are not specifically defined ... Yow! What a user interface. > In other words, VOCABULARY does not define > new threads, but search orders into the existing threads. Now perhaps people will begin to see why the word VOCABULARY had to be renamed to WORDSET for ANS Forth. > In 16 bit polyFORTH, you typically can have 8 threads (only odd 4 > bit numbers are used), but I've rarely had need for more. This may be a case of the tool influencing the programming style. In developing an implementation strategy, one learns to quickly discard possibilities that are not well supported by the language implementation at hand. Forth vocabularies have the potential to be an extraordinarily powerful tool, but this potential is not realized in most systems, because the vocabulary mechanism has not been generalized. In its general form, a vocabulary is a mapping between strings and actions; a sort of "super symbol table" or "associative memory". Unfortunately, there are important omissions from most Forth standards in this area: a) No standard way to programmatically enumerate the words in a vocabulary (i.e. the primitives you need to build VLIST or WORDS) b) No standard way to save and restore the search order. c) No standard way to selectively remove a single word from a vocabulary. d) No standard way to search just one vocabulary. Mitch