Joy noob checking in!

cgnormandin — 2010-05-08 18:58:38

Hello group...

Decided I'd give Joy a shot. I've fooled around with Forth a bit, but never made much headway in that camp. I think I might like Joy or its descendants much better. We'll see.

Thank you W. Tanksley, Jr for opening the door. ;)
--
duke

pml060912 — 2010-05-10 07:35:44

--- In concatenative@yahoogroups.com, "cgnormandin" <dukeofperl@...> wrote:
>
> Hello group...
>
> Decided I'd give Joy a shot. I've fooled around with Forth a bit, but never made much headway in that camp. I think I might like Joy or its descendants much better. We'll see.
>
> Thank you W. Tanksley, Jr for opening the door. ;)
> --
> duke
>

Well then, you may (or may not) be interested in Furphy, the Forth related work I've been working on from time to very occasional time, described here: http://users.beagle.com.au/peterl/furphy.html (feedback welcome). P.M.Lawrence.

Duke Normandin — 2010-05-10 13:13:58

On Mon, 10 May 2010, pml060912 wrote:

> --- In concatenative@yahoogroups.com, "cgnormandin" <dukeofperl@...> wrote:
> >
> > Hello group...
> >
> > Decided I'd give Joy a shot. I've fooled around with Forth a bit, but never made much headway in that camp. I think I might like Joy or its descendants much better. We'll see.
> >
> > Thank you W. Tanksley, Jr for opening the door. ;)
> > --
> > duke
> >
>

> Well then, you may (or may not) be interested in Furphy, the Forth
> related work I've been working on from time to very occasional time,
> described here: http://users.beagle.com.au/peterl/furphy.html
> (feedback welcome). P.M.Lawrence.

I had a quick look - appears to be an interesting project! I have
dabbled with Euphoria as well, and if it hadn't been for various
"flakiness" with the language (on MacOS X Leopard), as well as within
the community, I might still be using it. ;)

The Joy language might be cool if there are still folks around that
can help with the learning curve.

I tried to give Forth a go, but the c.l.f. newsgroup is nothing more
than an ever-ending argument, and pissing contest. Hans Beezemer's 4TH
language should have been my first exposure to "Forth".

--
Duke

William Tanksley, Jr — 2010-05-10 15:33:56

Duke Normandin <dukeofperl@...> wrote:
> The Joy language might be cool if there are still folks around that
> can help with the learning curve.

I think there are... I'm not really one, but I'll do what I can :-).
You might be interested in one of the remote derivatives of Joy and
Forth... Rather than go through a list, though, it might be nice to
hear what you're looking for. Are you a minimalist? Do you like to
work close to the machine? Or do you like the compiler to do a lot of
heavy lifting for you? Do you want type-checking? Do you want to write
applications, embedded systems, or an operating system? There are too
many possible questions... Go ahead and tell us the sort of things
you've enjoyed working on or would like to...

> I tried to give Forth a go, but the c.l.f. newsgroup is nothing more
> than an ever-ending argument, and pissing contest. Hans Beezemer's 4TH
> language should have been my first exposure to "Forth".

Sigh... no kidding. I gave up on them a while ago. The MachineForth
list is often more interesting, although naturally you have to be at
least a little interested in minimalistic programming to stay
interested :-). I do think that 4TH is an interesting dialect and
implementation, yes.

> Duke

-Wm

Duke Normandin — 2010-05-10 16:14:47

On Mon, 10 May 2010, William Tanksley, Jr wrote:

> Duke Normandin <dukeofperl@...> wrote:
> > The Joy language might be cool if there are still folks around that
> > can help with the learning curve.
>
> I think there are... I'm not really one, but I'll do what I can :-).
> You might be interested in one of the remote derivatives of Joy and
> Forth... Rather than go through a list, though, it might be nice to
> hear what you're looking for. Are you a minimalist? Do you like to
> work close to the machine? Or do you like the compiler to do a lot of
> heavy lifting for you? Do you want type-checking? Do you want to write
> applications, embedded systems, or an operating system? There are too
> many possible questions... Go ahead and tell us the sort of things
> you've enjoyed working on or would like to...

You've hit on one of my major "programming" quandaries. I'm an avid
hobbyist programmer searching for "my ideal" language. To add to my
cloud of confusion, I don't really know what I want to do "my
language" at the moment. I started programming in as serious manner in
the late '90s, doing HTML-CGI stuff with Perl and then PHP. Along the
way, I taught myself to use a RDBMS (MySQL and Sqlite) and Javascript.

I know that I dislike C and its derivatives, so I soon tired of Perl
and PHP. I tried Pike and don't like it.

I suppose the truest thing I can say, is that I looking for a language
which resonates with me and "feels" right, and which I take to
easily. Once I find that language, productively expressing myself with
should not be a problem, given that the language is general-purpose
enough. I realize that this goes against the prevalent thinking of
using the right tool for the job. However, programming does not come
easily enough to me, for me to be the master of many languages. I want
to learn one language _very_ well. I once thought that Forth might be
cool, because each Forth is really a problem-domain-specific
Forth. However, it might be too close to the bare metal for me.

I've recently tried Lisp via Common Lisp and newLISP. I prefer the
latter, but still not "my cup of tea".

So now I'm looking at Joy and Miranda - both functional
languages. Miranda is not stack-based.

>
> > I tried to give Forth a go, but the c.l.f. newsgroup is nothing more
> > than an ever-ending argument, and pissing contest. Hans Beezemer's 4TH
> > language should have been my first exposure to "Forth".
>
> Sigh... no kidding. I gave up on them a while ago. The MachineForth
> list is often more interesting, although naturally you have to be at
> least a little interested in minimalistic programming to stay
> interested :-). I do think that 4TH is an interesting dialect and
> implementation, yes.

