ABSTRACT
Domain-specific languages (DSLs) improve software maintainability and programmer productivity by making domain concepts more explicit in the code. However, developing syntax and semantics of DSLs is often challenging and as a result developers seldom take advantage of the benefits of DSLs. One way to lower the entry barrier to DSL development is to give developers immediate and continuous feedback on modifications to a language. We propose Gramada, an environment for developing DSLs in Squeak/Smalltalk which is designed to provide such a live programming experience. It is based on a language development framework with additional support for incremental compilation to improve system response times and a set of tools which creates a steady frame and allows programmers to quickly explore changes to the syntax of a language. Our benchmarks and discussion illustrate how Gramada can give visual feedback on most changes to the language in a way that supports live programming. We conclude that Gramada’s feedback is fast and consistent enough to make exploring the effects of changes a lively and productive activity during the interactive development of DSLs.
- R. E. Barber and J. Lucas, Henry C. System response time operator productivity, and job satisfaction. CACM, 26(11): 972–986, 1983. Google ScholarDigital Library
- J. Bovet and T. Parr. ANTLRWorks: An ANTLR grammar development environment. Software: Practice and Experience, 38(12):1305–1332, 2008. Google ScholarDigital Library
- J. Dabrowski and E. V. Munson. 40 years of searching for the best computer system response time. Interacting with Computers, 23(5):555–564, 2011. Google ScholarDigital Library
- P. Dubroy, S. Kasibatla, M. Li, M. Röder, and A. Warth. Language hacking in a live programming environment. In Proceedings of the LIVE Workshop co-located with ECOOP 2016, 2016.Google Scholar
- S. Erdweg, T. v. d. Storm, M. Völter, M. Boersma, R. Bosman, W. R. Cook, A. Gerritsen, A. Hulshout, S. Kelly, A. Loh, G. D. P. Konat, P. J. Molina, M. Palatnik, R. Pohjonen, E. Schindler, K. Schindler, R. Solmi, V. A. Vergu, E. Visser, K. v. d. Vlist, G. H. Wachsmuth, and J. v. d. Woning. The state of the art in language workbenches. In Proceedings of SLE 2013, pages 197–217. Springer, 2013.Google ScholarCross Ref
- M. Eysholdt and H. Behrens. Xtext: Implement your language faster than the quick and dirty way. In Proceedings of OOPSLA 2010, pages 307–309. ACM, 2010. Google ScholarDigital Library
- M. Fowler. Domain-Specific Languages. Pearson Education, 2010. Google ScholarDigital Library
- A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley Longman Publishing Co., Inc., Boston, Massachusetts, USA, 1983. Google ScholarDigital Library
- C. M. Hancock. Real-Time Programming and the Big Ideas of Computational Literacy. PhD thesis, Massachusetts Institute of Technology, Sept. 2003. Google ScholarDigital Library
- C. D. Hundhausen and J. L. Brown. What you see is what you code: A live algorithm development and visualization environment for novice learners. Journal of Visual Languages & Computing, 18(1):22 – 47, 2007. Google ScholarDigital Library
- D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the future: The story of Squeak, a practical Smalltalk written in itself. In ACM SIGPLAN Notices, volume 32, pages 318–326. ACM, 1997. Google ScholarDigital Library
- J. Johnson. Designing with the Mind in Mind. Morgan Kaufmann, San Francisco, CA, USA, 2nd edition, 2014. Google ScholarDigital Library
- L. C. Kats and E. Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. In Proceedings of OOPSLA 2010, number 10, pages 444–463. ACM, 2010. Google ScholarDigital Library
- L. C. L. Kats, R. Vermaas, and E. Visser. Integrated language definition testing: Enabling test-driven language development. In Proceedings of OOPSLA 2011, pages 139–154. ACM, 2011. Google ScholarDigital Library
- P. Klint, T. van der Storm, and J. Vinju. EASY Meta-Programming With Rascal. In Proceedings of the Summer School on Generative and Transformational Techniques in Software Engineering 2009, volume 6491 of Lecture Notes in Computer Science, pages 222 – 289. Springer, 2011. Google ScholarDigital Library
- G. N. Lambert. A comparative study of system response time on program developer productivity. IBM Systems Journal, 23 (1):36–43, 1984. Google ScholarDigital Library
- H. Lieberman and C. Fry. Bridging the gulf between code and behavior in programming. In Proceedings of SIGCHI 1995, pages 480–486, New York, New York, USA, 1995. ACM Press/Addison-Wesley Publishing Co. Google ScholarDigital Library
- J. McCarthy. LISP 1.5 Programmer’s Manual. MIT Press, 1965.Google Scholar
- S. McDirmid. Usable live programming. In Proceedings of the Symposium on New Ideas, New Paradigms, and Reflections on Programming & Software (Onward!) 2013, Onward! 2013, pages 53–62, New York, NY, USA, 2013. ACM. Google ScholarDigital Library
- M. Mernik, J. Heering, and A. M. Sloane. When and how to develop domain-specific languages. ACM Computing Surveys, 37(4):316–344, 2005. Google ScholarDigital Library
- D. A. Norman and S. W. Draper. User Centered System Design. Lawrence Erlbaum Associates, Inc., Publishers, 1986.Google Scholar
- L. Renggli, S. Ducasse, T. Gˆırba, and O. Nierstrasz. Practical dynamic grammars for dynamic languages. In Proceedings of DYLA 2010. Springer, 2010.Google Scholar
- M. Sassa and T. Ookubo. Systematic debugging method for attribute grammar description. Information Processing Letters, 62(6):305 – 313, 1997. Google ScholarDigital Library
- W. Scacchi. Understanding software productivity: Towards a knowledge-based approach. Journal of Software Engineering and Knowledge Engineering, 1(3):293–321, 1991.Google ScholarCross Ref
- B. Shneiderman, C. Plaisant, M. Cohen, and S. Jacobs. Designing the User Interface: Strategies for Effective Human-Computer Interaction. Pearson, Upper Saddle River, New Jersey, USA, international edition of 5th revised edition, 2009. Google ScholarDigital Library
- Software Architecture Group, Hasso Plattner Institute. Squeak AutoTDD {Computer Software}. Retrieved from https: //github.com/HPI-SWA-Teaching/AutoTDD. visited September 28, 2016.Google Scholar
- Squeak Foundation. Squeak/Smalltalk version 4.6 {Computer Software}. Retrieved from https://www.squeak.org. visited September 28, 2016.Google Scholar
- M. Taeumel. Vivide {Computer Software}. Retrieved from https://github.com/hpi-swa/Vivide. visited September 28, 2016.Google Scholar
- M. Taeumel, M. Perscheid, B. Steinert, J. Lincke, and R. Hirschfeld. Interleaving of modification and use in datadriven tool development. In Proceedings of Onward! 2014, pages 185–200. ACM, 2014. Google ScholarDigital Library
- S. L. Tanimoto. A perspective on the evolution of live programming. In Proceedings of the 1st International Workshop on Live Programming (LIVE) 2013, pages 31–34. IEEE, 2013. Google ScholarDigital Library
- A. J. Thadhani. Factors affecting programmer productivity during application development. IBM Systems Journal, 23(1): 19–35, 1984. Google ScholarDigital Library
- D. Ungar and R. B. Smith. Self: The power of simplicity. In Proceedings of OOPSLA 1987, pages 227–242, New York, New York, USA, 1987. ACM. Google ScholarDigital Library
- A. Warth and P. Dubroy. Ohm version 0.85 {Computer Software}. Retrieved from https://github.com/cdglabs/ ohm. visited September 28, 2016.Google Scholar
- A. Warth, J. R. Douglass, and T. Millstein. Packrat parsers can support left recursion. In Proceedings of PEPM 2008, pages 103–110, New York, New York, USA, 2008. ACM. Google ScholarDigital Library
- A. Warth, P. Dubroy, and T. Garnock-Jones. Modular semantic actions. In Proceedings of DLS 2016, New York, New York, USA, November 2016. ACM. Google ScholarDigital Library
- E. M. Wilcox, J. W. Atwood, M. M. Burnett, J. J. Cadiz, and C. R. Cook. Does continuous visual feedback aid debugging in direct-manipulation programming systems? In Proceedings of CHI 1997, pages 258–265, New York, NY, USA, 1997. ACM. Google ScholarDigital Library
Index Terms
Gramada: immediacy in programming language development
Recommendations
iCoLa: A Compositional Meta-language with Support for Incremental Language Development
SLE 2022: Proceedings of the 15th ACM SIGPLAN International Conference on Software Language EngineeringProgramming languages providing high-level abstractions can increase programmers’ productivity and program safety. Language-oriented programming is a paradigm in which domain-specific languages are developed to solve problems within specific domains ...
A domain-specific language for building self-optimizing AST interpreters
GPCE '14Self-optimizing AST interpreters dynamically adapt to the provided input for faster execution. This adaptation includes initial tests of the input, changes to AST nodes, and insertion of guards that ensure assumptions still hold. Such specialization ...
Choosing a Programming Language
There's no language suitable for all tasks, and there probably won't ever be one. When choosing a programming language, you have to balance programmer productivity, maintainability, efficiency, portability, tool support, and software and hardware ...
Comments