A little while ago, I interviewed Robert Glass and something he said struck a chord.
I do think, however, that in the ancient past, when COBOL and Fortran (which are the original domain-specific languages) were in full flower, we understood the role of languages vs. applications better. You may wonder why COBOL, for example, has survived all this time when almost everyone says it’s a very bad language. It’s because it has business-domain-specific capabilities that today’s languages still don’t offer, like decimal arithmetic and heterogeneous data/file manipulation. I think one should start with the dominant domains, then figure out what language features they need, rather than start with neat language features or compiler tweaks, and see who they should be good for.
If COBOL and Fortran are DSLs (a categorization I’m not sure I agree with, but won’t discount either), what place does Ruby play in the programming world? It’s not really systems programming languages (the counterpoint to what I think Robert is calling a DSL), but is it a DSL?
Shortly after I posted my the interview with Robert, I posted a rant about people mis-categorizing Ruby as a web programming language. It certainly hosts some nice web programming frameworks, but it’s a lot more than that. There’s Rake, Ruport, and a variety of other frameworks/tools/DSLs that make different tasks much easier to do.
Perhaps part of Ruby’s allure is that it’s a DSL (in the Robert Glass sense) for building frameworks/tools/DSLs. LISP is sometimes called the programmable programming language. Should we say this about Ruby as well?