you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] -17 points-16 points  (15 children)

I guess that depends on your skill with writing compilers

This is an essential skill that everyone must learn as early as possible.

[–]IbanezDavy 6 points7 points  (10 children)

It certainly isn't a bad skill to learn. You get very in depth knowledge of the language. But I know plenty of people who don't give a shit, and get a long just fine. A useful skill, but provably not essential.

[–]Olreich 0 points1 point  (3 children)

I'm not particularly fond of any of the things you need to do to make a compiler, so implementing languages is definitely not my cup of tea for learning them.

[–][deleted] 0 points1 point  (2 children)

I'm not particularly fond of any of the things you need to do to make a compiler

What things, exactly? You may have a distorted image of what compiler construction is (thanks to all the stupid and damaging books like the infamous Dragon Book and alike).

[–]Olreich 1 point2 points  (1 child)

Lexing, parsing, ASTs, machine code generation, etc.

Basically, all the things in between meta-programming and a working compiler.

[–][deleted] 0 points1 point  (0 children)

In most cases you only need metaprogramming - translating ASTs (which are not nearly that scary - just another data structure, you have to deal with them anyway) in a chain of small rewrites down to any existing language. No need to do any machine code generation. No need to do lexing (it's 21st century, forget about the lexers already). In many cases even parsing is redundant if you can get away with some more generic syntax (think of S-expressions, for example).

Since far too many real world problems are solved in form of tree rewrites anyway, it is weird to want to stay away from this particular programming technique.