On Fri, 23 Dec 2011 20:55:54 -0800 Albert Skye <[email protected]> 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. _______________________________________________ Remind-fans mailing list [email protected] http://lists.roaringpenguin.com/cgi-bin/mailman/listinfo/remind-fans Remind is at http://www.roaringpenguin.com/products/remind
