How to choose the right language
Hexstream: In my opinion there's too much emphasis on general-purpose languages over domain-specific ones. There's lots of low-hanging fruit in the domain-specific space.While designing or implementing a worthwhile Turing-complete, general-purpose programming language with a correct and efficient implementation is a huge undertaking and requires vast amounts of knowledge, doing the same for a domain-specific language is much easier because the scope is much more focused and the efficiency requirements are often not as strict.As long as you focus on semantics, limit the scope of your language, use declarative techniques like pattern-matching that will let you avoid the Turing-completeness trap (Turing-completeness makes your code hard to analyse and process, unlike declarative data) and use a proper general-purpose language for the implementation, designing and implementing a domain-specific language is really not that hard, though proper IDE integration and a debugger are still not so easy to do.I like to make the right tool for the job, so I use Common Lisp, which makes it almost ridiculously easy to invent new s-expression-based syntaxes via macros and compile through production of trees of closures, among other things.