Previous | Next --- Slide 19 of 66
Back to Lecture Thumbnails

For running large scale molecular simulations (for instance, to study protein folding dynamics), 4 commonly used domain-specific languages are:

  1. CHARMM (As a fun fact, CHARMM was created in the lab of Prof. Martin Karplus at Harvard, who was one of the 3 winners of the Nobel Prize in Chemistry in 2013, for "the development of multiscale models for complex chemical systems")
  2. NAMD
  3. AMBER

Another domain specific language example is Mackerel, which is used to describe the hardware devices and in-memory registers and data structures like page tables, etc. A well-known application of Mackerel is in Barrelfish, a newly developed research OS kernel based on multikernel architecture and interestingly, it's exactly aiming at embracing the heterogeneous hardware in OS design


Stepping back a bit from the more niche domains, we even have html, Matlab, yacc, and Mathematica as good examples of domain specific languages. Even bash qualifies as a DSL. Really, DSLs are very common and you've likely used a few already.


@TomoA Octave is also a free-software domain specific language similar to Matlab, which is used to perform numerical calculations. Users interact with Octave via the command line and is mainly used for linear/non-linear calculations.


Would Verilog also be considered as a dsl for a specific HW (FPGA)?


@althalus, I don't think Verilog is productive. :)


Here are examples from Wikipedia. As Verilog is one of hardware description languages, which can be regarded as a specific domain, it is also an example of DSL.

Examples of domain-specific languages include HTML, Logo for pencil-like drawing, Verilog and VHDL hardware description languages, MATLAB and GNU Octave for matrix programming, Mathematica, Maple and Maxima for symbolic mathematics, Specification and Description Language for reactive and distributed systems, spreadsheet formulas and macros, SQL for relational database queries, YACC grammars for creating parsers, regular expressions for specifying lexers, the Generic Eclipse Modeling System for creating diagramming languages, Csound for sound and music synthesis, and the input languages of GraphViz and GrGen, software packages used for graph layout and graph rewriting.


I don't think any of the molecular simulation "languages" listed in the first comment are languages. They're just software packages; you use them as command line programs, and although they do typically have an "input file" format, that input isn't really sophisticated enough to call it a language - it's just a set of input parameter specifications for the simulation, like how big of a time step to take. A legitimate domain-specific language in that category is NAB (Nucleic Acid Builder). I was getting a memory access error in a program for free energy calculations that called some other programs under the hood, and when I starting trying to hunt down the problem I discovered it was somewhere inside about 5,000 lines of NAB that opened with a comment written in the early 90s by someone at Sun (who had evidently written the program) that said "much of what follows is untested and poorly commented." That was the only comment.