I hope we can talk about this on Coast to Coast Bio tonight. In my exploration of proper programming and Ruby, I’ve seen a lot of discussion around Domain Specific Languages, and to try and understand the role that DSL’s could play in scientific programming.
The Wikipedia article on DSL’s starts with the following
The term domain-specific language (DSL) has become popular in recent years in software development to indicate a programming language or specification language dedicated to a particular problem domain, a particular problem representation technique, and/or a particular solution technique.
Alright, in other words, the Matlab language, the Mathematica language, or closer to home the CHARMM scripting language are all examples of DSLs. The other day I blogged about Kappa, which is a DSL as well. So what’s so special about them and why do they come up a lot in the Ruby community, and I suspect others as well. In fact a couple of months ago (and I am still long overdue on writing at more length on this subject), I got very intrigued by SimTK. More on this in a bit
To some extent, it’s probably fashionable to do so. On the other hand, I see the value in using a general language, like Ruby, to generate a “language” targeted at solving a particular problem. I think that’s the key and what would be interesting to explore, especially in building DSLs for scientific programming and computing. Let’s go back to SimTK. which Shirley (or should I say Dr. Wu) described to me as a “code repository and project management tool”. But there is a second aspect to the project, the simulation toolkit, which allows you to build purpose-driven applications like OpenSim, or OpenMM (which might be a DSL in itself). Now, having not jumped into SimTK, I am not completely sure if the framework qualifies as a DSL, but they have used a general programming language to construct a system for a specific set of problems.
So where am I going with all this? Well, we have languages like Ruby and Python, both of which have pretty strong metaprogramming capabilities. In fact, people are already looking at such problems as evidenced by Tiago’s blog posts. How mainstream will these DSLs that are written using Ruby, Python etc get? We don’t really have a vibrant scientific programming community (they tend to be a little silo-ed), and there are few avenues for scientific programmers to come together in a general sense, so we end up with multiple “specialized” DSLs for things like molecular modeling. But these are early days, so you never know where things will end up.
What I would like to do is re-visit this post in a few months when I have done a better job wrapping my head around DSLs and metaprogramming, cause I haven’t quite yet
DSLs and scientific programming
I hope we can talk about this on Coast to Coast Bio tonight. In my exploration of proper programming and Ruby, I’ve seen a lot of discussion around Domain Specific Languages, and to try and understand the role that DSL’s could play in scientific programming.
The Wikipedia article on DSL’s starts with the following
Alright, in other words, the Matlab language, the Mathematica language, or closer to home the CHARMM scripting language are all examples of DSLs. The other day I blogged about Kappa, which is a DSL as well. So what’s so special about them and why do they come up a lot in the Ruby community, and I suspect others as well. In fact a couple of months ago (and I am still long overdue on writing at more length on this subject), I got very intrigued by SimTK. More on this in a bit
To some extent, it’s probably fashionable to do so. On the other hand, I see the value in using a general language, like Ruby, to generate a “language” targeted at solving a particular problem. I think that’s the key and what would be interesting to explore, especially in building DSLs for scientific programming and computing. Let’s go back to SimTK. which Shirley (or should I say Dr. Wu) described to me as a “code repository and project management tool”. But there is a second aspect to the project, the simulation toolkit, which allows you to build purpose-driven applications like OpenSim, or OpenMM (which might be a DSL in itself). Now, having not jumped into SimTK, I am not completely sure if the framework qualifies as a DSL, but they have used a general programming language to construct a system for a specific set of problems.
So where am I going with all this? Well, we have languages like Ruby and Python, both of which have pretty strong metaprogramming capabilities. In fact, people are already looking at such problems as evidenced by Tiago’s blog posts. How mainstream will these DSLs that are written using Ruby, Python etc get? We don’t really have a vibrant scientific programming community (they tend to be a little silo-ed), and there are few avenues for scientific programmers to come together in a general sense, so we end up with multiple “specialized” DSLs for things like molecular modeling. But these are early days, so you never know where things will end up.
What I would like to do is re-visit this post in a few months when I have done a better job wrapping my head around DSLs and metaprogramming, cause I haven’t quite yet