Never tried the MachineForth list. I'll have to Google it. I am a
quasi-minimalist - I think. I hated Pascal, Modula, Oberon, Ada when I
looked at them because one had to write a book to get anything
done. OTOH, cryptic, obfuscated code is just so much
chicken-scratching / hieroglyphics. Should be sent to NSA / MI6 / FBI
for decoding to a natural language. ;)

Thanks for your thoughts.
--
duke

Rodney D Price — 2010-05-10 18:10:33

Just my opinion...

You sound as if you are looking for an ecosystem, rather than just a
language. If you've been working in the Perl and/or PHP languages, you've
been working in ecosystems that are alive and well. The languages
themselves may be awful, but the ecosystems are phenomenal. Each has
many, many libraries and tools to draw from. If you intend to learn one
language really well, it had better have an ecosystem that gives you the
support you need.

Here are a few suggestions:

(1) Haskell. The majority of the research in functional programming
languages is done in Haskell, a descendant of Miranda. Miranda attempted
to make a go is it as a commercial product, but the lack of an open system
persuaded the functional programming community build their own: Haskell.
You'll find that support on lists such as haskell-beginner and
haskell-cafe is very good. There's also a very active IRC channel,
#haskell. The number of packages / libraries available in Haskell has
skyrocketed in the past few years. See http://www.haskell.org Haskell
isn't as hard as the Miranda website would have you believe.

(2) OCaml / F#. The Haskell language is an experiment in pure functional
programming with a strong static type system. That means no
side-effecting functions like C's printf. See the Wikipedia article on
referential transparency for more. OCaml and its descendant, F#, share
the strong static type system of Haskell, but aren't quite as hard over as
Haskell is about side effects. For instance, mutable variables are
allowed. F# is supported by Microsoft in the new beta version of Visual
Studio, which you can download for free at the Microsoft site. F#'s
ecosystem is .Net, so if you want to write code that runs primarily on
Windows, F# is the way to go.

(3) Clojure, a new lisp that runs on top of the Java JVM. Clojure is an
experiment in writing a Lisp without regard to backwards compatibility. As
you no doubt know, the Java ecosystem is both broad and deep, although it
leans too far in the "enterprise software" direction for my taste. The
Clojure language itself borrows a lot of ideas from Haskell, but like all
other Lisps, uses a dynamic type system. If you've done Perl and PHP,
you've lived with a dynamic type system. Static vs dynamic typing is one
of those religious issues that you should avoid bringing up on mailing
lists. The Clojure site is at http://clojure.org

(4) Factor. If you really want to do concatenative programming, and do it
in the real world, choose Factor. It's the only one in the concatenative
space that really has an ecosystem. Go to http://factorcode.org for more.
I should tell you that concatenative programming is one of those areas of
computer science that "don't get no respect." Programming language
researchers, especially academics, regard concatenative programming
languages as a mostly uninteresting implementation of point-free form,
e.g. as implemented in Haskell.

(5) Forth, the ultimate type-less language. Very close to the metal, as
you know if you've tried it. If you're at all interested in embedded
programming, particularly on small 8-bit or 16-bit chips, I think that
Forth is still the best thing out there. If you want to program anywhere
else, in my humble opinion, don't choose Forth. Or Joy, for that matter.
One of the charms of Forth is that you can easily write your own Forth,
should you be so inclined.

So there is my two cents. Do with it what you will.

-Rod

P.S. The ordering above is intentional. Haskell is my favorite.




From:
Duke Normandin <dukeofperl@...>
To:
concatenative@yahoogroups.com
Date:
05/10/2010 10:20 AM
Subject:
Re: [stack] Re: Joy noob checking in!
Sent by:
concatenative@yahoogroups.com




On Mon, 10 May 2010, William Tanksley, Jr wrote:

> Duke Normandin <dukeofperl@...> wrote:
> > The Joy language might be cool if there are still folks around that
> > can help with the learning curve.
>
> I think there are... I'm not really one, but I'll do what I can :-).
> You might be interested in one of the remote derivatives of Joy and
> Forth... Rather than go through a list, though, it might be nice to
> hear what you're looking for. Are you a minimalist? Do you like to
> work close to the machine? Or do you like the compiler to do a lot of
> heavy lifting for you? Do you want type-checking? Do you want to write
> applications, embedded systems, or an operating system? There are too
> many possible questions... Go ahead and tell us the sort of things
> you've enjoyed working on or would like to...

You've hit on one of my major "programming" quandaries. I'm an avid
hobbyist programmer searching for "my ideal" language. To add to my
cloud of confusion, I don't really know what I want to do "my
language" at the moment. I started programming in as serious manner in
the late '90s, doing HTML-CGI stuff with Perl and then PHP. Along the
way, I taught myself to use a RDBMS (MySQL and Sqlite) and Javascript.

I know that I dislike C and its derivatives, so I soon tired of Perl
and PHP. I tried Pike and don't like it.

I suppose the truest thing I can say, is that I looking for a language
which resonates with me and "feels" right, and which I take to
easily. Once I find that language, productively expressing myself with
should not be a problem, given that the language is general-purpose
enough. I realize that this goes against the prevalent thinking of
using the right tool for the job. However, programming does not come
easily enough to me, for me to be the master of many languages. I want
to learn one language _very_ well. I once thought that Forth might be
cool, because each Forth is really a problem-domain-specific
Forth. However, it might be too close to the bare metal for me.

