There have always been attitudes that I don't understand. James Hague's recent Death of a Language Dilettante is one of them. Now, most people know that I'm a language dilettante; that I love everything new and shiny coming out of the programming language space, even if it does seem that in some ways that space has been tapped out, with languages becoming ever more blunt on one side with Go and Python, and ever more esoteric on the other with Agda and Idris.
James issues a challenge: "Give a language with a poor reputation (JavaScript, Perl) to someone who knows it passably well and--this is the key--has a strong work ethic. Let the language dilettante use whatever he or she wants, something with the best type system, hygenic macros, you name it. Give them both a real-world task to accomplish. My money is on the first person by a wide margin."
Well, sure. Tooling matters. Experience matters. In the ${DAY_JOB} I write a ton of Javascript, and I write it more than passably well. I also write a ton of Python, again more than passably well. Those are two languages at which I consider myself working at an expert level.
On the other hand, I also love esoteric languages and, more importantly, every time I've worked in one, it's made me a better programmer in the languages I use professionally. Learning Haskell made me really appreciate your responsibility for separating TheWorld from the program, and taught me the power of higher-order functions; learning Lisp made me really appreciate the power of expressions qua expressions in a way Haskell tried hard to make so simple you didn't notice them. When you work in a "real world" language, those matters are present in everyday details, and knowing how to work with them is a gift, not a disease.
Right now, my "esoteric" language is Hy. Hy is an implementation of Lisp that produces a Python AST and runs on the Python VM. Hy implements its Python importlib layer incorrectly, and in a way that means certain Django features are unavailable to Hy developers, and I intend to fix it.
Unfortunately, Python's importlib is pretty esoteric in its own right, and implementing a new pather/finder/loader has been a beast. But I'm closing in on a solution, and I intend to have it working soon.
And then I can do what I set out to do, which is write a Django app. Only I can do it in Hy.
And along the way, maybe get a new Django command, newhyproject, out of it, as well as newhyapp and maybe newhymigrations. But those are stretch goals. Right now, all I want is for Hy to interoperate with Django correctly, and then I can think about future projects.
So I'll take James's challenge, but I'll have to say: "Both is good."