# 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