UserTalk is a scripting language descendant from
Algol 60 and is built in to
Userland Frontier™ and
Radio Userland™.
Almost universally loved by it's users, it has never become popular as a language because it is inseparable from Frontier. The language itself is something of a nightmare, but it's shortcomings are more than made up for by the programming environment it lives in, which offers an excellent debugger, outline based programming, and sits atop a persistent object database.
A few of UserTalk's annoying bits are:
- 27 Data Types:
Binary, Record, List, Menubar, Script, Outline, Picture, WP-Text, Table, Address, Object Specifier, Alias, File Specifier, Enumerator, String4, String, Char, Direction, Date, Float, Integer, Single, Double, Long, Short, RGB.
Only four or five of these are used in practice, but the rest stick around for old time's sake.
- Poorly organized verbs (like functions or procedures, only different.)
There are lists, but almost no way to use them, not even split or join, and strings, but a horrendously organized set of verbs, including such useless items as ellipsize(), getNextMonth(), memAvailString(), and megabyteString().
- Incredibly complex scoping that ensures that unless you know Frontier inside and out you never really know what variables are going to be floating around when your code executes.
Despite all this (and so much, much more) UserTalk remains frustratingly easy to use. It's code is very easy to read, residing in collapsible outlines that make navigating large bodies of UserTalk a walk in the park. Visually, it looks a lot like Python, since the braces and semicolons are hidden by the outline.
msg("UserTalk, you'll love to hate it");