Slashdot Mirror


Ask Chuck Moore About 25X, Forth And So On

Chuck Moore is, among other things, a chip designer. His latest design, the 25x, is based on a 5x5 array of X18 microprocessor cores, and could provide 60,000 MIPS with a production cost of about one dollar. And Moore has the chops to back that up: he's been designing tiny, efficient processors for many years. He's also the inventor of the programming language Forth, which has evolved from a miniscule but radically fast language "difficult for a human to read" (according to The Secret Guide) to the even more radical colorForth. How radical? Try "includes own operating system; has own 27-key Dvorak keyboard layout; meaningful color syntax." How's that for starters? Ask below your questions for Chuck about processors and programming (ask all you'd like, but one per post, please) We'll pass the best ones on to him, answers soon to follow.

323 comments

  1. 5x5 grid of procs by Lord+Kestrel · · Score: 2, Interesting

    What kind of signalling method are you for inter-proccesor communication?

    And what led you to design/implement this array?

    1. Re:5x5 grid of procs by John+Sokol · · Score: 2, Informative

      These CPU cores are on a single silicon die so there is no required (electrical) signaling method. Just address select lines. It's a direct register-to-register transfer at least in the original discussions that I had with Chuck about this.

      There are a number of different mechanisms that have been discussed to signal the software, I'm not sure what Chuck has experimented with so far.

      There is a group at MIT with a similar architecture only much less efficient.
      http://www.cag.lcs.mit.edu/raw/

      John L. Sokol

      --
      I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
  2. Question : by Anonymous Coward · · Score: 0

    How do you see the processor evolving in the future, right now Intel / AMD are trying to make things smaller and smaller, but I feel that there is more viable solutions out there, what do you think?

    1. Re:Question : by John+Sokol · · Score: 1

      Intel / AMD are trying to make things smaller and smaller? Not from what I have seen.
      Both are benefiting from the work done by the material science and optics people "the FAB" that have been increasing the resolution of the etching process. From 5uM 15 Years go to 0.8 uM 6 years ago down to 0.13 and talking about 0.1 less then 100 nm, FYI the wavelength of red is ~680nm and Blue ~200nm.

      But as far as there designs go they went from 8 Bit to 16, 32 and now 64 Bit. And from a 100K transistors to 47 Million transistor in the P4, and IBM's Power4 CPU is topping the scale at a whopping 174 Million Transistors.

      The reality is though the improvement performance in MHz is more from the improved chemistry and resolution then the increase in transistors. The performance per transistor has been rapidly decreasing! While the power consumption is going up.

      When I did the math, an original 4004 from Intel, 2,250 Transistors, 108 KHz in 10 microns FAB. It hit's 0.06 MIPS, that about 1 instruction per 2 clock cycles.

      http://www.intel.com/intel/intelis/museum/exhibi t/ hist_micro/hof/4004B.htm
      http://www.intel.com/pressroom/kits/quickrefyr.h tm #1971

      A new 0.13 uM (FAB) part can run at almost 4 Gigahertz, So let's hypothetically say we built 47 Million transistors worth of 4004's or 8008's (3500 transistor) and divide by half because of bus overhead and what not. We would have some 6,000 CPU's in that same space, each operating at 4 GHz that's 6 Trillion Instructions per second, even if I'm off by a factor of 10 that's still rocking. But that's a big chip and a terrible instruction set.

      Now lets say there in another CPU with almost the same number of transistors as the 8008, certainly less then the 8080's 6000 Transistor and it's is running at 500Mhz at 0.8 uM. That's the F21 and less transistors = Less power and lower delays and fewer timing issues.
      Now move that to the new 0.18 um and is at 2.4 GHz, now fit as many as possible into the smallest size chip MOSIS will produce and you have 25 of them!

      Are we still following this? Now Chucks core runs 1 Instruction per Clock tick, and programs tend to use much less code then corresponding Intel machine code.

      Hence 60,000 MIPS, in 500 mW

      --
      I am always doing that which I can not do, in order that I may learn how to do it. - Pablo Picasso
  3. Forth as intermediate language by Ed+Avis · · Score: 4, Interesting

    Many high-level languages compile into C code, which is then compiled with gcc or whatever. Do any use Forth instead? I understand Forth is a stack-based language: doesn't that present problems when compiling for CPUs that mostly work using registers?

    --
    -- Ed Avis ed@membled.com
    1. Re:Forth as intermediate language by Rudie · · Score: 1

      Both the Java Virtual Machine and the intermediate
      code created by GCC, RTL, are stack based, and
      later interpreted or compiled for a register machine. It isn't really a problem, sometimes
      it's actually easier that way.

    2. Re:Forth as intermediate language by Anonymous Coward · · Score: 0

      The intermediate language CIL, part of the ECMA CLR and CLI specifications, (i.e. Microsoft .NET) is also stack based.

      No problem at all since register based architectures are actually far simpler to optimize and allocate for than stack based architectures.

    3. Re:Forth as intermediate language by egomaniac · · Score: 2

      No, not really. Stack-based systems just use registers for the topmost stack elements.

      The Java VM is a stack-based system which is approximately equivalent to C's speed (a bit faster in some benchmarks, a bit slower in others). If you were to examine the machine code HotSpot produces, you'd see that it was indeed using registers even though the Java bytecode is entirely stack-based.

      --
      ZFS: because love is never having to say fsck
    4. Re:Forth as intermediate language by morbid · · Score: 0

      Back in days of yore (before VB and Delphi, ANSI C was just being ratified and C++ was an interesting academic curiosity) there was an OOP development system/language called Actor and it was for Windows 3.0. This was back in about 88/89. It was written in FORTH. As is customary with old FORTH systems the core was hand-coded assembler. Then the rest was bootstrapped from there. On top of it all was the Actor compiler which generated FORTH threaded coded IIRC.

      --
      I'm out of my tree just now but please feel free to leave a banana.
    5. Re:Forth as intermediate language by William+Tanksley · · Score: 3, Interesting

      You reversed the two -- stack based architectures are simpler to optimise and allocate for than register based ones.

      In a register-based architecture, you don't know which register is going to be used next, and which ones are seldom used; in a stack, you know that stuff near the top is coming sooner than stuff near the bottom. Because all of the data is ordered in terms of urgency, a caching system can make very intelligent decisions.

      This is even more powerful when the programmer (not the compiler) is the one who arranged the data in order on the stack -- the programmer has an optimiser in his head which by FAR defeats all currently possible software optimisers.

      -Billy

    6. Re:Forth as intermediate language by ahde · · Score: 1

      I've never heard of a C Virtual Machine. C interpreters, yes. Maybe that's what the Java VM is comparable to in speed.

    7. Re:Forth as intermediate language by jovlinger · · Score: 2

      I believe the compiler long ago surpassed the programmer as the best suited to optimize whole programs. Flow analysis, specialisation, profiling feedback... all of these just are too much work for the programmer to optimise.

      When humans optimize, some can do a better job than most compilers for short sequences of code, but they spend too much time optimizing the wrong thing, at the expense of bugs, development time, and maintenance.

    8. Re:Forth as intermediate language by jovlinger · · Score: 2

      ah.

      where to start? Java has not actually RUN on a virtual machine for many years. Compiled to it, yes, but JITted to native code in pretty much all cases.

      So you can see the JVM as a convenient intermediate stack format.

      Translating to registers is notso hard, if you have a few registers handy. You can view the register file as an array implementing a circular list (the stack). When you catch up to the tail, start flushing to memory. Using this technique, caller saves is perfectly implementable (ie, the caller guarantees that the callee will not overwrite the caller's data. It is up to the callee to not overwrite its own).

    9. Re:Forth as intermediate language by William+Tanksley · · Score: 2

      The compiler cannot come close to the human for the whole program, but it far defeats the human for local optimizations.

      The compiler should understand machine limitations, data and code cache sizes, and all the other things that vary from machine to machine and which can be optimised locally; the programmer should understand what data is going to be needed when, and he should be able to tell that to the compiler. THAT is the big advantage of dataflow languages like Forth, APL, and so on (although I'm only aware of optimizing compilers for Forth, not for the other dataflow languages).

      -Billy

  4. $0.00/MIP by dstone · · Score: 2

    From the 25X webpage:

    A 7 sq mm die, packaged, will cost about $1 in quantity 1,000,000. Cost per Mip is 0.

    At that price, I'll take a few billion MIPs, please!

    1. Re:$0.00/MIP by ocie · · Score: 1

      Must have done an integer divide.

      --
      JET Program: see Japan, meet intere
  5. Using Forth as the intermediate by Marvin_Runyon · · Score: 0, Redundant

    Many high-level languages compile into C code, which is then compiled with gcc or whatever. Do any use Forth instead? I understand Forth is a stack-based language: doesn't that present problems when compiling for CPUs that mostly work using registers?

    1. Re:Using Forth as the intermediate by Anonymous Coward · · Score: 1, Informative
      I understand Forth is a stack-based language: doesn't that present problems when compiling for CPUs that mostly work using registers?
      Indeed it does present a problem. In fact, it is a problem with any processor which only supports one stack, for example the 8085. Even the x86 family is not so hot for Forth, although the x86 can emulate some of the functionality of a second stack with the string load and store operations. Processors such as the 6809 are considered primo for Forth, but the Cadillac of all Forth processors is the Harris RTX-2000.

      If you are interested in processors that are Forth-friendly, have a look at this processor round-up.

    2. Re:Using Forth as the intermediate by samjam · · Score: 1

      Most CPU's can emulate the second stack quite easily using index registers/indirect addressing - including x86, and even Z80

      Given that indirect addressing is used in relocatable code for linux/x86 I reckon it can support it well enough.

  6. Whatever happened to Novix? by jcr · · Score: 3, Interesting

    Anyone remember the first outfit to sell a FORTH engine?

    I heard that the Novix design had been included in Harris's standard cell library, but that was probably more than ten years back.

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
    1. Re:Whatever happened to Novix? by Anonymous Coward · · Score: 0

      Not a Forth engine, but back in 1983 Excalibur used both Forth Inc., and PolyForth to create an 'artifical intelligence' front end to a smalltake-like backend and called the package "SAVVY". It was very Forth-like in Syntax, but VERY easy to program with. Very fast, too.

    2. Re:Whatever happened to Novix? by UltraTech · · Score: 1

      Harris developed the RTX from the Novix design. Novix had 3 external memory busses, 2 for stack spaces while Harris's RTX chips had stacks as on chip register arrays. The RTX 2000, 2001 and 2010 were the chips they made. 2000 had the 1 cycle 16x16 multiply, 2001 didn't. 2010 is rad hard and used in aerospace. Dr. Phil Koopman's online book on stack machines has all the details.

    3. Re:Whatever happened to Novix? by d2ksla · · Score: 1

      As far as I know, it is not really used any more. But if you're interested, I did a project in college a couple of years ago where we implemented a clone of it in a Xilinx 4025 FPGA.

      We actually managed to get it to run (no bugs!) using the EPROM's from an original NC4016 board, so we could hook up a terminal directly to the FPGA and use the builtin interpreter and compiler.

      Man, it was cool to see the LED blink from a CPU we had implemented!

      The schematics are here

      Main page (sorry, it's in Swedish...): here

      / Krister

  7. Direction of Forth/25x by rho · · Score: 3, Interesting

    Do you have a direction in mind as to where Forth/colorForth and the 25x could go? e.g. do you see them in handhelds, set-top boxes, etc?

    --
    Potato chips are a by-yourself food.
  8. Market Niche by kaladorn · · Score: 2, Interesting

    What market niche will the new grid-array processor be targeted at? 60 BOPS is a fair value for a buck. But is the power consumption ridiculous? Or would this be suitable for deployment in various mobile applications? Or is the only way to get this high of projected performance by clocking the chip like a six year old on chocolate frosted sugar bombs?

    And an aside:
    My ignorance of Forth might be showing (one of the few I haven't had kicked into me over the years) - but wouldn't "meaningful colour syntax" represent quite a nasty disadvantage for those who are either entirely or partially (red-green) colour blind?

    And speaking of Dvorak... anyone know where I can get an ergonomic, full sized, keyboard with a Dvorak key layout. I can probably remap the keys on the existing MS keyboard, but the idea of switching the keycaps is nasty. It'd be better to have a keyboard that sent the right scancodes.

    --
    -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    1. Re:Market Niche by pmcneill · · Score: 1

      Regarding your keyboard question, http://www.kinesis-ergo.com/contoured.htm
      has some great (though expensive) keyboards. They take some getting used to, but they're great once you do.

    2. Re:Market Niche by Anonymous Coward · · Score: 0

      I like dvortyboards.
      www.dvortyboards.com
      It has a switchable layout, so you just hit a button to switch between qwerty and dvorak. Keys are labeled dvorak with big letteres and qwerty with small letters.

    3. Re:Market Niche by Anonymous Coward · · Score: 0

      Q: Are there any plans to make development systems and/or evaluation boards available? If so, when, and from whom?

    4. Re:Market Niche by cduffy · · Score: 2

      You need keycaps to type Dvorak? Wimp. :)

      Seriously, though -- it's (very) well worth knowing how to remap any keyboard quickly (and being able to type without keycaps), because much of the time you won't be at your own box, and you can't very well drag your own keyboard along. Software key remapping works well almost everywhere (it gets covered as part of "internationalization" initiatives, even if nobody had it done beforehand), so the need for a keyboard that sends remapped scancodes is really redundant.

    5. Re:Market Niche by treyb · · Score: 2, Informative
      60 BOPS is a fair value for a buck. But is the power consumption ridiculous?

      From the web site: Max power 500 mW @ 1.8 V, with 25 computers running

      Or is the only way to get this high of projected performance by clocking the chip like a six year old on chocolate frosted sugar bombs?

      Again, from the website: asynchronous microcomputer core, meaning you don't count clocks like you do in synchronous logic.

      My ignorance of Forth might be showing (one of the few I haven't had kicked into me over the years) - but wouldn't "meaningful colour syntax" represent quite a nasty disadvantage for those who are either entirely or partially (red-green) colour blind?

      Chuck uses color, but you could change the colors to different fonts and/or font styles, if you want. Just as Python source uses indentation for telling the compiler about nesting levels, colorForth uses color tokens (think of it as a trivial markup language) to tell the compiler about word (aka function) definition starts, literal numeric values, etc.

    6. Re:Market Niche by kaladorn · · Score: 1

      Admittedly the remap in software is useful, but nor as much for learning. Once I've learned to type Dvorak, then I won't look at the keys so it won't matter. Then software remapping is great. But until then, a keyboard with keycaps that were Dvorak-correct might be a better solution.

      --
      -- Mal: "Well they tell you: never hit a man with a closed fist. But it is, on occasion, hilarious."
    7. Re:Market Niche by cduffy · · Score: 1

      ...or you could do what I did: tape a picture of a Dvorak keyboard on your monitor, and refer to it. Worked For Me.

    8. Re:Market Niche by BruceMcF · · Score: 1

      On the aside, the colour itself is arbitrary. If you used the various combinations of normal, italics, bold, underline, you'd have enough to show the different semantic units.

  9. revolutionary by rnd() · · Score: 4, Interesting
    Put on your Thomas Kuhn hat for a moment and tell us:

    What is the most revlutionary (i.e., it is scoffed at by those in control/power) idea in the software industry today? Explain how this idea will eventually win out and revolutionize software as we know it.

    --

    Amazing magic tricks

    1. Re:revolutionary by Chundra · · Score: 2
      Now take off the paradigmatic Kuhnian hat of revolutionary scientific philosophization, and try on this colorful Dr. Seuss one. Ahh yes, good. Now tell us:

      How did it get so late so soon?
      It's night before it's afternoon.
      December is here before it's June.
      My goodness how the time has flewn.
      How did it get so late so soon?

  10. uh, forth post? by alienmole · · Score: 2, Interesting
    Sorry, couldn't resist.

    Forth is a very cool language: I first used it running on an Apple ][ a couple of decades ago, to write programs to control lasers for laser shows at a planetarium. The combination of interactiveness and performance was great - it allowed details of a show to be reliably tweaked right before and even during a show. This was one of those situations where the tool really made a difference to the end result. Other languages available on the Apple at the time couldn't really compete.

    I don't have a question for Chuck, but I'll come back when I think of one.

  11. What's the next Big Computational Hurdle? by DG · · Score: 4, Interesting

    Now that sub-$1k computers are running in the GHz range, it seems that all the computational tasks on a common desktop system are not processor-bound.

    3D, rendered-on-the-fly games get well over 30 frames per second at insanely high resolutions and levels of detail. The most bloated and poorly-written office software scrolls though huge documents and recalculates massive spreadsheets in a snap. Compiling the Linux kernel can be done in less than 5 minutes. And so on.

    It seems that the limiting speed of modern computers is off the processor, in IO.

    What then, do you forsee coming down the pike that requires more processor power than we have today? What's the underlying goal you intend to solve with your work?

    --
    Want to learn about race cars? Read my Book
    1. Re:What's the next Big Computational Hurdle? by Anonymous Coward · · Score: 0

      The most bloated and poorly-written office software was taking *minutes* to perform a variety of functions on my 900 MHz 384 MB system just last night. Can you have too much processor speed? Would you not want a faster computer for less money? In a world of computing designed and implemented by Chuck Moore, there wouldn't be bloated and poorly-written software. The most massive applications can be achieved with minimal equipment. See Chuck's OKAD for an example.

    2. Re:What's the next Big Computational Hurdle? by Anonymous Coward · · Score: 0

      Realistically, that kind of terseness takes too long for a very large project when you've got deadlines to meet. Stripping out the fat is what you can do when you've got time, particularly one a small project where you can indvidually optimize each subroutine.

    3. Re:What's the next Big Computational Hurdle? by William+Tanksley · · Score: 2

      How about a PDA which gets input by reading your lips -- and perhaps even allows you to do text searches on everything that's been said to you by a specific person? A map utility which can map an optimal route from one point to another, taking into account traffic and time of day? A general scientific system which solves large systems quickly by massively parallel simulated annealing? A computer which could actually solve the trade difficulties of the Poictsome system, and perhaps predict in advance the fall of the Federation and its replacement by Empire?

      A computer which, when asked whether there is a God, would simply answer, "present." ;-)

      The possibilities are boundless. Seriously.

      -Billy

  12. Where is forth going? by JanneM · · Score: 5, Interesting

    I learned forth early on in my programming career; it was very memory and CPU efficient, something that was important on early microcomputers. It was also a great deal of fun (though far less fun to try and understand what you wrote a week earlier...). Today, even small, cheap microcontrollers are able to run fairly sophisticated programs, and it is far easier to cross-compile stuff on a 'big' machine and just drop the compiled code onto the development board.

    Forth has (in my eyes) always been about small and efficient. Today, though, embedded apps are more likely to be written in C than in forth, and the "OS as part to the language" thing isn't as compelling today as it was in the eighties. Where is forth being used today, and where do you see it going in the future?

    /Janne

    --
    Trust the Computer. The Computer is your friend.
    1. Re:Where is forth going? by stilwebm · · Score: 2

      Actually, it goes beyond the UltraSPARC. It has been around in Suns since the Sun-4's. I'm not sure that it was in the original boot monitor for the Sun-4 chips, but Sun-4c and later all included a forth interpretor. And as others have mentioned, many PPC computers have a forth interpretor, as part of the OpenFirmware standard.

    2. Re:Where is forth going? by markmoss · · Score: 2

      Follow the colorforth link to "early binding" and you'll see what Chuck Moore really values: tiny and fast. Portability, readability, ease of programming, and even ability of the program to handle unexpected inputs take second place to efficiency, according to Moore.

      If you're programming a microprocessor controlled toaster, and will sell a million toasters, then using forth might let you use a $0.50 microcontroller instead of an $0.75 one, saving $250,000. That's certainly worth some extra programming effort. This is called "embedded programming". And, believe it or not, there are several guys coding the smallest scale embedded programs for every one coding PC and server operating systems and applications. (I suspect embedded programmers are grossly underrepresented in surveys, because most of them are EE's and also do circuit design, and so show up as design engineers rather than programmers. Likewise, few of the many people customizing databases to fit the needs of each and every corporation are called "programmers", although they do sort of code, and there are a heck of a lot of them.)

      For bigger jobs, things are a bit different. I don't disagree with Moore's comments about bloatware, it's just that I think there's a middle ground between Win ME (a bloated program with a 20 year history during which nothing was ever taken out, including bugs), and tiny OS-less applications where the programmer sweated for each byte saved. And I think that for less than million-unit quantities, that middle ground is more cost-effective -- otherwise we'd all still be using assembly language, except for the Forth programmers. Apparently Forth can have a smaller memory footprint than good assembly; it's not going to run as fast, but there never have been many good assembly programmers, and Forth might beat poorly written assembly. At any rate, for toasters, washing machines, ATM's, and about 90% of the other 8-bit embedded systems, it doesn't matter because the thing being controlled is thousands of times slower than any reasonably written software.

      I don't have experience working with Forth, but it looks like it would be much harder to work in than C, mainly because algebraic notation is much easier for humans to comprehend than reverse polish notation. (RPN is easier for computers to comprehend -- that's why the first scientific calculators used it, and why Forth is so compact.) In some respects, they have similar capabilities: they let you work on an extremely low level when you have to, and they let you make horrendous mistakes. (I can't imagine a compiler that would work for direct hardware control that didn't have those possibilities.) They also let you work at a higher level. It's claimed that Forth can go to a higher and more abstract level than C or even C++, and this might be true, but I don't see how I could ever program Forth without continually thinking about the stack, and I can shove the details into C functions and work at a pretty high level in C. C produces much larger machine code than Forth, but at the present prices of memory, working harder on the code to save memory takes something like 100,000 units sold to pay off. Forth is sort of interpreted, very quickly, while C is compiled into pretty fast machine code. C should be faster, but there's a lot more overhead to C so Forth would win sometimes. And of course, a good algorithm in a slow language beats a poor algorithm in expertly hand-tuned assembly -- will Forth's general weirdness make it harder to find an apply good algorithms?

      Am I biased? Too many people merely like the first language they met, but I think I'm about as unbiased as it is possible to be while still having some experience: I first learned programming in FORTRAN and COBOL long before these languages were "structured", then BASIC, APL, assembly, many more dialects of BASIC and assembly, a little Pascal and LISP, C, and Labview. I'm not wedded to any particular paradigm of programming languages, not even to using the Roman alphabet, but I do have to admit that C resembles FORTRAN in several ways (algebraic notation, printf formatting, the simpler variable declarations), and Forth doesn't resemble anything at all.

      One final thing note: Forth does seem like a great language for p-codes, that is, compiler output that is not machine code. P-code can be machine and OS independent, and protection against rogue code can be built into the interpreters. There's a performance loss, but since MS's bloated code has pushed everyone into buying ridiculously overpowered desktop boxes, does it matter?

    3. Re:Where is forth going? by JanneM · · Score: 2

      I ask this question precisely due to the reasons you give above. I learned forth before learning C, actually, and I'm still fairly comfortable using it if the need arises. My problem is sort of that the need very rarely arises anymore.

      For almost any microcontroller, what you will get, development-wise, is a C-compiler (or an assembler in the case of signal processors, as you _want_ to get that close to it to realise it's benefits). About the only advantage forth seems to have in the embedded space today seems to be that the code can be even smaller than assembler, and that advantage is being eroded.

      At the same time, forth is Way Cool(tm), and it would be a crying shame to see the ideas slip away. The only thing I believe forth really has against itself is that the choice of keywords are... non-intuitive, let's say. From a readability standpoint, a language that allows you to define a useful, non-trivial function using only punctuation is not optimal. Now and again, I even get this urge to write a forth-like shell before I sober up and come to my senses :-)

      /Janne

      --
      Trust the Computer. The Computer is your friend.
    4. Re:Where is forth going? by Kristopher+Johnson · · Score: 1

      colorForth has a limited set of punctuation characters in its character set. So this has led to use of real words rather than arbitrary symbols.

      For example, 'push' and 'pop' are used instead of '>r' and 'r>', and 'less' is used instead of '<'.

    5. Re:Where is forth going? by n3bulous · · Score: 1

      The prom stuff (OpenBoot) was originally written by Mitch Bradley.

      --
      "The area of penetration will no doubt be sensitive." ~ Spock
    6. Re:Where is forth going? by William+Tanksley · · Score: 2
      algebraic notation is much easier for humans to comprehend than reverse polish notation

      I guess you haven't taught or tutored any algebra classes? So many programmers imagine that they way they've learned to think so well is the only way to think. Both forms are hard to work with; however, the Forthlike form is easier to express action in (since it's chronologically ordered, with no execution occuring out of order) and easier to refactor (since most refactorings require only cut'n'paste, with no possibility of code breakage); the Algol or Lisp-like form is easier to do certain other transformations (since the arguments of a function are 'tied' or applied to the function by hard syntax).

      The theory of Forthlike languages is brand new, in spite of Forth's age and Postscript's overwhelming success; it's discussed at the Joy page.

      will Forth's general weirdness make it harder to find an apply good algorithms?

      Forth's wierdness is explicitly tailored to help the programmer find and apply good algorithms. Let me list some ways:

      • interactive, to encourage experimentation
      • fast compile/run cycle, to encourage testing
      • programmer can write code to execute at any time: while editing, while compiling, while defining a word, while parsing, while generating code, and (of course) at runtime. This allows unit tests to be run as part of the compilation process.
      • syntax is infinitely mutable: if your problem requires BASIC or FORTRAN notation, just write (or load in) a parser and use it. To write an application in Forth, you first write a language in which the problem appears natural; then you naturally solve the problem.
      • refactoring is trivial, natural, and mostly free of the possibility of error.


      Am I biased?

      You have an awesome list of languages, but all of them operate on the same basic system: functions syntactically take parameters. Forth, together with Postscript and Joy, is /completely/ different; its functions aren't syntactically tied to its parameters. This causes it to behave completely differently from the "applicative" languages you list. The author of the Joy page I linked to earlier calls the set of Forth-like languages "concatenative", since any concatenation of valid programs is also a valid program, AND any dissection of a valid program along token boundaries is also a valid program.

      Read the Joy page -- I found it mind-stretching. It's good for a programmer to know some truly _different_ languages, which encourage truly different thinking.

      -Billy
    7. Re:Where is forth going? by hearingaid · · Score: 2

      Interesting post.

      Apparently Forth can have a smaller memory footprint than good assembly; it's not going to run as fast, but there never have been many good assembly programmers, and Forth might beat poorly written assembly.

      Every high-level language beats poorly written assembly. Believe me, I know. I've seen too much of it.

      Apart from that, though, Forth in its original P-Code form is tighter than assembly. At least 33% tighter, and often as high as 90% tighter, particularly in inefficient assembly codes like pre-386 Intel.

      I first learned programming in FORTRAN and COBOL long before these languages were "structured", then BASIC, APL, assembly, many more dialects of BASIC and assembly, a little Pascal and LISP, C, and Labview.

      Wow, you admit to learning in COBOL. I am in awe of your bravery. :)

      Horrible languages designed for appeasing the needs of suits aside, FORTRAN, COBOL, BASIC, Pascal and C are all Algol-family languages. Assembly of course is its own breed. LISP is also. I don't know what Labview is.

      It is true that Forth is unique. It's not an Algol-family language, like most languages are, outside of assembly. This is both a strength and a weakness. It's a strength because the way Forth does things is, well, better; it's a weakness because there are no commonly-used operating systems written in it, and it sometimes can be a real pain in the butt calling OS routines from Forth.

      The weirdness you reference does not make it harder to do algorithm design in Forth. It makes it easier. What it makes harder is learning Forth in the first place. If it wasn't for Leo Brodie (some of whose books are still in print; unfortunately Starting Forth is not) I doubt there would be nearly as many Forth programmers as there are.

      Forth does seem like a great language for p-codes, that is, compiler output that is not machine code. P-code can be machine and OS independent, and protection against rogue code can be built into the interpreters.

      Forth is the original language for p-code, as far as I know. I am not sure what you mean by rogue code. Normally, Forth compiles to tokens. Each token is a numerical referent to a routine. For example, here's a sample (rather goofy) Forth program:

      : additiondemo
      4 5 + .
      ;

      the delimiter between commands is either a space or a CR. so that's actually four commands compiled there (six if you count the compiler control commands). : means compile a new command, and takes an argument following (there are a few commands in Forth which do that) of the name of the function. therefore, this is a new command named "additiondemo."

      and by the way, that's what all Forth programs are. new commands. so as you write programs, your Forth just gets bigger. and bigger. there are tools available to reduce your Forth code to the minimum necessary to run a particular command, and then run that command immediately on startup. this is referred to as turnkeying. but you don't have to do that. you can just start Forth on bootup and keep all your programs in RAM all the time.

      so back to our program. the command "4" puts the number 4 on the top of the stack. the command "5" does a similar operation. the command + adds the top two numbers on the stack, and places their total back on the top of the stack. (Therefore, at this point there's a 9 on the stack.) the command . pops the number on the top of the stack, and outputs it to the screen (well stdout really).

      finally, the command ; says time to stop compiling, write the end of the command, and return to interpreter mode.

      anyway, there ya go. that's basically how it all works. that command above should output a single 9, and leave the stack in the same condition it found it.

      with most Forth implementations, the 4 and 5 commands would compile to assembly. actually, probably so would the + - but it could compile to a P-code reference to the + command. the . command usually compile to a P-code reference. result? this additiondemo should come in under 10 bytes on most architectures.

      this is also why Forth only looks like it's using RPN. in reality, the + command is just a command like any other: it takes its arguments from the stack. it just so happens that it looks like RPN, most of the time. but you can do some rather strange things with +, especially if you have pointers on the stack. some of these things can be useful, although their implementations are usually very hairy.

      --

      my old sig used to be funny, but then slashcode ate it and now it's not funny anymore

  13. What about memory protection? by jcr · · Score: 4, Interesting

    From the web pages, I don't see any mention of access control.

    Can this processor be used in a multi-user, general-purpose mode?

    -jcr

    --
    The only title of honor that a tyrant can grant is "Enemy of the State."
  14. A practical use for Forth by lordpixel · · Score: 1

    Somewhat off topic, but the Open Firmware system used to boot all current Sun, Apple Macintosh and I think also IBM machines is a Forth implementation.

    Basically its a Forth interpreter with a stack, and a device tree. You can literally 'cd' and 'ls' around the PCI and other busses on Sun workstations.

    --

    Lord Pixel - The cat who walks through walls
    A little bigger on the inside than out

    1. Re:A practical use for Forth by Anonymous Coward · · Score: 0

      What do you mean "Used to"?

      open firmware is still in use, at least in all new apple macinotsh computers. the point of having all pci device drivers and bootloader code execute in the forth/open firmware "FCode" is that fcode is easily and quickly executable and human-writable but vastly superior to machine code in that it is device-independent-- i.e., Sun can use the same PCI card, drivers, and Solaris bootloading code on machines with totally different processors.

      For more information on Open firmware, i suggest you listen to its theme song.

    2. Re:A practical use for Forth by lordpixel · · Score: 1

      I said:
      >the Open Firmware system used to boot all
      >current Sun, Apple Macintosh and I think also
      >IBM machines is a Forth implementation.

      You said:
      > What do you mean "Used to"?

      I meant precisely what I said! It is the system _used_ _to_ boot these computers at present ;)

      I suppose "Open Firmware is used by .... computers to boot themselves" might have been clearer...

      --

      Lord Pixel - The cat who walks through walls
      A little bigger on the inside than out

    3. Re:A practical use for Forth by Anonymous Coward · · Score: 0

      Oh, well, crap. :)

      My deepest apologies, mr. pixel, for my error. I was being absent-minded, and this is not your fault at all. Sorry! Damn.. i hate english.

    4. Re:A practical use for Forth by Anonymous Coward · · Score: 0

      Heh, it was partly his fault: that sentence of pixel's was constructed crappily. I'm a native English speaker, and I parsed it the same way you did.

  15. x.25? by sulli · · Score: 2

    umm, that's an old communications protocol. I think you mean 25X.

    --

    sulli
    RTFJ.
    1. Re:x.25? by Anonymous Coward · · Score: 0

      You Best'a recanize... x.25 was made by dat dare man. he was way to smart of come up with some shizzo-for-da-fizzo crap comm house fo da man...

  16. Programming languages... by Midnight+Ryder · · Score: 5, Interesting

    This one would probably require a bit more time to answer than you probably have available, but a quick rundown would be cool: Where do you see programming languages headed -vs- where do you think they SHOULD be headed? Java, C#, and some of the other 'newer' languages seem to be a far cry from Fourth, but are languages headed (in your opinion) in the proper direction?

    --

    Davis Ray Sickmon, Jr - looking for something to read? Check out my three free novels at MidnightRyder.org

    1. Re:Programming languages... by samael · · Score: 2

      Actually, I believe the IL that C# compiles to is stack based.

      I'm willing to be proved wrong however.

    2. Re:Programming languages... by Anonymous Coward · · Score: 0

      I don't think Chuck pays attention to other languages...

    3. Re:Programming languages... by Anonymous Coward · · Score: 0

      You are 100% correct. It is public info as part of the ECMA specs for the CLR and CLI.

    4. Re:Programming languages... by Anonymous Coward · · Score: 0

      The Java VM that the CLR rips off is also a zero-reg stack based architecture (the virtual CPU has no registers apart from stack + PC.) .

      The Tao/Amiga VM is an unbounded register set architecture (the virtual CPU has an unlimited number of registers) , and is probably the most interesting, and fastest, VM architecture currently around.

  17. Newbie / Future MISC Chip Designers by Anonymous Coward · · Score: 1, Interesting

    Chuck,

    I've read everything on your site & also Jeff Fox Ultratechnology.com site about your Minimal Instruction Set Chips, their design, performance etc.

    What advice and tools would you recommend to anyone today starting out and wanting to follow and build upon the path that you've set out?

    Very Interested?

  18. Re:are you by s2r · · Score: 0, Offtopic

    No, just millionaire.

  19. X25? by Anonymous Coward · · Score: 0

    You guys need to scale back on your advertising.

    No, my bad - you're either that experimental NASA reuseable space plane or the ham packet radio protocol.

  20. What is Forth? by Innominandum · · Score: 2, Interesting

    Someone on Slashdot has recommended Forth to me as "perfect middle ground between ASM and C." I have looked at the FAQs and could not find a quick-and-dirty overview of the language.

    I am looking for the simplicity, control, and elegance of ASM. But I also would like to enjoy some degree of abstraction and features that reduce the drudgery of programming. I have looked at HLA and Terse but they are platform-dependent, unless I write my own compiler. Do you think Forth meets these criteria?

    Another thing. Just from peeking at the FAQ I see Forth uses postfix expressions (among other things), which seems a little dated. I assume this was implemented for compiling on resource-constrained machines? Do you plan on giving Forth a minor face-lift?

    1. Re:What is Forth? by Anonymous Coward · · Score: 0

      "I see Forth uses postfix expressions " ... "Do you plan on giving Forth a minor face-lift?"

      The Point missing are you.
      This guy probably complains about "Revenge of the Jedi" "That Yoda's too damn hard to understand."

    2. Re:What is Forth? by Anonymous Coward · · Score: 0

      Postfix expressions aren't just good for resource-limited machines, they map directly onto a stack architecture; it's that stack architecture that allows the 25x to get that kind of MIPS.

    3. Re:What is Forth? by ocie · · Score: 1

      And make it do C++ too.

      --
      JET Program: see Japan, meet intere
    4. Re:What is Forth? by William+Tanksley · · Score: 2

      Just FYI, Forth doesn't use true postfix -- it uses a sophisticated superset of postfix. Far from being dated, its technical capabilities are only beginning to be explored. For more info, read the Joy language page.

      -Billy

    5. Re:What is Forth? by Anonymous Coward · · Score: 0

      For a good and humerous tutorial on Forth see "Starting Forth" by ?? Brodie.

    6. Re:What is Forth? by Anonymous Coward · · Score: 0

      It is Leo Brodie, and the later editions of the book are published by Forth, Inc.

    7. Re:What is Forth? by Anonymous Coward · · Score: 0

      Have a look at "A Beginner's Guide to Forth"
      on the webpage
      http://www.phys.virginia.edu/classes/551.jvn.
      fall01/

      Postfix is ok for evaluating short arithmetic
      sequences, not so good for long, complicated
      expressions. So I have written a FORmula TRANslator. Look under "Forth system and example programs" on the same web page. It adds about
      8Kb to a typical Forth and converts FORTRAN-type
      assignment statements into Forth on the fly. Lots
      of people have found it useful, including Eagle
      Research that manufactures all the pipeline con-
      trollers. Have fun.

      PS: I tried to create an account and was called
      "Will Robinson" for my pains. My name is
      Julian V. Noble

  21. Quick question by jd · · Score: 4, Interesting
    I have often conjectured that multi-threaded processors (ie: processors that can store multiple sets of internal states, and switch between them) could be useful, as the bottleneck moves from the processor core to communications and dragging stuff out of memory.


    (If you could microcode the "instruction set", all the better. A parallel processor array can become an entire Object Oriented program, with each instance stored as a "thread" on a given processor. You could then run a program without ever touching main memory at all.)


    I'm sure there are neater solutions, though, to the problems of how to make a parallel array useful, have it communicate efficiently, and yet not die from boredom with a hundred wait-states until RAM catches up.


    What approach did you take, to solve these problems, and how do you see that approach changing as your parallel system & Forth language evolve?

    --
    It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
    1. Re:Quick question by oddjob · · Score: 1
      I have often conjectured that multi-threaded processors (ie: processors that can store multiple sets of internal states, and switch between them) could be useful, as the bottleneck moves from the processor core to communications and dragging stuff out of memory.


      Check out the Cray MTA... it does exactly that.
  22. The direction of 25x Microcomputer... by Midnight+Ryder · · Score: 4, Interesting

    The 25x concept looks like it could really a damned interesting idea. But one of the questions in my mind is where you want to head with it? Is this something that is to be used for very specialized research and scientiffic applications, or is this something that you envision for a general 'desktop' computer for normal people eventually?


    Secondly, if you are considering the 25x for a desktop machine that would be accessable by people that aren't full-time geeks, what about software? Forth is a lost development art for many people (It's probably been 10 years since I even looked at any Fourh code) and porting current C and C++ application would be impossible - or would it? Is there a potential way to minimize the 'pain' of completely re-writing a C++ app to colorForth for the 25x machines, which could help to speed adoption of a platform?

    --

    Davis Ray Sickmon, Jr - looking for something to read? Check out my three free novels at MidnightRyder.org

  23. Where did you get the name "ShBOOM" by ch-chuck · · Score: 2

    First: Great to see you here. I really enjoyed a FORTH like language on my Altair 8800 (written from an old Byte book "Threaded Interpretive Languages" or TIL's) because BASIC was SLOW and assembly tedius.

    Only question I have is about the choice of ShBoom for a microprocessor - any story behind that??

    I sure wish I could get a uP like an NC4000, RTX2000 or PSC1000 - inexpensively.

    --
    try { do() || do_not(); } catch (JediException err) { yoda(err); }
    1. Re:Where did you get the name "ShBOOM" by Anonymous Coward · · Score: 0

      Holy cow... I haven't heard the term ShBoom in YEARS. I think it was 91 or 92 when I was working for a company that made a Forth language derivative named Fifth, and the fellas designing the ShBoom came to us to port Fifth. The chip was still on the drawing board IIRC, and they were looking for funding. Any way, I wrote a ShBoom simulator and assembler, and optimizing the quads turned out to be the hardest part.

      Any way, the company went out of business, fifth went the way of the dodo (too bad, really, it was a cool tool). I never did hear if they ever got that chip off the ground.

      I'm begining to feel old... :/

    2. Re:Where did you get the name "ShBOOM" by ch-chuck · · Score: 2

      I never did hear if they ever got that chip off the ground.

      Yes - at least one company mktd shboom as a java processor, the PSC1000. (Link is from 1996).

      I was just wondering if, and it's a long shot, Chuck knew about the old Republic Picture's serial: "Captain Marvel", which featured the keyword SHAZAM (for Solomon (Wisdom), Hercules (Strength), A....(can't remember), Zeus (something), Atlas (...) and Mercury (speed I guess)), then Firesign Theatre comes along and makes a (really obscure) film "J Men Forever" which includes clips from Captain Marvel, except they changed the magic word to SHBOOM.

      --
      try { do() || do_not(); } catch (JediException err) { yoda(err); }
    3. Re:Where did you get the name "ShBOOM" by erather · · Score: 1

      ShBoom is now marketed as the "Ignite 1" by Patriot Scientific, www.ptsc.com. They market it as a Java chip, not a Forth chip, doubtless because they thing the Java market is larger. But it runs Forth extremely fast, much faster than Java. FORTH, Inc. (my company) offers the SwiftX Forth cross-compiler for it (see www.forth.com for info). This site also has benchmarks comparing it with other processors.

  24. Imagine... by Anonymous Coward · · Score: 0

    a beowulf cluster of these!

  25. Re:Did you know... by Leperflesh · · Score: 1

    You're offtopic, and surely will be modded down. My reply to you will not be modded up. Nevertheless: You, (along with millions of others) have mistakenly identified Slashdot (and millions of other sites) as public services. Sorry, tax dollars didn't pay for Slashdot. Its privately owned. It belongs to its owners, who may do whatever they please with it, enact whatever rules they wish, and so forth. If you don't like it, write to the owners with suggestions. They'll ignore you if they like. Your only other option is to go away. Period.

    -Leperflesh

    --
    I am allowed to criticize you: you are not allowed to criticize me. Sorry, that's just how things are.
  26. Two books on FORTH, TILs. by jms · · Score: 1

    I played with forth back in the early 80s on an Apple II. It's really a remarkably powerful and efficient programming system. I was able to write programs in forth that ran at nearly the speed of the equivalent assembly language, but were much easier to read and maintain.

    Two excellent books worth finding, both of which are probably long out of print:

    "Starting FORTH", Leo Brody, Prentice Hall, 1981.

    A very well written book aimed at the absolute beginning programmer. Brody uses cartoon drawings to illustrate the operation of the forth operators, and over the course of some 350 pages, explains not only how to program in forth, but how the language works under the covers and how to extend the compiler. Highly recommended and extremely novice-friendly.

    "Threaded Interpretive Languages", R.G. Loeliger, Byte Books, 1981.

    A more technical work, Loeliger describes and explains the implementation of an almost-but-not-quite-FORTH language. The book contains (and explains) the full source code, assembly as well as high-level, for the interpreter.

    1. Re:Two books on FORTH, TILs. by erather · · Score: 1

      Books that better reflect current Forth usage include The Forth Programmer's Handbook (available from Amazon and www.forth.com) and Forth Application Techniques (www.forth.com). Handbook is a fairly technical introduction and reference, and Application Techniques is an introductory tutorial. Neither has cute cartoons, unfortunately. Confession: I was a co-author on both.

    2. Re:Two books on FORTH, TILs. by BruceMcF · · Score: 1

      Also, to learn a bit more about the hardware stack machines, Phil Koopman's book, "Stack Computers: The New Wave" is available online at Phil's site at http://www.cs.cmu.edu/~koopman/stack_computers/

  27. What is Forth by mcelrath · · Score: 3, Interesting

    This is going to be a stupid question...but one I suspect many will have.

    What is Forth? Why is it useful? How fast is it in terms of useful computations? X MIPS, when comparing miniscule Forth instructions to CISC Intel instructions isn't really a good comparison. So how many *useful* computations can it perform compared to modern processors? What has it been used for in the "real world"?

    I recall a company creating a transputer -- basically an array of FPGA's, all doing 4-bit add operations, and claimed X thousand MIPS, where X is large. How are Forth machines different?

    --
    1^2=1; (-1)^2=1; 1^2=(-1)^2; 1=-1; 1=0.
    1. Re:What is Forth by andyr · · Score: 1
      > I recall a company creating a transputer
      That was Inmos - a British Microelectronics company. It was a regular CPU - not FPGAs. However, it did have a stack architecture. It was a parallel processing machine - 32 bit, integer, floating point, and onboard microscheduler to allow fast (20usec) context switches. To properly implement parallelism between processors, it is also necessary to do parallel processing on a single CPU. This is because it is always more important to keep other processors busy than to get on with your own jobs. The Transputer had a CPU, onboard 4K RAM, and four high-speed communication links to its brethren, each with their own DMA engines. You can find out more from RAM's transputer page. I have my own transputer stuff too.

      Cheers, Andy!

      --
      Andy Rabagliati
    2. Re:What is Forth by erather · · Score: 1

      Forth is a language invented by Chuck Moore in the early 70's. It's the only language developed specifically for embedded systems, and that's still where it's most commonly and profitably used. It produces extremely compact programs, with performance comparable to C (assuming a good implementation) on conventional processors. Of course, it's blazing fast on Forth processors such as Chuck designs! There's more information (including an extended history published at an ACM conference) on our web site, www.forth.com.

  28. I know where color forth should go: by Anonymous Coward · · Score: 0

    onto the embedded system. RTFA

  29. When will we see your prodducts in the market? by MightyJoe · · Score: 1

    I've followed you at http://www.ultratechnology.com for years now and I'm a big fan of your outlook on technology. Now, when are we going to see your chips in use? Your cpu would be great in a game box (for example). If your stuff is being used, please tell us how it is being used and for what purpose. Thanks.

  30. Questions for Chuck. by Crusty+Oldman · · Score: 2, Interesting

    I love Forth, always have. From the first hand-entered FIG listings to the excellent Win32Forth, I've known this is the "right" computer language. So why doesn't the rest of the world see what is so abundantly clear? Is it because they can't make the small mental leap to RPN?

    And why isn't Forth used more as a platform? Is it speed, security, advertising, what? I've never understood why the Forth community will take an excellent implementation right up to the point of being useful, then leave it without developing any applications. I can see an efficient, user configurable web cruiser built on any one of a number of Forths. But nobody has done it. Ditto for httpd servers. Why?

    And to the rest of the world, please stop parroting the old line about Forth being hard to read. It isn't. You can pick up most of what you need to know in an afternoon, then begin to enjoy some very elegantly stated code.

    1. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      From the first hand-entered FIG listings to the excellent Win32Forth, I've known this is the "right" computer language.


      There is no such thing as "the right computer language". Different languages are good at different things. I'd pick Forth for a small project where speed and compactness are important. I'd pick an OOPL for a large applications project. And so on.
    2. Re:Questions for Chuck. by Anonymous Coward · · Score: 0
      This is the LISP argument all over again. Languages that don't use infix notation are hard to read. You get used to it, but it is per se a language feature at odds with readability. To prove this, try reading an expression from a Forth program out loud to another programmer [with the aim of having him understand it]. You can't do it while staying in FPN or RPN - you have to translate it to infix notation first.


      Stop parroting the old line about Forth not being hard to read. It's a major problem with the language. Hack all you want on Forth in your own time, but don't expect 20+ man projects to be picking it up ever.

    3. Re:Questions for Chuck. by Crusty+Oldman · · Score: 1

      I don't agree. Forth words are all pronounceable, complete, and short. And consider that a large part of the world uses a RPN-type syntax in their conversational languages. I've even seen it used to train dolphins.

      Probably what I like best is that I can view an entire section of code in its totality on one page. It may take several minutes to understand, but it's all there, arranged logically, and usually stated very elegantly.

      Your 20+ man projects may be the best argument against using Forth, but I have no experience here, and have seen little evidence either way.

    4. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      "I've known this is the "right" computer language"

      Just listen to yourself. And I'm sure you follow the only "right" religiion too.

    5. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      Languages like C use prefix notation for function calls. It's just arithmetic and such where infix is heavily used. If you're not doing a lot of arithmetic, RPN isn't really any worse.

    6. Re:Questions for Chuck. by markmoss · · Score: 2

      why isn't Forth used more as a platform? Simple answer, it looks too darned weird. I sometimes do small embedded programs where Forth's tiny memory footprint would be advantageous, and it would be more than fast enough. But my boss isn't about to let me use it. He doesn't want to learn to read it, and if something happened to me, the nearest guy that could maintain Forth code might be 200 miles south of here...

      Other reasons: It isn't advertised. It isn't standardized. (I doubt this matters much since it's pretty easy to add new words to any available Forth as needed to support a program from another dialect, but this sort of thing scares away managers who don't have time to listen to the details.) It allows you to do horrible things like writing a subroutine that removes too many or too few items from the stack. (Sort of like the horrible mistakes C programmers make with pointers, malloc and free, == vs =, etc, but we're talking about managerial perceptions again...) Some versions of Forth store your tokenized source code right in the executable program, so you can't protect your "trade secrets." RPN really is hard to work with, at least for me (with the early HP scientific calculators). But the basic reason is that it looks weird and this inclines people to find fault...

    7. Re:Questions for Chuck. by Crusty+Oldman · · Score: 1

      Did you know you can implement OO in about a page of Forth code? And refer back to it later if you need to understand something about the implementation?

      That is just one of the things that are "right" about Forth. It has the tools built-in to extend itself into whatever you need.

    8. Re:Questions for Chuck. by orangesquid · · Score: 1

      If you believed your own religion was wrong, would you still be practicing it? ;)

      --
      --TheOrangeSquid Is it any wonder things seem so awry? We swim in a sea of confusion and don't have to think to survive
    9. Re:Questions for Chuck. by erather · · Score: 1

      It's true that Forth isn't advertised nearly enough. But it is standardized: an ANSI Standard for Forth was published in 1994, and is followed by all commercial and most non-commercial implementations. Stack mistakes are easy to diagnose and fix, and at least you won't get in trouble with missing parens or braces! In short, every language has its characteristic "programmer traps". Forth at least is interactive and very easy to debug thoroughly. As to "storing tokenized source code right in the executable," I'm unaware of any Forth that does this. It's certainly easy to find one that doesn't: most of them! So your secrets are safe.

    10. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      Did you know you can implement OO in about a page of Forth code? And refer back to it later if you need to understand something about the implementation?


      That is just one of the things that are "right" about Forth. It has the tools built-in to extend itself into whatever you need.



      BFD. You can carpet a small planet with programming languages that are self-extensible, starting with everything in the Lisp class. As for OOP, check out TinyCLOS.


      I'm not saying Forth isn't cool; it is. But it's not like it's a magic bullet or the One True Way. Different languages are good at different things, and no amount of zealotry will change that.

    11. Re:Questions for Chuck. by erather · · Score: 1

      RE "reading an expression from a Forth program out loud to another programmer": we do it all the time. It works great. Of course, the other programmer has to know Forth. Try reading C out loud to someone who doesn't know C!

    12. Re:Questions for Chuck. by erather · · Score: 1

      Having worked on several 20+ programmer projects (not all men, actually), I can say that Forth works great there. Some years ago a company came to us with a project in trouble: a team of 35 programmers in 3 years had generated >300,000 lines of code in a control system involving 500 computers and 30,000 points. The software (Fortran, assembler) was x5 too slow, and didn't work. We started from scratch in Forth with a 15-programmer team, and passed performance tests in 12 months (x10 faster than the scrapped code), and passed all acceptance tests in 18 mos. That system is still in use. I will say that Forth programming teams tend to be smaller, because you can do much more with a smaller team. But sharing code is definitely not a problem. Of course, team members have to know or learn Forth. Would you want to do a C project with non-C programmers? Fortunately, Forth is easy to learn. In the project above, over half the programmers didn't know Forth at the start of the project, but they learned fast and became quite productive.

    13. Re:Questions for Chuck. by Crusty+Oldman · · Score: 1

      "e", I'm one of your biggest fans!

      You have been the anchor of one of the greatest teams ever assembled. If they had a superbowl of computer programming, you'd be wearing most of the jewelry!

    14. Re:Questions for Chuck. by erather · · Score: 1

      Quite a few applications have been written in Forth, too many to enumerate here. Some are described on our web site, http://www.forth.com. One very familiar example is the hand-held package tracking device FedEx uses to track ~3 million packages every day. The NEAR space probe that landed on an asteroid a year or so ago had most of its instruments written in Forth. Telephone answering systems, construction estimating systems, antenna control systems, ... (very long list).

    15. Re:Questions for Chuck. by Crusty+Oldman · · Score: 1

      I happen to like Lisp too! Check out what's being done with newLISP. But I understand Forth, and that's what makes me a happy zealot.

    16. Re:Questions for Chuck. by markmoss · · Score: 2

      Somebody mod the parent up please, it certainly deserves equal billing with my first post.

      1994 was way too late for a Forth standard. ANSI C has at least a decades lead, and I think C was kept reasonably standard ever since its creation in the early 70's.

      Somewhere in Moore's pages on colorForth it does say that the executable is tokenized source. Unless I misunderstood? Glad to hear that other compilers don't.

      You might be right about programming traps and debugging -- most C and C++ projects never do get adequately debugged, so how could Forth be worse? But the big problem is that I can show a C program to an engineer that doesn't program, and he can read parts of it. Show him Forth, and it might as well be hexadecimal.

    17. Re:Questions for Chuck. by PurpleBob · · Score: 2

      RPN on an old calculator and RPN on a computer are extremely different.

      On old HP calculators, you could only ever see the bottom item on the stack. Using these calculators was difficult because you had to think about "registers" that you couldn't see.

      A good RPN calculator on a computer (or an HP graphing calculator) lets you see almost everything that goes on with the stack. This is when RPN begins to make sense.

      And if you're _programming_ in an RPN language like Forth, then the stack is what you make it. If you switch things around on the stack at bizarre times, it will be hard to work with. If you think of stack slots like function inputs and outputs, it's easy to work with.

      But you did hit on what are probably the main reasons Forth isn't used: tradition, and the fact that Forth is closer to assembly than C, and as such it would not be obfuscated enough in binary form.

      --
      Win dain a lotica, en vai tu ri silota
    18. Re:Questions for Chuck. by Crusty+Oldman · · Score: 1

      I never used a HP calculator, so I can't comment on the "registers" but it is the lack of registers and variables that makes Forth so strong. A huge amount of "noise" is eliminated, and in consequence a large percentage of code is factored out. Simplified. Clarified.

      I have done calculations in RPN, and can state that once I used it, I did not want to go back to infix.

    19. Re:Questions for Chuck. by PurpleBob · · Score: 2

      Sorry if I was unclear. When I say "registers", I mean slots on the stack.

      --
      Win dain a lotica, en vai tu ri silota
    20. Re:Questions for Chuck. by Berwyn+Hoyt · · Score: 1

      More to the point, try reading C even to a C programmer! The (x&&y!=2) { } is what really gets me. Forth's punctuation is tame by comparison. The ANS forth standard even comes with a pronuciation guide.

    21. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      The ANSI C standard was published in 1989, and the international ISO standard in 1990. That hardly makes for a decades lead.

    22. Re:Questions for Chuck. by Anonymous Coward · · Score: 0

      For all practical purposes, there is only one, the top of stack. Once you get the hang of it, the other items on the stack take care of themselves.

    23. Re:Questions for Chuck. by lelmore · · Score: 1

      I'm pretty sure the first ANSI C standard came out in 1989, so C has a 5 year, not 10+ year lead on Forth in that regard. However, there was the Forth83 standard and Forth79 before that. They weren't ANSI standards, but K&R C never was, either.

      Debugging Forth is much easier and faster than debugging C. Small words ("functions") that are immediately and interactively tested make for rapid progress. Except for when I was first learning the language (1983-84), I've never had much use or need for source-level debuggers in Forth.

      You've got a point when it comes to showing code to somebody who doesn't know the language, but C/C++ also has a (well deserved) reputation for being cryptic. If you want readability, Ada is much better choice than C.

      I really disagree with your previous comments on RPN calculators. I found them to be very natural, faster, and easier to use than algebraic calculators. After learning how to use my first HP, I've never again willingly used an algebraic calculator.

  31. OpenSource Software by Marvin_Runyon · · Score: 1

    What part do you see Forth playing in the future of GNU/Linux and other FreeSoftware and OpenSource operating systems (*BSD, *[A-Z]*[T/N]*[X/CS] etc)?

    How do you forsee such a synergy affecting the popularity of both parties?

    -Marvin

    1. Re:OpenSource Software by stox · · Score: 1

      The loader in FreeBSD is forth. So, forth is playing in the present already.

      --
      "To those who are overly cautious, everything is impossible. "
    2. Re:OpenSource Software by Anonymous Coward · · Score: 0

      The GNU Way Is LISP. LISP is like forth, only good.

  32. Information theory by BillyGoatThree · · Score: 2, Interesting

    * 5 x 5 array of cores: 60,000 Mips

    ...

    * Max power 500 mW @ 1.8 V, with 25 computers running


    500 milliWatts is .5 J/s. Divided by 60,000 million instructions/second implies that this can execute 1 instruction while consuming only 8.3e-6 Joules of energy. What I'd like to know: Pretending for a moment that the instruction was simply to flip a single bit, how close does this come to the absolute limit dictated by Information Theory?

    --
    324006
    1. Re:Information theory by Anonymous Coward · · Score: 0

      You forget, that it's parallel processing...

  33. MIPS by Anonymous Coward · · Score: 0

    2400 MIPS per processor, 25 processors for 60,000 MIPS total. For reference, a 1 GHz Athlon is about 3000 MIPS. Of course, it's hard to compare the two because the instruction sets are so different.

    I don't think the 25x has an FPU, though, so no analogous FLOPS comparison.

  34. It could have been C, couldn't it? by Pac · · Score: 2

    It may not be clear to rest of the Slashdot audience that they are asking questions to a legend of the field. The FORTH language could easily have been what C became, and only luck decided the fate of each language.

    I was truly amazed when I first found a FORTH compiler for the Apple II. It was so alien to everything else available, yet so advanced, so ahead of the pack.

    So, as for a question, do you think the growth of the appliance and handheld markets can give FORTH a chance to achieve a mainstream status? What steps are being taken to bring FORTH compilers to Palm OS, Windows CE and such?

    1. Re:It could have been C, couldn't it? by Quartus · · Score: 1

      Quartus Forth is an ANSI/ISO Standard Forth for the Palm OS -- check it out!

    2. Re:It could have been C, couldn't it? by Kristopher+Johnson · · Score: 1

      Quartus Forth for Palm OS:: http://www.quartus.net/products/forth/

      Forth for Windows CE: http://www.delosoft.com/

  35. Open forum to the X25 guys? I wanna OPT OUT by Lordie · · Score: 1

    Do people actually buy stuff from all of those pop-unders* you guys have ON EVERY STINKING WEB PAGE?!?? Does it really fit in the palm of your hand? Neat!

    .

    .

    *Yes, I know that is X10. It is a joke. Live a little.

    1. Re:Open forum to the X25 guys? I wanna OPT OUT by Anonymous Coward · · Score: 0

      This was funny until the disclaimer.

    2. Re:Open forum to the X25 guys? I wanna OPT OUT by Anonymous Coward · · Score: 0
      How thick do you think the Slashdot readership is that you have to put a disclaimer on a mediocre joke?

      Not much I guess.

  36. I don't think you really want such a keyboard by arete · · Score: 1

    I don't think you really want such a keyboard.

    You MIGHT want one that sent the same keyboards and someone had already switched the keycaps...

    and I could see some usefulness in on that switched between the two modes in hardware, except it's probably exorbinantly expensive, due to the low production run. That alone is reason enough not to get one...

    But there are a bunch of things which map to a keyboard geometry, the one foremost in my mind being IJKM as arrows... and there are others, some I've programmed for testing reaction time. There's no reason I can think of to swap the keycodes around, and several not to, unless you're trying to fool everything, which I don't think you are. At least, if I were going to do that, I'd want an A/B switch.

    - Arete

    --
    Looking for freelance Actionscript (Flash/Flex) or ColdFusion work and/or freelance developers. Email me, put Slashdot
  37. Well, it's staying in the UltraSPARCs... by devphil · · Score: 2


    Forth is small and efficient enough that the UltraSPARC PROMs contain a small interpreter. You can write Forth code and store it non-volatile RAM, to be executed at powerup.

    --
    You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    1. Re:Well, it's staying in the UltraSPARCs... by Anonymous Coward · · Score: 0



      >Forth is small and efficient enough that the
      >UltraSPARC PROMs contain a small interpreter.
      >You can write Forth code and store it
      >non-volatile RAM, to be executed at powerup.

      What documentation is available for this?
      None has ever come with any of my sparcs or
      the solaris documentation, and I've never seen a reference to it.

    2. Re:Well, it's staying in the UltraSPARCs... by Anonymous Coward · · Score: 0

      Many relevant resources blablabla is this not going to trigger the lameness filter now? can be found at Open Firmware Home Page

    3. Re:Well, it's staying in the UltraSPARCs... by red_dragon · · Score: 1

      While it does not mention SPARCs, Apple maintains a page dedicated to Open Firmware here.

      --
      In Soviet Russia, Jesus asks: "What Would You Do?"
    4. Re:Well, it's staying in the UltraSPARCs... by Tycho · · Score: 1

      Hey don't forget that PCI based Macs and most PCI based PPC machines use Forth. IIRC the boot ROM for such devices as video cards, mass storage cards and other PCI cards that need to be dealt with before the OS is loaded are also written in Forth. BTW has anyone ever tried to put a PCI card with boot ROMs intended for a Mac into an UltraSPARC and seen if it works?

      --
      Impersonating Tycho from Penny Arcade since before there was a PA.
    5. Re:Well, it's staying in the UltraSPARCs... by devphil · · Score: 2


      Sure there's documentation, on Sun's doc site for one. That site is basically just a full install of the AnswerBook2 software that comes with Solaris, plus all the docs for all the products. (Usually you run your own AB2 server locally, and it only displays the doc collections for stuff you have installed.)

      Anyhow, just look for "openboot" on the web.

      --
      You cannot apply a technological solution to a sociological problem. (Edwards' Law)
    6. Re:Well, it's staying in the UltraSPARCs... by mrbnsn · · Score: 1
      Forth is also used in the FreeBSD boot loader.

      From FreeBSD "man loader":

      The program called loader is the final stage of FreeBSD's kernel boot-
      strapping process. On IA32 (i386) architectures, it is a BTX client. It
      is linked statically to libstand(3) and usually located in the directory
      /boot.

      It provides a scripting language that can be used to automate tasks, do
      pre-configuration or assist in recovery procedures. This scripting lan-
      guage is roughly divided in two main components. The smaller one is a
      set of commands designed for direct use by the casual user, called
      "builtin commands" for historical reasons. The main drive behind these
      commands is user-friendlyness. The bigger component is an ANS Forth com-
      patible Forth interpreter based on ficl, by John Sadler.

  38. Ahem by Spotless+Tiger · · Score: 2, Funny

    For-- is wel- kno-- for sto---- all key----- as thr-- let---- and the len--- of the nam-. Why was thi- des--- dec----- hel- ont- eve- aft-- mem--- bec--- che-- eno--- for spa-- not to be an iss--?

    --
    Racists should be sent back to where they came from
    1. Re:Ahem by Spotless+Tiger · · Score: 2, Interesting
      (Which, for the sake of people reading the above and going 'huh'? actually reads:
      "Forth is well known for storing all keywords as three letters and the length of the name. Why was this design decision held onto even after memory became cheap enough for space not to be an issue"
      Trust me, Moore will understand it without the need for translation...)
      --
      Racists should be sent back to where they came from
    2. Re:Ahem by treyb · · Score: 1

      Few, if any, modern Forth implementations use this technique. I believe that ANS Forth requires support for at least 31 characters in word names.

    3. Re:Ahem by Anonymous Coward · · Score: 0

      Really..i`ve used Forth on and off since 1979 on the Apple ][, amiga, windows and althoguh i have heard of thisin the early days, none of the Nine versions of Forth that i have used exibited this.

      FUD

    4. Re:Ahem by Anonymous Coward · · Score: 0

      Sure, but Chuck Moore is also known as being the Evil Anti-ANSI FORTH guy. Not saying he's wrong (I usually ignore ANSI myself and do whatever the hell I want), just that he's well-known for thinking the standard is bloated and foolish.

    5. Re:Ahem by Crusty+Oldman · · Score: 1

      There was a very witty response to this by Chu__ Moo__ himself, in one of the early F.D.'s. Suffice to say that the three-letters-and-a-count header argument is only a diversion. You don't have to like Forth. It's ok with me.

    6. Re:Ahem by Anonymous Coward · · Score: 0

      Anyone who was "going 'huh'" and was not able to figure out what he meant needs to remove their gene genotypes from future human generations. seriously.

  39. fast flow control and memory access by Anonymous Coward · · Score: 0

    Good Forth programming factors the code into many small 'words'. Getting the most from such code requires very efficient flow control mechanisms. (fast jump and function call/return)
    In small systems, this is ultimately tied to memory access speed and latency. Asynchronous RAM is single-cycle, but slow (and thus drags the CPU down with it) whereas Synchronous (aka: Pipelined) RAM introduces at least one cycle of delay between the read and the result, although with a much shorter cycle time.
    Assuming none of the usual L1/L2 cache schemes used on most computers, what do you think is the best scheme to keep the clock speed up and the flow control efficient?

  40. applications? by sam_penrose · · Score: 1

    The history of computer programming is in part the history of moving away from bit flipping a la "Add S to T if T0=1 (multiply step)". More people get more done faster when working at a higher level of abstraction. For what applications is such register-centric work still worth the investment in development (both in training the programmer and in developing the programs)?

    1. Re:applications? by Anonymous Coward · · Score: 0

      Forth isn't really any more bit-level than, say, C is. You just stuff the bit twiddling into a few words and then forget about them. It's all subroutines; you can define words at as high a level as you like.

  41. Will there be a 'Starting Forth' for colorForth? by pmorrison · · Score: 1

    And will there be a reprint? Do you think the relative difficulty of finding a book made Forth less accesible, or the relative difficulty of Forth made publishing less attractive?

    'Starting Forth' was great, though I read it before I had a computer to hack on (circa 1979 or '80).

  42. How many times have you sought funding? by Anonymous Coward · · Score: 0

    Is it frustrating?

  43. Instruction packing by Anonymous Coward · · Score: 0

    Note that since most Forth instructions are zero-operand (they implicitly operate on the stack), you only have to encode the opcode, not any additional address or data fields. That means that each instruction is only 5 bits long, so you can pack 3 of them into an 18-bit word. That's why the chip can execute so many instructions per second -- if you have three contiguous primitive instructions (as opposed to high-level words which are subroutine calls and require addresses), you can pull in three of them with each memory access.

  44. Nontextual programming languages by jmerelo · · Score: 1

    There's been lately a bit of discussion on non-text or non-linear programming languages; from purely visual programming languages like Jaron Lanier's Mandala to literate programming languages like CWEB, there seems to be a trend beyond ASCII-linear text programs. Your colorforth seems to be an effort in that direction



    Question is: where do you think this field is headed? Will non-ASCII programing languages be niche players, or will some of them become as widely used as PERL or Java? Is there something fundamentally different you can do with non-ASCII PLs? Or something that you can't do with other programming languages, like C++?

    PS: I had a glimpse of Forth ~20 years ago with a Forth interpreter for the ZX Spectrum, which beeped and printed color squares while it was interpreting stuff. Quite funny, indeed! Or maybe a harbinger of ColorForth...

  45. Okay so you have mastered the tiny CPU by Anonymous Coward · · Score: 0

    But Japan has mastered the tiny HAMBURGER!!!

  46. Massively Parrallel Computing by PureFiction · · Score: 5, Interesting

    The 25X system reminded me of IBM's Blue Gene computer, where a large number of inexpensive CPU cores are placed on a single chip.

    The biggest problem in dealing with a large number of small cores lies in the programming. I.e. how do you design and code a program that can utilize a thousand cores efficiently for some kind of operation? This goes beyond multi-threading into an entirely different kind of program organization and execution.

    Do you see Forth (or future extensions to Forth) as a solution to this kind of problem? Does 25X dream of scaling to the magnitude that IBM envisions for Blue Gene? Do you think massively parrallel computing with inexpensive, expendable cores clustered on cheap die's will hit the desktop or power-user market, or forver be constrained to research...

    1. Re:Massively Parrallel Computing by Anonymous Coward · · Score: 0

      Ask the Connection Machine people from Thinking Machines Corp... interesting that they moved away from massive parallelism over time...

    2. Re:Massively Parrallel Computing by PureFiction · · Score: 2

      Good point. Connection Machines were probablt the first to employ massively parrallel processing. If I recall correctly, programming on connection machines was almost exclusively Lisp or one of its variants.

      I wonder if the limits of the programming languages available had any impact on the decline of thinking machines and massively parrallel computing. Perhaps it was some other factor entirely (like synchronization, resource contention, etc)...

    3. Re:Massively Parrallel Computing by Anonymous Coward · · Score: 0

      The CM's had a parallelized version of C called C*, IIRC.

    4. Re:Massively Parrallel Computing by Listen+Up · · Score: 1


      99.44% "You are the product of a mutational union of ~640Mbytes of genetic information."
      Where did you get such a strange (albeit non-true) fact such as this? I remember the Human Genome Project requiring magnitudes more space than this to even decode just one single gene sequence. I wish people would not believe things as ridiculous as this.

    5. Re:Massively Parrallel Computing by PureFiction · · Score: 2

      The human genome project usually stored and manipulated data in a space inefficient text format. I.e. GATTAC...

      You can compress this into binary with each base pair represented by 2 bits (00, 01, 10, 11) which reduces the amount of data by a factor of 4.

      There are some additional diferences between a compact binary representation for a single genome, and the data used by the HGP, some of which is used for correlating sequences, etc.

      In short, your DNA sequence would fit on a CD-R.

      While it may be closer to 700M, it would still fit.

      As a side note, if you removed the excess filler in the genome, you would end up with substantially less than 600-700M. perhaps in the neighborhood of 200-300M. But no one is sure if that filler is truely filler, or if it plays an indirect part in the gene expression within cells...

    6. Re:Massively Parrallel Computing by Listen+Up · · Score: 1


      700 Megs? Okay, so if everything can be stored on 700 Megs of space, how can there then be an infinite number of different people thought history? No two people are exactly alike...so if people have been around for 100 million years and even today there are 6 billion people, how can an infinite number of possibilities exist within a limited data set? I am not interested in rebuttals about changing population growth throughout human history. If you are thinking that there are more possiblilities on that CD than people who have ever lived on the Earth up to this point, you are also implying that at some point in human existance the exact same person will have to exist twice. That is an impossibility. No two people on Earth have the same retinas, no two people on Earth have ever had the exact same finger print, etc. etc. And where on that CD is stored human memory, human personality, human reality, existance, life, and everything else that cannot be explained simply by making a "best guess" and what a human is supposed to be. I have talked to many people about what you think is true about what we know and how small it can be compressed onto a CD. So, an infinite number of human possibilities and you think it can be fit onto a finite data set printed on a CD. You are wrong, and 700 Megs cannot possibly describe the entire existance and uniqueness of one single human being.
      Uniqueness in the universe is what makes the mystery of being alive so great. If we break everything down to the atomic level...Isn't everything the same then? You see, we are not just 700 Megs of mutated genes. You are just a stange little man, that's all.

    7. Re:Massively Parrallel Computing by PureFiction · · Score: 2

      You are barking up the wrong tree.

      700M only contains the genetic information required for the process of life to occur.

      The execution of this genetic program is what you call life, and being human. To store the 'output' from this genetic program would be impossible.

      There is infinite variety and always will be because the environment in which this 700M genetic program executes is always dynamic, and is a nonlinear dynamic system.

      I dont want to get into the details here, but suffice it to say that there is a GIGANTIC difference between the genetic code, which is small, and the end result, which is life.

      That the wonders of life can arise from such simple programs is a mystery to me as well... I am in no means trying to trivialive life or individuality.

      See recent research on complex adaptive systems if you are curious...

    8. Re:Massively Parrallel Computing by Listen+Up · · Score: 1


      That the wonders of life can arise from such simple programs is a mystery to me as well... I am in no means trying to trivialive life or individuality.
      Thank You.

  47. Background on Mr. Moore by Junks+Jerzey · · Score: 2

    Most of the questions I see here are FAQs (e.g. "What is Forth?") that you don't need to ask Chuck. It seems that people don't really understand what he has been up to, so here's a general overview.

    He did create Forth, yes, but that was thirty years ago. And while Forth has been relatively unchanged for the last twenty years, Chuck has kept evolving the language in a quest for the minmum interface between a human and a computer. The "OS" talked about in the intro is only a couple of kilobytes (yes, kilobytes).

    He works not just on software, but does true systems work: a combination of software and hardware. And that is what he is trying to minimize. The system as a whole, not just a programming language. He has been designing processors hand-in-hand with stack-based languages. So he can do things like write a compiler for his language in a hundred lines of code. And he has a chip that uses _milliwatts_ of power and only 15,000 or so transistors.

    If nothing else, realize that Chuck is one of the few people single-handedly creating microprocessors. And he's way, way out there. Remember the recent Slashdot post about asynchronous logic? Chuck has been designing chips without proper clocks for ten years now.

    My question to Mr. Moore: Linux is seen as a more stable and reliable alternative to Windows, but at the same time I wonder if it's real progress or just a similar incarnation of a traditional operating system. Is the concept of "operating system" outdated?

    1. Re:Background on Mr. Moore by de+Selby · · Score: 1

      Weren't asynch chips experimented with in the 70's? Is it so great to be doing it for 10 years?

    2. Re:Background on Mr. Moore by Junks+Jerzey · · Score: 2

      Weren't asynch chips experimented with in the 70's? Is it so great to be doing it for 10 years?

      Async is being touted as the next step in chip design. Very few people have any experience with it, and many people don't think it is possible (even though the result is higher speed and lower power consumption). But Chuck is doing it now.

    3. Re:Background on Mr. Moore by spwhite · · Score: 1

      Charles Moore is the first of the real Tinkers (Vernor Vinge - Peace War)... he's so far ahead of institutionalised computing that nobody actually understands what he's doing.

      It is possible to think about the act of computing in different ways. Pointing to a regular task (eg, running Microsoft Word) and saying "your system is crap if it can't do this" is about the same as asking Andre Agassi to swim 10 kilometres to prove he's any good.

      My question: "How do you approach and solve problems? How do you get from 'this might work' to having something real in front of you?"

    4. Re:Background on Mr. Moore by Anonymous Coward · · Score: 0

      >...many people don't think it's possible...

      There have been a few made that in that last few years that I know of, and a couple from many years back.

      Are these processor designers of common folk?

  48. just imagine by Festering+Leper · · Score: 1

    Imagine a beowulf cluster of these... :)

    --
    if you want people to think you know what you are talking about, just put ".com" at the end of everything you say.com
  49. Can Forth/ColorForth really bridge the gap? by color+of+static · · Score: 2

    I don't think anyone will argue with the fact the Forth programming can allow one good programmer to generate small programs with amazing functionality compared to other languages, but do you feel that Forth advantages map well onto large scale projects? Forth has obviously been used for complicated embeded projects, but has it ever been used developing a GUI word processor or CAD program from scratch? If so, did it hold onto it's small application virtues, or if not do you feel that it would?
    Thanks for delivering a language that has proven to be great on memory constrained systems for years.

    1. Re:Can Forth/ColorForth really bridge the gap? by Anonymous Coward · · Score: 0

      ColorForth probably not, but some others maybe.
      A powerful, very darwinistic evolution of OO packages is taking place in Forth, as always happens in Forth (Forth does not originate from an academic approach, instead it was more or less found incrementally, superfluous branches were cut by that process of evolution).
      Some of the more advanced OO packages allow real team development - giving up some of the benefits of Forth, but introducing a rich and vital multitude of techniques.

      Daniel

    2. Re:Can Forth/ColorForth really bridge the gap? by Junks+Jerzey · · Score: 2

      Forth has obviously been used for complicated embeded projects, but has it ever been used developing a GUI word processor or CAD program from scratch?

      Chuck's CAD system used to design his processors is written in colorForth.

    3. Re:Can Forth/ColorForth really bridge the gap? by de+Selby · · Score: 1

      But, what functionality does it have?

    4. Re:Can Forth/ColorForth really bridge the gap? by Junks+Jerzey · · Score: 2

      But, what functionality does it have?

      Enough to build a high-end CPU.

    5. Re:Can Forth/ColorForth really bridge the gap? by Giant+Hairy+Spider · · Score: 2

      Enough to build a high-end CPU.

      As long as you consider CMOS chips with a few thousand surface-elements "high-end".

      --

      ---
      You'd be surprised at the broadband connection available to things crawling around in your hair.
    6. Re:Can Forth/ColorForth really bridge the gap? by Junks+Jerzey · · Score: 2

      I suppose you think a 1,000,000 page novel is better than a 1,000 page one? We're talking performance, not transistor count.

    7. Re:Can Forth/ColorForth really bridge the gap? by BinxBolling · · Score: 2
      I suppose you think a 1,000,000 page novel is better than a 1,000 page one?

      You're missing the point. Which is more powerful? A word processor that can handle a 1,000,000 novel, or one that craps out around 1,000?

    8. Re:Can Forth/ColorForth really bridge the gap? by Giant+Hairy+Spider · · Score: 2

      The point is that you couldn't use OKAD to design the next Athlon. It's only suitable for tiny chips. On the other hand, you could design anything Chuck's done on any CMOS CAD. OKAD is nothing special.

      And no, nothing Chuck Moore has done compares remotely to the raw hardware performance of a typical desktop machine, with hardware cache management, pipelining, and goodies like floating point support. Let alone supercomputing hardware. His real-world performance is not all that exceptional for embedded chips.

      I don't care how many MIPs he claims. He doesn't even provide hardware support for multiplication! As soon as you try to do anything that requires number-crunching performance, such as graphics beyond a simple bit-blt (as in his "Windows" demo, which is a slight step up from the NES sprite engine, and even with 1 toy app pushes the limits of his chip's RAM capacity), you'll find out just how ridiculously inflated his claims are. He's regularly out by at least 2 orders of magnitude, and with 25X probably 3 or 4.

      And it's not like his stuff is rock-solid reliable. Think "thermal bug." And then think about what else would show up after someone orders a run of 1,000,000 chips.

      --

      ---
      You'd be surprised at the broadband connection available to things crawling around in your hair.
    9. Re:Can Forth/ColorForth really bridge the gap? by atotic · · Score: 1

      The most amazing hack I've ever seen was written in Forth by a guy called Fred. In 1988, I was working in an educational software startup, Prentice Associates. We were mainly coding cross-platform Apple][ & IBM PC apps. Truly cross-platform, the same Forth code ran on both. They were little graphical presentations VGA style, with some user interactivity and animations.

      I was a Mac fanatic, so I enjoyed showing off the WIMP interface to Fred. He liked it, and wrote a cross-platform windowing system in Forth in about a month. It looked a bit crude, but had windows, and a core widget set (buttons, menus, checkboxes, scrollers). We used this UI to develop our apps from then on. And it was cross-platform, running on Apple & IBM PCs.

      The sad part is, I could never wrap my mind around Forth like Fred did, and was stuck using his quite elegant UI to create those educational presentations. Last I heard, Fred was learning Windows, because there was no money in Forth.

    10. Re:Can Forth/ColorForth really bridge the gap? by mlosh · · Score: 1

      It is probably true that OKAD II could be used to design an Athlon. Lots of people are doing that, and probably Chuck finds that direction uninteresting.

      However, it is clearly untrue that "you could design anything Chuck's done on any CMOS CAD. OKAD is nothing special". Based on the very thermal problems you mentioned, Chuck experimented and developed a transistor model taking into account thermal characteristics of the silicon process technology that is much more accurate than the hand-waving approximations of the mainstream design tools. And OKAD II's models can be calibrated to specific silicon production processes. So it is not just a fact that OKAD II is a crippled subset of the typical CMOS CAD suites. OKAD II allows asynchronous logic designs that push a particular silicon production technology to its limits. Ordinary tools are much more conservative. In the past, Chuck's approach was risky, as evidenced by buggy prototypes. Now, OKAD II provides accurate simulations so performance and safety can be balanced by the designer.

    11. Re:Can Forth/ColorForth really bridge the gap? by Giant+Hairy+Spider · · Score: 2

      In the past, Chuck's approach was risky, as evidenced by buggy prototypes. Now, OKAD II provides accurate simulations so performance and safety can be balanced by the designer.

      Show me the bugless production processors and I'll believe that other CAD systems are too conservative, and that this dilettante has shown up the entire industry. As it is, OKAD is an experimental system which has seen a mere handful of real silicon prototypes.

      Have you ever heard a single impartial evaluation of this work? Or have you just been reading around at ultratechnology.com?

      --

      ---
      You'd be surprised at the broadband connection available to things crawling around in your hair.
  50. Object-Oriented Programming by nate37 · · Score: 3, Interesting

    Chuck,
    What are your views on Object-Oriented programming and how it would relate to forth?

  51. X25 communication by YoJ · · Score: 2

    From reading your webpage, it appears that the X25 is a 5x5 array of asynchronous processors that execute an assembly language very similar to Forth. How do they communicate and share information to do useful computations?

  52. Not true for modern Forth systems by Quartus · · Score: 1

    ANSI/ISO Standard Forth requires 31-character names as a minimum. You'll be hard-pressed to find a modern Forth that uses 3 characters plus length for symbol storage, though it was a useful technique in the days when memory was scarce.

  53. MIT is building RAW by Mike_K · · Score: 1

    RAW is a tiled microprocessor, consisting of 16 MIPS cores, connected by a rectangular network. The best part of it is that you can connect many of these chips together to form even larger computers (the network will just extend outwards).

    It's nearing completion, there are some good results. You can check out http://cag.lcs.mit.edu/raw/ for details.

    m

  54. Why no faster arithmetic? by MfA · · Score: 1

    You would think that array machines are especially wanted for signal processing applications, wouldnt it make more sense to dedicate more area to arithmetic in relation to the rest of the CPU for the 25X? To have most of the area dedicated to the stack which would not even be running at full speed during arithmetic operations seems like a waste.

    1. Re:Why no faster arithmetic? by c13v3rm0nk3y · · Score: 1

      I don't know much about this chip design, but many stack machines are integer-math only. It would make sense to dedicate lots of space for the stack on an integer-math only chip, which allows for arbitrary precision scalar math without a co-processor.



      --
      -- clvrmnky
    2. Re:Why no faster arithmetic? by BruceMcF · · Score: 1

      Don't forget that the reason that 20 bit words are held on the stack as 21 bit words is to retain a carry with each and every word on the stack, and the way that the sum-conditional-on-carry uses that to synthesize multiplication operations. The data stacks are part of the arithmetic hardware for a stack processor. Also, arithmetic intensive tasks would likely have bottlenecks addressed by grouping processors in teams of two, three, or four (which is part of the serendipity of 5x5 -- one superviser and/or interface processor plus 12 teams of 2, eight teams of three, or six teams of three), in which case the data stack is how the programmer makes sure that the data that needs to be readily accesible is going to be readily accessible, without the combinatorial complexity in tracking 5x5xregister-bank registers.

  55. Forth "Bytecode Validator"? (1/5) by Hobart · · Score: 2
    Wow -- I'm amazed to see this on Slashot! I've been following Colorforth a bit since the videos / talks were posted on UltraTechnology.COM -- and since the ColorForth site went up, I've been following up for more info a few times a week. NEAT! The MOSIS facility where the prototypes would be built is amazing in itself too...
    I was thinking about the benefits and problems of cooperative multitasking and no processor memory protection, in favor of speed. (I haven't read Phil Koopman's " Stack Machines" yet to see if this is addressed.) Do you think that a "validation process" similar to what Java runs on applet bytecodes to ensure they behave, before execution, would be effective in building a general purpose computer built on colorforth / x18 ?
    --
    o/~ Join us now and share the software ...
  56. Microprocessor design and power usage by GunFodder · · Score: 1

    It seems like each new generation of mainstream microprocessors requires more power and generates more heat than the last. I see that your processor array reverses this trend. What do you think is the main advantage of low power consumption?

  57. What could have been. by kgrgreer · · Score: 1

    Do you ever wonder what could have been if the
    world had gone with Forth or something like Forth,
    instead of C & UNIX and their decendents? Do you
    think that it could have been possible?

    I remember the happy days of programming my Amiga
    in JForth and MultiForth. Those were much more
    powerful and flexible systems than the C compiler
    I had originally used to program the Amiga.

  58. Java VM in Forth? by iabervon · · Score: 2

    It seems from the X18 architecture and the general format of Forth that it would be efficient at executing java bytecodes or at least as a good target for on-the-fly translation, since the JVM is also a stack machine. Java even has enough multithreading that it might be able to make use of having 25 processor cores on a chip.

    Have you looked at Java as a high-level language for these systems or at Java bytecodes as a way to make common software available to users?

  59. Forth chips for a NIC-like computer? (2/5) by Hobart · · Score: 2

    The extreme performance and low cost of the X18-architecture systems would make them excellent affordable general-purpose computers -- but I am concerned about the technology being relegated to a niche like the previous FORTH processors ... Do you think it would it be a worthy goal to target the full functionality offered by Larry Ellison's "N|C" ("New Internet Computer") ? (X Terminal, Winframe terminal, SSH client, Web Browser, Java, Javascript, etc.)
    --
    o/~ Join us now and share the software ...
  60. Video chip for a standalone 25X computer? (3/5) by Hobart · · Score: 2

    Have you considered engineering a video chip (VGA/HDTV/NTSC) to go with the 25X?

    The X18 architecture could provide a lot of horsepower for a 3D accelerator for engineering, simulation, and gaming. Opinions?
    --
    o/~ Join us now and share the software ...
  61. Trinary Operating System by Water+Paradox · · Score: 1
    A trinary hardware system moves data more efficiently than a binary one. Here is a site I recently found with all the hardware schematics you need to build such a system. Is this going to happen any time soon? What material would you use to build a trinary system? The same as binary?
    --
    information is immaterial
  62. MIPS, But Not much I/O - What apps work well on it by billstewart · · Score: 2

    The 25X has lots of MIPS for grinding away on small amounts of data in each CPU's stack, but it looks like getting data on and off the CPUs from memory is the bottleneck, especially since the CPUs implement this in software - this means it can crunch very hard on very localized bits of data, but it's tough to give a single CPU enough for, say, a Fast Fourier Transform (at least for the interior CPUs). What kinds of applications work well on this sort of machine? How much cache is it practical to build around it? Has anybody built a bignum multiplier with it?

    --

    Bill Stewart
    New Fast-Compression-only CPR http://preview.tinyurl.com/dy575ks
  63. Gap between claims and reality by Greg+Lindahl · · Score: 2


    I used Forth a couple of times in my younger days, for a PC data collection board, and STOIC, a VAX/VMS forth that an excellent editor was written in. So I'm familiar with some of Forth's strengths.

    But Forth hasn't taken off, either in the general market or in its target market. In the same time period, numerous other languages have either become quite popular or have become well established in niches: C++, Java, Perl, Python. Companies like Cygnus have made mucho $$ supporting C in embedded environments, supposedly a natural niche for Forth. And research projects which involve, say, downloading codelets into an operating system to filter network packets tend to use Java or interpreted C instead of Forth.

    If you could somehow wave a magic wand and create projects to make Forth popular, what would you do? What vendors would begin to offer Forth as an alternative, what killer open source projects could be done far more efficiently with Forth, and what great benefits could firewall vendors create by letting admins add little arbitrary packet filters written in Forth?

  64. Custom (chording) keyboard design (4/5) by Hobart · · Score: 2

    The keyboard design you mention fashioning "out of bits of brass" reminds me a bit of the Twiddler chording keyboard ... Have you ever worked with a Twiddler, BAT Personal Keyboard, Bellaire CyKey, or other "nonstandard" PC input device before?
    --
    o/~ Join us now and share the software ...
  65. 25x used in Wearable Computing (5/5) by Hobart · · Score: 2

    You mention targeting a Wearable computer design -- have you spoken with anyone from any of the university Wearable Computing groups, or Professor Steve Mann?
    --
    o/~ Join us now and share the software ...
  66. Spell Checker by Eponymous,+Showered · · Score: 1

    Can you tell me if ColorForth has a spell checker? If so, what was the rational for building it? Is it compiled into the kernal?

  67. comments on scheme? by Phil-14 · · Score: 1

    It seems that forth is the last remaining
    example of a language being used in a system where
    everything, from the chip design to the OS, is
    tailored to work with a single language. Back in
    the 80's, there were similar systems written in
    lisp, but there are no more. While there are occasional
    proposals for a scheme processor floating around, nothing's really come of it. OTOH, a lot of the programs I run in linux seem to have their own separate scheme/lisp interpreter implementation. I could be running gnumeric (using guile), sawfish (rep), siag (siod), the Gimp (I forget what its scheme is called), and emacs (elisp) at the same time, which seems to be a wasteful setup.


    Do you think there's a place for a scheme-based OS, and would your new project be useful for such a project?

    --
    (currently testing something about signatures here)
  68. Limits of minimalism by Junks+Jerzey · · Score: 2

    Your philosophy seems to be one of minimizing the solution and the problem at the same time. That is, not only do you write the least amount of code to solve a problem, but you also reduce the scope of the original problem to make a solution easier, sometimes drastically. What are the limits of this philosophy?

  69. Against complexity by Animats · · Score: 2
    It's good that someone is opposing ever-growing processor complexity. But is this useful?


    Moore rejects most of the innovations in computer architecture of the past 20-30 years. No superscalar execution units. No pipelines. No caches. No floating point. No huge memories. Just simple little stack machines with high clock rates.


    Nobody seems interested. Not even the digital signal processing people, who should like the repeatable timing and be willing to put up with the tiny memories.


    So the real question is, what is this for?

    1. Re:Against complexity by BruceMcF · · Score: 1

      Most of the innovations of the past 20-30 years have been dedicated to solving problems created by earlier innovations of the past 20-30 years.

      But look at the basic stack machine process. If the operands are known, so the instruction does not have to specify them, and the operands are usually on-chip, so the processor does not have to use memory bandwidth to access them, you get 1 instruction, 1 clock cycle, hardwired, 1 instruction, 2 clock cycles, microcoded, and the processor clock can easily run at a multiple of the memory access clock without need for an associative cache. IOW, the on chip stack replaces both most registers and and reduces drastically the need for data cache. That's the normal, tried-and-true stack chips -- and its important to understand the Moores chips are leading/bleeding edge technology pushing an envelope already proven by a number of stack chips in current use, mostly embedded out of sight.

      Then cut the instruction set down to a hardwired five bit set, and you can pack 4 instruction slots into a 20 bit word. That means that each instruction fetch is a equivalent to 1 off cache instruction access and 3 cache hits.

      And finally combine that with a double stack approach that avoid stack-frame building overheads on procedure calls to support very small procedures, reused to a much greater extend, and the smaller code size that results from that, and in many cases your level 2 cache memory can just be your program memory.

      However, the approach used by some "inside the envelope" chips is to explicitly nominate bottleneck procedures to fast memory, with no difference between the two except that they are present in a portion of the address space where instructions execute more quickly. So there you profile the application, identify the high frequency operations, and speed them up by declaration in the source. The same idea as declaring a register variable, except it is declaring a "cache procedure".

  70. Tiny web browsers by Junks+Jerzey · · Score: 2

    You have talked of writing a tiny web browser, one in line with your view that you can write any application in 1000x less code than generally available solutions. What would your approach be to writing such a browser?

  71. fast, small Forth implementation on PalmOS by Anonymous Coward · · Score: 0

    This is NOT a cross-compiler - all compilation is done on the Palm: http://www.quartus.net/products/forth/. Has access to complete PalmOS API to make full applications.

  72. Memory bandwidth by fava · · Score: 1
    I have very fond memories of programming and learning forth in the mid 80's. The code for forth is written in forth and it is accessible, extensible and understandable to a mere mortal such as myself. I spent far too many hours playing with and tweaking the internals rather than doing any 'Real Work', I had so much fun creating my OO text based windowing system and an enhanced debugger that I never actually created any applications. Oh well, it was fun.

    My question: The spec for the x18 CPU shows 128 words of ROM and 384 words of RAM, therefore for any general purpose computations there is going to be a *LOT* of memoty thrashing. Consequently the final performance is more likely to be memory bound than anything else. The problem will only become worse as the number of CPU's on the die increased. How do you intend to deal with this issue?

  73. TRAC by stonewolf · · Score: 1
    Please contrast and compare TRAC and Forth. Please concetrate on the applications you see each being suited for. Also, tell us why they are still relavant in the modern world?


    I've implemented both languages (20 to 25 years ago) and find them both to be gems. Well worth studying.


    Stonewolf

  74. Language comparison by ecloud · · Score: 1

    I'd like your thoughts on the merits of Forth vs. Postscript and Lisp or Scheme. It seems to me the VM's for these are somewhat similar; Postscript may in fact be Forth underneath, but I'm not sure? And it also seems that prefix languages are more popular than postfix languages, maybe for psychological reasons. (And infix languages are even more popular, of course.) But I suspect you believe that the implementation of postfix languages like Forth is much more efficient. Can you explain why?

    Have you ever debated the merits of the two approaches with Richard Stallman?

    Would it be possible to write a compiler which goes from an infix source like Java, to a Forth VM instead of a Java VM? What advantages would that have?

  75. Forgotten interview? by bad-badtz-maru · · Score: 2


    What happened to the "Ask FCC Chief Technologist David J. Farber" interview questions (http://slashdot.org/interviews/01/01/22/1349237.s html) posted on Jan. 22nd? I am still waiting to hear what benefit citizens gained when deregulation allowed Clear Channel's stranglehold on public airwaves to expand to over 1,000 radio stations. Why ask for interview questions if you aren't going to follow up with an interview...

    maru
    www.mp3.com/pixal

    1. Re:Forgotten interview? by jamie · · Score: 1, Informative
      "What happened to the 'Ask FCC Chief Technologist David J. Farber' interview questions (http://slashdot.org/interviews/01/01/22/1349237.s html) posted on Jan. 22nd?"

      As Robin wrote in March, "Dave Farber agreed to a Slashdot interview back in January. I sent the questions but he never returned the answers despite several resendings and requests. Other than that, he seems like a decent guy."

      Our comment/archive/search system is being worked on -- we're still fixing bugs for the 2.2 code transition -- but you can find that comment here if you'd like to verify: google cached copy

    2. Re:Forgotten interview? by bad-badtz-maru · · Score: 1


      Thanks for taking the time to reply. I have been waiting eagerly for months for that interview just to hear the answer to that one Clear Channel question. Every time I turned on the radio I wondered what the answer could possibly be. It's a little disheartening to think that a public servant doesn't have the time to answer an excellent set of questions that come direct from "the people" even after agreeing to do such. Live and learn or something...

      Thanks again,
      maru

  76. OKAD by Anonymous Coward · · Score: 0

    Ultratechnology.com say you are using a colorForth based CAD package called OKAD, written in only 5000 instructions. How do you plan on getting that into the market?

  77. Forth and documenting intent by Paul+Fernhout · · Score: 1

    When I program with Forth I find myself having to write and read a lot of comments that document the intent of data movements on the stack. Languages like C where most data is stored in named variables lend themselves to writing more self documenting code because the name of each variable helps document the intent of how the data in it is used (e.g. "loopCounter"). That documentation of intent is lost when writing code that just does stack manipulations in Forth (thus the need for comments, such as descriptions of what is on the stack at any given time). Of course, you can use variables in Forth, but that defeats the elegance of using the stack. Do you have any comments on this issue or recommendations for making self documenting Forth programs with a minimum of explicit comments about intent?

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
    1. Re:Forth and documenting intent by Anonymous Coward · · Score: 0

      I think I read him say once that the solution is to increase word granularity -- if each word definition is itself only a few words long, you don't have to worry about readability as much.

  78. Programming languages for parallel machines by andyr · · Score: 1
    How do you rate occam as a programming language for multiprocessor machines ?

    Cheers, Andy! PS. My Transputer stuff ..

    --
    Andy Rabagliati
  79. Forth and Open Source / Free Software by Paul+Fernhout · · Score: 1

    Historically, Forth started out as more or less "open source" code embodying a set of elegant and powerful ideas. In the late 1970s/early 1980s there was controversy on whether the public domain Forths were killing the commercial vendors and at the same time giving novices a bad experiences using incomplete systems compared to more complete commercial solutions. What is your current feeling about open source / free software, especially as it relates to the past, present, and future of Forth? Do you think the open source nature of Forth has helped or hurt it in the long run?

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  80. MOD THIS UP! by samf · · Score: 0, Offtopic

    Please!

  81. Forth as a VM for other languages by Paul+Fernhout · · Score: 1

    I have long been interested in using Forth as the infrastructure for other languages, for example Squeak Smalltalk. However, when I have looked into this, it seems that fairly complex environments like Lisp or Smalltalk or Python with garbage collection and other features tend to want to have a certain infrastructure of their own -- a dedicated VM in that sense. There is also a performance hit unless the Forth system effectively just bootstraps itself out of the way. Especially in the context of Forth chips, what can you tell us about the promises and perils of other languages running on top of Forth? Are there ports of any other languages to your Forth chips?

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  82. Synchronization overhead? by Christopher+Thomas · · Score: 2

    With many parallel threads and an internal cycle time much faster than external SRAM access time, won't this chip have a lot of trouble managing locks in parallel applications?

    Will this restrict the set of applications for which this chip is useful, or have you come up with a clever solution to the problem?

  83. Extreme Programming and the Forth philosophy by William+Tanksley · · Score: 2

    Your philosophy of coding emphasises (or seems to me to emphasise) many of the same things recently elaborated by the new "fad", Extreme Programming. What's your opinion on this rediscovery? How strong is the correspondance?

    How, if at all, does Forth help you to do things like refactoring and unit testing in ways that other languages don't?

    -Billy

    1. Re:Extreme Programming and the Forth philosophy by Anonymous Coward · · Score: 0

      Go over to the ultratechnology.com site, they've got some essays and interviews on the role of refactoring and unit testing (not in those words, but that's what it amounts to).

  84. Forth words interpreting subsequent characters by Paul+Fernhout · · Score: 1

    Forth code is interpreted when a program is loaded and that process typically defines more static code that can then be run. However, this can makes Forth code harder to tokenize and handle in a development environment -- since you can't know the meaning of a later chunk of Forth code without evaluating the earlier part -- since the earlier part may have redefined how parsing of the later part is done. Essentially, any chunk of text in a program can be arbitrarily parsed by earlier defined words. Other languages with macro preprocessors (like C) have some of the same issues, however Forth does this spectacularly, essentially allowing a Forth program to totally redefine how subsequent parts of the program are interpreted (such as for parsing custom little languages defining data structures). Do you consider this a major strength or weakness of the Forth language, compared to languages that have a less extensible syntax (like Smalltalk). How did you think of it? Can you tell us of any especially novel or surprising ways this capability has been used?

    --
    A 21st century issue: the irony of technologies of abundance in the hands of those still thinking in terms of scarcity.
  85. Postscript ~= type checked Forth... by Svartalf · · Score: 3, Interesting

    Someone wrote a Postscript program around 1987-88 that allowed the interpreter to compile Forth words straight from the command interpreter. It was all of two to three 8.5 x 11 pages of 12 point text, if memory serves.

    --
    I am not merely a "consumer" or a "taxpayer". I am a Citizen of the State of Texas
  86. Using OKAD by de+Selby · · Score: 1

    I've been reading the ultratechnology site, and I'm dissatisfied with the lack of real details. It almost seems evasive. (It reminds of the writing of new-age gurus.)

    But, what I want to know is, what is that software you make really like? Can you take us through a real-world use of OKAD?

    1. Re:Using OKAD by UltraTech · · Score: 1
      Evasive? It is easy to get lost in the megabytes of stuff that is there. I have fifteen years of history, information on a number of chips, software, tutorals, chip simulators and emulators, programming tutorials with examples, transcripts of presentations, videos, and of course essays. If you don't like my essays that try to explain the big picture read Chuck's essays or watch the videos of his presentations.

      When Chuck published all the menus in OKAD and all the functions, some equations and some examples of code I put it at my site. He was not free to publish all the details. I have used OKAD. Can I answer any of your questions about it?

      Jeff Fox
      UltraTechnology

    2. Re:Using OKAD by de+Selby · · Score: 1

      I say evasive because when I click on the "Forth" button, I get pages and pages of strong claims and apparently no evidence offered to support them. They just are. (We all know strong claims require strong proof.)

      I guess you are saying the evidence is scattered about in that verbose mess somewhere. I'll keep looking.

      It would be helpfull if when you say, for example, factoring is the key to this, you briefly explain what factoring is. Without defining it as it's used, it stops being the key to everything and becomes the magical-mystery key to everything. (I shouldn't need to scroll down some other page to know what I'm reading now.)

      When speed is supposedly increased by great amounts or size is reduced to near nothingness, explain exactly how and at what cost. The best evidence for some Forth advantage might be identical programs written in several languages (Forth, C, Asm) on the same architecture.

      My skepticism kicks in when all positives and no negatives are spoken, and that's what I'm seeing. Everything has a downside and it's necessary to know what it is. Faster, smaller, less debugging time, less bugs, quicker to learn, and more perfect in every way does not reflect reality.

      Many comments Chuck makes kick in my cook filter. Such as: "Forth application code is 100 times smaller than 'C' code.", "One thousand instructions ought to be enough for anything.", "I can reduce the amound of code by 90% to 99%.", "There ought not be an OS.", etc.

      Worst of all, I hear things from others like, it's a lot faster than assembly. Everything seemed to point to cult, cook, or liar. The only thing that made me in any way unsure was the almost universal support /. gave to Forth. It was unusual.

      Because of /. i'll retract my stance against this for the time being.

  87. Delta compression? by CaseyB · · Score: 2
    Disclaimer: I know beans about genetics.

    But given that some large percentage of our genome is identical from person to person, I imagine we could be stored as a diff from a "reference human" in far less space than that.

    1. Re:Delta compression? by Anonymous Coward · · Score: 0

      Fun idea to try : find the mean of the genome as to have the global smallest sum of diff possible.

      Risk :
      * have assurance premium = f(diff)
      * discover some differents roots, and use it to classify people with a yet smaller ref(root)+diff, and see a big return of eugenism, racism and so on ...
      * and numerous other

      I know, science is not bad, it's the usage people make of it that can be, but if science only provide means oriented toward bad comportement, scientist are bad (or paid by big corp seeking profit only, which is the same).

      Of course, this whole thread is Off-Topic, and should be moderated as such.

  88. Chuck makes neat stuff, but... by Giant+Hairy+Spider · · Score: 2, Flamebait

    He also makes unrealistic claims and confuses toy systems with replacements for industry-standard systems.

    His processor designs are poorly specified and buggy as hell, and he just kind of glosses over that (and remember to mix in 3 or 4 NOPs between each useful operation to avoid overheating the chip...). His MIP counts are inflated, because his instruction sets approach turing-tarpit level. For example, if you wanted to do 64-bit floating point operations, you'd probably need to consume 40 or 50 machine ops for each addition, never mind more complex operations.

    This new chip is going to be completely I/O crippled and I doubt it will ever get past prototype stage.

    OKAD is to the VLSI CAD stuff used by people like Intel and AMD as ed is to MS-Word. Sure, it's smaller, cleaner, and in some ways much more powerful, but it's also strange, hard to use, and it doesn't do the same stuff. OKAD couldn't be used to design something like the Athlon, or even something like a 486. It's made to design tiny chips, like Chuck wants to make.

    He dismisses a lot of real problems. He claims that software is easy, but never writes anything hard. Everything is non-standard and isolated from the distressfully complicated real world. Basically, he makes it easy by making things nobody but he would want to use.

    The machine on my desk can read, interpret, and process thousands of standard data formats, connect to other computers using dozens or hundreds of standard protocols, recompile and run many thousands of legacy programs, and emulate almost every machine more than a few years old. When I want to do high-speed graphics processing, all the slow crappy code gets out of the way and doesn't matter any more. The machine he would replace it with would do none of these things, it would require all new software and would probably cost about the same anyway, after buying the RAM, hard disk (both for the vast amounts of data I want handy, which takes up far more space than code bloat), input devices, and monitor. That is, assuming it wouldn't need costly specialized versions of these.

    He's really designing specialized embedded chips, without bothering to specify (or specifying wrongly) what they are good for. A quirky Forth chip with 486-level performance, support for up to 2 megs of DRAM, and video out? What on Earth for? The toy computer in a mouse doesn't do it for me.

    And the new one: basically an embedded chip design, with a turing-complete but miniscule set of primitive integer operations, copied 25 times and laid out in a square array. Why, oh, why?!

    Do you know what they're talking about using it for? A replacement for PC server clusters! On the grounds that you can fit as many MIPs in one small box! Wow! 60,000 bogoMIPs! Never mind that the chief assets of a server cluster are the hard-drives and RAM...

    The I/O specs? Well, you could put an SRAM controller on the edge...

    Cache? 256 KWords (18-bit, of all things) off-chip, which must be managed manually. Sold seperately, O/C. Each processor has 384-word on-chip DRAM, into which you must cram your whole program, or stop to load in new instructions whenever you want to do anything else. All "cache" must be managed by code in this tiny space, too since there's no hardware support.

    Speed? Multiplication (18-bit) takes 125 operations. Realistically, we're talking under 500 MIPs, before taking into account the I/O problems and the difficulty of writing good parallel code. I'd be utterly shocked if you got more than 50 MFLOPs out of it, after some very careful optimization. Yeah, it's real supercomputer material.

    Now it's starting to look like a $1 chip, non?

    His Color Forth is very much like the BASICs on early home computers. They also served as both OS and interface. They were about as small, too, and provided essentially the same functionality. They were also tied inextricably to one platform. Hell, even MS got its start doing this stuff.

    And yeah, it would suck to be color blind. Whatever he says about using different typefaces, I wouldn't want to distinguish between 8 different kinds of text with "italic", "underlined", "italic-underlined", etc. If it worked decently, he would have used that instead of color in the first place. We're talking about a system designed around his own poor eyesight, which doesn't account for other vision problems, and doesn't provide real advantages for those with good vision. That's typical of his work: exactly what he wants, what nobody else wants.

    Yes, almost everything out there is bloated and ugly. The industry could stand to improve a lot. But Chuck Moore doesn't have the answers, in many ways he's just a smart-ass infatuated with some easy answers that don't work in the real world.

    On the other hand, Forth is a very nice language. I agree that it should be taught to children while they are learning arithmetic. It's as simple as languages get, and gives you an accurate model of what's going on in the computer (execute the instructions of this word, then this word, then that word...). I see it as just another language, not language/OS/universal interface. It's very, very good for small, isolated systems. Being an extensible language that relies heavily on globals, it's very, very bad for large team-effort software projects.

    Basically, read his work, but take everything with a grain of salt.

    --

    ---
    You'd be surprised at the broadband connection available to things crawling around in your hair.
    1. Re:Chuck makes neat stuff, but... by darkov · · Score: 1

      I think you're being a bit harsh here, pal. I don't think anyone is going to roll out 25xes to replace P4 desktops. For all the quite obvious reasons you stated, and more, it wouldn't work. But if you wanted parallel processing with low overheads (power, cost, development time) this chip is very interesting indeed. It is if course a prototype, not even cast in silicon it would seem, but as a concept it has plenty of merit. Any of the problems (heat, memory bandwidth, fp performance) could be ironed out and tweaked according what your design goals were.

      So, please, give the man a break.

    2. Re:Chuck makes neat stuff, but... by tius · · Score: 1

      Actually, combining a load of these processors in an array arrangement with a similar framebuffer memory arrangement would be a blitzkrieg fast image processing machine.

      Don't believe me....look up work on bit-serial processors and the AIS-5000 (I think that was the system name)...I saw a demo years ago...768 bitserial processors doing image processing tasks on x-ray images for an airport screening system.

      More processors are used in embedded systems than there ever will be in desktops.

      Though I would have to add that Forth is not a very maintainable language...if a monkey can't read it...then ye olde monkey won't understand it either.

      Cheers,
      Tius

    3. Re:Chuck makes neat stuff, but... by onepoint · · Score: 1

      >>His processor designs are poorly specified and buggy as hell, and he just kind of glosses over that (and remember to mix in 3 or 4 NOPs between each useful operation to avoid overheating the chip...). His MIP counts are inflated, because his instruction sets approach turing-tarpit level.

      What I found interesting is that in space ( shade side ) the chip could be usable. If you just need a fast speed at a cheap price this might be the chip.

      --
      if you see me, smile and say hello.
    4. Re:Chuck makes neat stuff, but... by jovlinger · · Score: 2

      A somewhat constructive question, but along the lines of the above:

      How will this 25X be programmed? It seems to be like the CM-1. You have all these tiny processors comunicating quickly, but with almost no local instructions or data.

      I tend to think that the compactness of Forth and the ~ 1 KiloInstruction availible to each processor will be enough to store a useful program in each core, while still leaving room for housekeeping chores. I'll be willing to accept that IO won't be a complete killer.

      But! I'm dammed if I'm going to sit and hand optimize the communication between 25 cores. What if I decide that my application really needs 25X25 cores? I mean, Occam wasn't that fun, nor was Lisp*. Ask Transputer or Danny Hillis.

      So for the question:
      Do you have any programming tools where I can express my algorithm in a communication neutral way, and then have it tuned for the architecture at hand? Or is it not that hard to make this architecture fly?

    5. Re:Chuck makes neat stuff, but... by UltraTech · · Score: 1
      You have a lot to say. Some of it is true. Some of it is not.

      Having worked with Chuck on these chips for a decade and having been programming manager at the iTV Corporation where I trained other people to program these kinds of chips I would like to make a few corrections. His claims about software are unrealistic for most other people, but accurately describe the software that matches well to his chips. I have many man years of experience with this. His mips claims are not inflated for his software or software that matches well to his chips. His claims were not meant to apply to the software that you describe.

      I brought him the idea of parallel processing Forth chips a decade ago and have done a lot of software and real systems since then.

      Our multitasker and memory manager with garabage collection and device managemnt fit in 1K. The jpg file read, decode, and display routine fit in 1K. The GUI library fit in a couple of K. Real programs, not bogomips.

      The 1/2K memories on the current 25X prototype is a variable that can be adjusted. More can be done prototyping and production costs are related to chip size and Chuck choose to keep it small for prototyping and to demonstrate how much can fit a $1 production chip. It is not a hard limit.

      People don't quite grasp the idea that with a 2400 MIPS cpu you can route gigabit datastreams on separare I/O pins and do megahertz analog signals on other I/O pins at the same time. The chip is a super programmable I/O engine that could route data at blinding speed in and out of all those uncommitted I/O pins. I don't quite know what you mean when you say it is I/O bound. It is a lot like a bunch of my F21 on the same die, same opcodes and same ability to program high speed I/O.

      But is hard to separate things like Chuck's keyboard from his CAD software user interface from the internals of his CAD to the internals of his new Forth designs, to the internals of his chip designs and what the chips are capable of doing.

      I worked for years doing simulations and benchmarks and writing real code.
      You can review the history of the project and learn more about it at the
      http:/www.ultratechnology.com website.

      UltraTechnology
      Jeff Fox

    6. Re:Chuck makes neat stuff, but... by jockm · · Score: 1

      MIPS is a fairly useless benchmark, especially when refering to MISC architectures. I'd like to see the SPEC numbers for the X18...

      --

      What do you know I wrote a novel
    7. Re:Chuck makes neat stuff, but... by zedtech · · Score: 1

      I think that Giant Hairy Spider makes some very valid comments about this design.

      There seems to be a lack of overall architecture (interprocessor & memory), the $1 packaged cost estimate is absurb (how many memory pins is he proposing?), and the performance does seem to be bogoMIPS. With little documentation though I can't really evaluate these things.

      Having been the iTv Corp. VP of Engineering where Chuck worked for many years I can speak with some authority on his comments about the underlying technology.

      A MISC architecture does has different performance characteristics than most common processors. While in some cases this results in requiring more short instructions I have found that the instruction efficiency is significantly higher than expected and usually code size (in bits) and execution time (in seconds) is significantly better than conventional architectures.

      Also to be remembered is that a variety of MISC designs can be created. For example, we made a MISC style processor with a multiply instruction and significantly improved arithmetic capability that we were able to implement an efficient C compiler in. We profiled the cache efficiency of this design and found it to be significantly more efficient than conventional architectures. These tests were performed running assembly and C code (didn't test Forth).

      Yes, the base kernel code is pretty small in any system (OS, GUI, network, etc.), but I can say that the code density with all of MISC-style designs that I have worked is very respectful. The value of this improved code density is of course only one design characteristic that the designer needs to consider.

  89. Law of Websites by swagr · · Score: 1

    Genius is inversely proportional to website quality.

    --

    -... --- .-. . -.. ..--..
  90. loopCounter by ahde · · Score: 1

    you mean "i"?

  91. The killer app for stack machines. by c13v3rm0nk3y · · Score: 1

    What is the "killer app" for the stack machines you are designing?

    --
    -- clvrmnky
  92. Why a stack machine? by Weasel+Boy · · Score: 1

    Among the touted benfits of Forth and the stack machine architecture are compact code size and high performance. However, you don't necessarily want to reduce the utility of an op to the point where it becomes a burden. The X18 may achieve 2400 MOPS, but when it requires 125 of them to do a multiply, performance can drop in a hurry -- and code size inflates.

    The 0-operand instruction set architecture appears to be credited as the primary enabler of the benefits cited above. Yet I wonder whether the stack becomes a bottleneck. The X18 web page states, "An address register is useful to reduce stack manipulation. It also supports incrementing to address successive words in memory. Similar use of the top of the return stack provides 2 addresses for memory-memory moves." This sounds to me like a tacit admission that having only a stack for operands is problematic. From the table of opcodes listed, it looks to me like over half of the instructions in the X18 architecture just push data around -- and duplicating instructions for the address register, return stack, and data stack really sort of belies the claim of 0-operand instructions; as I see it, the operand is just encoded into the instruction.

    In light of the above, I am led to wonder: How much of its time does the X18 or X25 spend manipulating the stack? How does this impact performance, code size, and programmer effort relative to an equivalent program hand-coded in assembly language or C for an architecture that uses general-purpose registers? How about Forth built for a GPR architecture? You appear to agree that more than one addressable operand register is needed. What is the right number?

    1. Re:Why a stack machine? by BruceMcF · · Score: 1

      One point to bear in mind is why there are two stacks. It entirely eliminates the stack frame building overhead (rather than managing or reducing it, as with register punning, etc.). That is what makes it efficient to program much shorter procedures and then use the procedures by name.

      Where is this missed above? In the assumption that the need to have X instructions for Y operation will inflate code size substantially. In fact, it will normally inflate code size by exactly X instructions, since it will exist once, in one word, and then used by calling that word. The data will be in the same format whether using a built-in opcode or a defined procedure. There is still a place for inlining code, but only when the inlined code substantially increases speed for either a reduction or only a mild increase in code size.

      Then there is the point that if you can afford 25 processors for less than the cost of a single CISC or RISC chip, you can have a couple of processors set aside as arithmatic servers. Break up a 20 by 20 multiplication in a time critical section (if its not in a time critical section -- let it run slow!) into 5x4x20, and then combine the terms by calling the serving processors in turn and adding the terms as they arrive on the stack.

      And unlike a CISC chip, the allocation of resources to tasks is not hardwired, so at a stage when there is not much mutiplication to do, you can fan out the parallelism of the chip.

  93. Stack-based MISC designs by oddityfds · · Score: 1

    I find your stack-based MISC designs very interesting. To me it seems that the basic idea is this:

    When all operations are stack-based, there are no operands, only operators. That means that the only variable in each operation is the operator. Also, the Minimal Instruction Set Chip (MISC) design means that there are only a few operators to choose from. Therefore, the result of every possible operation can always be precomputed by the chip before the instruction has been fetched from RAM. Each instruction is also very small, only a few bits each.

    Adding to this, the number of memory reads and writes is reduced by keeping the topmost value of the stack in a register instead of in RAM.

    Is this a good overview of how your earliest MISC chips worked, and if so, how much of this has changed in your newer designs?

  94. Language types by nagora · · Score: 2
    There used to be three major laguage families: Algol, Lisp, and Forth-types (lots of varients on these and lots of others minor families, I know). Forth and Lisp were popular enough to support hardware systems running them natively but in the end the Algol family (in the form of C, C++, Java, and Perl etc.) became dominant.

    Why?

    Many people complain about the RPN and many other argue that factor that can't be enough of a reason to spurn a language of the quality of Forth, but is it actually that maths as taught in schools the world over really does give languages like C a huge "familiarity bonus"?

    --
    "Encyclopedia" is to "Wikipedia" what "Library" is to "Some people at a bus stop"
    1. Re:Language types by markmoss · · Score: 2

      True, in the early days most programmers had degrees in a mathematical field (math, physics, engineering), and that certainly biased them towards the familiar-looking Fortran, Algol, and their descendants. But I think it's not just that the algebraic-type languages look more like the math you learned in school, but that algebraic notation went through centuries of evolution to become as easy for humans to read as possible.
      Another factor is that Algol and its descendants visually break up the code more than Lisp and Forth usually do, making it easier to see the structure. (This depends on the programmer, of course -- anyone with a smidgen of artistic ability and any concern for those who must follow him can add white space to make any language look good. But the average hacker seems to be lacking in either artistry or concern for maintainability. I've even seen Pascal code run together until it was unreadable. But the varied grouping elements in C (parentheses and curly brackets) give it some visible structure even when the indentation is snafu'd. Lisps all-parentheses is harder to parse visually, and I've seen Forth programs presented as a single string with no breaks at all.)

      Who is saying "what's Algol?" It was a structured language created by a committee of mathematicians around 1960, before anyone thought to call it "structured programming". It had most of the ideas you find in Pascal, C, Modula 2, and filtering back into the originally unstructured Fortran, cobol, and basic languages. It also had a lot of ideas which turned out to be either unimplementable or just plain bad. If you want to see just the good parts of Algol, learn Pascal.

      It had blocks separated by begin and end, which allowed you to replace the single statement controlled by an if with a whole group of statements (C turned that into {} for faster typing), plus the whole nine yards of "structured" languages (while, for, etc.). For wasn't new, FORTRAN and COBOL already had equivalent loop statements, but using blocks instead some hokey syntax to delimit the loop was new. Algol might have been the first to make the variable names in a subroutine independent of the names in the main and other subroutines. It had rules for variable scope that only a mathematician could love -- e.g., you could define a function inside another function inside main, and it would have access to the outer function's and main's variables, besides having its own local variables. (C simplified this to each function having its own distinct set of variables, and blocks being allowed to have local variables plus inheriting the next level's.) It introduced := for assignment, to distinguish this from = for comparison in an if statement. (C kept the single character = for the most common usage and == for the less common comparison operator.) It had several different ways to pass an argument to a function: call by value (C directly uses this only), call by reference (passing a pointer in C, but C++ brought back references in a more general way), and call by name. (Wirth, the Swiss creator of Pascal and Modula 2, is supposed to have explained how to pronounce his name by saying, "You can call me by name, "Veert", or you can call me by value "Worth". You never heard a professor of mathematics and computing tell a joke before?)

      Call by Name seems to have been both hard to implement and a basically bad idea. Since a function could access the variables in the calling program, all the way up to the main program, the original language definition seems to say that a function could actually call a subordinate function that would change the invisibly change the value of the first function's argument, and if it was by name the first function should use the new value henceforth. Uhhg! The second edition of the standard (which I long ago discovered marked down to about 10 cents in hardcover and still have packed somewhere...), discussed this and various other language features that were impractical with the compiler technology of the time, but didn't actually say what to do about it. So I guess each compiler writer implemented a different subset of Algol. Fortran and Cobol maintained fairly good compatibility, Algol started out incompatible, so it died except as an inspiration to others.

      In the 1970's, Wirth finally handled it right: he named his favorite Algol subset "Pascal" and pushed it as a standard language. But it didn't compete too well with the more hacker-friendly C. It told you when you f*d up and didn't let the program compile, while C just assumed you knew what you were doing... Borland gave a version of Pascal a new lease on life by writing remarkably fast compilers for it (after, I presume, changing whatever part of Wirth's standard made it slow to compile but mathematically correct) and selling them cheap, but it was still treated mainly as a toy language -- good for learning to program, but to do real work you used C which didn't complain when you did something odd with a pointer. Even though most of the time it was a mistake... But I don't think it's possible to write a hardware driver in Pascal, it will think your reads and writes to hardware are a mistake.

  95. Eating your own dogfood by markmoss · · Score: 2

    Chuck's CAD system used to design his processors is written in colorForth. That is really eating your own dogfood! I have some idea of what goes into writing a schematics and board layout CAD system from watching a couple of vendors struggle through the transition to GUI's. IC design is much harder. Amazing to see it done by one man. Can I download a copy somewhere?

    Note that it wasn't used to design something equivalent to a Pentium. I think it was used to design a much simpler but not too slow CPU, and then replicate that 25 times with interconnections. And the user interface is often the hardest part of a program; Moore may have left that as simply a text console or something that takes a lot of work for anyone but the programmer to master. But still, I would think that to write a CAD program to do even that much well would take a a large programming team, and various routing algorithms that are held as trade secrets or patents by large corporations.

    Mr. Moore, are the specs or a demo on the web somewhere?

  96. type systems for Forth by rodprice · · Score: 1
    Long ago, I used Forth for signal processing work for my master's thesis. The incredibly simple syntax and semantics were (and are) great. Recently, I read a claim that Forth is a functional language, in the same class as Scheme, ML, Haskell and so on. This was a surprising thought, as I had considered Forth as simply the right way to do an assembly language.

    So here's my question: has anyone considered adding a modern type system (e.g. Hindley-Milner) to Forth? Other typed assembly (intermediate) languages are appearing -- see http://flint.cs.yale.edu/flint/ for a nice example -- why not Forth? Static type checking in a mathematically rigorous context is a natural fit to a functional language; IMHO it's a wonderful aid to the programmer, and done right adds almost no overhead.

  97. literate programming in Forth? by rodprice · · Score: 1
    Long ago, as I mentioned in another post, I used Forth to build some signal processing code. In addition to simple syntax and semantics, the remarkable ease of interaction with Forth was a revelation. Only good Lisp programming environments come close -- and they require a lot more code.

    The trouble was, I couldn't read my code a month after I wrote it. The screen-based editor just didn't provide the flexibility I needed for documenting what I had done. Has there been work on, say, literate programming for Forth? Or even just a better editor?

  98. Object-Oriented Languages on top of Forth by Anonymous Coward · · Score: 0

    Is is practical to use Forth in conjunction with an object oriented language? For example could you build a tighter Python interpreter (or JVM) in Forth rather than C? Forth seems to be closer to the machine than C, so it seems that you might be able to use Forth rather than C for portable, low level function calls.

    1. Re:Object-Oriented Languages on top of Forth by Anonymous Coward · · Score: 0

      As mentioned in other threads, the JVM is a stack machine, and is thus a natural application for Forth. Several "Forth chips" are now being marketed as "Java chips".

  99. direction of microproccessors by NovaX · · Score: 1

    From what I can see, current microproccessor ISAs are predominately serial, grabbing a job, filling up the pipeline blocks as well as possible, and using branch prediction/OOO to better fill the bubbles. They try to get a decent IPC, and crank it up immensly so the bubbles propigated will quickly move through the processor.

    But new chip designs are moving towards a parrellel approach, either on these serial processor arhitectures (SMT, multi-core chips), or the ISA itself (HP's EPIC). EPIC and SMT fill in the bubbles more efficently, while the multi-core chips I assume just allow each thread to run on their own chip so more work can be done at the same time.

    It seems to me that EPIC makes it easier on the average programmer, but harder on the compiler desginers. SMT boosts the incentive of using threading by programmers, and multi-core really forces programmers to deal with threads for optimal performance. Since threads can be a hassle, EPIC to me seems the cleanest.

    As a chip designer, where do you think the future of microprocessor desgins should and will go? As someone who designed a multi-core chip, why did you choose this route?

    --

    "Open Source?" - Press any key to continue
  100. Forth Zealots by rossz · · Score: 1

    I used Forth many years ago. When you wanted a development system ported quickly, it was an excellent choice. The downside of Forth is when you started developing large programs. It's simply not a good choice because it is such a read only language.

    The part I hated the most about Forth was the fanatism of its followers. I remember one argument where the zealot insisted an optimized Forth program is faster than assembly language. That is an outrageous statement completely unsupported by the facts, yet he would not relent even after I proved otherwise.

    I've since learned not to argue with religious fanatics.

    --
    -- Will program for bandwidth
    1. Re:Forth Zealots by Anonymous Coward · · Score: 0

      An optimized Forth program CAN be faster than an assembly language program.

      A programs speed is a factor of three things:

      1. The algorithm that implements it.
      2. The speed of the individual instructions that implement the algorithm.
      3. The overhead involved in passaing any data and parameters around.

      Let's look at each point.

      1. The algorithm that implements it. Forth allows rapid prototyping, is is VERY possible that after playing around with several ways to solve a problem, a better algorithm will be discovered by the Forth programmer. An assembly language progammer is more likely to stick to one algorithm and optimize it, instead of trying different things and discovering a faster algorithm (which could then be optimized).

      2. The speed of the individual instructions that implement the algorithm. Yes, Forth has more overhead than assembly. However factors 1 and 3 tend to make up for that. Also, once a proper implemention has been arrived at, it can easily be converted to assembly, to incrase its speed. Good Forth programming practice tends to make words (functions) 7 or 8 instructions long. These are easy to convert to assembly. So it is possible to get the best of both worlds.

      3. The overhead involved in passaing any data and parameters around. Forth, by desing, uses two stacks, a return stack, and a parameter stack. When used properly, they allow for code with little overhead for parameter calls. Every function and call passes data in the same manner, it alows for recursive, rentrant code by its very nature. The same thing can be achieved in assembly, but requires more work on the part of the programmer, thus is less likely to be achieved.

      I will glady admit that IF someone working in assembly toiled till they had tried several algorithms and recoded those several times, chose the fastest one, optimized it, using instructions that executed in the least amount of time, and used data interfaces that very qucikly passed parameters, the assembly programmer will end up with faster code.

      I will also glady admit that it is more likely a Forth programmer will arive at a more optimal solution that the "first one they looked at", recoded and optimized it and benefited from the speed and nature of how Forth does this. This is both more likely to happen, and happen in a shorter period of time.

      I know for a fact, that unless I have a VERY large body of libraries in assembly that I am familure with, so that I can write most of the project with canned code. I am more likley to arrive at an optimal solution in a shorter period of time in Forth.

  101. Re:Market Niche - Dvorak by SlipJig · · Score: 1

    I use a DvortyBoard (http://www.dvortyboards.com, ~$70). It's equivalent to a fairly cheap PC keyboard, but nice because 1) it's cheap compared to the fancy ergonomic models, 2) it's dual-labeled for Qwerty and Dvorak, and 3) you can switch it between the two modes with a single keypress (it's hard-wired). Comes in handy when your significant other (who can't/won't learn to remap the keyboard) needs to use the computer. Remapping is a pain in its own right, anyway.

    --
    Read my keyboard review.
  102. Logarithmic scaling of software by mlosh · · Score: 1

    Can you explain why Forth software tends to scale logarithmically in size as application complexity grows, as opposed to linear or exponential scaling of more mainstream development practices? As a longtime Forth follower, I understand this phenomenon to be a result of highly aggressive modularization, which you call "factoring. Can you describe how this seems to be more successful in Forth?

  103. Chuck's Karma by bromoseltzer · · Score: 1
    One of Forth's main "wins" in the 70's was as control software for radio telescope pointing and data systems. That was of course very much pre-GUI. There were no real-time operating systems, no interactive editors, and not even disk drives. (like the SDS-930) Memory was enormously expensive.

    Forth could work really effectively in that environment, and Chuck got traction. But I think he is on a mission of a higher level, which I struggled to understand as a radio astronomer. It was about complexity before there was "complexity" as a theory. It's also about being "green" - using the hardware's capability fully. No bit or gate goes unused. No more RAM or I/O than is minimally required. It's about using your brains - it's a good thing to spend a whole day getting one line of code right.

    So my question to an old friend - is the meaning in the Destination or in the Journey? Does Forth's market penetration matter at all? Or is it the fact that a few of us see the world a little more clearly?

    -Martin Ewing

    --
    Fiat Lux.
  104. Marginalizing of the blind by Medievalist · · Score: 3, Interesting

    When I built my first Internet node, the web did not yet exist, and one of the amazing things about the Internet was how friendly it was to the blind.
    Now, with some computer experts estimating that over 50% of the Internet is incomprehensible to braille interfaces, and most computer operating systems devolving to caveman interfaces ("point at the pretty pictures and grunt") we seem to be ready to take the next step - disenfranchising the merely color-blind.
    I realize that colorforth is not inherently discriminatory, in that there are a great many other languages that can be used to do the same work. The web is also not inherently discriminatory, because it does not force site designers to design pages as stupidly as, for example, Hewlett-Packard.
    Would you care to comment on the situation, speaking as a tool designer? How would you feel if a talented programmer were unable to get a job due to a requirement for colored sight?
    --Charlie

    1. Re:Marginalizing of the blind by BruceMcF · · Score: 1

      I thought I would just point out that the "colourisation" is applied with a small collection of colour-change tokens that display as spaces. A text reader could generate distinctive tones of voice for each colour. A ColorForth editor for someone colour blind could "colour" the code with font changes instead of colour changes.

    2. Re:Marginalizing of the blind by Anonymous Coward · · Score: 0

      An editor, could just display color forth as standard forth code.

      Most of the color chanes are just the conversion of a few language tokens.

      I.E. function-being definedcode of the function next-function

      is really just

      : function-being-defined
      code of the function;
      : next-function
      code of next function;

      There is nothing that color forth does with color that is either not already implemented as a standard forth word, such as : and ; in the example above, or could be added by creating a new word for some concept implemented by color coding.

      The difference between Forth and ColorForth could be bridged with an intelegent editor for the color blind and diehards who like the old way. (I don't want to give up : and ;)

    3. Re:Marginalizing of the blind by Anonymous Coward · · Score: 0

      An editor, could just display color forth as standard forth code.

      Most of the color changes are just the conversion of a few language tokens.

      I.E. <red>function-being defined</red>
      <blue>code of the function</blue>
      <red>next-function<red>
      <blue>code of next function</blue>

      is really just

      : function-being-defined
      code of the function;
      : next-function
      code of next function;

      There is nothing that color forth does with color that is either not already implemented as a standard forth word, such as : and ; in the example above, or could be added by creating a new word for some concept implemented by color coding.

      The difference between Forth and ColorForth could be bridged with an intelegent editor for the color blind and diehards who like the old way. (I don't want to give up : and ;)

  105. Small systems for small systems by marxmarv · · Score: 2
    I've been a user of several self-hosted language environments, and a friend of mine has done major Forth hacking for the past ten years or so. From what I understand, the beauty of Forth is the extensibility, the tiny footprint, and the closeness to the metal.

    Wouldn't this make Forth and similar small-footprint environments a natural choice for devices such as sub-$100 PDA's, and why does it seem that line of development is completely unexplored?

    -jhp

    --
    /. -- the Free Republic of technology.
    1. Re:Small systems for small systems by mykdavies · · Score: 1

      How hard have you actually looked?

      lame junk text added to outlame the lame lameness filter

      --
      The world has changed and we all have become metal men.
    2. Re:Small systems for small systems by marxmarv · · Score: 2
      PalmOS isn't written in Forth. My question was, why isn't it?

      -jhp

      --
      /. -- the Free Republic of technology.
  106. Portability and Libraries Overrated? by mlosh · · Score: 1

    You have said in the past (or at least implied) that portability of system and application code is not worthwhile, which flies in the face of software industry. How do you justify this position considering the popularity and success of systems and tools designed for portability such as *BSD, Linux and the GNU toolset?

    Similarly, you complain that use of software libraries tend to provide solutions that are bloated, slow, and otherwise sub-optimal. Obviously, some common set of routines or primitives is required. What is, in your view, the proper level of abstraction for the core set of software routines? What do common libraries (C Standard Library, Win32 API, Qt, etc) get wrong? Are there not may application domains where programmer productivity outweighs run-time costs? Conversely, which application domains really demand the custom-fit, non-library approach?

  107. Making a living as an independent chip designer by mlosh · · Score: 1

    Do you get more income from licensing your designs and related technology? From consulting? From something else? Is there much room for a "computer cowboy" in the industry?

  108. forth by Anonymous Coward · · Score: 0

    If forth is as amazing as you state, why aren't standard linux drivers being ported to it? Your 1:100 lines of code forth to C proposition makes it sound like coding drivers should be a couple-hundred-line walk in the park.

    1. Re:forth by BruceMcF · · Score: 1

      GREAT question! I would think its because of the C base for the kernel, so it would be mostly be for loadable drivers. Hop over to the Cliunux site at www.clienux.com to get one person's opinions on some roles of forth in Linux, and grab the eforthl package from the interim directory at the ftp site at

      http://www.ibiblio.org/pub/linux/distributions/cLI eNUX/interim/eforthl.tgz

      to get a minimal forth with the linux OS calls as built in procedures. Of course, the rub is that this is not a full featured implementation like you would get from MPE or Forth Inc., so there would be a lot of sweat equity involved in "rolling your own" for a lot of stuff you could get from libraries in C. However, an advantage of Open Source is that with access to the source, you can follow what the library is doing down to system call level, and then work out which parts you really need to port for the exact capability that you need.

      Once you get the ball rolling, extending a Forth application is a fairly natural process, so it makes a lot of sense to build the application to exactly what you need, and the extend to meet new needs later, when they arise.

  109. not your dads microprocessor by spoggle · · Score: 1

    I think you need to avoid the pitfall of thinking of a processor such as the 25x as general purpose. If this works, you're talking about more fundamental applications, like graphics processors, drive controllers, etc. implemented on a general purpose (sort of) processor. It would be very sweet to upgrade my video card with a software download - and not just like bug fixes and patches but whole new algorithms etc.

    It's applications in communications are even more profound...

  110. It is hard to read. Get over it. by jotaeleemeese · · Score: 1

    The way Forth is designed is not the way we learn to read, mathematics or many other things.

    What is great to make the language compact and efficent is just plain horrible when a human tries to read the code.

    I can have a go to try to understand code in other languages written by programmers with little regard for the people that will read the code. Such programmers writing Forth make the task impossible.

    --
    IANAL but write like a drunk one.
    1. Re:It is hard to read. Get over it. by Anonymous Coward · · Score: 0

      I wonder if RPN is such a hurdle because some people are mentally unable to switch orders at will, or simply because they don't even want to try it, or when trying it they expect to become as fluent in five minutes as they are in infix. My gut feeling is that a reasonably smart person should be near-fluent in postfix notation after a couple of hours, if they aren't prejudiced.

    2. Re:It is hard to read. Get over it. by jotaeleemeese · · Score: 1

      Just add up two numbers, write it down in English (or whatever is your language):

      2 plus 2 equals four

      Now, design a language that says

      2 2 plus equals four

      The first member of the equality is completely different. That is what make it difficult to understand.

      COmputer languages don't grow in isolation, they have to adapt to the person, not the other way around.

      --
      IANAL but write like a drunk one.
    3. Re:It is hard to read. Get over it. by Anonymous Coward · · Score: 0

      But ... Try it for a real world problem! Three apples plus seven apples plus 35% profit, and three oranges at 14.5% profit, then add 6.5% tax. You're either going to have to use memory, or a pencil.

      Or do it the easy way: 3 7 + 1.35 * 3 1.145 * + 1.065 *

      You can calculate it just the way you read it!

    4. Re:It is hard to read. Get over it. by lelmore · · Score: 1

      The problem with your example is that there are many human languages that are object->verb (postfix) order. German and Japanese come to mind. Some other languages are at least as radically different from English as Forth is from C. It's only a matter of familiarity, not basic "rightness". Matrix math in C doesn't much resemble the mathematical notation, either, but I haven't heard that used as a reason why C shouldn't be used for that. As an alternative example, you could write a problem as you'd actually solve it on paper: 2012 1776 1865 + 1588 ------- 7241 Looks a lot closer to either postfix or prefix notation to me. You can write obfuscated code in any language. C can be really _horrible_ to read and understand when pointers are involved. Also, it's an almost trivial exercise in Forth (or Lisp) to add infix capability, and such packages have been around a _long_ time. There are very good reasons why very few programmers experienced in either of these languages have any use for them. William Tanksley previously covered some of them.

  111. Serious questions only, people by thejake316 · · Score: 1

    Yes. Mr. Moore, don't you think Flanders is a big jerk?

    (10 bucks says this will be my first Homer quote that doesn't get modded up to at least 4!)

    --
    AC's cheerfully ignored
    1. Re:Serious questions only, people by Anonymous Coward · · Score: 0

      Don't you hate pants?

  112. FFP, Combinator Calculus and Parallel Forth by Baldrson · · Score: 3, Interesting

    In his 1977 Turing Lecture, John Backus challenged computists to break free of what he called "the von Neumann bottleneck". One of the offshoots of that challenge was work on massive parallelism based on combinator calculus, a branch of mathematics that is far closer to Forth's formalism than parameter list systems (which are more or less lambda calculus derivatives). The prolific Forth afficionado Philip Koopman did some work on combinator reduction related to Forth but seems not to have followed through with implementations that realize the potential for massive parallelism that were pursued in the early 1980s by adherents of Backus's Formal Functional Programming paradigm. Given recent advances in hierarchical grammar compression algorithms, such as SEQUITUR, that are one step away from producing combinator programs as their output, and your own statements that Forth programming consists largely of compressing idiomatic sequences, it seems Backus's original challenge to create massively parallel Formal Functional Programming machines in hardware are near realization with your new chips -- lacking only some mapping of the early work on combinator reduction machines. It is almost certainly the case you are aware of the relationship between combinator reduction machines and Forth machines -- and of Backus's challenge. What have you been doing toward the end of unifying these two branches of endeavor so that the software engineering advantages sought by Backus are actualized by Forth machines of your recent designs?

    1. Re:FFP, Combinator Calculus and Parallel Forth by rodprice · · Score: 1

      The reference you gave, Mago and Middleton, The FFP Machine: A Progress Report", is really obscure. Citeseer can find only one reference to it. Can you point to a more widely-known article? Also, a search on Citeseer for the phrase "Formal Functional Programming" turns up nothing. Details, please?

    2. Re:FFP, Combinator Calculus and Parallel Forth by Baldrson · · Score: 2
      A pretty good survey of the relationship between FFP, lambda and combinator expressions in functional programming is at this write-up on the Joy programming language.

  113. Forth as a component of a standard OS? by smell_the_glove · · Score: 1

    Historically, Forth has been strong in environments such as embedded systems where small code size was of paramount importance. In such environments, as in color Forth, the OS is also written in Forth. Do you see any role for Forth (color Forth or any other dialect) as a language that can be used productively on top of a standard OS e.g. Linux? Or does Forth have to control the whole show in order for its strengths to show themselves?

    1. Re:Forth as a component of a standard OS? by BruceMcF · · Score: 1

      This is a very good question. It gives Chuck an opportunity to talk about what some in the Forth community see as the differences between a ColorForth-ish approach and the ANS Forth standard approach. Are the full featured systems from Forth Inc. and MPE, for systems from Unix through Windows through embedded systems, a waste of time? Should people writing Open Source software ignore the possibility of adding gforth as a weapon in their armoury? Should people writing in C, whether for Windows or Linux, ignore the possibilities of using Forth as a built-in scripting language using FICL?

      IMO the answers are NO, NO and NO, and despite Chuck's criticisms of the standardisation process and where it might take Forth, that a "horses for courses" strategy means there are situations where it makes sense to "roll your own" system, all the way down to the hardware level, and there are situations where it makes sense to "go along to get along". You might lose some of the factors in Chuck's "1000 times" along the way, but you still get the interactive command line debugging of each and every routine before the routines are put to use, the support for efficient factoring down to routines of one to four lines (unlike stack frame languages like C), and flexibility to extend Forth into the language that fits your problem.

      But that is guessing what Chuck might answer ... I can't wait until the answers come out.

  114. Re:MIPS, But Not much I/O - What apps work well on by Thing+1 · · Score: 1
    ...but it looks like getting data on and off the CPUs from memory is the bottleneck, especially since the CPUs implement this in software...

    I don't know much about hardware design, being mostly a software guy, but I wonder if the job of pumping data to the processors couldn't be done by just one of the 25 processors.

    In order to do this, it would have to communicate with the other 24 processors, to see how many instructions they have in their cache. Since there are 5 horizontal and 5 vertical buses, other processors would have to be "routers" for the data. If the top left CPU was handling the caching, then the left edge (4 CPUs under the top left) would hand off messages. 4 of the CPUs (to the right of the top left) would be able to send directly to the cache CPU (as would the left edge).

    Another simpler idea is to have 5 of the CPUs (the top row) handle the caching, so each one can communicate with the other 4 CPUs in its column. And if necessary, the cache CPUs can talk to each other.

    Since there are 384 words in each processor, the topmost processor in each column could load 96 words for each of its 4 CPUs. Then, feeding them more instructions would be as fast as the CPU bus.

    Perhaps he could even make the cache CPUs different than the rest -- so they have more memory, 1536 words, so they can cache 384 words for each processor. And tweak them for memory access.

    Question? What do you think of the above?

    --
    I feel fantastic, and I'm still alive.
  115. Metaphysical implications/inspiration sources by Pepix · · Score: 1
    I started using Forth back in 1984 with my ZX Spectrum and with a Jupiter Ace. My master thesis was about a Forth-like language for PC in 1989. Since then, I have regularly returned to Forth for inspiration. I even have an unfinished but operational project of an optimizing native code Forth compiler for PIC microcontrollers.

    I have always thought that Forth has a certain Taoist approach to the issue of computer programming and problem solving (not to mention that binary computers do all their magic by means of the interaction of the 0 and the 1, like the Yin and Yang). Note that, while I don't consider myself as a Taoist, I try to see the metaphysical and the practical side of things. In an interview about retrocomputing for the Spanish magazine Arroba, I said just that Forth could help in understanding the Universe, as everything in it is an active process, much like in Forth everything is an executable word, even variables.

    Now, my question is: What kind of metaphysical/philosophical implications do you think Forth has, and what are your inspiration sources? Thank you.

  116. Prefix, infix, postfix, and natural language by yerricde · · Score: 1

    algebraic notation is much easier for humans to comprehend than reverse polish notation

    Not necessarily. Most English-like languages follow verb-object (VO) order (print x), but speakers of object-verb (OV) languages such as Japanese and Klingon tend to be more comfortable with programming languages that follow object-verb order (x print)

    By the same token, infix notation (3 + 5) comes naturally only to those whose natural languages are infix, which includes most of Europe and the Americas. However, Irish and several Afroasiatic languages are prefix, which makes the (+ 3 5) syntax of Scheme more palatable, whereas Japanese is postfix (3 5 +) like Forth.

    See also Fith

    --
    Will I retire or break 10K?
    1. Re:Prefix, infix, postfix, and natural language by Anonymous Coward · · Score: 0

      I've never seen it as a problem to think in postfix, prefix or infix, as long as the code is indented properly. Proper indentation means that the arguments of an operation show out visually; and these days you can leave the indentation pretty much to the text editor. Note also that most so-called infix languages use prefix notation for function calls, and no one seems to complain about that.

  117. Application programming issues. by Fixer · · Score: 1
    As a fifteen year-old, I tried to learn forth. Almost succeeded. Several years ago I went back and learned it to a point where I could at least implement small functions.

    More recently I've taken up the study of Scheme, and I must say, I feel alot of similarity between the two worldviews.

    But my daily work is Perl and C, doing web-applications. And I'm trying to break into the games industry. Both of these types of work share something in common: Code and "content" (business rules, user interface, etc) are tightly bound together and are difficult to abstract apart from each other. You'd think that a language that encourages easy extension and manipulation would be ideal in environments that have frequently changing demands. Nope.

    Because my code has to interface with systems I don't have control over, and that those systems operate in a fashion difficult to cope with if your language doesn't share similar data abstractions, I have to use the same tools. Essentially, because I can't re-write everthing that my apps have to cope with, I need to use tools that make working with those external resources easier.

    A convoluted way of saying: Because 3dsmax is a common modeling system, and that many, many programs work with its format, I have to as well, and I need tools which make that easier.

    But I love the power and flexibility that the less-popular languages offer, such as Forth and Scheme. I'd love to be able to use those languages in my daily work.

    So my question is, what steps are being taken to make Forth friendlier to application development?

    I realize that Forth may not be the best language for, say, web development, but that is only because no one has bothered to write the tools and extensions to make it better. But in order to cope with highly structured data (like the results from an SQL query), wouldn't a type system be a useful core feature?

    --
    "Avast! Prepare for the rodgering!" THWACK! "Arrr.. me nards.."
  118. roll your own compiler by sg_oneill · · Score: 1

    CHuck, being somewhat of an old time Forth nut , first let me point out that I'm a big fan. It was(is!) one of the most elegantly simple languages yet blitzkreigingly fast languages I've come across. Everything is a stack. Simple!

    Anyway, One of the thing's I've liked about forth is that implementing a simple (subset) compiler for new platforms is stupidly easy for forth, I've rattled of basic compilers for subsets of forth in single days in the past. Was this a design consideration when you designed the language?

    --
    Excuse the Unicode crap in my posts. That's an apostrophe, and slashdot is busted.
  119. What's Your Design Method/Async perf variation by silentmusic · · Score: 1

    First a question that might be of interest to a broad audience:

    If your designs are truly asynchronous then their performance will noticibly change with variations in process. How does a supplier explain why units sold on a Tuesday work faster than items on a Wednesday? With synchronous logic we (with the exception of the overclockers) generally give up some performance but get consistent performance by using the same clock rate on all systems. I ask this question because Weitek once made a Sparc FPU which could operate faster than a competitor's by enabling a special mode, but Sun would not use that mode because they didn't want customers complaining that they got a "lemon" with one of the slower chips. (They required a second source.)

    And to round it out how about some detail for the hardware guys in the audience:

    What tools/languages do you use for design, simulation, synthesis, test generation, place and route, clock tree synthesis, timing analysis, boundary scan, power estimation,...? Do you use Unix? Source code control? Have you tried prototyping in the Xilinx Virtex FPGAs?

    Have you gone away from the COT (customer own tools) approach? Do you use vendor supplied libraries? If not how do you validate your libraries?

    Have any of your hardware designs go into full production? What yields did you achieve?

    How easy is it for somebody to integrate your cores into their own ASIC? Can any Verilog RTL jock do it, or do you need experienced full custom chip designer expertise and a COT flow?

    --

    Things are not as they appear, nor are they otherwise.

    1. Re:What's Your Design Method/Async perf variation by zedtech · · Score: 1

      Asynchronous speed variation -> The key is to not rely on it. With the i21 the speed variation was less than 5%. Not enough that you would generally notice the performance difference between two units. Certain I/O related portions of the design were implemented synchronously.

      tools/languages -> Chuck relied on OKAD which runs under DOS completely. iTv Corp. (who employed Chuck for the i21) had the usual collection of standard ASIC tools and environment available to back-up/analyze the OKAD based design as well as doing other designs.

      prototyping in the Xilinx Virtex FPGAs -> Except for a few drawings on paper, I have only seen Chuck use the OKAD layout in the design process. After the i21, iTv Corp. designed a new processor in the same architectural theme as the i21, but completely new in a traditional design flow. It was prototyped using Xilinx Virtex FPGAs and had very good performance compared to a similar RISC processor.

      COT -> Don't know what Chuck is doing currently, but in the past everything was built on his own library model. Sadly, all libraries (vendor supplied or not) have to be validated in the fab.

      Production -> Unfortunately the Internet appliance market has not grown as big or as fast as we had hoped it would.

      Easy integration -> Yes, if you know how to integrate any other hard core in your design. I set-up a process and design flow to do this with the i21, but ended up not using it.

  120. Re:Object-Oriented Programming in FORTH by jhhl · · Score: 1

    As a seasoned FORTHer [I used CSI MultiForth and then the excellent jFORTH by Phil Burk to write my popular program RGS - and others - for the AMIGA], I can say, Yes, there are object oriented FORTHs, such as ODE (Phil Burk again.. the basis of HMSL) and NEON.
    FORTH is different form other langauges in that every "program" actually is an extension to the language, and you can also create compilers and assemblers very simply. Once you have wrapped a FORTH word around a piece of hardware, you can abstract it as far as you want to!

    --
    -- Real Stupidity is the Artificial Intelligence of the 21st century
  121. A little about Forth by LongShip · · Score: 1
    First, a small caveat here. I used to be a Forth expert, but that was in the 70's and 80's. Forth has changed much since then. When I write of Forth, I am writing about the Forth I knew back then. I'm not sure if I would be an expert in the Forth systems of today. But I cannot imagine that things have changed that radically that my comments wouldn't apply in general to today's systems.

    One starts understanding Forth by thinking small. What makes Forth still an attraction for many computer users, even after three decades, is what made it so attractive in the first place. It goes very fast in very small places. In the 1970's, Forth was attractive because all computers were small. Today, there are still many applications that have need for small programs on small hardware. NASA uses Forth in space. Almost any application that puts a premium on small program size could use Forth. The embedded market comes to mind.

    Forth is its own language, its own development system, its own API, and its own user interface. (Some also say that Forth is its own religion, but I digress.) Traditionally, Forth is built directly on top of the hardware so there is usually no operating system. This is something which it does particularly easily and well. With Forth, one doesn't need an OS. That hasn't stopped people from extending Forth so that it does run on an operating system. There are multiple Forth implementations for Linux. There's one that runs on the Palm Pilot, too.

    Forth is extremely interactive. Working in Forth means interacting with Forth from beginning to end of a project. Forth is its own toolset. It includes editors, compilers, interpreters, etc. Often sophisticated tools unheard-of in other computing domains are available, like meta-compilers for compiling whole Forth systems from old ones, decompilers and disassemblers for creating source code from compiled code, and other fanciful things.

    Windows users inevitably chafe at Forth. Not able to understand a simple Unux console where one is able to do everything a Windows user can do, the Forth console seems like a desert. To every typed command it responds with either cryptic gibberish or the equally puzzling ok. There is not only no graphical hand-holding, there isn't even an operating system to comfort the user. To the uninitiated it seems unnecessarily barren. To the everyday Forth user, that's just fine.

    The Forth language and tools are small. There is only a rudimentary parser implementing an absolutely context-free and grammar free language. There is no error trapping unless you put it in yourself. All data is stored on a push down stack which operates with RPN just like an HP calculator. Floating point is not supported, but powerful rational integer arithmetic is. Savants won't have to dust off their rational approximations.

    The language has compiler building elements built into it. You can create your own mini-compilers at will. The fact that floating point isn't part of Forth doesn't mean that it can't be. There are all sorts of extensions available for any number of purposes, including floating point and a bazillion operating system ports.

    Although there is an ANSI standard, don't bet that adherence to the standard will mean code will be portable. Generally, so much of any given Forth installation is local enhancement, code just can't be made portable. Then there's the OS problem. A Forth running on top of an operating system is guaranteed to be non-portable to anything other than an identical installation. At least in the pure Forth environment one doesn't have the OS in the way of the standard Forth core functionality.

    The Forth language is composed of a collection of words, each of which contains the implementation of a particular computing task. Forth words can be considered like functions in any of the more traditional computer languages. Where Forth differs is in the details of the implementation and the extent to which the Forth model is implemented throughout the system.

    At the bottom, Forth starts with a core set of words which are written in the native language of the processor. But with Forth, even these core elements are not traditional machine language. All of Forth, including its machine language core, is implemented in Forth. Although Forth's machine code core is executed directly by the CPU, the entire process is under complete control of the Forth interpreter. Forth isn't slowed down by this interpreter control. The interpreter gets out of the way so that the native code runs at native code speed.

    The Forth interpreter is tiny, even miniscule. On the general purpose processors of today, a Forth interpreter inner loop is a trivial task, often composed of a single CPU instruction which is assembled wherever it is needed. This kind of efficiency fairly screams for a hardware implementation. Thus, there are small, inexpensive processor chips which implement Forth in hardware.

    The body of a Forth word is composed of two main elements, a code field and a data field. The code field contains the address of native code which executes the word; the data field contains information which depends on the type of word. For words coded in native code, the data field contains the actual assembled machine instructions for the word. The code field of such a word then points directly to the first machine instruction in the data field. For normal high level interpreted Forth, the data field contains the sequence of code field addresses of the Forth words that make up its definition. The word's code field then points to the Forth interpreter.

    The inner loop of a typical Forth interpreter steps through the list of code field addresses in the data field of a word, dereferencing each, and passing the result to the CPU's instruction pointer for execution. On many architectures this is a single CPU instruction. If the referenced word is another high level Forth word, the current interpretive address is saved on the return stack (push context) and the interpreter inner loop is reentered at the next lower level. If the referenced word is one implemented in native code, nothing more need be done since the inner loop will have already pointed the CPU to the word's native code.

    Each Forth word ends by jumping to the code that pops the stack to restore the interpreter to its context before it began executing the current word. Often a single instruction, this code is usually assembled in situ.

    From another point of view, the Forth interpreter threads its way through the code until it eventually bottoms out at a word defined in native code, which the processor merely executes.

    The reduction of a function call to a bare address saves considerable space. The interpreter for such encoding is so small that it can be placed in situ. There are Forth implementations which save the dereferencing step in the interpreter inner loop by placing the code in-line in the code field. Forgoing floating point for near native rational integer math adds tremendous efficiency. All of these savings are replicated from top to bottom in any Forth implementation. It's not surprising that compiled Forth is much smaller than almost any computer language known. Typically, entire Forth implementations are tens of kilobytes, not megabytes. Typical run-time programs are often very few kilobytes. That's tiny. To top it off, they run at near native code speed. That's fast and tiny.

    Therein lies the longevity of Forth.

    Want to know more?

    Try the History of Forth at Forth, Inc.

  122. Forth? (A Rant) by de+Selby · · Score: 1

    When I write to the metal, I use assembly. Writing assembly is intuitive, easy to read, and with architecture knowledge and some thought, very efficient. (For some people, almost as efficient as theoretically possible.)

    This article got me looking at Forth for the first time; and I must say, it's not reader-friendly. It is perhaps one of the ugliest, most difficult to read languages I've ever seen. Brainfuc% made more sense to me! (Note, I didn't try to _write_ any Forth. You tell me how difficult that is...)

    My impression after going over Forth programs is that programs written in Forth are small because large ones would be suicidal. The gains over assembly and C seem to be from feature-loss rather than any advantage of the language.

    Perhaps worse than Forth itself is the creator of the language, or rather, the claims he makes. He makes amazing claims about speed and size with about the same level of professionalism as claiming "Compute with amazing crystal power! The computing power of Atlantis could be yours!"--and with about as much evidece to back up his claims. Am I to believe a computer scientist on faith?

    After claims of programs that are so many 1000's of times smaller and so many 10's of times faster, I finally (and with great effort) get enough detail on his programs to discover how this is: they are all but non-functional. His programs have been stripped down to the point at which there is almost no possible use for them; and have consequently attracted almost no users.

    I prefer minimalism--I can enjoy Mozart as well as the next guy--but this is two 32'nd notes and nearly a staff.

    I'm skeptical, as anyone should be. He claims that for 30 years, and after uncounted billions of dollars spent, computer scientists were just doing it wrong. He would propose a "superior" alternative. Programs that are faster and smaller, chips that use less power and are far cheaper, so on. All untrue claims.

    Give this man the crackpot award. Maybe some brownie points if he really believes in what he's doing. Just don't get Chuck, Katz, and Alex Chiu together in the same room.

  123. Barriers to entry by aquitaine5 · · Score: 1

    Most users (and I have to include myself here) are not overly interested in underlying architectures, only in running the game, office and browsing applications that are the consumers of 99.99% of the CPU cycles out there. These applications are built on top of a large pile of software layers virtualizing the CPU, memory, storage devices and network architectures. These layers also provide familiar (POSIX for instance) interfaces for the application designers to use.

    Here lies the basic problem with new low level architectures: The applications will not be produced for these architectures because those middle layers do not exist - and vice versa. Radicaly different architectures (and massively parallel CPUs such as the yours fall into this category) have even larger problems because not only do the lower layers do not exist, but the theoretical work to properly exploit them are not well developed, and competence to use (for instance) highly multiple threading at those and the application level do not exist in the developer community.
    This makes the already huge barrier to entry to new processors into a mountain range insofar as large market penetration (which can only be acheived by supplying those end user applications).

    So...while I believe that the hardware is deeply cool, my questions are:
    1) Raw CPU power is well and good, but it is just 'revving the engine' without the (large) software virtualization layers needed to exploit it. Where do expect that software to come from?
    2) How many people to you expect to purchase/use these CPUs without application software? Without even hardware virtualization?
    3) Do you have in mind any 'killer application' that would enable this design to survive perhaps in some niches?

    Now, this might sound that I am being very negative here - and in a sense I am - but not because I do not believe the future of massively parallel processing (MPP) (because I DO believe!), but because there have been no shortage of similar approaches in the past (transputer for instance) that have hit the same barrrier reef and foundered, either sinking out of site immediately or surviving in undeserved exile in some tiny niche applications.

    It seems to me that to enable this sort of MPP entrant to succeed needs a concerted effort to
    a) Enable affordable access to motherboards
    b) 'Conventional' language support (gcc?)
    c) Software virtualization for the hardware etc. i.e. an operating system
    d) Drivers
    e) Training in multii-threading development.

    If this seems to be a lot of work that is because it is!

  124. FreeBSD bootloader in Fourth by Jayson · · Score: 1

    If I am not mistaken, the FreeBSD bootloader is a Fourth interpreter. If you look at /boot you will see a few Forth scripts that comprise the default bootloader and "libraries". You seem to be able to write your own boot logic.

    Somebody please correct me if I am wrong.

    -j

  125. Re:MIPS, But Not much I/O - What apps work well on by Anonymous Coward · · Score: 0

    Do you see applications for the x25 processor in areas such as brute force code breaking? This is not an i/o intensive process and it would be relatively cheap to build an array of x25 processors and offload part of the keyspace to each of them. In terms of $/key this is probably more effective than building custom processors.

  126. Stack-based VM vs Register-based VM ? by renoX · · Score: 1

    Usually VM are stack-based because it is simpler, I think.
    But the Tao-VM (used by these "Amiga" guys) is based on an unbounded set of register, I heard that they claim that it is the fastest VM..

    Have you looked at the Tao-VM ?

    I remember of flamewars in rec.comp.arch about register-based architecture vs stack-based architecture of CPU.

    I think that there is the same design issue for VM..

  127. (1) Latency and (2) Software Engineering by ralphbecket · · Score: 1
    Two questions:


    Perhaps the major problem for contemporary processors is the latency of memory accesses. Adding still more levels of caching offers rapidly diminishing returns. While using short machine instructions will be of some help in reducing I-cache misses (although with the unfortunate prevalence of OO languages even this probably won't make much difference), it does nothing for the D-cache hit rate still leaving you with the problem of branch prediction and all the complications that entails for the CPU design (I'd hate to have to try to design an n-way speculative execution unit for a stack based architecture). Do you have anything in mind that might help resolve the latency problem?


    My second question concerns Forth. Many virtual machines are stack based because compiling to such architectures is perceived as being easier than for register models. This is a highly contentious assumption and it is certainly the case that generating fast object code for stack architectures is much harder (the program tends to spend much of its time rearranging the stack; the alternative is to keep variables on the heap in memory, but then you lose the advantage of having local variables stored locally in processor registers or on its stack). So while one might argue it may be possible to get higher theoretical peak processing power on a minimalist stack processor (see my first question), do you think it's worth it given the difficulty of generating fast object code for such designs?

  128. Views on other minimalist projects: pinky and j/k by Jayson · · Score: 1
    The Q:
    Have you seen other projects that aim towards minimalization and what do you think of the direction they have choosen to follow? What projects (commercial, univerisity, or open) do you see as heading in a very good direction?

    The Elaboration:
    Specifically, on the hardware side, the Pinky 1 bit processor with 4 instructions seems near your chip design philosophy: small and smaller. Have you had a chance to look at the ideas behind it?
    The pinky processor is a chip that's designed to be extremely parallelizable, that is, it is designed to work extremely well in groups. Developed by Dave Taylor, they are extremely simple chips made to be small and efficient, and fast.
    And on the software side, do you see any programming languages headed in The Right Direction? Such as the APL branches of J and K, where the community sees code concision playing a very important role in understanding and maintainability. [A slight warning: I am now a convert of the K and KDB religion, so I am definitely biased. If Arthur Whitney can out code Oracle, it must say something about K; my fragile little mind is still disturbed by some of his golf scores.]

    The Thanks:
    Also, thanks for Fourth. I arrived there via excursions into PostScript and Joy and try to use it often.

    -j
  129. AFAICS raw failed by MfA · · Score: 1

    Its design grew very unambitious towards the end, its just a couple of grad's tieing up the loose ends towards their Phd's... the real work is now being done in the Aries group (http://www.ai.mit.edu/projects/aries/).

  130. Not all for chuck, but... by jbaltz · · Score: 1
    I've been using forth since I was introduced to it around 1977. I miss it horribly. In all the work I've been doing in the last 15+ years (scientific computing, dot-com world) I haven't seen any opportunities for a FORTH-speaker. Yet the language still lives. Where is it thriving? (Are they hiring in NYC?)


    For Chuck: To what do you attribute FORTH's falling off of just about all programmers' radar screens?

    --
    I am the Lorvax, I speak for the machines.
  131. Free hardware by AnteTempore · · Score: 1
    Free hardware is becoming more and more prevalent. The Leon-1 processor and the Open Cores initiative are examples of this.

    What are your predictions on free hardware?

  132. Re:Object-Oriented Programming in FORTH by kgrgreer · · Score: 1

    This leads to the saying "if you don't like Forth, then it's your own falt". Meaning that the language is self-extensible and if it is missing something that you need/require/want then you should just add it. I've used OO systems for Forth which I thought were quite nice. It wouldn't be such a simple feet to add OO to some other langages (witness C->C++).

  133. complex systems in forth? by Anonymous Coward · · Score: 0

    I took a look at UltraTechnology.com to understand your philosophy of ultrasimplicity. Two questions based on this philosophy:
    =>Do you see forth working with the rest of the world's protocol standards (TCP, LDAP, XML, etc), or being isolated?
    =>How would you apply your ideas to cases where large numbers of people (10^4 or more) have to share large amounts of data (100 Gb +), a situation today requiring something like a database , a metalayer product, and a webserver .. for example: gemstone+enhydra+apache.

  134. I've read /everything/ on that site... by Giant+Hairy+Spider · · Score: 2

    ...that's where I get all my information.

    His claims about software are unrealistic for most other people, but accurately describe the software that matches well to his chips.

    The problem is that you guys don't admit that this is a limited problem domain, specifically: easy problems that are neither memory nor computation intensive. You pretend that it has to do with the approach to creating the software, not the problem you need to solve. And for these problems, you don't need much power, so your painstakingly optimized software performs decently on these low-power chips.

    You people don't have much of a clue, really, about the systems you're comparing yours to.

    Our multitasker and memory manager with garabage collection and device managemnt fit in 1K. The jpg file read, decode, and display routine fit in 1K. The GUI library fit in a couple of K.

    Ooo... A handful of trivial operations in a few K! I'm impressed!

    Your "multitasker" is a cooperative multitasker without any real load management. Your "memory manager" is trivial garbage collection on a small, single page of RAM. Neither have any sort of protection against poorly written or hostile code. Crack open Knuth's TAoCP and see these functions implemented in a few dozen assembly instructions. Nothing new at all. I could write them with my eyes closed.

    GUI library? Yeah, just like the toy ones commonly written into game engines. Ooo, but this one is skinned like Windows, so it must be functionally equivalent to Windows! I've written little GUI libraries that manage sprites and text, windows, focus, and mouse-clicks, in a day or two. They're toys, and they're utterly trivial once you figure out how to lay down pixels efficiently. Making one with a rich supply of widgets, support for multiple languages, and a component model is much harder.

    Wow, a JPEG decoder! I'm impressed that you reimplemented a standard and hand-compressed the code instead of just using one of several completely free C implementations that have been tested and debugged for years. With how many thousands of test files from different sources did you test your implementation to be sure that it is real-world ready? And you managed to reduce the memory-needs of decompessing a 600X400 JPEG file from about a megabyte of image data (pre- and post-compression taken together) + 20k of code to about a megabyte of image data + 1k of code! Very sound software-engineering practice, I'm sure. You really know how to set your priorities.

    And all this code was used in... what product did you put to market again? Since you're so sure of real-world applicability, you must be making an absolute fortune from your vastly superior development methods...

    Most importantly, these things aren't portable or flexible in the least. They're hacks for one monolithic system, written all crammed together so that if you lose the original implementor, almost nobody will be able to read them. A thing like Linux or Windows is written to be very flexible and support a wide variety of commodity hardware, so you don't have to rewrite every piece of software when you upgrade one part.

    Upgradability is very important. You can't access the web from a static platform, because the web is always changing, not just the content, but the specifications. This is why "information appliances" fail in the marketplace. If the architecture isn't tolerant of faults in these components, then the system doesn't work. That is why all the "unnecessary bloat" of defensive coding is used.

    Don't get me wrong, you've made a very pretty little imitation airfields out of rocks and coconuts, I just haven't seen any cargo planes dropping off supplies.

    Real programs, not bogomips.

    Another example of how you people don't understand the performance numbers you use. BogoMIPS are a measure of unproductive operations (NOPs). The MIPS Chuck gives are essentially the bogoMIPS count. A technically and ethically sound MIPS rating would average over standard, common operations such as multiplication of numbers stored in main memory. Just because you're running programs on the system doesn't make your numbers anything but bogoMIPS.

    He's suggesting supercomputer use, advertising 60000 MIPS, when the standard supercomputer reference, GFLOPS, probably comes in somewhere around 0.02 (seriously, think about doing a 64-bit floating-point multiply on these things, and don't you dare wave your hands and say that people shopping for supercomputers shouldn't be using 64-bit floats), compared to around 1 for a fairly standard desktop chip.

    It's fun to play around with seeing how much you can cram into tiny programs, and sometimes it's useful. But most of the time, it's more sensible to write portable, readable code. And it would be loads of fun to play around with chip designs, but you can't just optimize for bogoMIPS and then claim effectively infinite performance by hand-waving over the I/O and programming for the freakish architecture. If you make bizarre, specialized chips you either have a realistic market or you're playing around. Chuck's just having fun, then mistaking fun for good product.

    Worse, you're all mistaking an engineer at play, duplicating decades-old work, for someone doing cutting-edge research. (Ultratechnology indeed!)

    There is nothing new about the idea of just putting multiple processors on one die, on a simple network. Nobody does it because it's too much of a pain to use. Parallel programming isn't easy. But it sure is an easy way to inflate your MIPS rating.

    There's nothing new about tiny MISC chips. They're too hard to program and require too much cache to execute large programs efficiently. Go back in time a bit, and you'll see similar things all over the place. Look around the rest of the embedded industry, and you'll see equally small, cheap, efficient chips, with adequate performance and all sorts of different nifty specialized features, that don't require you to code everything from scratch.

    There's nothing new about tiny programs. You can only do so much with tiny programs! The real world is messy, and dealing with everyone else's standards and bugs makes programs necessarily big (and lazy programmers make programs unnecessarily huge, but that's another issue).

    a 2400 MIPS cpu you can route gigabit datastreams on separare I/O pins and do megahertz analog signals on other I/O pins at the same time.

    Yes, it will make a very lovely piece of wire, once you build up a whole supercomputing architecture around it to feed it these gigabit datastreams, though there's no room for routing tables or anything like that.

    --

    ---
    You'd be surprised at the broadband connection available to things crawling around in your hair.
    1. Re:I've read /everything/ on that site... by UltraTech · · Score: 1
      From what you say I don't think that you have read everything at the sight. Some of your "facts" came from other places.

      The small web appliance software was small because it was for an embedded deviced and it was to its advantage that it had about on tenth of the memory usage of next nearest compeditor's software with similar features.

      We did benchmark on a number of real computing problems and did compare output to RISC, DSP and desktop chips like Pentium. Although we didn't claim to target the full range of applications that all architectures target. You have identified some that we didn't target and that are not appropriate and you have outlined inappropriate approaches for software.

      Pick some other scalable 60,000 MIP /$ chip and compare the two.

      Jeff Fox
      UltraTechnology

  135. for embedded controllers by dirtfirst · · Score: 1

    Assembly and forth are wonderful for systems that are limited by memory or time. That said, why isn't the colorforth system you made available on your website useable by pre-pentium pcs?

  136. Re:Object-Oriented Programming in FORTH by BruceMcF · · Score: 1

    gforth (GnuForth -- check your favorite Gnu mirror, and available with Linux binaries) comes with three Object Oriented wordsets. One, a minimalist approach (that is, a "one screener", or toolkit within 16 lines), and two more full fledged versions.

    The focus of much paid Forth work in the embedded environment means that there aren't as many generically useful public libraries as many newer languages, but it'll get there eventually.

  137. You hit the nail on the head ... its willingness by BruceMcF · · Score: 1

    I think you hit the nail on the head ... it's willingness to have a go. Elizabeth Rather from Forth Inc. says that when they run their Forth classes for, say, hardware systems engineers, they are doing useful things within a day or two and are competent in a week.

    Of course, if you are used to infix "+", then getting used to also being able to see "take 5 and 4. add 'em." is a hurdle, but not a big one at all. Having the attitude of "prove to me without a shadow of a doubt that there is any purpose to me learning to see operators in an active 'just do it' sense" is a much bigger hurdle.

    Similarly, learning to read "IF THEN" to mean

    test IF-true this-action THEN-continue-with that-action

    is a little hurdle to someone who comes in with an open mind, and a big hurdle to someone who comes in with an attitude of "that's not what I'm used to ... FIX IT!!!".

    The real benefit in readability comes when the stack operators and most of the standard FORTH words are used to define words that apply to the situation, and you can get code that reads like

    XY-COORDS? IF XY>POLAR THEN
    GET-OFFSET APPLY-OFFSET


    The danger is the Forth technique of extending the language to fit the problem. There are so many Forth coders who are not trained in effective commenting techniques for Forth. Also, in so many of the places that Forth is used, it is used by one or a few people as a personal productivity tool, so there are no "house standard rules" for naming and documentation. It certainly can become unreadable ... just as unreadable as any newly created language without proper documentation. Just as unreadable, in fact, as C code would be to someone who did not have access to documentation about C.

  138. Re:MIPS, But Not much I/O - What apps work well on by BruceMcF · · Score: 1

    Suppose that you have one I/O and coordinator processor, and the other processors divided into eight work gangs of three processors each.


    XX XX IO XX XX
    XX XX XX XX XX
    XX XX XX XX XX
    XX XX XX XX XX
    XX XX XX XX XX


    Then each work gang has a supervisor, the 1 processor, and two followers, the "2", and "3" processors:


    11 21 IO 31 41
    12 22 51 52 53
    63 62 61 32 42
    13 23 71 72 73
    83 82 81 33 43


    Notice that each work gang has its own dedicated row or column. Also, notice that three work gangs have each member on the outside, one has two, and the other four (2, 5, 6 and 7) have a single member on the outside edge, so you have natural specialisation between tasks requiring more memory access intensive processes and more processing intensive tasks, if it is handy for the application.

    Similarly, six work gangs of four could be:


    11 21 IO 31 41
    12 22 51 54 42
    13 23 52 32 43
    14 24 53 33 44
    62 63 61 34 64


    Anyway, I reckon that's how it would go.

  139. And PC's have a maximum of 640K memory by BruceMcF · · Score: 1

    I, in fact, used a Forth that almost did that. Not in the part read by the human, but in the part read by the computer. In severely RAM constrained systems, it made every bit as much sense as 2 bytes for the year in a date. This was a Forth for the Commodore 64, which I bought at a time that standard RAM for a PC was 128 and maximum RAM was 640K (not that normal people would ever need more than 256K, excpet as RAMDisk), and the way it made the Commodore 64 glacially slow disk drive tolerable while developing was by allocating a lot of that 64K RAM to block buffers.

    ANS Standard, as many people have mentioned, required 31 retained characters minimum. And if you have names more than 31 characters long, it normally means that you need vocabularies and you are not using them (just as in C it would mean that you need to structure your functions somehow and are not doing so) -- the equivalent of ProcessFooBarReadTilDone is, with one deep vocabularies,
    FooBar-Process Read-Til-Done
    which means you have 31 characters for family and 31 characters for operation.

  140. Your next internet appliance will be a cellphone by BruceMcF · · Score: 1

    "Production -> Unfortunately the Internet appliance market has not grown as big or as fast as we had hoped it would."

    The next big growth market will be in mobiles (cellphones back home in the US) with flexible voice/text messaging on as many channels as possible. That's at the stage of mid 1980's PC's, when a number of people have gotten used to it, but capabilities are sufficiently constrained that a new unit with a big step ahead will bring in a big upgrade as well as new user market.

  141. Re:Massively Parrallel (sic) Computing by bcaulf · · Score: 1

    To say that human genetic code is 700 MB large doesn't mean what you think it means! It means that there is a limit of 2 to the 8*700 million power, 2^5600000000 different possible genetic possibilities, if we were to just twiddle all the bits. Not that that would produce good results. But that is about 1x10^2800000000 different possibilities, which is a very healthy infinity for all practical purposes. Not 700 million possibilities or whatever you thought. 700 million bytes most certainly can describe human (genetic) uniqueness, etc.

  142. Nanotech? by me4nano · · Score: 1

    Hello Chuck,

    I dug up a quote attributed to you from an interview on Vancouver's CKNW radio station (host: Bill Good ) on September 19, 1991 (almost 10 yrs. ago!):
    "Nanotechnology is something I'm really interested in. That's one reason my computers are getting smaller and simpler. I think I've got one of the few computer architectures that realistically can be programmed on a molecular level."

    What are your current thoughts on this subject?

  143. True, but that doesn't modify the point by BruceMcF · · Score: 1

    True: all you have to do is to provide the Forth words that change "color state" and use them to change the color token instead of saving them as text, since its seems that they are completely recoverable from the color text tokens.

    And, indeed, as long as a screen reader knows how to read them as Forth words, you are set.

    But all that the colors mean are one of a small number of states. Male/Female, low/high normal/firm tones of voice give eight different tones for the different "colors", and sorting them into a mneumonic hierarchy would make that an easy one to keep track of.

    Similarly for color blind, italic, bold, and underlined give eight different possiblities, and the same hierarchy would make that as mneumonic for the color blind.

    Since the "next color" spaces are just TOKENS, all you need is a display device that treats the tokens as changing some other state, and you are in business.

    The point of the color source editor is that each word shows how it should be interpreted. There is no need to keep track.