检查妇科清洁度三是什么意思| 眼睛长结石是什么原因引起的| 1936年中国发生了什么| 玻尿酸面膜有什么功效| 冷战什么意思| 台湾什么时候回归| 软骨炎是什么病| 绿痰吃什么药| 百鸟归巢什么意思| 外交部发言人什么级别| 2.6号是什么星座| 肚子疼什么原因| 缺铁性贫血吃什么食物好| 五粮液是什么香型的酒| 囊胚是什么意思| 活色生香的意思是什么| 腺样体肥大是什么症状| 右侧卵巢多囊样改变是什么意思| 蚊子不咬什么血型的人| 火气重吃什么降火| 嘴唇干裂脱皮是什么原因| 客观原因是什么意思| 花胶是鱼的什么部位| 海参头数是什么意思| 唵嘛呢叭咪吽是什么意思| 11月11日什么星座| 红茶色是什么颜色| 吃枸杞对身体有什么好处| 异地办理护照需要什么材料| 什么时候喝咖啡能减肥| 急的什么| 党员有什么好处| 小麻雀吃什么| 小鹦鹉吃什么食物| 什么时候艾灸最好| 刺史相当于现在什么官| 聪明绝顶是什么意思| 脚心热什么原因| 3D硬金是什么意思| 18k是什么意思| 水煮鱼片用什么鱼| 维生素b12有什么作用| 词又被称为什么| 菲林是什么| 嵌甲去医院挂什么科| h1v是什么意思| 糖醋鱼用什么鱼做好吃| 财神位放什么最旺财| 七月十四号是什么星座| 巴马汤泡脚有什么功效| 鸡屎藤和什么相克| 糖尿病患者可以吃什么水果| 胃部检查除了胃镜还有什么方法| 治疗狐臭挂什么科| 为什么头出汗特别多| 山川是什么意思| 口苦是什么毛病| 肠阻塞有什么症状| 脸上不停的长痘痘是什么原因| 寿终正寝是什么意思| 中国属于什么气候| 心脏不好吃什么水果好| 阴虚吃什么食物| 流产挂什么科| itp是什么意思| 什么叫meta分析| 什么什么无比| 腺病是什么意思| 智五行属什么| 心仪的人是什么意思| 女人脸黄是什么原因该怎么调理| 5月25日是什么星座| 今天开什么奖| 认贼作父是什么意思| 分泌物过氧化氢阳性是什么意思| 不规则抗体筛查是什么意思| 嘴巴发甜是什么原因| 经期上火了吃什么降火| 玉是什么生肖| ki67是什么意思| 拆线去医院挂什么科| 荨麻疹吃什么药最管用| 羊肉炖什么| 刻板印象是什么意思| 发烧为什么会浑身酸疼| 口蜜什么剑| 为什么医生不建议献血小板| 流清鼻涕吃什么药| 弱点是什么意思| 金牛座是什么性格| 被蝎子蛰了有什么好处| 用进废退是什么意思| 耳后有痣代表什么| 肿瘤前期出现什么症状| 2004年是什么生肖| sport什么品牌| 月经总是提前是什么原因| 浠字五行属什么| 绿豆不能和什么同吃| 嘴唇干裂脱皮是什么原因| 臭菜是什么菜| 孕妇感染弓形虫有什么症状| 芝五行属什么| 黄疸是什么病| 水鸭跟什么煲汤最佳| cc是什么牌子| yaoi是什么| 什么是尿素| 曦字五行属什么| 四川人喜欢吃什么| 水漂是什么意思| 总是放响屁是什么原因| 胆结石吃什么排石最快| 螃蟹代表什么生肖| 川字纹有什么影响| 吃白饭是什么意思| 舌头边缘有齿痕是什么原因| 沙漠为什么是三点水| 8月30号什么星座| 蛇为什么有毒| 云代表什么动物| jeans是什么品牌| 跑步后尿血是什么情况| 便潜血阳性什么意思| 生死离别代表什么生肖| 高胆固醇血症是什么意思| 水字五行属什么| 关晓彤属什么生肖| 苹果补充什么维生素| 矫正视力是指什么| 淋巴瘤是什么症状| 因果循环是什么意思| 神采什么| 天成是什么意思| 翻糖蛋糕是什么意思| 怠工是什么意思| 澳门是什么花| 梦到自己杀人是什么意思| 乱花渐欲迷人眼是什么意思| 为什么会得水痘| 妇科检查白细胞酯酶阳性是什么意思| 脾五行属什么| 种植牙有什么风险和后遗症| 女人吃猪肝有什么好处| 台湾人说什么语言| 你最喜欢的食物是什么| 全身大面积湿疹暗示着什么| 胃黏膜受损是什么症状| 吃东西容易呛到是什么原因| 登字五行属什么| 大腿肿胀是什么原因| 霜降是什么意思| 宝宝喜欢趴着睡觉是什么原因| 吃什么药能冲开宫腔粘连| 为什么明星不激光祛斑| 刑冲破害是什么意思| 温吞是什么意思| 证件照是什么| 海参什么季节吃好| 眼睛发蓝是什么原因| 停电了打什么电话| 静脉曲张属于什么科| 耳闷耳堵是什么原因引起的| 巨蟹男和什么星座最配| 尿道口灼热感吃什么药最快| inv是什么意思| 肺火大吃什么药| 7月24日是什么星座| 梅核气是什么病| 骶椎腰化什么意思| 尿多是什么病| 牙齿脱矿是什么原因| 腹直肌是什么| 牡蛎是什么东西| 肌肉酸痛吃什么药| 菜场附近开什么店好| 枸杞搭配什么喝最好| ray是什么意思| 吃桂圆干有什么好处和坏处| 羊鞭是什么| 金鱼可以吃什么| 国手什么意思| 上吐下泻是什么原因| domyos是什么牌子| 巨蟹女和什么座最配对| 近视散光是什么意思| 呼吸道感染吃什么药| l代表什么| 腮腺炎吃什么| 右后背疼什么原因| 慢性胃炎能吃什么水果| 轧戏什么意思| 薏米是什么米| 萎缩性胃炎吃什么食物好| 卡马西平片治什么病| 伏脉常见于什么病| 糖尿病人不能吃什么| 扪是什么意思| acca是什么专业| 最近老坏东西暗示什么| 鼻涕臭是什么原因| 子宫内膜薄是什么原因| 颠三倒四是什么意思| 难以入睡是什么原因引起的| sp是什么意思啊| 无痕是什么意思| 胎膜早破是什么症状| 一个三点水一个有读什么字| 小孩感冒发烧吃什么药| 营救是什么意思| 大骨头炖什么好吃| 维生素C起什么作用| 荆棘是什么植物| 血吸虫是什么动物| 冰箱为什么不制冷了| 欲盖弥彰是什么意思| 尿液细菌高是什么原因| 绿豆可以和什么一起煮| 为什么会有扁桃体结石| 眉梢有痣代表什么| 纳粹是什么意思| 7月7日什么星座| 宇宙之外还有什么| 感冒鼻子不通气吃什么药| 打点滴是什么意思| 眼睛的晶体是什么| 外科和内科有什么区别| 花序是什么意思| aoa是什么意思| 心咒是什么意思| 好好的什么意思| 天天喝豆浆有什么好处和坏处| 人在囧途是什么意思| mm代表什么| 泛是什么意思| 荨麻疹为什么晚上起| 胃酸过多是什么原因造成的| 摔伤挂什么科| 为什么会长子宫肌瘤| 梦见很多蜜蜂是什么意思| 大便颜色发绿是什么原因| joan什么意思| 什么的柳树| 偏光和非偏光有什么区别| 头晕恶心想吐挂什么科| 空调的几匹是什么意思| 万马奔腾是什么生肖| 胆固醇高是什么症状| 钾离子低的原因是什么| 春天穿什么衣服| 教师节该送什么礼物| 小心眼是什么意思| 粘液丝高是什么原因| 牙龈起泡是什么原因| 石榴花是什么颜色| 烘培是什么意思| 四川的耗儿鱼是什么鱼| 一般什么人容易得甲亢| 绿色痰液是什么感染| 耳朵发烫是什么征兆| 感觉牙齿松动是什么原因| 什么药治尿酸高最有效| 日本豆腐是什么材料| 自恋什么意思| 百度

