> I've been looking over "Thinking Forth" by Leo Brodie, from the link you
> provided. Seems that at the lowest level, Forth word-definition is assembly
> language or machine code. So, if I am understanding, at the lowest level,
> Forth also incorporates a foreign (non-Forth) language (assembly or machine
> code). And FBP also necessarily relies on some other language or paradigm
> for at least its lowest elements. Is that one of the comparisons you were
> making?
Forth code can also be seen as an FBP pipeline, where what passes through
the pipeline is the stack. Likewise, pure functional programs can be seen
as a tree-shaped FBP network that passes values from the roots of the tree
up to the top.
--
John Cowan co...@ccil.org http://ccil.org/~cowan
You cannot enter here. Go back to the abyss prepared for you! Go back!
Fall into the nothingness that awaits you and your Master. Go! --Gandalf
> Yes, and the Joy Programming Language is
> a purely functional variant of Forth:
> http://www.complang.tuwien.ac.at/anton/euroforth/ef01/thomas01a.pdf
Indeed it is, as I should know. I modified Manfred's original C
implementation to use the BDW collector and to add a lot of new words.
I have a half-finished implementation in Scheme I want to get back to
sometime.
I like Joy because unlike Lisp it really does exhibit code-data
equivalence: every list is a function and every function is a list.
--
BALIN FUNDINUL UZBAD KHAZADDUMU co...@ccil.org
BALIN SON OF FUNDIN LORD OF KHAZAD-DUM http://www.ccil.org/~cowan
The first two are fairly low level, and the 'arithmetic ops' one
persuades me that graphical FBP can 'stand alone', without an underlying
textual language.
I can see three challenges with using FBP at a very low level:
- people may want to type expressions, not draw graphs of them
- we want speed, but it's not easy to write an optimizing compiler
- we might need to make changes to the FBP model, for low level coding
None of these is really a major obstacle. We can make it easy to draw
graphs by typing, and we can automatically convert textual expressions
to neat graphs and back again. We can knucle down and write a compiler
that targets C, javascript, assembly or whatever. FBP really does seem
to be a 'fundamental force of nature' (to misquote Paul's book): we can
discover more of it without getting too complex.
Perhaps the biggest challenge (for me) is to spend less time talking
and thinking, and more time building useful stuff! a challenge I've not
overcome yet, it seems!
I'd like to make some example programs for DrawFBP, to show what can be
done with it. The app I want to do is a web app that helps someone
learn another language, by reading carefully chosen chunks out of free
books in that language. I can break this app into small 'example
programs', but I might need some help getting to grips with DrawFBP /
JavaFBP.
I've been focusing on using FBP at low level, to represent mathematical
and structural relationships. It's stretching the definition of FBP,
but many of the concepts are the same, and the graphs look very similar,
with components, ports, array ports, links (or channels).
Believe it or not I independently thought to call my (dreamware) FBP
system "AMPS", when I was maybe 15 years old! My "AMPS" stands for
"Advanced Modular Programming System" (rather than Processing!).
This might be a funny example of convergent thinking, the scarcity
of good acronyms, or perhaps telepathy!
Anyway, I think FBP can be well applied at the very lowest levels up to
the very highest levels. FBP is essentially graphical, and can
represent structure much more faithfully than textual languages do.
I'm thinking to write a graph editor in JavaScript with RaphaelJS.
It might not be so fast as a Java or C app, but it would be very
accessible to the casual web surfer.
And that is one sweet little graphics library! for example:
http://raphaeljs.com/graffle.html
http://raphaeljs.com/fonts.html
It looks as good as flash, without the flash.
Sam
> note http://home.ccil.org/~cowan/joy.tar.gz gives a 404
That was only an interim location. Joy1 (which is my update
to Manfred's Joy0) is downloadable from the main Joy page at
http://www.latrobe.edu.au/phimvt/joy.html .
One nice thing that Joy1 has is "monadic" I/O; the "read" word expects
to find a file object on the stack and pushes back the file object
followed by the object that's read. By the same token, the "write"
word expects to find a file object and the object to be written, and
pushes back the file object only.
--
John Cowan http://www.ccil.org/~cowan co...@ccil.org
if if = then then then = else else else = if;
> and development ceased in 2005?
Pretty much. Implementing was a fun challenge, but I'm not much of a
concatenative programmer -- I love me my variable names. If you want
a severely practical concatenative language, try Factor.
--
I don't know half of you half as well John Cowan
as I should like, and I like less than half co...@ccil.org
of you half as well as you deserve. http://www.ccil.org/~cowan
--Bilbo