Things Unlearned
Great article, I was nodding my head with almost every point!  Although I think you also have to consider that the author has a strong math background, which both improves and warps your view of programming.  If you don&#x27;t know any math, then this post is probably less relevant to you (e.g. learning a bit Haskell or ML is probably a good idea in that case).<p>------<p>As a nitpick about the theory of automata, I would draw a big red line between regular languages and context free grammars.<p>Regular languages have very useful engineering properties: they have predictable (linear) performance and give you &quot;free&quot; lookahead.  (That is, nondeterminism is a math-y idea that many programmers are not comfortable with, but it&#x27;s useful for engineering.)<p>They are better than Perl-style regexes for building reliable and understandable systems, which &quot;blow up&quot; on a regular basis.<p>In contrast, context-free grammars have almost no useful engineering properties by themselves.  (There are subsets like LALR(1) that do, but they come with a bunch of tradeoffs.)  As the article mentions, learning about recursive descent parsing first is probably more practical.<p>Also, you&#x27;re MUCH more likely to encounter a regular expression in real code than a context free grammar.  In 15 years of professional programming I probably dealt with regexes on a weekly or monthly basis, but had to write or modify a grammar exactly zero times.  It does help to be more familiar with regexes and regular languages.<p>This post&#x2F;sketch elaborates on related points:<p><i>Comments on Eggex and Regular Languages</i> <a href="http:&#x2F;&#x2F;www.oilshell.org&#x2F;blog&#x2F;2020&#x2F;07&#x2F;eggex-theory.html" rel="nofollow">http:&#x2F;&#x2F;www.oilshell.org&#x2F;blog&#x2F;2020&#x2F;07&#x2F;eggex-theory.html</a>