I've recently tried Lisp via Common Lisp and newLISP. I prefer the
latter, but still not "my cup of tea".

So now I'm looking at Joy and Miranda - both functional
languages. Miranda is not stack-based.

>
> > I tried to give Forth a go, but the c.l.f. newsgroup is nothing more
> > than an ever-ending argument, and pissing contest. Hans Beezemer's 4TH
> > language should have been my first exposure to "Forth".
>
> Sigh... no kidding. I gave up on them a while ago. The MachineForth
> list is often more interesting, although naturally you have to be at
> least a little interested in minimalistic programming to stay
> interested :-). I do think that 4TH is an interesting dialect and
> implementation, yes.

Never tried the MachineForth list. I'll have to Google it. I am a
quasi-minimalist - I think. I hated Pascal, Modula, Oberon, Ada when I
looked at them because one had to write a book to get anything
done. OTOH, cryptic, obfuscated code is just so much
chicken-scratching / hieroglyphics. Should be sent to NSA / MI6 / FBI
for decoding to a natural language. ;)

Thanks for your thoughts.
--
duke




[Non-text portions of this message have been removed]

Duke Normandin — 2010-05-10 19:22:43

On Mon, 10 May 2010, Rodney D Price wrote:

> Just my opinion...
>
> You sound as if you are looking for an ecosystem, rather than just a
> language. If you've been working in the Perl and/or PHP languages, you've
> been working in ecosystems that are alive and well. The languages
> themselves may be awful, but the ecosystems are phenomenal. Each has
> many, many libraries and tools to draw from. If you intend to learn one
> language really well, it had better have an ecosystem that gives you the
> support you need.

You're right of course! Perl, with its CPAN and NG are awesome
resources for noobs and gurus alike. ditto for PHP and others. For me
those were 2 cases where the community was outstanding, but the
languages - although I learned them - weren't intuitive for me. Kinda
like, I may love Chinese culture, food, the people, etc - but I just
can't grok the language. Would be hard to be super productive in the
heartland of Taiwan where no English might be spoken. ;) So I'm
looking for both a language that's intuitive _to me_, c/w a vibrant
community.

>
> Here are a few suggestions:
>
> (1) Haskell. The majority of the research in functional programming
> languages is done in Haskell, a descendant of Miranda. Miranda attempted
> to make a go is it as a commercial product, but the lack of an open system
> persuaded the functional programming community build their own: Haskell.
> You'll find that support on lists such as haskell-beginner and
> haskell-cafe is very good. There's also a very active IRC channel,
> #haskell. The number of packages / libraries available in Haskell has
> skyrocketed in the past few years. See http://www.haskell.org Haskell
> isn't as hard as the Miranda website would have you believe.

I've reading all I can about Miranda these last few days (as well as
looking at Joy). I'm sure liking Miranda! Dead (dog-go) community
though. Research Software Ltd and http://miranda.org.uk appear to be
comatose to boot.

I do have Haskell of my MacOS X box. I'll re-visit it for sure.

> (2) OCaml / F#. The Haskell language is an experiment in pure functional
> programming with a strong static type system. That means no
> side-effecting functions like C's printf. See the Wikipedia article on
> referential transparency for more. OCaml and its descendant, F#, share
> the strong static type system of Haskell, but aren't quite as hard over as
> Haskell is about side effects. For instance, mutable variables are
> allowed. F# is supported by Microsoft in the new beta version of Visual
> Studio, which you can download for free at the Microsoft site. F#'s
> ecosystem is .Net, so if you want to write code that runs primarily on
> Windows, F# is the way to go.

Interesting as well! My interest would be only in context of *nix or
MacOS X. ;)

[snip]

> (4) Factor. If you really want to do concatenative programming, and do it
> in the real world, choose Factor. It's the only one in the concatenative
> space that really has an ecosystem. Go to http://factorcode.org for more.
> I should tell you that concatenative programming is one of those areas of
> computer science that "don't get no respect." Programming language
> researchers, especially academics, regard concatenative programming
> languages as a mostly uninteresting implementation of point-free form,
> e.g. as implemented in Haskell.

Thanks for the "heads-up" regarding concatenative programming. BTAIM,
I'll have to look a Factor in lieu of Joy.

> (5) Forth, the ultimate type-less language. Very close to the metal, as
> you know if you've tried it. If you're at all interested in embedded
> programming, particularly on small 8-bit or 16-bit chips, I think that
> Forth is still the best thing out there. If you want to program anywhere
> else, in my humble opinion, don't choose Forth. Or Joy, for that matter.
> One of the charms of Forth is that you can easily write your own Forth,
> should you be so inclined.

It has suddenly swept over me, after reading your message, that Forth
et al were indeed born and bred to excel at "controlling bare
metal". Trying to make them anything else is simply one kludge on top
of the other.

> So there is my two cents. Do with it what you will.


Much appreciated. Just the type of dialog I needed.

--
Duke
A: Backwards from the way folks normally read text
A: Because it forces conversations to flow in a nonsensical order.
Q: Why is top-posting a major PAIN?
[http://en.wikipedia.org/wiki/Netiquette%5d

William Tanksley, Jr — 2010-05-10 20:04:11

Rodney D Price <rodprice@...> wrote:
> Just my opinion...

I'll vouch for your presentation -- good summaries, and I was going to
post something vaguely similar.

> You sound as if you are looking for an ecosystem, rather than just a
> language.

Sounded that way to me as well.

> Here are a few suggestions:
> P.S.  The ordering above is intentional.  Haskell is my favorite.

I have to say, however, that Rod obviously made a minor typo and
accidentally mis-ordered the concatenative languages, which he
obviously meant to place at the top of the list. :-) I'm kidding, I'm
kidding.

