[Remind-Fans] general syntax

David F. Skoll dfs at roaringpenguin.com
Sun Dec 25 11:28:58 EST 2011


On Fri, 23 Dec 2011 20:55:54 -0800
Albert Skye <mistlail at yahoo.co.uk> wrote:

> I don't mean to coerce you into rewriting remind, I'm just curious
> and I thought you might have some observations to share about it,
> simply from developing remind as you have. Hindsight, you know.

OK.  Well, the biggest design flaw, I think, is the separation of date
and time in Remind.  This makes it impossible to create multi-day events
(or indeed any event that spans midnight.)

If I had to do it again, I probably wouldn't design a special-purpose
language.  I'd probably embed a language like Tcl and add functions to
do the date calculations.  [I would consider Perl, but embedding Perl is
disgusting and its footprint is quite a bit larger than Tcl.]

Way back, Remind was designed to run on multiuser UNIX computers.
These computers typically served dozens or hundreds of users and had
less computing power and memory than the average smartphone today.
One of the use-cases of Remind was to run as root from cron and email
people about upcoming reminders.  For that reason, the Remind language
could not be Turing-complete: You had to *know* for sure that a Remind
script would eventually terminate.  So Remind has no looping
constructs and no recursion.

Today, that design goal is quaint, and I would make Remind extend a more
traditional scripting language.

Remind's language is idiosyncratic because when I wrote it, I had
never heard of lex, yacc, or even recursive-descent parsing. :) The
expression-parser in particular is a bizarre piece of hackery... read
src/expr.c and start with the function "Evaluate".

Regards,

David.


More information about the Remind-fans mailing list