Abstract
As a part of domain-specific development, Domain-Specific Language (DSL) is widely used in both the academia and industry to solve different aspects of the problems in engineering. A DSL is a customized language whose expressiveness is tailored to a well-defined application domain, so as to offer an effective interface for the domain experts. To mitigate the programming complexity of the General-Purpose Programming Languages, and meanwhile maintain the precise expression towards some exact engineering domains, DSLs present a higher level of abstraction than low-level interfaces, while providing much more flexibility than high-level interfaces. Nevertheless, it lacks a survey to have a systematic overview of the essential commonalities shared by those works. In this survey, we take a brand-new perspective, to categorize the state-of-the-art works into different categories, tailored to three fundamental implementation concerns of DSLs: abstract syntax, concrete syntax, and semantics. Specifically, they are characterized according to their parsing and mapping strategy (external/internal) between the abstract syntax and concrete syntax, the mapping results (textual/graphical symbols), and also the functions they emphasize (modeling, visualizing, etc.). Integrated with the literature, we finally summarized the research overview of DSLs.
Similar content being viewed by others
References
Nardi Bonnie A (1993) A small matter of programming: perspectives on end user computing. MIT Press, Cambridge
Kapre N, Bayliss S (2016) Survey of domain-specific languages for FPGA computing. In: International Conference on Field Programmable Logic and Applications (FPL), pages 1–12. IEEE
Collins C, Penn G, Carpendale S (2009) BubbleSets: Revealing set relations with isocontours over existing visualizations. IEEE Trans Visual Comput Graph 15(6):1009–1016
Jones M, Scaffidi C (2011) Obstacles and opportunities with using visual and domain-specific languages in scientific programming. In: 2011 IEEE symposium on visual languages and human-centric computing (VL/HCC). IEEE, pp 9–16
Portugal I, Alencar P, Cowan D (2016) A Preliminary Survey on Domain-Specific Languages for Machine Learning in Big Data. In: IEEE International Conference on Software Science, Technology and Engineering. IEEE, pp 108–110
Rautek Peter, Bruckner Stefan, Grller Eduard, Hadwiger Markus (2014) Vislang: a system for interpreted domain-specific languages for scientific visualization. IEEE Trans Visual Comput Graph 20(12):2388–2396
Harel D, Rumpe B (2004) Meaningful modeling: what’s the semantics of “semantics”? Computer 37(10):64–72
Méndez-Acuña D, Galindo José A, Degueule T, Combemale B, Baudry B (2016) Leveraging software product lines engineering in the development of external DSLs: a systematic literature review. Comput Lang Syst Struct 46:206–235
Zdun U, Strembeck M (2009) Reusable architectural decisions for DSL design: foundational decisions in DSLs development. In: European Conference on Pattern Languages of Programs. CEUR-WS, pp B6(1–37)
Brown Kevin J , Sujeeth Arvind K , Lee Hyouk J, Rompf T, Chafi H, Odersky M, Olukotun K (2011) A heterogeneous parallel framework for domain-specific languages. In: 2011 International conference on parallel architectures and compilation techniques. IEEE, pp 89–100
Johanson AN, Hasselbring W (2014) Hierarchical combination of internal and external domain-specific languages for scientific computing. In: Proceedings of the 2014 European conference on software architecture workshops, pp 1–8
Mernik M, Heering J, Sloane AM (2005) When and how to develop domain-specific languages. ACM Comput Surv (CSUR) 37(4):316–344
Renggli L, Gîrba T (2009) Why smalltalk wins the host languages shootout. In: Proceedings of the international workshop on smalltalk technologies, pp 107–113
Jézéquel J-M, Méndez-Acuna D, Degueule T, Combemale B, Barais O (2015) When systems engineering meets software language engineering. Complex systems design & management. Springer, New York, pp 1–13
Cosentino V, Tisi M, Izquierdo Javier LC (2015) A model-driven approach to generate external DSLs from object-oriented apis. In: International conference on current trends in theory and practice of informatics. Springer, New York, pp 423–435
Kindlmann Gordon L, Chiw Charisee, Seltzer Nicholas, Samuels Lamont, Reppy John H (2016) Diderot: a domain-specific language for portable parallel scientific visualization and image analysis. IEEE Trans Visual Comput Graph 22(1):867–876
Hong S, Chafi H, Sedlar E, Olukotun K (2012) Green-Marl: a DSL for easy and efficient graph analysis. In: Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems, pp 349–362
Barringer H, Rydeheard D, Havelund K (2008) Rule systems for run-time monitoring: from eagle to ruler. J Log Comput 20(3):675–706
Barringer H, Groce A, Havelund K, Smith M (2010) Formal analysis of log files. J Aerospace Comput Inform Commun 7(11):365–390
Barringer H, Goldberg A , Havelund K, Sen K (2004) Rule-based runtime verification. In: International workshop on verification, model checking, and abstract interpretation. Springer, New York, pp 44–57
d’Amorim M, Havelund K (2005) Event-based runtime verification of java programs. ACM SIGSOFT Software Eng Notes 30(4):1–7
Barringer H, Havelund K (2011) Internal versus external DSLs for trace analysis. In: International conference on runtime verification. Springer, New York, pp 1–3
Stahl T, Voelter M, Czarnecki K (2006) Model-driven software development: technology, engineering, management. Wiley, Hoboken
Eysholdt M, Behrens H (2010) Xtext: implement your language faster than the quick and dirty way. In: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, pp 307–309
Beyak L, Carette J (2011) SAGA: a DSL for story management. arXiv preprint arXiv:1109.0776
George L, Wider A, Scheidgen M (2012) Type-safe model transformation languages as internal DSLs in scala. In: International conference on theory and practice of model transformations. Springer, New York, pp 160–175
Paul H (1996) Building domain-specific embedded languages. ACM Comput Surv 28(4es):196es
Barringer H, Havelund K (2011) TraceContract: a scala DSL for trace analysis. In: International symposium on formal methods. Springer, New York, pp 57–72
Günther S (2009) Agile DSL-engineering and patterns in ruby. Otto-von-Guericke-Universität Magdeburg, Technical report (Internet) FIN-018-2009
Chafi H, Sujeeth AK, Brown KJ, Lee HJ, Atreya AR, Olukotun K (2011) A domain-specific approach to heterogeneous parallelism. ACM SIGPLAN Notices 46(8):35–46
Choi H, Choi W, Quan TM, Hildebrand D, Pfister H, Jeong WK (2014) Vivaldi: a domain-specific language for volume processing and visualization on distributed heterogeneous systems. IEEE Trans Visual Comput Graph 20(12):2407–2416
Rompf T, Odersky M (2010) Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs. In: Proceedings of the ninth international conference on Generative programming and component engineering, pp 127–136
Ragan-Kelley J, Adams A, Paris S, Levoy M, Amarasinghe SP, Durand F (2012) Decoupling algorithms from schedules for easy optimization of image processing pipelines. ACM Trans Graph 31(4):32:1–32:12
Anderson L, Li T-M, Lehtinen J, Durand F (2017) Aether: an embedded domain specific sampling language for monte carlo rendering. ACM Trans Graph 36(4):99:1–99:16
Karnick P, Jeschke S, Cline D, Razdan A, Wentz E, Wonka P (2009) A shape grammar for developing glyph-based visualizations. Comput Graph Forum 28(8):2176–2188
Günther S, Sunkle S (2009) Feature-oriented programming with ruby. In: Proceedings of the first international workshop on feature-oriented software development, pp 11–18
Duke DJ, Borgo R, Wallace M, Runciman C (2009) Huge data but small programs: visualization design via multiple embedded DSLs. In: Practical aspects of declarative languages, 11th international symposium, PADL 2009, pp 31–45
Thomas D, Hunt A, Fowler C (2005) Programming Ruby: the pragmatic programmers’ guide. Pragmatic Bookshelf, Raleigh
Díaz O, Puente G (2011) a DSL for corporate wiki initialization. In: International conference on advanced information systems engineering. Springer, New York, pp 237–251
Merkle B (2010) Textual modeling tools: overview and comparison of language workbenches. In: Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, pp 139–148
Marques E, Balegas V, Barroca BF, Barisic A, Amaral V (2012) The RPG DSL: a case study of language engineering using MDD for generating RPG games for mobile phones. In: Proceedings of the 2012 workshop on domain-specific modeling, pp 13–18
Cook S, Jones G, Kent S, Wills AC (2007) Domain-specific development with visual studio DSL tools. Pearson Education, London
Guerra E, De Lara J (2006) Model view management with triple graph transformation systems. In: International conference on graph transformation. Springer, New York, pp 351–366
Andrés FP, De Lara J, Guerra E (2007) Domain specific languages with graphical and textual views. In: International symposium on applications of graph transformations with industrial relevance. Springer, New York, pp 82–97
Jouault F, Bézivin J, Kurtev I (2006) TCS: a DSL for the specification of textual concrete syntaxes in model engineering. In: Proceedings of the 5th international conference on Generative programming and component engineering, pp 249–254
Fowler M (2005) Language workbenches: The killer-app for domain specific languages. In: Lambda the Ultimate
Pfeiffer M, Pichler J (2008) A comparison of tool support for textual domain-specific languages. In: Proceedings of the 8th OOPSLA workshop on domain-specific modeling, pp 1–7
Charles P, Fuhrer RM, Sutton Jr SM (2007) Imp: a meta-tooling platform for creating language-specific ides in eclipse. In: Proceedings of the twenty-second IEEE/ACM international conference on automated software engineering, pp 485–488
Grönniger H, Krahn H, Rumpe B, Schindler M, Völkel S (2008) Monticore: a framework for the development of textual domain specific languages. In: Companion of the 30th international conference on Software engineering, pp 925–926
Krahn H, Rumpe B, Völkel S (2014) Efficient editor generation for compositional DSLs in eclipse. arXiv preprint arXiv:1409.6625
Friese P, Efftinge S, Köhnlein J (2008) Build your own textual DSL with tools from the eclipse modeling project. In: Eclipse Corner Article
Fowler M (2005) A language workbench in action-mps. Online http://martinfowler.com/articles/mpsAgree.html
Moody D (2009) The “physics” of notations: toward a scientific basis for constructing visual notations in software engineering. IEEE Trans Software Eng 35(6):756–779
Sendall S, Kozaczynski W (2003) Model transformation: the heart and soul of model-driven software development. IEEE Softw 20(5):42–45
Schlee M, Vanderdonckt J (2004) Generative programming of graphical user interfaces. In: Proceedings of the working conference on advanced visual interfaces, pp 403–406
Sleiman HA, Sultán AW, Frantz RZ , Corchuelo R et al (2009) Towards automatic code generation for EAI solutions using DSL tools. In: JISBD, pp 134–145
Silva GC, Rose LM, Calinescu R (2014) Cloud DSL: a language for supporting cloud portability by describing cloud entities. In: CloudMDE@ MoDELS, pp 36–45
Morgan R, Grossmann G, Schrefl M, Stumptner M, Payne T (2018) VizDSL: a visual DSL for interactive information visualization. In: International conference on advanced information systems engineering. Springer, New York, pp 440–455
Petcu D, Macariu G, Panica S, Craciun C (2013) Portable cloud applications from theory to practice. Future Generat Comput Syst 29(6):1417–1430
Liu D, Zic J (2011) Cloud#: a specification language for modeling cloud. In: 2011 IEEE 4th international conference on cloud computing. IEEE, pp 533–540
Cunningham W et al (2002) What is wiki. WikiWikiWeb. http://www.wiki.org/wiki.cgi
Raman M (2006) Wiki technology as a ”free” collaborative tool within an organizational setting. Inf Syst Manag 23(4):59–66
Carlin D (2007) Corporate wikis go viral. Business Week Online, 12
Mueller J et al (2005) Freemind. http://freemind.sourceforge.net. Retrieved the 31st of December
Rodriguez-Gil L, Zubía JG, Orduña P, Villar-Martinez A, López-de-Ipiña D (2019) New approach for conversational agent definition by non-programmers: a visual domain-specific language. IEEE Access 7:5262–5276
Tao J, Wang C, Shene C-K (2014) Flowstring: partial streamline matching using shape invariant similarity measure for exploratory flow visualization. In: IEEE Pacific visualization symposium, pp 9–16
Li Y, Bao F, Zhang E, Kobayashi Y, Wonka P (2011) Geometry synthesis on surfaces using field-guided shape grammars. IEEE Trans Visual Comput Graph 17(2):231–243
Marvie JE, Buron C, Gautron P, Hirtzlin P, Sourimant G (2012) GPU shape grammars. Comput Graph. Forum 31(7–1):2087–2095
Dantra R, Grundy J, Hosking J (2009) A domain-specific visual language for report writing using microsoft dsl tools. In: IEEE symposium on visual languages and human-centric computing
Almorsy M, Grundy J, Sadus R, van Straten W, Barnes DG, Kaluza O (2013) A suite of domain-specific visual languages for scientific software application modelling. In: IEEE symposium on visual languages and human-centric computing
Grundy JC, Hosking J, Li KN, Ali NM, Huh J, Li RL (2013) Generating domain-specific visual language tools from abstract visual specifications. IEEE Trans Software Eng 39(4):487–515
Liu R, Ji G, Su M (2020) Domain-specific visualization system based on automatic multi-seed recommendations: extracting stratigraphic structures. Software: Pract Exp 50(2):98–115
Liu R, Guo H, Yuan X (2014) Seismic structure extraction based on multi-scale sensitivity analysis. J Visual 17(3):157–166
Liu R, Chen S, Ji G, Zhao B, Li Q, Su M (2018) Interactive stratigraphic structure visualization for seismic data. J Visual Lang Comput 48(2018):81–90
Liu R, Shen L, Chen X, Ji G, Zhao B, Tan C, Su M (2019) Sketch-based slice interpretative visualization for stratigraphic data. J Imaging Sci Technol 63(6):60505–1
Rath I, Vago D, Varro D (2008) Design-time simulation of domain-specific models by incremental pattern matching. In: IEEE symposium on visual languages and human-centric computing
Deshayes R (2013) A domain-specific modeling approach for gestural interaction. In: IEEE symposium on visual languages and human-centric computing
Risoldi M, Buchs D (2007) A domain specific language and methodology for control systems gui specification, verification and prototyping. In: IEEE symposium on visual languages and human-centric computing
Schulz HJ, Nocke T, Heitzler M, Schumann H (2013) A design space of visualization tasks. IEEE Trans Visual Comput Graph 19(12):2366–2375
Varró D, Balogh A (2007) The model transformation language of the VIATRA2 framework. Sci Comput Program 68(3):214–234
Lewis GA, Meyers BC, Wallnau K (2006) Workshop on program generation and model-driven architecture. Technical report, Carnegie Mellon University
Giachetti G, Marín B, Pastor O (2009) Using UML as a domain-specific modeling language: A proposal for automatic generation of uml profiles. In: International conference on advanced information systems engineering. Springer, New York, pp 110–124
Frank U (2010) Outline of a method for designing domain-specific modelling languages. Technical report, ICB-research report
Sujeeth AK , Lee HJ, Brown KJ , Rompf T, Chafi H, Wu M, Atreya AR, Odersky M, Olukotun K (2011) OptiML: an implicitly parallel domain-specific language for machine learning. In: International Conference on Machine Learning
Asenov D, Muller P (2013) Customizing the visualization and interaction for embedded domain-specific languages in a structured editor. In: IEEE symposium on visual languages and human-centric computing
Bachrach J, Vo H, Richards B, Lee Y, Waterman A, Avižienis R, Wawrzynek J, Asanović K (2012) Chisel: constructing hardware in a scala embedded language. In: DAC design automation conference 2012. IEEE, pp 1212–1221
Bostock M, Heer J (2009) Protovis: A graphical toolkit for visualization. IEEE Trans Visual Comput Graph 15(6):1121–1128
DeVito Z, Mara M, Zollhöfer M, Bernstein G, Ragan-Kelley J, Theobalt C (2017) Pat Hanrahan, Matthew Fisher, and Matthias Nießner. Opt: A domain specific language for non-linear least squares optimization in graphics and imaging. ACM Trans Graph 36(5):171:1–171:27
Hudak P, Jones MP (1994) Haskell vs. Ada vs. C++ vs. awk vs.... an experiment in software prototyping productivity. Contract 14(92-C):0153
Chandra S, Richards B, Larus JR (1999) Teapot: A domain-specific language for writing cache coherence protocols. IEEE Trans Software Eng 25(3):317–333
Hudak P (1998) Modular domain specific languages and tools. In: Proceedings of fifth international conference on software reuse (Cat. No. 98TB100203). IEEE, pp 134–142
Acknowledgements
This work was supported by the National Nature Science Foundation of China (NSFC) Grant Nos. 61702271 and 41971343, and Postgraduate Research & Practice Innovation Program of Jiangsu Province (No. SJCX20_0445). The authors would like to thank Ziqi Sha, Sitong Fang, Shunlong Ye, Guang Yang, and Ziyu Yao for their participating in paper collections.
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Shen, L., Chen, X., Liu, R. et al. Domain-Specific Language Techniques for Visual Computing: A Comprehensive Study. Arch Computat Methods Eng 28, 3113–3134 (2021). https://doi.org/10.1007/s11831-020-09492-4
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11831-020-09492-4