吐槽大会:台大医生救人反遭诬告 感叹“在台湾当医生猪狗不如”

百度 "一带一路"建设是开放的、包容的,欢迎世界各国和国际、地区组织积极参与。

A domain-specific language (DSL) is a computer language specialized to a particular application domain. This is in contrast to a general-purpose language (GPL), which is broadly applicable across domains. There are a wide variety of DSLs, ranging from widely used languages for common domains, such as HTML for web pages, down to languages used by only one or a few pieces of software, such as MUSH soft code. DSLs can be further subdivided by the kind of language, and include domain-specific markup languages, domain-specific modeling languages (more generally, specification languages), and domain-specific programming languages. 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 domain-specific modeling. Simpler DSLs, particularly ones used by a single application, are sometimes informally called mini-languages.

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 specific domain. For example, Perl was originally developed as a text-processing and glue language, for the same domain as AWK and shell scripts, but was mostly used as a general-purpose programming language later on. By contrast, PostScript is a Turing-complete language, and in principle can be used for any task, but in practice is narrowly used as a page description language.

The design and use of appropriate DSLs is a key part of domain engineering, 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. Language-oriented programming 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 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.

Overview

edit

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 also be a business area. Some examples of business areas include:

  • life insurance policies (developed internally by a large insurance enterprise)
  • combat simulation
  • salary calculation
  • billing