Another language you might possibly appreciate is REBOL, which was
written by a longtime Forth programmer and has a good ecosystem
(although I have NO idea how live its community is). It's kind of
halfway between a concatenative and a "standard" language, and is kind
of ... relaxing ... to read. But then I do Enterprisey Java/XML stuff
for my day job, so almost ANYTHING would seem relaxing.

By the way, if you HAD been interested in bare metal, I'd have
suggested learning colorForth and reimplementing it from scratch. Heh.

> -Rod

-Wm

Duke Normandin — 2010-05-10 20:21:46

On Mon, 10 May 2010, William Tanksley, Jr wrote:

[snip]

> I have to say, however, that Rod obviously made a minor typo and
> accidentally mis-ordered the concatenative languages, which he
> obviously meant to place at the top of the list. :-) I'm kidding, I'm
> kidding.

I must admit that Joy _did_ appeal to me the first time I saw it. How
well I could do with it may never be known. What do you think of
Factor?

> Another language you might possibly appreciate is REBOL, which was
> written by a longtime Forth programmer and has a good ecosystem
> (although I have NO idea how live its community is). It's kind of
> halfway between a concatenative and a "standard" language, and is kind
> of ... relaxing ... to read. But then I do Enterprisey Java/XML stuff
> for my day job, so almost ANYTHING would seem relaxing.

I have it on my Mac - it's OK, but if I remember correctly, it's like
Smalltalk/Squeak - your stuck with the VM/image thing. I like a file
based language.

> By the way, if you HAD been interested in bare metal, I'd have
> suggested learning colorForth and reimplementing it from scratch. Heh.

Why re-implement from scratch? and why colorForth?
--
Duke
A: Backwards from the way folks normally read text
A: Because it forces conversations to flow in a nonsensical order.
Q: Why is top-posting a major PAIN?
[http://en.wikipedia.org/wiki/Netiquette%5d

John Cowan — 2010-05-10 20:22:56

Duke Normandin scripsit:

> I've reading all I can about Miranda these last few days (as well as
> looking at Joy). I'm sure liking Miranda! Dead (dog-go) community
> though. Research Software Ltd and http://miranda.org.uk appear to be
> comatose to boot.

Miranda (a trademark of Research Software Ltd.) suffers from the usual
problem of languages that the inventor tries to keep proprietary: death.

Now that we're outside the concatenative space, let me add my
recommendation for Pure, an impure eager functional programming language,
at <pure-lang.googlecode.com>. It's based on general equational term
rewriting, of which lambda calculus (which is fully supported) is just
a subset. It's also dynamically typed, has a fairly active ecosystem
considering how new it is, and emphasizes practical applications.

> Interesting as well! My interest would be only in context of *nix or
> MacOS X. ;)

F# runs fine on Mono, and Mono runs fine on Mac OS X using MacPorts.

--
[W]hen I wrote it I was more than a little John Cowan
febrile with foodpoisoning from an antique carrot cowan@...
that I foolishly ate out of an illjudged faith http://ccil.org/~cowan
in the benignancy of vegetables. --And Rosta

Duke Normandin — 2010-05-10 20:41:10

On Mon, 10 May 2010, John Cowan wrote:

> Duke Normandin scripsit:
>
> > I've reading all I can about Miranda these last few days (as well as
> > looking at Joy). I'm sure liking Miranda! Dead (dog-go) community
> > though. Research Software Ltd and http://miranda.org.uk appear to be
> > comatose to boot.
>
> Miranda (a trademark of Research Software Ltd.) suffers from the usual
> problem of languages that the inventor tries to keep proprietary: death.

You bet! and it's too bad, because Miranda appears to me (so far) to
be a sweet language. Too bad he/they couldn't be persuaded to let it
go Open-Source perhaps giving it a second chance.

> Now that we're outside the concatenative space, let me add my
> recommendation for Pure, an impure eager functional programming language,
> at <pure-lang.googlecode.com>. It's based on general equational term
> rewriting, of which lambda calculus (which is fully supported) is just
> a subset. It's also dynamically typed, has a fairly active ecosystem
> considering how new it is, and emphasizes practical applications.

I sure will look at it! Would I be correct in assuming that you would
advise to drop Joy as well? What about Factor?

> > Interesting as well! My interest would be only in context of *nix or
> > MacOS X. ;)
>
> F# runs fine on Mono, and Mono runs fine on Mac OS X using MacPorts.

Cool!

--
Duke
A: Backwards from the way folks normally read text
A: Because it forces conversations to flow in a nonsensical order.
Q: Why is top-posting a major PAIN?
[http://en.wikipedia.org/wiki/Netiquette%5d

John Cowan — 2010-05-10 20:41:42

Duke Normandin scripsit:

> I sure will look at it! Would I be correct in assuming that you would
> advise to drop Joy as well? What about Factor?

If you want practical application or large/growing ecosystem, then yes.
Joy is all about getting the abstraction right.

--
Real FORTRAN programmers can program FORTRAN John Cowan
in any language. --Ed Post cowan@...

William Tanksley, Jr — 2010-05-10 20:49:16

Duke Normandin <dukeofperl@...> wrote:
> William Tanksley, Jr wrote:
>> I have to say, however, that Rod obviously made a minor typo and
>> accidentally mis-ordered the concatenative languages, which he
>> obviously meant to place at the top of the list. :-) I'm kidding, I'm
>> kidding.

