I kind of make a new language for every project. Rather than writing a program directly, I write pseudocode to solve the program, and then build a language that runs just that pseudocode. I had to query lots of data from webpages, so I made a pattern matching language where the program is a sample of the webpage. E.g. to query the the text of some text , you write the "program"/pattern {.} . Or if the webpage had mul…
I love that approach. Don't let non-essential constraints limit the elegance of your solutions.