Knowledge

Domain-specific language

Source đź“ť

343:, is a DSL that is implemented as a library in a "host" programming language. The embedded domain-specific language leverages the syntax, semantics and runtime environment (sequencing, conditionals, iteration, functions, etc.) and adds domain-specific primitives that allow programmers to use the "host" programming language to create programs that generate code in the "target" programming language. Multiple eDSLs can easily be combined into a single program and the facilities of the host language can be used to extend an existing eDSL. Other possible advantages using an eDSL are improved 1122: 624:. Most of functions in that language after compiling in fact calls runtime functions written in language specific for targeted platform, so their final implementation is not visible to user. The language primarily serves to make it easy for anyone to pick up the language and develop a game, and thanks to GM runtime which handles main game loop and keeps implementation of called functions, few lines of code is required for simplest game, instead of thousands. 3252: 654:-compatible image processing filter plug-ins; FilterMeister runs as a Photoshop plug-in itself and it can load and execute scripts or compile and export them as independent plug-ins. Although the FilterMeister language reproduces a significant portion of the C language and function library, it contains only those features which can be used within the context of Photoshop plug-ins and adds a number of specific features only useful in this specific domain. 3262: 3272: 1613: 284:
namely, putting holes in things. A General Purpose Language is a complete workbench, with a variety of tools intended for performing a variety of tasks. Domain-specific languages should be used by programmers who, looking at their current workbench, realize they need a better drill and find that a particular domain-specific language provides exactly that.
125:
problem or solution to be expressed more clearly than an existing language would allow and the type of problem in question reappears sufficiently often. Pragmatically, a DSL may be specialized to a particular problem domain, a particular problem representation technique, a particular solution technique, or other aspects of a domain.
635:'s associated scripting language is another example of a domain-specific language for data-driven websites. This scripting language is used to weave together languages and services such as Java, .NET, C++, SMS, email, email servers, http, ftp, exchange, directory services, and file systems for use in websites. 283:
To summarize, an analogy might be useful: a Very Little Language is like a knife, which can be used in thousands of different ways, from cutting food to cutting down trees. A domain-specific language is like an electric drill: it is a powerful tool with a wide variety of uses, but a specific context,
133:
A domain-specific language is created specifically to solve problems in a particular domain and is not intended to be able to solve problems outside of it (although that may be technically possible). In contrast, general-purpose languages are created to solve problems in many domains. The domain can
240:
presents an interesting case: it can be deemed a domain-specific language because it is specific to a specific domain (in SQL's case, accessing and managing relational databases), and is often called from another application, but SQL has more keywords and functions than many scripting languages, and
124:
considers the creation of special-purpose languages for expressing problems as standard part of the problem-solving process. Creating a domain-specific language (with software to support it), rather than reusing an existing language, can be worthwhile if the language allows a particular type of
83:
The line between general-purpose languages and domain-specific languages is not always sharp, as a language may have specialized features for a particular domain but be applicable more broadly, or conversely may in principle be capable of broad application but in practice used primarily for a
1057:
is an open-source software framework for developing programming languages and domain-specific languages (DSLs). Unlike standard parser generators, Xtext generates not only a parser but also a class model for the abstract syntax tree. In addition, it provides a fully featured, customizable
962:
Domain-specific languages allow solutions to be expressed in the idiom and at the level of abstraction of the problem domain. The idea is that domain experts themselves may understand, validate, modify, and often even develop domain-specific language programs. However, this is seldom the
199:
is somewhat blurred, but domain-specific languages often lack low-level functions for filesystem access, interprocess control, and other functions that characterize full-featured programming languages, scripting or otherwise. Many domain-specific languages do not compile to
973:
Domain-specific languages can help to shift the development of business information systems from traditional software developers to the typically larger group of domain-experts who (despite having less technical expertise) have a deeper knowledge of the
1064:
is a cross-platform language toolchain including native code, JIT and Javascript compiler, IDE (in addition to supporting Emacs, Vim, VSCode and others) and command line tools designed to accommodate creating both domain-specific and general purpose
413:
Domain-specific languages which are embedded into user applications (e.g., macro languages within spreadsheets) and which are (1) used to execute code that is written by users of the application, (2) dynamically generated by the application, or (3)
261:, specifically designed for transforming one XML graph into another, which has been extended since its inception to allow (particularly in its 2.0 version) for various forms of filesystem interaction, string and date manipulation, and data typing. 244:
Further blurring this line, many domain-specific languages have exposed APIs, and can be accessed from other programming languages without breaking the flow of execution or calling a separate process, and can thus operate as programming libraries.
167:
Domain-specific languages are languages (or often, declared syntaxes or grammars) with very specific goals in design and implementation. A domain-specific language can be one of a visual diagramming language, such as those created by the
815:
code meaning C had to be learned and properly applied, while UnrealScript was optimized for ease of use and efficiency. Similarly, the development of more recent games introduced their own specific languages, one more common example is
851:
and developers to work with and understand the same representation of the business logic. Most rules engines provide both an approach to simplifying the control structures for business logic (for example, using declarative rules or
915:
is a language designed to define test cases to check the behavior of software, without specifying how that behavior is implemented. It is meant to be read and used by non-technical users using a natural language syntax and a
1040:
which allows overcoming the limits of language parsers and building DSL editors, such as ones with tables and diagrams. It implements language-oriented programming. MPS combines an environment for language definition, a
418:
Many domain-specific languages can be used in more than one way. DSL code embedded in a host language may have special syntax support, such as regexes in sed, AWK, Perl or JavaScript, or may be passed as strings.
1051:
is a language workbench for the efficient development of domain-specific languages. It processes an extended grammar format that defines the DSL and generates Java components for processing the DSL documents.
690:. Domain-specific language could possibly provide a robust set of tools for efficient software engineering. Such tools are beginning to make their way into the development of critical software systems. 253:
Some domain-specific languages expand over time to include full-featured programming tools, which further complicates the question of whether a language is domain-specific or not. A good example is the
427:
Adopting a domain-specific language approach to software engineering involves both risks and opportunities. The well-designed domain-specific language manages to find the proper balance between these.
920:. The tests defined with Gherkin must then be implemented in a general programming language. Then, the steps in a Gherkin program acts as a syntax for method invocation accessible to non-developers. 1085: 241:
is often thought of as a language in its own right, perhaps because of the prevalence of database manipulation in programming and the amount of mastery required to be an expert in the language.
328:
Domain-specific languages which are implemented using programming language macro systems, and which are converted or expanded into a host general purpose language at compile-time or realtime
769:
Besides parsing domain-specific languages, metacompilers are useful for generating a wide range of software engineering and analysis tools. The meta-compiler methodology is often found in
642:(CFML) includes a set of tags that can be used in ColdFusion pages to interact with data sources, manipulate data, and display output. CFML tag syntax is similar to HTML element syntax. 581: 896:
for a domain-specific language such as JavaScript for web applications, HTML for documentation, C++ for high-performance code, etc. This is done by cross-language frameworks such as
844:
and others provide support for DSLs aimed to support various problem domains. DTRules goes so far as to define an interface for the use of multiple DSLs within a rule set.
305:
are typically implemented within a host language as a library and tend to be limited to the syntax of the host language, though this depends on host language capabilities.
612:
is a domain-specific language targeted at novice programmers to easily be able to learn programming. While the language serves as a blend of multiple languages including
1011:
Proliferation of similar non-standard domain-specific languages, for example, a DSL used within one insurance company versus a DSL used within another insurance company.
398:, to perform a specific function, often returning the results of operation to the "host" programming language for further processing; generally, an interpreter or 2117: 1485: 597: 72:. Special-purpose computer languages have always existed in the computer age, but the term "domain-specific language" has become more popular due to the rise of 698: 1988: 1306: 713:
to check program properties against the specification, and an invariant generator that automatically constructs invariants based on the requirements.
1259:
Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (March 2018).
39:(GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as 847:
The purpose of business rules engines is to define a representation of business logic in as human-readable fashion as possible. This allows both
403: 1017:
Increased difficulty of integrating the DSL with other components of the IT system (as compared to integrating with a general-purpose language).
3296: 1867: 693:
The Software Cost Reduction Toolkit is an example of this. The toolkit is a suite of utilities including a specification editor to create a
159:. The boundaries between these concepts are quite blurry, much like the boundary between scripting languages and general-purpose languages. 3301: 2110: 1048: 2288: 1980: 188:
utility defines a syntax for matching and replacing regular expressions. Often, these tiny languages can be used together inside a
1725: 1621: 2045: 1944: 120:, by using a language suitable to the domain at hand – this may consist of using an existing DSL or GPL, or developing a new DSL. 2103: 873: 650:
FilterMeister is a programming environment, with a programming language that is based on C, for the specific purpose of creating
3005: 2977: 2210: 2200: 525: 991:
Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (
3030: 2258: 2215: 2205: 2195: 1895: 1876: 1799: 1392: 1260: 2881: 2172: 884:. These languages provide a syntax for describing a Bayesian model and generate a method for solving it using simulation. 3035: 2307: 1967: 694: 497: 468:
General purpose programming languages rarely support such idioms, but domain-specific languages can describe them, e.g.:
1492: 970:
at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe.
2540: 992: 721: 348: 3187: 3015: 2545: 1711: 1677: 1649: 1329: 1165: 1143: 1080: 1136: 3275: 2369: 2187: 1669: 1001:
Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs.
2663: 2167: 557: 169: 390:
Domain-specific languages which are called (at runtime) from programs written in general purpose languages like
2954: 2916: 2573: 2281: 2247: 2162: 1090: 893: 372: 3096: 3073: 2803: 2793: 2177: 1393:"The TREE-META Compiler-Compiler System: A Meta Compiler System for the Univac 1108 and General Electric 645" 1061: 739: 717: 613: 430:
Domain-specific languages have important design goals that contrast with those of general-purpose languages:
384: 360: 356: 121: 32: 832:
have been developed for automating policy and business rules used in both government and private industry.
3177: 2765: 2673: 2578: 2354: 2339: 1581: 1343: 1235: 912: 742:, as well as all other forms of domain-specific languages, are the class of compiler writing tools called 3265: 3000: 2498: 1917: 489: 364: 317:
Processing with standalone tools, invoked via direct user operation, often on the command line or from a
776:
Metacompilers that played a significant role in both computer science and the computer industry include
3237: 2886: 2236: 1100: 877: 817: 751: 639: 269: 173: 2001: 1486:"On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering" 1211:
Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages.
3255: 3182: 3157: 3020: 2668: 2274: 1912: 1631: 932: 686:
There has been much interest in domain-specific languages to improve the productivity and quality of
277: 105: 2088: 2066: 2035: 3106: 2939: 2394: 2013: 1417:
Freudenthal, Margus (1 January 2009). "Domain Specific Languages in a Customs Information System".
1130: 869: 865: 837: 812: 792: 710: 391: 265: 233: 73: 36: 3167: 3101: 2992: 2808: 2468: 937: 670:
is an embedded domain-specific language whose fundamental purpose is to support the creation of
76:. Simpler DSLs, particularly ones used by a single application, are sometimes informally called 3232: 3063: 2944: 2711: 2701: 2696: 2061: 2008: 1962: 1958: 1936: 1441: 1147: 1005: 770: 189: 62: 47:
soft code. DSLs can be further subdivided by the kind of language, and include domain-specific
1932: 3202: 3172: 3162: 3058: 2972: 2848: 2788: 2755: 2745: 2628: 2593: 2583: 2520: 2389: 2364: 2359: 2324: 2075: 2022: 848: 829: 1977: 1014:
Non-technical domain experts can find it hard to write or modify DSL programs by themselves.
2962: 2934: 2906: 2901: 2730: 2706: 2658: 2641: 2636: 2618: 2608: 2603: 2565: 2515: 2510: 2427: 2373: 2155: 2126: 2054: 687: 585: 104:
language, and in principle can be used for any task, but in practice is narrowly used as a
66: 8: 3227: 3152: 3068: 3053: 2818: 2598: 2555: 2550: 2447: 2437: 2409: 1987:
example of internal Domain-Specific Language for the Modeling and Simulation of Extended
1953: 702: 549: 537: 255: 156: 1688: 88:
was originally developed as a text-processing and glue language, for the same domain as
3192: 3091: 2967: 2924: 2833: 2775: 2760: 2750: 2535: 2334: 2042: 1941: 1837: 1757: 1717: 1559: 1466: 1373: 1335: 1280: 1105: 1075: 1042: 804: 464:
Edit code whenever command-line parameters change because they affect program behavior.
407: 196: 181: 152: 117: 96:, but was mostly used as a general-purpose programming language later on. By contrast, 43:
for web pages, down to languages used by only one or a few pieces of software, such as
1782: 1247: 3212: 3142: 3121: 3083: 2891: 2858: 2838: 2530: 2442: 2316: 2150: 2145: 1891: 1872: 1829: 1795: 1769:
Spinellis, Diomidis (2001). "Notable design patterns for domain specific languages".
1761: 1707: 1696:
Proceedings. 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques
1673: 1325: 1314:
Proceedings. 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques
967: 796: 593: 517: 454: 55: 28: 1721: 1470: 1377: 1339: 3045: 2929: 2896: 2691: 2613: 2502: 2488: 2483: 2432: 2419: 2344: 2297: 1972: 1890:. Synthesis Lectures on Software Engineering. Vol. #1. Morgan & Claypool. 1841: 1821: 1778: 1749: 1699: 1558:
Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011).
1456: 1422: 1365: 1317: 1284: 1272: 1243: 1216: 1037: 901: 609: 553: 521: 513: 151:
A domain-specific language is somewhere between a tiny programming language and a
16:
Computer language specialized to a particular set of requirements or functionality
3116: 3010: 2982: 2876: 2828: 2813: 2798: 2653: 2648: 2588: 2478: 2452: 2404: 2349: 2095: 2049: 2043:
Using Acceleo with GMF : Generating presentations from a MindMap DSL modeler
1984: 1948: 1923: 1400: 881: 803:. This allowed for rapid development of modifications compared to the competitor 763: 577: 399: 101: 48: 887: 3222: 3126: 3025: 2871: 2843: 1850: 853: 671: 441: 204:
or executable code, but to various kinds of media objects: GraphViz exports to
1461: 138:
life insurance policies (developed internally by a large insurance enterprise)
3290: 3111: 2399: 1833: 1703: 1360:
Shorre, D. V. (1964). "META II a syntax-oriented compiler writing language".
1321: 1033: 917: 897: 706: 457:
are methods imposed by programmers to handle common development tasks, e.g.:
402:
for the domain-specific language is embedded into the host application (e.g.
1825: 1753: 1220: 3207: 2866: 2140: 947: 800: 759: 755: 743: 733: 724:
based mainly on creating, optimizing, and using domain-specific languages.
675: 573: 93: 1369: 1188: 3197: 2823: 2735: 1809: 1530: 1442:"Multilayered analysis of co-development of business information systems" 977:
Domain-specific languages are easier to learn, given their limited scope.
529: 509: 376: 344: 297:
DSLs implemented via an independent interpreter or compiler are known as
220:
compiles to audio files, and a ray-tracing domain-specific language like
1954:
One Day Compilers: Building a small domain-specific language using OCaml
1666:
Building Better Applications: a Theory of Efficient Software Development
1426: 678:(inclusion by reference) of MediaWiki pages into other MediaWiki pages. 3217: 3147: 2740: 2473: 2329: 632: 505: 352: 301:. Well known examples include TeX or AWK. A separate category known as 205: 97: 2007:"Building Domain-Specific Languages over a Language Framework". 1997. 864:
Statistical modelers have developed domain-specific languages such as
2722: 2683: 1959:
Usenix Association: Conference on Domain-Specific Languages (DSL '97)
1557: 1045:, and an Integrated Development Environment (IDE) for such languages. 1020:
Low supply of experts in a particular DSL tends to raise labor costs.
808: 781: 667: 651: 589: 276:, a domain-specific transformation language. However, languages like 201: 1276: 856:) coupled with alternatives to programming syntax in favor of DSLs. 2783: 2266: 1928: 565: 437:
Domain-specific languages are much more expressive in their domain.
322: 318: 134:
also be a business area. Some examples of business areas include:
1792:
The Definitive ANTLR Reference: Building Domain-Specific Languages
1258: 292: 1516: 787: 777: 697:, a dependency graph browser to display variable dependencies, a 545: 493: 321:(e.g., grep for regular expression matching, sed, lex, yacc, the 221: 1027: 313:
There are several usage patterns for domain-specific languages:
1095: 942: 928:
Other prominent examples of domain-specific languages include:
841: 747: 561: 501: 475:
A domain-specific language can parameterize command line input.
268:, many examples of domain-specific languages may be found like 217: 176:, or textual languages. For instance, the command line utility 1737: 1736:
Mernik, Marjan; Heering, Jan & Sloane, Anthony M. (2005).
1544: 1391:
Carr, C. Stephen; Luther, David A.; Erdmann, Sherian (1969).
1054: 888:
Generate model and services to multiple programming Languages
621: 617: 569: 1036:
is a tool for designing domain-specific languages. It uses
833: 541: 485: 395: 380: 368: 258: 213: 177: 85: 44: 40: 1973:
The complete guide to (external) Domain Specific Languages
1058:
Eclipse-based IDE. The project was archived in April 2023.
564:
for sound and music synthesis, and the input languages of
484:
Examples of domain-specific programming languages include
1689:"Using the SCR* toolset to specify software requirements" 1307:"Using the SCR* toolset to specify software requirements" 533: 273: 237: 209: 185: 89: 116:
The design and use of appropriate DSLs is a key part of
1886:
Brambilla, Marco; Cabot, Jordi; Wimmer, Manuel (2012).
1551: 823: 272:, a language for decorating models with assertions or 2060:
Sagar Sen; et al. (2009). "Meta-model Pruning".
1963:
2nd Conference on Domain-Specific Languages (DSL '99)
1236:
Notable design patterns for domain specific languages
1942:
Domain-Specific Languages: An Annotated Bibliography
1885: 1362:
Proceedings of the 1964 19th ACM national conference
184:
syntax which matches patterns in lines of text. The
1738:"When and how to develop domain-specific languages" 1735: 746:. A metacompiler is not only useful for generating 2125: 1573: 892:Generate object handling and services based on an 859: 287: 280:are typically general-purpose modeling languages. 1517:"JetBrains MPS: Domain-Specific Language Creator" 1397:University of Utah Technical Report RADC-TR-69-83 1390: 461:Ensure data is saved before the window is closed. 440:Domain-specific languages should exhibit minimal 434:Domain-specific languages are less comprehensive. 3288: 303:Embedded (or Internal) Domain Specific Languages 1848: 998:Finding, setting, and maintaining proper scope. 953: 293:External and Embedded Domain Specific Languages 195:The line between domain-specific languages and 162: 1567:Programming Language Design and Implementation 788:Unreal Engine before version 4 and other games 2306:Note: This template roughly follows the 2012 2282: 2111: 1888:Model Driven Software Engineering in Practice 1449:Journal of Internet Services and Applications 1440:Aram, Michael; Neumann, Gustaf (2015-07-01). 1412: 1410: 1230: 1228: 1028:Tools for designing domain-specific languages 627: 681: 227: 155:, and is often used in a way analogous to a 1439: 1416: 192:to perform more complex programming tasks. 2289: 2275: 2118: 2104: 1929:Martin Fowler on domain-specific languages 1407: 1225: 1207: 1205: 811:engine). The Id Tech engine used standard 2065: 2059: 2012: 1768: 1686: 1650:Learn how and when to remove this message 1460: 1304: 1186: 1166:Learn how and when to remove this message 172:, programmatic abstractions, such as the 1663: 1129:This article includes a list of general 762:specifically designed for the domain of 31:specialized to a particular application 1202: 3289: 3006:Knowledge representation and reasoning 1864: 1731:from the original on February 1, 2020. 1359: 1086:Domain-specific entertainment language 657: 528:for reactive and distributed systems, 526:Specification and Description Language 3297:Domain-specific programming languages 3031:Philosophy of artificial intelligence 2270: 2099: 2002:External DSLs with Eclipse technology 1812:(2009). "Spending Moore's Dividend". 1808: 1579: 1261:"A Programmable Programming Language" 754:for domain-specific languages, but a 720:, an integrated software engineering 603: 472:A script can automatically save data. 2350:Energy consumption (Green computing) 2296: 1789: 1606: 1115: 560:for creating diagramming languages, 248: 3302:Programming language classification 3036:Distributed artificial intelligence 2308:ACM Computing Classification System 1851:"What's a Ruby DSL and what isn't?" 824:Rules engines for policy automation 608:The GML scripting language used by 13: 2541:Integrated development environment 1968:Internal Domain-Specific Languages 1602: 1483: 1187:Fowler, Martin; Parsons, Rebecca. 1135:it lacks sufficient corresponding 1008:compared with hand-coded software. 758:itself compiles a domain-specific 371:'s "method syntax" an SQL eDSL in 299:External Domain Specific Languages 14: 3313: 3016:Automated planning and scheduling 2546:Software configuration management 2055:UML vs. Domain-Specific Languages 1905: 1849:Werner Schuster (June 15, 2007). 1081:Architecture description language 923: 341:internal domain-specific language 333:embedded domain-specific language 308: 3270: 3260: 3251: 3250: 1670:International Thomson Publishing 1611: 1120: 966:Domain-specific languages allow 727: 645: 582:Hashicorp Configuration Language 500:hardware description languages, 3261: 2664:Computational complexity theory 1771:Journal of Systems and Software 1537: 1523: 1509: 1477: 1240:Journal of Systems and Software 985:Cost of learning a new language 860:Statistical modelling languages 558:Generic Eclipse Modeling System 422: 288:Domain-specific language topics 170:Generic Eclipse Modeling System 2448:Network performance evaluation 2127:Types of programming languages 1582:"Creating Languages in Racket" 1433: 1384: 1353: 1298: 1252: 1242:, 56(1):91–99, February 2001. 1180: 1091:Language for specific purposes 894:Interface Description Language 771:program transformation systems 84:specific domain. For example, 1: 2819:Multimedia information system 2804:Geographic information system 2794:Enterprise information system 2383:Computer systems organization 2227: 1783:10.1016/S0164-1212(00)00089-3 1687:Heitmeyer, Constance (1999). 1634:and help improve the section. 1248:10.1016/S0164-1212(00)00089-3 1111: 1023:Harder to find code examples. 740:language-oriented programming 718:language-oriented programming 572:, software packages used for 122:Language-oriented programming 3178:Computational social science 2766:Theoretical computer science 2579:Software development process 2355:Electronic design automation 2340:Very Large Scale Integration 2259:Programming paradigms navbox 1004:Potential loss of processor 954:Advantages and disadvantages 224:compiles to graphics files. 163:In design and implementation 7: 3001:Natural language processing 2789:Information storage systems 1918:The Art of Unix Programming 1364:. pp. 41.301–41.3011. 1189:"Domain Specific Languages" 1069: 981:Some of the disadvantages: 799:unveiled a language called 479: 128: 35:. This is in contrast to a 10: 3318: 2917:Human–computer interaction 2887:Intrusion detection system 2799:Social information systems 2784:Database management system 1101:Metalinguistic abstraction 907: 868:(an implementation of the 731: 701:to catch missing cases in 695:requirements specification 640:ColdFusion Markup Language 628:ColdFusion Markup Language 174:Eclipse Modeling Framework 3246: 3183:Computational engineering 3158:Computational mathematics 3135: 3082: 3044: 2991: 2953: 2915: 2857: 2774: 2720: 2682: 2627: 2564: 2497: 2461: 2418: 2382: 2315: 2304: 2186: 2133: 1868:Domain-Specific Languages 1814:Communications of the ACM 1586:Communications of the ACM 1462:10.1186/s13174-015-0030-8 1265:Communications of the ACM 933:Game Description Language 682:Software engineering uses 492:for pencil-like drawing, 448: 408:regular expression engine 228:Data definition languages 106:page description language 3193:Computational healthcare 3188:Differentiable computing 3107:Graphics processing unit 2526:Domain-specific language 2395:Computational complexity 1704:10.1109/WIFT.1998.766290 1560:"Languages as Libraries" 1322:10.1109/WIFT.1998.766290 1316:. IEEE. pp. 12–13. 958:Some of the advantages: 838:Oracle Policy Automation 705:in the specification, a 508:for matrix programming, 351:tooling. eDSL examples: 266:model-driven engineering 234:data definition language 74:domain-specific modeling 37:general-purpose language 21:domain-specific language 3168:Computational chemistry 3102:Photograph manipulation 2993:Artificial intelligence 2809:Decision support system 1865:Fowler, Martin (2011). 1826:10.1145/1506409.1506425 1794:. Pragmatic Bookshelf. 1754:10.1145/1118890.1118892 1580:Flatt, Matthew (2012). 1221:10.1145/1118890.1118892 1150:more precise citations. 938:OpenGL Shading Language 902:Google Protocol Buffers 716:A newer development is 65:), and domain-specific 63:specification languages 3233:Educational technology 3064:Reinforcement learning 2814:Process control system 2712:Computational geometry 2702:Algorithmic efficiency 2697:Analysis of algorithms 2345:Systems on Chip (SoCs) 2083:Cite journal requires 2030:Cite journal requires 1790:Parr, Terence (2007). 1305:Heitmeyer, C. (1999). 1215:, 37(4):316–344, 2005. 849:subject-matter experts 830:business rules engines 598:configuration language 544:grammars for creating 355:"Core" an SQL eDSL in 111: 3203:Electronic publishing 3173:Computational biology 3163:Computational physics 3059:Unsupervised learning 2973:Distributed computing 2849:Information retrieval 2756:Mathematical analysis 2746:Mathematical software 2629:Theory of computation 2594:Software construction 2584:Requirements analysis 2462:Software organization 2390:Computer architecture 2360:Hardware acceleration 2325:Printed circuit board 2248:Programming languages 1742:ACM Computing Surveys 1370:10.1145/800257.808896 1213:ACM Computing Surveys 988:Limited applicability 780:, and its descendant 732:Further information: 532:formulas and macros, 2963:Concurrent computing 2935:Ubiquitous computing 2907:Application security 2902:Information security 2731:Discrete mathematics 2707:Randomized algorithm 2659:Computability theory 2637:Model of computation 2609:Software maintenance 2604:Software engineering 2566:Software development 2516:Programming language 2511:Programming paradigm 2428:Network architecture 1937:a video presentation 1933:Language Workbenches 1403:on February 1, 2020. 1234:Diomidis Spinellis. 1038:projectional editing 918:line-oriented design 703:well-formed formulas 688:software engineering 522:symbolic mathematics 3238:Document management 3228:Operations research 3153:Enterprise software 3069:Multi-task learning 3054:Supervised learning 2776:Information systems 2599:Software deployment 2556:Software repository 2410:Real-time computing 1427:10.1109/MS.2009.152 699:consistency checker 658:MediaWiki templates 550:regular expressions 538:relational database 339:) also known as an 256:functional language 197:scripting languages 157:programming library 3021:Search methodology 2968:Parallel computing 2925:Interaction design 2834:Computing platform 2761:Numerical analysis 2751:Information theory 2536:Software framework 2499:Software notations 2438:Network components 2335:Integrated circuit 2048:2016-07-30 at the 1983:2021-01-31 at the 1947:2016-03-16 at the 1871:. Addison-Wesley. 1698:. pp. 12–13. 1106:Programming domain 1076:Language workbench 1043:language workbench 604:GameMaker Language 182:regular expression 153:scripting language 144:salary calculation 118:domain engineering 54:, domain-specific 3284: 3283: 3213:Electronic voting 3143:Quantum Computing 3136:Applied computing 3122:Image compression 2892:Hardware security 2882:Security services 2839:Digital marketing 2619:Open-source model 2531:Modeling language 2443:Network scheduler 2237:Computer language 2224: 2223: 1989:Queueing Networks 1897:978-1-62705-708-0 1878:978-0-321-71294-3 1801:978-0-9787392-5-6 1664:Dunlavey (1994). 1660: 1659: 1652: 1176: 1175: 1168: 797:Unreal Tournament 596:also has its own 249:Programming tools 141:combat simulation 61:(more generally, 29:computer language 3309: 3274: 3273: 3264: 3263: 3254: 3253: 3074:Cross-validation 3046:Machine learning 2930:Social computing 2897:Network security 2692:Algorithm design 2614:Programming team 2574:Control variable 2551:Software library 2489:Software quality 2484:Operating system 2433:Network protocol 2298:Computer science 2291: 2284: 2277: 2268: 2267: 2263: 2257: 2252: 2246: 2241: 2235: 2120: 2113: 2106: 2097: 2096: 2092: 2086: 2081: 2079: 2071: 2069: 2039: 2033: 2028: 2026: 2018: 2016: 1901: 1882: 1861: 1859: 1858: 1845: 1805: 1786: 1765: 1732: 1730: 1693: 1683: 1655: 1648: 1644: 1641: 1635: 1630:Please read the 1626:may need cleanup 1615: 1614: 1607: 1596: 1595: 1593: 1592: 1577: 1571: 1570: 1564: 1555: 1549: 1548: 1541: 1535: 1534: 1527: 1521: 1520: 1513: 1507: 1506: 1504: 1503: 1497: 1491:. Archived from 1490: 1481: 1475: 1474: 1464: 1446: 1437: 1431: 1430: 1414: 1405: 1404: 1399:. Archived from 1388: 1382: 1381: 1357: 1351: 1350: 1348: 1342:. Archived from 1311: 1302: 1296: 1295: 1293: 1291: 1256: 1250: 1232: 1223: 1209: 1200: 1199: 1197: 1195: 1184: 1171: 1164: 1160: 1157: 1151: 1146:this article by 1137:inline citations 1124: 1123: 1116: 610:GameMaker Studio 453:In programming, 3317: 3316: 3312: 3311: 3310: 3308: 3307: 3306: 3287: 3286: 3285: 3280: 3271: 3242: 3223:Word processing 3131: 3117:Virtual reality 3078: 3040: 3011:Computer vision 2987: 2983:Multiprocessing 2949: 2911: 2877:Security hacker 2853: 2829:Digital library 2770: 2721:Mathematics of 2716: 2678: 2654:Automata theory 2649:Formal language 2623: 2589:Software design 2560: 2493: 2479:Virtual machine 2457: 2453:Network service 2414: 2405:Embedded system 2378: 2311: 2300: 2295: 2261: 2255: 2250: 2244: 2239: 2233: 2230: 2225: 2220: 2182: 2173:Very high-level 2129: 2124: 2084: 2082: 2073: 2072: 2067:10.1.1.156.6008 2050:Wayback Machine 2031: 2029: 2020: 2019: 2006: 1985:Wayback Machine 1949:Wayback Machine 1924:Eric S. Raymond 1908: 1898: 1879: 1856: 1854: 1802: 1728: 1714: 1691: 1680: 1656: 1645: 1639: 1636: 1629: 1622:Further reading 1616: 1612: 1605: 1603:Further reading 1600: 1599: 1590: 1588: 1578: 1574: 1562: 1556: 1552: 1543: 1542: 1538: 1529: 1528: 1524: 1515: 1514: 1510: 1501: 1499: 1495: 1488: 1482: 1478: 1444: 1438: 1434: 1415: 1408: 1389: 1385: 1358: 1354: 1346: 1332: 1309: 1303: 1299: 1289: 1287: 1277:10.1145/3127323 1257: 1253: 1233: 1226: 1210: 1203: 1193: 1191: 1185: 1181: 1172: 1161: 1155: 1152: 1142:Please help to 1141: 1125: 1121: 1114: 1072: 1030: 956: 926: 910: 890: 862: 854:decision tables 826: 820:for scripting. 790: 764:metaprogramming 752:code generators 736: 730: 684: 660: 648: 630: 606: 578:graph rewriting 552:for specifying 482: 451: 425: 400:virtual machine 363:an SQL eDSL in 311: 295: 290: 251: 230: 165: 131: 114: 102:Turing-complete 17: 12: 11: 5: 3315: 3305: 3304: 3299: 3282: 3281: 3279: 3278: 3268: 3258: 3247: 3244: 3243: 3241: 3240: 3235: 3230: 3225: 3220: 3215: 3210: 3205: 3200: 3195: 3190: 3185: 3180: 3175: 3170: 3165: 3160: 3155: 3150: 3145: 3139: 3137: 3133: 3132: 3130: 3129: 3127:Solid modeling 3124: 3119: 3114: 3109: 3104: 3099: 3094: 3088: 3086: 3080: 3079: 3077: 3076: 3071: 3066: 3061: 3056: 3050: 3048: 3042: 3041: 3039: 3038: 3033: 3028: 3026:Control method 3023: 3018: 3013: 3008: 3003: 2997: 2995: 2989: 2988: 2986: 2985: 2980: 2978:Multithreading 2975: 2970: 2965: 2959: 2957: 2951: 2950: 2948: 2947: 2942: 2937: 2932: 2927: 2921: 2919: 2913: 2912: 2910: 2909: 2904: 2899: 2894: 2889: 2884: 2879: 2874: 2872:Formal methods 2869: 2863: 2861: 2855: 2854: 2852: 2851: 2846: 2844:World Wide Web 2841: 2836: 2831: 2826: 2821: 2816: 2811: 2806: 2801: 2796: 2791: 2786: 2780: 2778: 2772: 2771: 2769: 2768: 2763: 2758: 2753: 2748: 2743: 2738: 2733: 2727: 2725: 2718: 2717: 2715: 2714: 2709: 2704: 2699: 2694: 2688: 2686: 2680: 2679: 2677: 2676: 2671: 2666: 2661: 2656: 2651: 2646: 2645: 2644: 2633: 2631: 2625: 2624: 2622: 2621: 2616: 2611: 2606: 2601: 2596: 2591: 2586: 2581: 2576: 2570: 2568: 2562: 2561: 2559: 2558: 2553: 2548: 2543: 2538: 2533: 2528: 2523: 2518: 2513: 2507: 2505: 2495: 2494: 2492: 2491: 2486: 2481: 2476: 2471: 2465: 2463: 2459: 2458: 2456: 2455: 2450: 2445: 2440: 2435: 2430: 2424: 2422: 2416: 2415: 2413: 2412: 2407: 2402: 2397: 2392: 2386: 2384: 2380: 2379: 2377: 2376: 2367: 2362: 2357: 2352: 2347: 2342: 2337: 2332: 2327: 2321: 2319: 2313: 2312: 2305: 2302: 2301: 2294: 2293: 2286: 2279: 2271: 2265: 2264: 2253: 2242: 2229: 2226: 2222: 2221: 2219: 2218: 2213: 2208: 2203: 2198: 2192: 2190: 2184: 2183: 2181: 2180: 2175: 2170: 2165: 2159: 2158: 2153: 2148: 2143: 2137: 2135: 2131: 2130: 2123: 2122: 2115: 2108: 2100: 2094: 2093: 2085:|journal= 2057: 2052: 2040: 2032:|journal= 2014:10.1.1.50.4685 2004: 1998: 1997: 1993: 1992: 1975: 1970: 1965: 1956: 1951: 1939: 1926: 1907: 1906:External links 1904: 1903: 1902: 1896: 1883: 1877: 1862: 1846: 1806: 1800: 1787: 1766: 1748:(4): 316–344. 1733: 1712: 1684: 1678: 1658: 1657: 1619: 1617: 1610: 1604: 1601: 1598: 1597: 1572: 1550: 1536: 1522: 1508: 1484:Miotto, Eric. 1476: 1432: 1406: 1383: 1352: 1349:on 2004-07-19. 1330: 1297: 1251: 1224: 1201: 1178: 1177: 1174: 1173: 1156:September 2009 1128: 1126: 1119: 1113: 1110: 1109: 1108: 1103: 1098: 1093: 1088: 1083: 1078: 1071: 1068: 1067: 1066: 1059: 1052: 1046: 1029: 1026: 1025: 1024: 1021: 1018: 1015: 1012: 1009: 1002: 999: 996: 989: 986: 979: 978: 975: 971: 964: 955: 952: 951: 950: 945: 940: 935: 925: 924:Other examples 922: 909: 906: 889: 886: 861: 858: 825: 822: 789: 786: 738:Complementing 729: 726: 711:theorem prover 683: 680: 672:page templates 659: 656: 647: 644: 629: 626: 605: 602: 481: 478: 477: 476: 473: 466: 465: 462: 450: 447: 446: 445: 438: 435: 424: 421: 416: 415: 411: 404:format strings 388: 329: 326: 325:toolset, etc.) 310: 309:Usage patterns 307: 294: 291: 289: 286: 250: 247: 229: 226: 216:, etc., where 164: 161: 149: 148: 145: 142: 139: 130: 127: 113: 110: 78:mini-languages 15: 9: 6: 4: 3: 2: 3314: 3303: 3300: 3298: 3295: 3294: 3292: 3277: 3269: 3267: 3259: 3257: 3249: 3248: 3245: 3239: 3236: 3234: 3231: 3229: 3226: 3224: 3221: 3219: 3216: 3214: 3211: 3209: 3206: 3204: 3201: 3199: 3196: 3194: 3191: 3189: 3186: 3184: 3181: 3179: 3176: 3174: 3171: 3169: 3166: 3164: 3161: 3159: 3156: 3154: 3151: 3149: 3146: 3144: 3141: 3140: 3138: 3134: 3128: 3125: 3123: 3120: 3118: 3115: 3113: 3112:Mixed reality 3110: 3108: 3105: 3103: 3100: 3098: 3095: 3093: 3090: 3089: 3087: 3085: 3081: 3075: 3072: 3070: 3067: 3065: 3062: 3060: 3057: 3055: 3052: 3051: 3049: 3047: 3043: 3037: 3034: 3032: 3029: 3027: 3024: 3022: 3019: 3017: 3014: 3012: 3009: 3007: 3004: 3002: 2999: 2998: 2996: 2994: 2990: 2984: 2981: 2979: 2976: 2974: 2971: 2969: 2966: 2964: 2961: 2960: 2958: 2956: 2952: 2946: 2945:Accessibility 2943: 2941: 2940:Visualization 2938: 2936: 2933: 2931: 2928: 2926: 2923: 2922: 2920: 2918: 2914: 2908: 2905: 2903: 2900: 2898: 2895: 2893: 2890: 2888: 2885: 2883: 2880: 2878: 2875: 2873: 2870: 2868: 2865: 2864: 2862: 2860: 2856: 2850: 2847: 2845: 2842: 2840: 2837: 2835: 2832: 2830: 2827: 2825: 2822: 2820: 2817: 2815: 2812: 2810: 2807: 2805: 2802: 2800: 2797: 2795: 2792: 2790: 2787: 2785: 2782: 2781: 2779: 2777: 2773: 2767: 2764: 2762: 2759: 2757: 2754: 2752: 2749: 2747: 2744: 2742: 2739: 2737: 2734: 2732: 2729: 2728: 2726: 2724: 2719: 2713: 2710: 2708: 2705: 2703: 2700: 2698: 2695: 2693: 2690: 2689: 2687: 2685: 2681: 2675: 2672: 2670: 2667: 2665: 2662: 2660: 2657: 2655: 2652: 2650: 2647: 2643: 2640: 2639: 2638: 2635: 2634: 2632: 2630: 2626: 2620: 2617: 2615: 2612: 2610: 2607: 2605: 2602: 2600: 2597: 2595: 2592: 2590: 2587: 2585: 2582: 2580: 2577: 2575: 2572: 2571: 2569: 2567: 2563: 2557: 2554: 2552: 2549: 2547: 2544: 2542: 2539: 2537: 2534: 2532: 2529: 2527: 2524: 2522: 2519: 2517: 2514: 2512: 2509: 2508: 2506: 2504: 2500: 2496: 2490: 2487: 2485: 2482: 2480: 2477: 2475: 2472: 2470: 2467: 2466: 2464: 2460: 2454: 2451: 2449: 2446: 2444: 2441: 2439: 2436: 2434: 2431: 2429: 2426: 2425: 2423: 2421: 2417: 2411: 2408: 2406: 2403: 2401: 2400:Dependability 2398: 2396: 2393: 2391: 2388: 2387: 2385: 2381: 2375: 2371: 2368: 2366: 2363: 2361: 2358: 2356: 2353: 2351: 2348: 2346: 2343: 2341: 2338: 2336: 2333: 2331: 2328: 2326: 2323: 2322: 2320: 2318: 2314: 2309: 2303: 2299: 2292: 2287: 2285: 2280: 2278: 2273: 2272: 2269: 2260: 2254: 2249: 2243: 2238: 2232: 2231: 2217: 2214: 2212: 2209: 2207: 2204: 2202: 2199: 2197: 2194: 2193: 2191: 2189: 2185: 2179: 2176: 2174: 2171: 2169: 2166: 2164: 2161: 2160: 2157: 2154: 2152: 2149: 2147: 2144: 2142: 2139: 2138: 2136: 2132: 2128: 2121: 2116: 2114: 2109: 2107: 2102: 2101: 2098: 2090: 2077: 2068: 2063: 2058: 2056: 2053: 2051: 2047: 2044: 2041: 2037: 2024: 2015: 2010: 2005: 2003: 2000: 1999: 1995: 1994: 1990: 1986: 1982: 1979: 1976: 1974: 1971: 1969: 1966: 1964: 1960: 1957: 1955: 1952: 1950: 1946: 1943: 1940: 1938: 1934: 1930: 1927: 1925: 1921: 1919: 1914: 1913:Minilanguages 1910: 1909: 1899: 1893: 1889: 1884: 1880: 1874: 1870: 1869: 1863: 1852: 1847: 1843: 1839: 1835: 1831: 1827: 1823: 1819: 1815: 1811: 1807: 1803: 1797: 1793: 1788: 1784: 1780: 1776: 1772: 1767: 1763: 1759: 1755: 1751: 1747: 1743: 1739: 1734: 1727: 1723: 1719: 1715: 1713:0-7695-0081-1 1709: 1705: 1701: 1697: 1690: 1685: 1681: 1679:0-442-01740-5 1675: 1671: 1667: 1662: 1661: 1654: 1651: 1643: 1640:February 2020 1633: 1632:editing guide 1627: 1623: 1618: 1609: 1608: 1587: 1583: 1576: 1568: 1561: 1554: 1546: 1540: 1532: 1526: 1518: 1512: 1498:on 2011-07-24 1494: 1487: 1480: 1472: 1468: 1463: 1458: 1454: 1450: 1443: 1436: 1428: 1424: 1420: 1419:IEEE Software 1413: 1411: 1402: 1398: 1394: 1387: 1379: 1375: 1371: 1367: 1363: 1356: 1345: 1341: 1337: 1333: 1331:0-7695-0081-1 1327: 1323: 1319: 1315: 1308: 1301: 1286: 1282: 1278: 1274: 1270: 1266: 1262: 1255: 1249: 1245: 1241: 1237: 1231: 1229: 1222: 1218: 1214: 1208: 1206: 1190: 1183: 1179: 1170: 1167: 1159: 1149: 1145: 1139: 1138: 1132: 1127: 1118: 1117: 1107: 1104: 1102: 1099: 1097: 1094: 1092: 1089: 1087: 1084: 1082: 1079: 1077: 1074: 1073: 1063: 1060: 1056: 1053: 1050: 1047: 1044: 1039: 1035: 1034:JetBrains MPS 1032: 1031: 1022: 1019: 1016: 1013: 1010: 1007: 1003: 1000: 997: 994: 990: 987: 984: 983: 982: 976: 972: 969: 965: 961: 960: 959: 949: 946: 944: 941: 939: 936: 934: 931: 930: 929: 921: 919: 914: 905: 903: 899: 898:Apache Thrift 895: 885: 883: 879: 875: 871: 867: 857: 855: 850: 845: 843: 839: 835: 831: 821: 819: 814: 810: 806: 802: 798: 794: 785: 783: 779: 774: 772: 767: 765: 761: 757: 753: 749: 745: 744:metacompilers 741: 735: 728:Metacompilers 725: 723: 719: 714: 712: 708: 707:model checker 704: 700: 696: 691: 689: 679: 677: 673: 669: 665: 655: 653: 646:FilterMeister 643: 641: 636: 634: 625: 623: 619: 615: 611: 601: 599: 595: 591: 587: 583: 579: 575: 571: 567: 563: 559: 555: 551: 547: 543: 539: 535: 531: 527: 523: 519: 515: 511: 507: 503: 499: 495: 491: 487: 474: 471: 470: 469: 463: 460: 459: 458: 456: 443: 439: 436: 433: 432: 431: 428: 420: 412: 409: 405: 401: 397: 393: 389: 386: 382: 378: 374: 370: 366: 362: 358: 354: 350: 346: 342: 338: 334: 330: 327: 324: 320: 316: 315: 314: 306: 304: 300: 285: 281: 279: 275: 271: 267: 262: 260: 257: 246: 242: 239: 235: 225: 223: 219: 215: 211: 207: 203: 198: 193: 191: 187: 183: 179: 175: 171: 160: 158: 154: 146: 143: 140: 137: 136: 135: 126: 123: 119: 109: 107: 103: 99: 95: 94:shell scripts 91: 87: 81: 79: 75: 71: 69: 64: 60: 58: 53: 51: 46: 42: 38: 34: 30: 26: 22: 3208:Cyberwarfare 2867:Cryptography 2525: 2262:}} 2256:{{ 2251:}} 2245:{{ 2240:}} 2234:{{ 2076:cite journal 2023:cite journal 1916: 1887: 1866: 1855:. Retrieved 1820:(5): 62–69. 1817: 1813: 1810:Larus, James 1791: 1777:(1): 91–99. 1774: 1770: 1745: 1741: 1695: 1665: 1646: 1637: 1625: 1589:. Retrieved 1585: 1575: 1566: 1553: 1539: 1525: 1511: 1500:. Retrieved 1493:the original 1479: 1452: 1448: 1435: 1418: 1401:the original 1396: 1386: 1361: 1355: 1344:the original 1313: 1300: 1288:. Retrieved 1271:(3): 62–71. 1268: 1264: 1254: 1239: 1212: 1192:. Retrieved 1182: 1162: 1153: 1134: 980: 957: 948:ActionScript 927: 911: 891: 863: 846: 827: 801:UnrealScript 791: 775: 768: 760:metalanguage 756:metacompiler 737: 734:Metacompiler 715: 692: 685: 676:transclusion 663: 661: 649: 637: 631: 607: 574:graph layout 483: 467: 452: 429: 426: 423:Design goals 417: 377:kotlinx.html 340: 336: 332: 312: 302: 298: 296: 282: 263: 252: 243: 231: 194: 166: 150: 132: 115: 82: 77: 67: 56: 49: 24: 20: 18: 3218:Video games 3198:Digital art 2955:Concurrency 2824:Data mining 2736:Probability 2469:Interpreter 2156:Interpreted 1531:"MontiCore" 1148:introducing 872:language), 840:, DTRules, 807:(using the 722:methodology 666:feature of 530:spreadsheet 510:Mathematica 347:and better 345:type safety 68:programming 3291:Categories 3276:Glossaries 3148:E-commerce 2741:Statistics 2684:Algorithms 2642:Stochastic 2474:Middleware 2330:Peripheral 2188:Generation 2168:High-level 1935:. Also in 1857:2009-09-08 1624:" section 1591:2012-04-08 1502:2010-11-22 1131:references 1112:References 1065:languages. 1006:efficiency 968:validation 633:ColdFusion 588:and other 506:GNU Octave 442:redundancy 353:SQLAlchemy 206:PostScript 98:PostScript 3097:Rendering 3092:Animation 2723:computing 2674:Semantics 2365:Processor 2163:Low-level 2062:CiteSeerX 2009:CiteSeerX 1853:. C4Media 1834:0001-0782 1762:207158373 1049:MontiCore 809:Id Tech 2 668:MediaWiki 652:Photoshop 590:Hashicorp 586:Terraform 584:used for 540:queries, 202:byte-code 70:languages 59:languages 52:languages 3256:Category 3084:Graphics 2859:Security 2521:Compiler 2420:Networks 2317:Hardware 2228:See also 2178:Esoteric 2151:Compiled 2146:Assembly 2046:Archived 1996:Articles 1981:Archived 1945:Archived 1726:Archived 1722:16079058 1471:16502371 1378:43144779 1340:16079058 1070:See also 828:Various 782:TreeMeta 674:and the 664:Template 566:GraphViz 480:Examples 383:eDSL in 323:GraphViz 319:Makefile 129:Overview 57:modeling 3266:Outline 2141:Machine 1842:2803479 1545:"Xtext" 1285:3887010 1144:improve 974:domain. 913:Gherkin 908:Gherkin 778:Meta-II 748:parsers 592:tools, 546:parsers 494:Verilog 147:billing 27:) is a 2211:Fourth 2201:Second 2064:  2011:  1894:  1875:  1840:  1832:  1798:  1760:  1720:  1710:  1676:  1620:This " 1469:  1376:  1338:  1328:  1290:15 May 1283:  1194:6 July 1133:, but 1096:Jargon 1062:Racket 943:Gradle 880:, and 842:Drools 793:Unreal 709:and a 620:, and 614:Delphi 594:Puppet 562:Csound 556:, the 554:lexers 518:Maxima 502:MATLAB 455:idioms 449:Idioms 385:Kotlin 357:Python 218:Csound 180:has a 50:markup 33:domain 2669:Logic 2503:tools 2216:Fifth 2206:Third 2196:First 2134:Level 1838:S2CID 1758:S2CID 1729:(PDF) 1718:S2CID 1692:(PDF) 1563:(PDF) 1496:(PDF) 1489:(PDF) 1467:S2CID 1455:(1). 1445:(PDF) 1421:: 1. 1374:S2CID 1347:(PDF) 1336:S2CID 1310:(PDF) 1281:S2CID 1055:Xtext 963:case. 805:Quake 622:BASIC 570:GrGen 514:Maple 414:both. 236:like 190:shell 100:is a 2501:and 2374:Form 2370:Size 2089:help 2036:help 1978:jEQN 1961:and 1931:and 1892:ISBN 1873:ISBN 1830:ISSN 1796:ISBN 1708:ISBN 1674:ISBN 1326:ISBN 1292:2019 1196:2019 882:Stan 878:Jags 874:Bugs 834:ILOG 795:and 750:and 662:The 638:The 576:and 568:and 542:YACC 536:for 520:for 516:and 504:and 498:VHDL 496:and 490:Logo 486:HTML 406:, a 396:Perl 381:HTML 375:and 369:LINQ 365:Java 361:jOOQ 337:eDSL 259:XSLT 214:JPEG 178:grep 92:and 86:Perl 45:MUSH 41:HTML 1922:by 1915:", 1822:doi 1779:doi 1750:doi 1700:doi 1457:doi 1423:doi 1366:doi 1318:doi 1273:doi 1244:doi 1217:doi 993:IDE 900:or 818:Lua 618:C++ 534:SQL 394:or 379:an 349:IDE 331:As 278:UML 274:QVT 270:OCL 264:In 238:SQL 222:POV 210:GIF 186:sed 112:Use 90:AWK 25:DSL 3293:: 2372:/ 2080:: 2078:}} 2074:{{ 2027:: 2025:}} 2021:{{ 1836:. 1828:. 1818:52 1816:. 1775:56 1773:. 1756:. 1746:37 1744:. 1740:. 1724:. 1716:. 1706:. 1694:. 1672:. 1668:. 1584:. 1565:. 1465:. 1451:. 1447:. 1409:^ 1395:. 1372:. 1334:. 1324:. 1312:. 1279:. 1269:61 1267:. 1263:. 1238:. 1227:^ 1204:^ 904:. 876:, 836:, 784:. 773:. 766:. 616:, 600:. 580:, 548:, 524:, 512:, 488:, 373:C# 367:, 359:, 232:A 212:, 208:, 108:. 80:. 19:A 2310:. 2290:e 2283:t 2276:v 2119:e 2112:t 2105:v 2091:) 2087:( 2070:. 2038:) 2034:( 2017:. 1991:. 1920:, 1911:" 1900:. 1881:. 1860:. 1844:. 1824:: 1804:. 1785:. 1781:: 1764:. 1752:: 1702:: 1682:. 1653:) 1647:( 1642:) 1638:( 1628:. 1594:. 1569:. 1547:. 1533:. 1519:. 1505:. 1473:. 1459:: 1453:6 1429:. 1425:: 1380:. 1368:: 1320:: 1294:. 1275:: 1246:: 1219:: 1198:. 1169:) 1163:( 1158:) 1154:( 1140:. 995:) 870:S 866:R 813:C 444:. 410:) 392:C 387:. 335:( 23:(

Index

computer language
domain
general-purpose language
HTML
MUSH
markup languages
modeling languages
specification languages
programming languages
domain-specific modeling
Perl
AWK
shell scripts
PostScript
Turing-complete
page description language
domain engineering
Language-oriented programming
scripting language
programming library
Generic Eclipse Modeling System
Eclipse Modeling Framework
grep
regular expression
sed
shell
scripting languages
byte-code
PostScript
GIF

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