> I must admit that Joy _did_ appeal to me the first time I saw it. How
> well I could do with it may never be known. What do you think of
> Factor?

I like it a lot -- it's a clever language, probably the most complete
application-oriented concatenative language (certainly the most
complete outside of the proprietary Forth vendors). I usually
recommend trying it first; Joy is a fun language, but is rather
academically oriented and not really actively maintained.

>> By the way, if you HAD been interested in bare metal, I'd have
>> suggested learning colorForth and reimplementing it from scratch. Heh.
> Why re-implement from scratch?

Because it's the only way to really understand the bare metal -- and
the only way to get a language ideal for manipulating YOUR machine.

> and why colorForth?

Because it's the simplest dialect of Forth, based on years of Chuck
Moore's experience and centered around the idea of bare metal. (It has
to be said, though, that Chuck's idea of working with bare metal
involved writing Color Forth for the Pentium, writing a chip designer
program on it, designing a whole new chip, rewriting for that chip,
and designing the successor to that chip on the newly fabbed chip
itself. I'm not up to that, and I doubt anyone aside from Chuck is.)

There's a good implementation with examples here:
http://rainbowforth.sourceforge.net/; its own full source code is at
http://rainbowforth.sourceforge.net/blocks.html and might be worth a
quick skim. Chuck's code is public domain as well, but... Well, it's
like expecting to read Knuth in one sitting.

-Wm

Duke Normandin — 2010-05-10 20:53:05

On Mon, 10 May 2010, John Cowan wrote:

> Duke Normandin scripsit:
>
> > I sure will look at it! Would I be correct in assuming that you would
> > advise to drop Joy as well? What about Factor?
>
> If you want practical application or large/growing ecosystem, then yes.
> Joy is all about getting the abstraction right.

Not sure what you mean by "getting the abstraction right"?

--
Duke

Duke Normandin — 2010-05-10 21:06:31

On Mon, 10 May 2010, William Tanksley, Jr wrote:

[snip]

> > I must admit that Joy _did_ appeal to me the first time I saw it. How
> > well I could do with it may never be known. What do you think of
> > Factor?
>
> I like it a lot -- it's a clever language, probably the most complete
> application-oriented concatenative language (certainly the most
> complete outside of the proprietary Forth vendors). I usually
> recommend trying it first; Joy is a fun language, but is rather
> academically oriented and not really actively maintained.

I guess I'll be Factoring out Joy as of right now! ;)

> >> By the way, if you HAD been interested in bare metal, I'd have
> >> suggested learning colorForth and reimplementing it from scratch. Heh.
> > Why re-implement from scratch?
>
> Because it's the only way to really understand the bare metal -- and
> the only way to get a language ideal for manipulating YOUR machine.

I see! Re-implementing it in C? or Assembly Language?

> > and why colorForth?
>
> Because it's the simplest dialect of Forth, based on years of Chuck
> Moore's experience and centered around the idea of bare metal. (It has
> to be said, though, that Chuck's idea of working with bare metal
> involved writing Color Forth for the Pentium, writing a chip designer
> program on it, designing a whole new chip, rewriting for that chip,
> and designing the successor to that chip on the newly fabbed chip
> itself. I'm not up to that, and I doubt anyone aside from Chuck is.)

Simple is Good! Simplest is even better! ;) I wonder why there's no
mention of it on c.l.f.? I know that Fox and Passinitti (sp?) don't
hit it off.

> There's a good implementation with examples here:
> http://rainbowforth.sourceforge.net/; its own full source code is at
> http://rainbowforth.sourceforge.net/blocks.html and might be worth a
> quick skim. Chuck's code is public domain as well, but... Well, it's
> like expecting to read Knuth in one sitting.

I'll have a look.
--
Duke
A: Backwards from the way folks normally read text
A: Because it forces conversations to flow in a nonsensical order.
Q: Why is top-posting a major PAIN?
[http://en.wikipedia.org/wiki/Netiquette%5d

William Tanksley, Jr — 2010-05-10 21:14:24

Duke Normandin <dukeofperl@...> wrote:
> John Cowan wrote:
>> If you want practical application or large/growing ecosystem, then yes.
>> Joy is all about getting the abstraction right.
> Not sure what you mean by "getting the abstraction right"?

I'm not sure. I'd have said that Joy is about starting to explore the
theory for the first time. I don't think Joy's been modified when "the
abstraction" turned out to be wrong. (Am I wrong?)

Factor's been modified many times when a better way was found to
express a given concept; many profound changes have been made that
affected much of the code of most applications (this was possible
because Factor's master repository includes many of the applications
written in it). Factor isn't at 1.0 yet, so these changes are still
possible -- but the last release included fairly minor changes, and it
had been a long time since the release before that; things are
becoming quite stable.

The purpose of those changes is to know by experiment whether a
proposed language change is actually a decent idea -- in order to be
officially released, it should actually improve most applications.

One extreme example of a language modification was when Factor
replaced 'dip' and stack shufflers (swap, rot, and so on) with the
combinators in the cleave/spread/apply family -- stack shuffling was
assumed to be essential to stack languages, but those combinators can
often make it unneeded.

> Duke

-Wm

William Tanksley, Jr — 2010-05-10 21:20:21

Duke Normandin <dukeofperl@...> wrote:
> William Tanksley, Jr wrote:
>> >> By the way, if you HAD been interested in bare metal, I'd have
>> >> suggested learning colorForth and reimplementing it from scratch. Heh.
>> > Why re-implement from scratch?
>> Because it's the only way to really understand the bare metal -- and
>> the only way to get a language ideal for manipulating YOUR machine.

> I see! Re-implementing it in C? or Assembly Language?

In itself. And machine language -- see the source for Rainbow Forth
for an example (the white text that looks like assembly language is
actually a comment). Personally, I'd prefer to first implement an
assembler -- it makes it a bit harder to bootstrap on a new machine,
but if one tests carefully that problem can be avoided. But using raw
machine code for the bootstrap code does make the source code shorter,
as long as the reader allows himself to trust the bootstrap code
(which few humans can read).

>> > and why colorForth?
>> Because it's the simplest dialect of Forth, based on years of Chuck
>> Moore's experience and centered around the idea of bare metal. (It has
>> to be said, though, that Chuck's idea of working with bare metal
>> involved writing Color Forth for the Pentium, writing a chip designer
>> program on it, designing a whole new chip, rewriting for that chip,
>> and designing the successor to that chip on the newly fabbed chip
>> itself. I'm not up to that, and I doubt anyone aside from Chuck is.)

> Simple is Good! Simplest is even better! ;) I wonder why there's no
> mention of it on c.l.f.? I know that Fox and Passinitti (sp?) don't
> hit it off.

