Let's be precise. TT views are converted to Perl before execution. Seamstress views are manually written before execution. In both cases, Perl code is accessing the model.
TT originally was not this way. It is done now because it helps Template::Tookit
execute more quickly based on its current architecture. Template::Alloy
, which supports full TT syntax, is different. If you want to compile to Perl for the few cases that it is faster, you can. But Alloy's normal mode of execution is first to generate an optree - which can loosely be compared to a parsed DOM, and then loop through the nodes of the optree, letting nodes pull from the data store as necessary - all without generating any Perl. In essence it is a virtual machine for a simplistic optree language - I am looking forward to making it target Parrot directly someday.
The difference is that one tool automatically generates that Perl and the other makes use of heavily object-oriented Perl to do so.
Well - really the difference is that one requires you to write the heavily object-oriented Perl - the other one writes it for you so even the use of Perl is transparent.
And if you use Alloy, then nearly no code has to be written (either manually or automatically) at all to interact with the template.
my @a=qw(random brilliant braindead); print $a[rand(@a)];