A domain-specific language is somewhere between a tiny programming language and a scripting language, and is often used in a way analogous to a programming library. The boundaries between these concepts are quite blurry, much like the boundary between scripting languages and general-purpose languages.

In design and implementation

edit

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 Generic Eclipse Modeling System, programmatic abstractions, such as the Eclipse Modeling Framework, or textual languages. For instance, the command line utility grep has a regular expression syntax which matches patterns in lines of text. The sed utility defines a syntax for matching and replacing regular expressions. Often, these tiny languages can be used together inside a shell to perform more complex programming tasks.

The line between domain-specific languages and scripting languages 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 byte-code or executable code, but to various kinds of media objects: GraphViz exports to PostScript, GIF, JPEG, etc., where Csound compiles to audio files, and a ray-tracing domain-specific language like POV compiles to graphics files.

Data definition languages

edit

A data definition language like SQL 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 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.

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.

Programming tools

edit

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 functional language XSLT, 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.

In model-driven engineering, many examples of domain-specific languages may be found like OCL, a language for decorating models with assertions or QVT, a domain-specific transformation language. However, languages like UML are typically general-purpose modeling languages.

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.[clarification needed] A domain-specific language is like an electric drill: it is a powerful tool with a wide variety of uses, but a specific context, 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.[citation needed]

Domain-specific language topics

edit

External and Embedded Domain Specific Languages

edit

DSLs implemented via an independent interpreter or compiler are known as External Domain Specific Languages. Well known examples include TeX or AWK. A separate category known as Embedded (or Internal) Domain Specific Languages 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.[1]

Usage patterns

edit

There are several usage patterns for domain-specific languages:[2][3]

  • Processing with standalone tools, invoked via direct user operation, often on the command line or from a Makefile (e.g., grep for regular expression matching, sed, lex, yacc, the GraphViz toolset, etc.)
  • 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
  • As embedded domain-specific language (eDSL)[4] also known as an internal domain-specific language, 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 type safety and better IDE tooling. eDSL examples: SQLAlchemy "Core" an SQL eDSL in Python, jOOQ an SQL eDSL in Java, LINQ's "method syntax" an SQL eDSL in C# and kotlinx.html an HTML eDSL in Kotlin.
  • Domain-specific languages which are called (at runtime) from programs written in general purpose languages like C or Perl, to perform a specific function, often returning the results of operation to the "host" programming language for further processing; generally, an interpreter or virtual machine for the domain-specific language is embedded into the host application (e.g. format strings, a regular expression engine)
  • Domain-specific languages which are embedded into user applications (e.g., macro languages within spreadsheets)[5] and which are (1) used to execute code that is written by users of the application, (2) dynamically generated by the application, or (3) both.

Many domain-specific languages can be used in more than one way.[citation needed] 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.

Design goals

edit

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.

Domain-specific languages have important design goals that contrast with those of general-purpose languages:

  • Domain-specific languages are less comprehensive.
  • Domain-specific languages are much more expressive in their domain.
  • Domain-specific languages should exhibit minimal redundancy.

Idioms

edit

In programming, idioms are methods imposed by programmers to handle common development tasks, e.g.:

  • Ensure data is saved before the window is closed.
  • Edit code whenever command-line parameters change because they affect program behavior.

General purpose programming languages rarely support such idioms, but domain-specific languages can describe them, e.g.:

  • A script can automatically save data.
  • A domain-specific language can parameterize command line input.

