You know what else takes in strings and spits out strings? A compiler!<p>Here are a couple of other under-appreciated facts about compilers:<p>1. For regular grammars, they are easy to build with any kind of programming language.<p>2. For regular grammars, they are <i>really</i> <i>really</i> easy to build with statically-typed programming languages.<p>Now days, my web development is essentially just compiler construction for regular languages, and it just so happens that extremely statically-typed like the MLs (F#, in my case) are damn good for writing compilers (one joke is that it’s the only thing they’re good for). I write far fewer lines of code per feature than I ever did with ”dynamically“ typed languages like PHP, and it’s usually right the first time.