It's been talked about a lot, but it's a rather limited audience. Yes,
both of those have their problems; Fox likes being counterculture,
while Passinitti likes to defend common sense. I think both are right,
but neither is always reasonable about that. The Machine Forth list is
more on-topic, and won't get any "annoying" crosstalk from classical
Forthers. (Is there a color forth mailing list? I don't remember.
Machine Forth was Chuck's name for the version of Forth he made before
Color Forth.)

-Wm

Duke Normandin — 2010-05-10 21:27:50

On Mon, 10 May 2010, William Tanksley, Jr wrote:

> Duke Normandin <dukeofperl@...> wrote:
> > John Cowan wrote:
> >> If you want practical application or large/growing ecosystem, then yes.
> >> Joy is all about getting the abstraction right.
> > Not sure what you mean by "getting the abstraction right"?
>
> I'm not sure. I'd have said that Joy is about starting to explore the
> theory for the first time. I don't think Joy's been modified when "the
> abstraction" turned out to be wrong. (Am I wrong?)

So you're saying that Joy was indeed flawed right from the onset?
The point is moot with me anyway, as I'm convinced that exploration of
concatenative language will proceed with Factor.

[snip]

> One extreme example of a language modification was when Factor
> replaced 'dip' and stack shufflers (swap, rot, and so on) with the
> combinators in the cleave/spread/apply family -- stack shuffling was
> assumed to be essential to stack languages, but those combinators can
> often make it unneeded.

I see! Thanks for clearing that up!

--
duke

stevan apter — 2010-05-10 21:49:02

On May 10, 2010, at 5:27 PM, Duke Normandin wrote:

> On Mon, 10 May 2010, William Tanksley, Jr wrote:
>
> > Duke Normandin <dukeofperl@...> wrote:
> > > John Cowan wrote:
> > >> If you want practical application or large/growing ecosystem, then yes.
> > >> Joy is all about getting the abstraction right.
> > > Not sure what you mean by "getting the abstraction right"?
> >
> > I'm not sure. I'd have said that Joy is about starting to explore the
> > theory for the first time. I don't think Joy's been modified when "the
> > abstraction" turned out to be wrong. (Am I wrong?)
>
> So you're saying that Joy was indeed flawed right from the onset?
>
there are several reasons to start with Joy. first, because it
is incredibly simple. second, because it is accompanied by several
beautiful papers by manfred on the theory of computing. in my
opinion, the ideas in those papers (and the one on concatenative
combinators by brent kirby) are more valuable than any of the
implementations. i'm fairly confident billy will agree.

i'm an application programmer by trade, as are many in this group,
so don't get the impression that i discount the value of a practical
tool like Factor.

and since i'm an array-head, i will recommend having a look at k.




[Non-text portions of this message have been removed]

Duke Normandin — 2010-05-10 21:55:29

On Mon, 10 May 2010, stevan apter wrote:

>
> On May 10, 2010, at 5:27 PM, Duke Normandin wrote:
>
> > On Mon, 10 May 2010, William Tanksley, Jr wrote:
> >
> > > Duke Normandin <dukeofperl@...> wrote:
> > > > John Cowan wrote:
> > > >> If you want practical application or large/growing ecosystem, then yes.
> > > >> Joy is all about getting the abstraction right.
> > > > Not sure what you mean by "getting the abstraction right"?
> > >
> > > I'm not sure. I'd have said that Joy is about starting to explore the
> > > theory for the first time. I don't think Joy's been modified when "the
> > > abstraction" turned out to be wrong. (Am I wrong?)
> >
> > So you're saying that Joy was indeed flawed right from the onset?
> >
> there are several reasons to start with Joy. first, because it
> is incredibly simple. second, because it is accompanied by several
> beautiful papers by manfred on the theory of computing. in my
> opinion, the ideas in those papers (and the one on concatenative
> combinators by brent kirby) are more valuable than any of the
> implementations. i'm fairly confident billy will agree.
>
> i'm an application programmer by trade, as are many in this group,
> so don't get the impression that i discount the value of a practical
> tool like Factor.
>
> and since i'm an array-head, i will recommend having a look at k.

OMGosh! I'm now totally confused! See you guys! I'm off to brush up
on BASIC. ;)

Just kidding!

--
Duke

