What programming languages are 'general purpose' and 'domain specific?

Why aren't domain-specific languages more popular?

  • Like graphic programming languages, is a programming paradigm that had some hype and gleam at one point, but never took off.  Why? Related

  • Answer:

    The question is not really well defined, but I like it because it makes one think about what we are doing with the knowledge ecology.  DSL's have a limited place in this ecology. The answer depends a bit on what is  meant by "popularity".  As someone else pointed out, we use lots of  DSL's behind the scenes (especially in text-oriented environments such  as Linux):  PostScript, command shell languages, and so on.  But they're  hidden within engines, and regular expressions are embedded in general  purpose languages.  I think the "hype" was based on several things that didn't translate well into the world of practice: The intellectual coolness factor for language geeks - an abstract idea that languages-creating-languages could get you some kind ofcreative and productive leverage for free. The "white paper" phenomenon of pitching ideas of leverage and control to corporate management. The fantasy of making things easier for an untrained public. With respect to the third point, how many times have we seen something hyped, like "Create complex applications without writing a single line of code!" ... when the reality is, the complexity has just been moved into another, non-standard, proprietary "language" and user interface.  Surprising how often people fall for this technology conceit, and it's created with the best of intentions.  Net gain?  More complexity.  No thanks. Don't make me learn yet another language and syntax!  Expecially variations of XML. That's for machines, not people.  And the same goes for many DSL's. It's too hard to build the bicycle before you go for a ride. Like DSL's add drag at an awkward point in the software engineering life cycle, in the hope of achieving a payoff later in terms of adaptability to a well-defined problem domain. Similar to the critique of (and the difference between and ), DSL and MDE heavily front-load the engineering process and don't well support informal coding and prototyping.  You have to design and declare too much up front before you can get things to the application stage. The functions of a DSL are (1) to  provide specialized functions while  (2) hiding other complexity.  (1) is done fine by embedded domain  specific languages, a set of features presented within a general-purpose  language (also known as libraries and frameworks).  (2) is too  restrictive for general purpose programmers and too arcane for  non-specialists. You need a team environment to use these technologies.  So it makes sense these approaches are more useful in high-overhead, high-formality industrial settings, but not where most of the world's programming happens.  They don't transfer well from big corporation to startup and hobby programming, and so don't score much for "popularity" Other issues Having a specialized syntax is overrated and adds to the learning curve.  If you take that away you might as well use embedded library functions instead. The model or language engineering process is unwieldly when there is a need to quickly change the model to account for unanticipated new requirements in the problem domain. The user of the DSL is either locked into a fixed set of features, or confronted by a series of versions that have functional discontinuities. Layman's terms, anyone?

Jeff Wright at Quora Visit the source

Was this solution helpful to you?

Related Q & A:

Just Added Q & A:

Find solution

For every problem there is a solution! Proved by Solucija.

  • Got an issue and looking for advice?

  • Ask Solucija to search every corner of the Web for help.

  • Get workable solutions and helpful tips in a moment.

Just ask Solucija about an issue you face and immediately get a list of ready solutions, answers and tips from other Internet users. We always provide the most suitable and complete answer to your question at the top, along with a few good alternatives below.