November 11, 2017
---------------------------------------------------------------
Forth suffers from a lack of approachability. When someone new
to the language sits down to start learning, it's often a
difficult, confusing process.
Consider Gforth. On startup I see:
Gforth 0.7.2, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
So on start, all it does is tell you to type `bye` to exit or
`license` to see the warranty discalimer. I had one of my sons
sit down and try to figure out how to do anything. He tried:
help
Which yielded this unhelpful text:
:3: Undefined word
>>>help<<<
Backtrace:
$7F19AEAEEA68 throw
$7F19AEB04CE0 no.extensions
$7F19AEAEED28 interpreter-notfound1
I mentioned that `words` would provide a list of functions, so
he tried that. I won't insert the 18 screenfuls of text that
were generated. By this point he was already losing interest.
Contrast this with Python:
Python 3.6.2 (default, Oct 3 2017, 01:19:10)
[GCC 4.2.1 Compatible FreeBSD Clang 3.8.0 (tags/RELEASE_380/final 262564)] on freebsd11
Type "help", "copyright", "credits" or "license" for more information.
Typing `help` yields:
Type help() for interactive help, or help(object) for help about object.
And then `help()` gets into something more useful:
Welcome to Python 3.6's help utility!
If this is your first time using Python, you should definitely check out
the tutorial on the Internet at
http://docs.python.org/3.6/tutorial/.
Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules. To quit this help utility and
return to the interpreter, just type "quit".
To get a list of available modules, keywords, symbols, or topics, type
"modules", "keywords", "symbols", or "topics". Each module also comes
with a one-line summary of what it does; to list the modules whose name
or summary contain a given string such as "spam", type "modules spam".
Forth is no longer unique in offering an interactive environment.
And the interfaces are stuck in the past. I'm working to change
this for my dialect.
RETRO on iOS is the best case at the moment. It has a dual pane
editor, with a simple menu at the bottom. And easily discoverable
documentation and examples. But it's not perfect. And so I must
continue to look forward, and build tools that make it easier to
learn and use.
This week I implemented most of a new glossary tool. This is in
the RETRO repository, and the data set (words, comments, and
examples) will be included in future RETRO releases. On iOS the
data will be searchable via the interface. And on FreeBSD/Linux/
macOS a tool exists that makes this data available (and editable)
via the command line.
I'll go further though. I'll use bits from my Atua severs to
expose the data in a browsable form via my server, so it'll be
easily accessible via Gopher or HTTP.
This is just one small thing though. I'll keep looking for more
ways to make my Forth more accessible to new users.
---------------------------------------------------------------