Examples

edit

Examples of domain-specific programming 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, Hashicorp Configuration Language used for Terraform and other Hashicorp tools, Puppet also has its own configuration language.

GameMaker Language

edit

The GML scripting language used by GameMaker Studio 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 Delphi, C++, and BASIC. 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.

ColdFusion Markup Language

edit

ColdFusion'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.

The ColdFusion Markup Language (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.

FilterMeister

edit

FilterMeister is a programming environment, with a programming language that is based on C, for the specific purpose of creating Photoshop-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.

MediaWiki templates

edit

The Template feature of MediaWiki is an embedded domain-specific language whose fundamental purpose is to support the creation of page templates and the transclusion (inclusion by reference) of MediaWiki pages into other MediaWiki pages.

Software engineering uses

edit

There has been much interest in domain-specific languages to improve the productivity and quality of software engineering. 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.

The Software Cost Reduction Toolkit[6] is an example of this. The toolkit is a suite of utilities including a specification editor to create a requirements specification, a dependency graph browser to display variable dependencies, a consistency checker to catch missing cases in well-formed formulas in the specification, a model checker and a theorem prover to check program properties against the specification, and an invariant generator that automatically constructs invariants based on the requirements.

A newer development is language-oriented programming, an integrated software engineering methodology based mainly on creating, optimizing, and using domain-specific languages.

Metacompilers

edit

Complementing language-oriented programming, as well as all other forms of domain-specific languages, are the class of compiler writing tools called metacompilers. A metacompiler is not only useful for generating parsers and code generators for domain-specific languages, but a metacompiler itself compiles a domain-specific metalanguage specifically designed for the domain of metaprogramming.

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 program transformation systems.

Metacompilers that played a significant role in both computer science and the computer industry include Meta-II,[7] and its descendant TreeMeta.[8]

Unreal Engine before version 4 and other games

edit

Unreal and Unreal Tournament unveiled a language called UnrealScript. This allowed for rapid development of modifications compared to the competitor Quake (using the Id Tech 2 engine). The Id Tech engine used standard C code meaning C had to be learned and properly applied, while UnrealScript was optimized for ease of use and efficiency. Similarly, more recent games have introduced their own specific languages for development. One more common example is Lua for scripting.[citation needed]

Rules engines for policy automation

edit

Various business rules engines have been developed for automating policy and business rules used in both government and private industry. ILOG, Oracle Policy Automation, DTRules, Drools 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.

The purpose of business rules engines is to define a representation of business logic in as human-readable fashion as possible. This allows both subject-matter experts 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 decision tables) coupled with alternatives to programming syntax in favor of DSLs.

Statistical modelling languages

edit

Statistical modelers have developed domain-specific languages such as R (an implementation of the S language), Bugs, Jags, and Stan. These languages provide a syntax for describing a Bayesian model and generate a method for solving it using simulation.

Generate model and services to multiple programming Languages

edit

Generate object handling and services based on an Interface Description Language 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 Apache Thrift or Google Protocol Buffers.

Gherkin

edit

Gherkin 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 line-oriented design. 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.

Other examples

edit

Other prominent examples of domain-specific languages include:

Advantages and disadvantages

edit

Some of the advantages:[2][3]

  • 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 case.[9]
  • Domain-specific languages allow validation at the domain level. As long as the language constructs are safe any sentence written with them can be considered safe.[citation needed]
  • 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 domain.[10]
  • Domain-specific languages are easier to learn, given their limited scope.

Some of the disadvantages:

  • Cost of learning a new language
  • Limited applicability
  • Cost of designing, implementing, and maintaining a domain-specific language as well as the tools required to develop with it (IDE)
  • Finding, setting, and maintaining proper scope.
  • Difficulty of balancing trade-offs between domain-specificity and general-purpose programming language constructs.
  • Potential loss of processor efficiency compared with hand-coded software.
  • 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.[11]
  • Non-technical domain experts can find it hard to write or modify DSL programs by themselves.[9]
  • Increased difficulty of integrating the DSL with other components of the IT system (as compared to integrating with a general-purpose language).
  • Low supply of experts in a particular DSL tends to raise labor costs.
  • Harder to find code examples.

Tools for designing domain-specific languages

