Not really, for many optimization algorithms an IR like SSA is required, ASTs are not that good for that.
AST are better suitable for the frontend, and even then, they only became a thing after we started having tons of RAM available.
Re:Writing a C Compiler, Part 2
by DSMan195276 on Thursday December 07, 2017 @07:26PM
(#15875653)
I suppose I should clarify, I would consider a basic AST the sane choice when talking about creating toy compilers as a learning experience - as opposed to creating a compiler that just reads in text and spits out assembly without any real intermediate representation. Which, there are legitimate compilers that do that (And as you mentioned, older compilers tended to work this way as well), but for learning I don't really think you get nearly as much out of doing it that way.
That said, if you want to do something more advanced or use or use something better then a basic AST, I agree go for it. But if you're actually writing the compiler for a project that isn't just a toy or as a learning experience, you're almost definitely better off just building a frontend on an existing platform like LLVM.
It's also worth noting that his compiler creates an intermediate AST (As any sane compiler should), so it's really not that hard to write multiple backends if he wanted.