William Tanksley, Jr — 2010-05-10 22:04:02

Duke Normandin <dukeofperl@...> wrote:
> So you're saying that Joy was indeed flawed right from the onset?

I'm a Hobbesian when it comes to programming languages... Or maybe a
Calvinist. They're ALL flawed. Now and forever. Fixing any problem you
find is a good idea, and there will always be more flaws to fix.

Joy is an experiment, made by an expert in logical programming who
didn't really have a lot of experience with the classical stack
languages, and kept roughly the same after the initial release. It was
genius (if I may say so), and very useful for teaching, but didn't
build on experience and incorporated only a few changes.

> duke

-Wm

William Tanksley, Jr — 2010-05-10 22:13:03

stevan apter <sa@...> wrote:
> Duke Normandin wrote:
>> So you're saying that Joy was indeed flawed right from the onset?
> there are several reasons to start with Joy.  first, because it
> is incredibly simple.  second, because it is accompanied by several
> beautiful papers by manfred on the theory of computing.  in my
> opinion, the ideas in those papers (and the one on concatenative
> combinators by brent kirby) are more valuable than any of the
> implementations.  i'm fairly confident billy will agree.

All good points, stevan.

I do think that Manfred's papers are very much worth reading, and in
order to read them you'll need to learn at least scraps of Joy. That's
as far as I got, personally; I didn't have to learn the whole
language, and it may be that it's partially because I'm already
proficient in a stack language so it all seemed natural to me.

> and since i'm an array-head, i will recommend having a look at k.

And by "k" you perhaps mean "q", since k isn't generally available
anymore... And Q has an excellent online book, "Q for Mortals". Linked
to as part of

http://en.wikipedia.org/wiki/Q_(programming_language_from_Kx_Systems)

I do like Q. It's proprietary, but it's so good it's got a lot of HUGE
customers using it, so it's unlikely to die.

-Wm

John Cowan — 2010-05-10 23:34:56

William Tanksley, Jr scripsit:

> Duke Normandin <dukeofperl@...> wrote:
> > John Cowan wrote:
> >> If you want practical application or large/growing ecosystem, then yes.
> >> Joy is all about getting the abstraction right.
> > Not sure what you mean by "getting the abstraction right"?
>
> I'm not sure. I'd have said that Joy is about starting to explore the
> theory for the first time. I don't think Joy's been modified when "the
> abstraction" turned out to be wrong. (Am I wrong?)

The context has been lost here (my fault): I was talking about the
data/code duality which Joy keeps to more closely than any concatenative
language I know. In Joy, lists and closures (not that there's anything
to close over) are the same thing, so you can create functions
using list manipulation and then execute them. As far as I know,
this isn't possible in Cat or Factor.

> One extreme example of a language modification was when Factor
> replaced 'dip' and stack shufflers (swap, rot, and so on) with the
> combinators in the cleave/spread/apply family -- stack shuffling was
> assumed to be essential to stack languages, but those combinators can
> often make it unneeded.

Joy isn't intended to be minimal, and has had both for a long time.

--
We are lost, lost. No name, no business, no Precious, nothing. Only empty.
Only hungry: yes, we are hungry. A few little fishes, nassty bony little
fishes, for a poor creature, and they say death. So wise they are; so just,
so very just. --Gollum cowan@... http://ccil.org/~cowan

Chris Double — 2010-05-11 00:21:14

On 11/05/10 11:34, John Cowan wrote:
> In Joy, lists and closures (not that there's anything
> to close over) are the same thing, so you can create functions
> using list manipulation and then execute them. As far as I know,
> this isn't possible in Cat or Factor.

Factor has functions for manipulating 'quotations' and converting
sequences of words to quotations. For example:

{ "Hello" print } >quotation call

In this example { ... } is a sequence containing the string "Hello" and
the word (Factor's terminology for function) 'print'.

>quotation converts this to a quotation (Factor's terminology for an
anonymous function) and then calls it.

You can also curry quotations, compose them, etc:

"Hello " [ print ] curry call
[ "Hello " ] [ print ] compose call

Chris.
--
http://www.bluishcoder.co.nz

John Cowan — 2010-05-11 00:47:17

Chris Double scripsit:

> Factor has functions for manipulating 'quotations' and converting
> sequences of words to quotations. For example:

Ah, this must be new since I stopped looking at Factor. Thanks.

--
Babies are born as a result of the John Cowan
mating between men and women, and most http://www.ccil.org/~cowan
men and women enjoy mating. cowan@...
--Isaac Asimov in Earth: Our Crowded Spaceship

Duke Normandin — 2010-05-11 01:30:28

On Mon, 10 May 2010, William Tanksley, Jr wrote:

> Duke Normandin <dukeofperl@...> wrote:
> > So you're saying that Joy was indeed flawed right from the onset?
>
> I'm a Hobbesian when it comes to programming languages... Or maybe a
> Calvinist. They're ALL flawed. Now and forever. Fixing any problem you
> find is a good idea, and there will always be more flaws to fix.
>
> Joy is an experiment, made by an expert in logical programming who
> didn't really have a lot of experience with the classical stack
> languages, and kept roughly the same after the initial release. It was
> genius (if I may say so), and very useful for teaching, but didn't
> build on experience and incorporated only a few changes.

I appreciate your candor! Thanks..
--
duke

Duke Normandin — 2010-05-11 01:37:51

On Mon, 10 May 2010, William Tanksley, Jr wrote:

> Duke Normandin <dukeofperl@...> wrote:
> > William Tanksley, Jr wrote:
> >> >> By the way, if you HAD been interested in bare metal, I'd have
> >> >> suggested learning colorForth and reimplementing it from scratch. Heh.
> >> > Why re-implement from scratch?
> >> Because it's the only way to really understand the bare metal -- and
> >> the only way to get a language ideal for manipulating YOUR machine.
>
> > I see! Re-implementing it in C? or Assembly Language?
>
> In itself. And machine language -- see the source for Rainbow Forth
> for an example (the white text that looks like assembly language is
> actually a comment). Personally, I'd prefer to first implement an
> assembler -- it makes it a bit harder to bootstrap on a new machine,
> but if one tests carefully that problem can be avoided. But using raw
> machine code for the bootstrap code does make the source code shorter,
> as long as the reader allows himself to trust the bootstrap code
> (which few humans can read).

To re-cap - I would need to customize RainbowForth for the particular
machine/CPU I'm using, using a combination of RainbowForth and
Assembler. Which means that I would first have to learn to program in
Assembly language for my target CPU. Ummm... Maybe it's easier than it
sounds. ;)
--
duke

