|
Since first reading it, I’ve come to disagree with this post. For personal projects, my main language is Haskell, which Hague counts as a ‘puzzle language’. But that doesn’t match my experience: if I know the problem domain, I can write a solution very fluently in Haskell. (If I don’t know the problem domain, of course, it’s difficult in any language.) I find Haskell as easy to write programs in as Python, if not more so. On the other hand, there are some other languages I find baffling. For instance, C++. Whenever I have to use C++, I find it horribly confusing. It takes me considerable effort to figure out how to structure my program in such a way that the compiler won’t, for instance, insert a destructor call before I’ve used an object. Or that I won’t run into any one of the considerable number of footguns C++ contains. This is a language I find truly puzzling. For this reason, I suspect that what is a ‘puzzle language’ is mostly to do with what you’re familiar with and the way you think. For me, C++ is a puzzle language. For Hague, Haskell is a puzzle language. For both of us, J is a puzzle language — but I can easily imagine someone who can write programs easily in J. |
I'm always in awe when I see the Advent of Code solutions from Norvig in Python, they often seem so elegant. But my head isn't wired to think of the problems that way.