edit
  • JetBrains MPS is a tool for designing domain-specific languages. It uses projectional editing 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 language workbench, and an Integrated Development Environment (IDE) for such languages.[12]
  • MontiCore 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.[13]
  • Xtext 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 Eclipse-based IDE.[14] The project was archived in April 2023.
  • Racket 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 languages.[15][16]

See also

edit

References

edit
  1. ^ Fowler, Martin; Parsons, Rebecca. "Domain Specific Languages". Retrieved 6 July 2019.
  2. ^ a b Marjan Mernik, Jan Heering, and Anthony M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005.doi:10.1145/1118890.1118892
  3. ^ a b Diomidis Spinellis. Notable design patterns for domain specific languages. Journal of Systems and Software, 56(1):91–99, February 2001. doi:10.1016/S0164-1212(00)00089-3
  4. ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (March 2018). "A Programmable Programming Language". Communications of the ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010. Retrieved 15 May 2019.
  5. ^ Stinson, Craig (2025-08-06). "Building the Perfect Spreadsheet". PC. pp. 101–164. Retrieved 2025-08-06.
  6. ^ Heitmeyer, C. (1999). "Using the SCR* toolset to specify software requirements" (PDF). Proceedings. 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques. IEEE. pp. 12–13. doi:10.1109/WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archived from the original (PDF) on 2025-08-06.
  7. ^ Shorre, D. V. (1964). "META II a syntax-oriented compiler writing language". Proceedings of the 1964 19th ACM national conference. pp. 41.301 – 41.3011. doi:10.1145/800257.808896. S2CID 43144779.
  8. ^ Carr, C. Stephen; Luther, David A.; Erdmann, Sherian (1969). "The TREE-META Compiler-Compiler System: A Meta Compiler System for the Univac 1108 and General Electric 645". University of Utah Technical Report RADC-TR-69-83. Archived from the original on February 1, 2020.
  9. ^ a b Freudenthal, Margus (1 January 2009). "Domain Specific Languages in a Customs Information System". IEEE Software: 1. doi:10.1109/MS.2009.152.
  10. ^ Aram, Michael; Neumann, Gustaf (2025-08-06). "Multilayered analysis of co-development of business information systems" (PDF). Journal of Internet Services and Applications. 6 (1). doi:10.1186/s13174-015-0030-8. S2CID 16502371.
  11. ^ Miotto, Eric. "On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering" (PDF). Archived from the original (PDF) on 2025-08-06. Retrieved 2025-08-06.
  12. ^ "JetBrains MPS: Domain-Specific Language Creator".
  13. ^ "MontiCore".
  14. ^ "Xtext".
  15. ^ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries" (PDF). Programming Language Design and Implementation.
  16. ^ Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. Retrieved 2025-08-06.

Further reading

edit
edit
Articles
麒麟儿是什么意思 营长是什么军衔 什么季节补钙效果最好 05是什么生肖 吃什么食物可以去湿气
跳票什么意思 喝酒吐血是什么原因 什么是考生号 很无奈是什么意思 eb病毒感染是什么病
层次是什么意思 吃驼奶粉有什么好处 拔罐颜色紫黑代表什么 梦到自己的妈妈死了是什么意思 本科是什么学历
gson是什么牌子 牙齿为什么会松动 柠檬泡水有什么好处 什么是意象 竹荪是什么东西
rpr阴性是什么意思hcv8jop3ns7r.cn 有时候会感到莫名的难过是什么歌hcv9jop0ns3r.cn 什么发抖hcv8jop7ns5r.cn 鸡痘用什么药效果好hcv9jop2ns8r.cn 鱼油功效和作用是什么hcv9jop6ns8r.cn
随遇而安是什么生肖0735v.com 8月6日是什么星座zhiyanzhang.com 蛇冲什么生肖hcv8jop0ns0r.cn 姓陆的女孩取什么名字好hcv9jop1ns9r.cn 小产后可以吃什么水果hcv8jop4ns7r.cn
结核有什么症状hcv8jop4ns2r.cn 吃什么能拉肚子hcv8jop1ns3r.cn 张力是什么意思hcv7jop6ns7r.cn 肥波是什么品种的猫hcv7jop6ns0r.cn 清什么什么月cl108k.com
优甲乐什么时候吃最好hcv8jop2ns1r.cn 右腹疼是什么原因hcv7jop6ns9r.cn 党员有什么好处gysmod.com 颈椎病用什么枕头好hcv9jop5ns6r.cn 巴洛特利为什么叫巴神hcv7jop6ns8r.cn
百度