Rodney D Price — 2010-05-11 22:05:15

Not to mention that you'd have to learn the low-level OS calls for either Linux, OSX, or Windows, plus the dirty details of OS device drivers, plus... It makes me shudder just to think of it.

The reasons stated above are why I say that Forth is great for /small/ embedded systems, but not for other things. There exist several (many?) Forths that various people have written to run on top of an OS. It appears that RainbowForth is not one of them. If you really must start with Forth, download the free trial Forth from http://www.forth.com It at least is a commercial-grade implementation of Forth. No guarantees on any of the others.

-Rod

On May 10, 2010, at 7:37 PM, Duke Normandin wrote:

> On Mon, 10 May 2010, William Tanksley, Jr wrote:
>
> > Duke Normandin <dukeofperl@...> wrote:
> > > William Tanksley, Jr wrote:
> > >> >> By the way, if you HAD been interested in bare metal, I'd have
> > >> >> suggested learning colorForth and reimplementing it from scratch. Heh.
> > >> > Why re-implement from scratch?
> > >> Because it's the only way to really understand the bare metal -- and
> > >> the only way to get a language ideal for manipulating YOUR machine.
> >
> > > I see! Re-implementing it in C? or Assembly Language?
> >
> > In itself. And machine language -- see the source for Rainbow Forth
> > for an example (the white text that looks like assembly language is
> > actually a comment). Personally, I'd prefer to first implement an
> > assembler -- it makes it a bit harder to bootstrap on a new machine,
> > but if one tests carefully that problem can be avoided. But using raw
> > machine code for the bootstrap code does make the source code shorter,
> > as long as the reader allows himself to trust the bootstrap code
> > (which few humans can read).
>
> To re-cap - I would need to customize RainbowForth for the particular
> machine/CPU I'm using, using a combination of RainbowForth and
> Assembler. Which means that I would first have to learn to program in
> Assembly language for my target CPU. Ummm... Maybe it's easier than it
> sounds. ;)
> --
> duke
>

William Tanksley, Jr — 2010-05-11 22:17:47

Rodney D Price <rodprice@...> wrote:

> Not to mention that you'd have to learn the low-level OS calls for either
> Linux, OSX, or Windows, plus the dirty details of OS device drivers, plus...
> It makes me shudder just to think of it.
>

I was speaking from the reference frame of a person who wanted to do some
bare-metal coding. Please keep that in mind -- YOU may shudder, and rightly
so, but that doesn't mean the activity is inherently distasteful or bad;
it's actually profitable (profits are paid in the form of knowledge).

There exist several (many?) Forths that various people have written to run
> on top of an OS. It appears that RainbowForth is not one of them. If you
> really must start with Forth, download the free trial Forth from
> http://www.forth.com It at least is a commercial-grade implementation of
> Forth. No guarantees on any of the others.


Fine... But there are no guarantees on anything you didn't pay for a
guarantee on. (Although as you say, Forth.com is a good outfit. I was also
positively impressed with MPE's "VFX Forth", and its demo version.)

But I don't think those things will appeal to Duke, based on his stated
interests; I think he's already passed Forth by.

-Rod


-Wm


[Non-text portions of this message have been removed]

Duke Normandin — 2010-05-12 01:37:24

On Tue, 11 May 2010, Rodney D Price wrote:

> Not to mention that you'd have to learn the low-level OS calls for
> either Linux, OSX, or Windows, plus the dirty details of OS device
> drivers, plus... It makes me shudder just to think of it.

Yep! A daunting task, for sure, for some! It sweeps over me though,
that to truly "get into" Forth, one needs to be dabbling with
robotics, or CNC Lathes or military drones or something. Would you not
agree? Otherwise, what's the point? Forth never struck me as being a
general-purpose language. I know! "Smart toilets" - automatic
flushing; gallonage monitoring toilets. ;)

> The reasons stated above are why I say that Forth is great for
> /small/ embedded systems, but not for other things. There exist
> several (many?) Forths that various people have written to run on
> top of an OS. It appears that RainbowForth is not one of them. If
> you really must start with Forth, download the free trial Forth from
> http://www.forth.com It at least is a commercial-grade
> implementation of Forth. No guarantees on any of the others.

I have gforth on my OS X box - it works OK. I also have Hans
Beezemer's 4TH - it's cool too - reminiscent of Turbo C and Turbo
Pascal. If I could only think of something useful to do with them,
then maybe I might be motivated to bear down and learn them better. ;)

I do like Miranda though...
--
Duke