The Importance of Being Eelco

Authors Andrew P. Black , Kim B. Bruce , James Noble

Thumbnail PDF


  • Filesize: 1.3 MB
  • 15 pages

Document Identifiers

Author Details

Andrew P. Black
  • Portland State University, OR, USA
Kim B. Bruce
  • Pomona College, Claremont, CA, USA
James Noble
  • Creative Research & Programing, Wellington, NZ

Cite AsGet BibTex

Andrew P. Black, Kim B. Bruce, and James Noble. The Importance of Being Eelco. In Eelco Visser Commemorative Symposium (EVCS 2023). Open Access Series in Informatics (OASIcs), Volume 109, pp. 4:1-4:15, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2023)


Programming language designers and implementers are taught that: semantics are more worthwhile than syntax, that programs exist to embody proofs, rather than to get work done, and to value Dijkstra more than Van Wijngaarden. Eelco Visser believed that, while there is value in the items on the left, there is at least as much value in the items on the right. This short paper explores how Eelco Visser embodied these values, and how he encouraged our work on the Grace programming language, supported that work withio Spoofax, and provided a venue for discussion within the WG2.16 Programming Language Design working group.

Subject Classification

ACM Subject Classification
  • Software and its engineering → Syntax
  • Software and its engineering → Semantics
  • Software and its engineering → Object oriented languages
  • Software and its engineering → Translator writing systems and compiler generators
  • Eelco Visser
  • Grace
  • Spoofax
  • syntax


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Eli Barzilay. Racket, June 2010. URL:
  2. Kent Beck. Extreme Programming Explained: Embrace Change. Addison-Wesley, 1st edition, 1999. Google Scholar
  3. Andrew Black, Kim B. Bruce, and James Noble. Designing the next educational programming language. In Proceedings ACM international conference on Object oriented programming systems languages and applications companion, SPLASH '10, pages 201-204, New York, NY, USA, October 2010. ACM. URL:
  4. Andrew P. Black, Kim B. Bruce, Michael Homer, and James Noble. Grace: the absence of (inessential) difficulty. In Onward! '12: Proceedings 12th SIGPLAN Symp. on New Ideas in Programming and Reflections on Software, pages 85-98, New York, NY, 2012. ACM. URL:
  5. Andrew P. Black, Kim B. Bruce, and James Noble. Panel: designing the next educational programming language. In SPLASH/OOPSLA Companion, 2010. Google Scholar
  6. Andrew P. Black, Kim B. Bruce, and James Noble. Grace language specification, version 0.8.2., July 2020.
  7. Gilad Bracha. On the interaction of method lookup and scope with inheritance and nesting. In 3rd ECOOP Workshop on Dynamic Languages and Applications, 2007. Google Scholar
  8. Martin Bravenboer, Karl Trygve Kalleberg, Rob Vermaas, and Eelco Visser. Stratego/XT 0.17: A language and toolset for program transformation. Science of Computer Programming, 72(1-2):52-70, June 2008. Google Scholar
  9. Kim Bruce, Andrew Black, Michael Homer, James Noble, Amy Ruskin, and Richard Yannow. Seeking Grace: a new object-oriented language for novices. In Proceedings 44th SIGCSE Technical Symposium on Computer Science Education, pages 129-134. ACM, 2013. URL:
  10. Kim Bruce, Andrew Black, Michael Homer, James Noble, Amy Ruskin, and Richard Yannow. Seeking Grace: a new object-oriented language for novices. In SIGCSE, 2013. Google Scholar
  11. Centrum Wiskunde & Informatica. Memories of Aad van Wijngaarden (1916-1987), November 2016. URL:
  12. Daniel Chandler. Semiotics: The Basics. Routledge, 2002. Google Scholar
  13. Jiahao Chen. "This guy’s arrogance takes your breath away": Letters between John W Backus and Edsger W Dijkstra, 1979. Blog entry, May 2016. URL: [cited 20 Nov 2022].
  14. Paul Cobley and Litza Jansz. Semiotics for Beginners. Icon Books, Cambridge, England, 1997. Google Scholar
  15. Luís Eduardo de Souza Amorilm and Eelco Visser. Multi-purpose syntax definition with sdf3. In Software Engineering and Formal Methods, 2020. Google Scholar
  16. Luís Eduardo de Souza Amorim, Michael J. Steindorfer, Sebastian Erdweg, and Eelco Visser. Declarative specification of indentation rules: a tooling perspective on parsing and pretty-printing layout-sensitive languages. In SLE, 2018. Google Scholar
  17. Charles Dierbach. Python as a first programming language. J. Comput. Sci. Coll., 29(6):153-154, June 2014. Google Scholar
  18. E.W. Dijkstra. A Discipline of Programming. Prentice-Hall, 1976. Google Scholar
  19. E.W. Dijkstra. A review of the 1977 Turing award lecture by John Backus (EWD692). Edsger W. Dijkstra Archive at Univ. Texas, undated, around November 1978. URL:
  20. E.W. Dijkstra. Trip report E.W.Dijkstra, Mission Viejo, Santa Cruz, Austin, 29 July - 8 September 1979 (EWD714). Edsger W. Dijkstra Archive at Univ. Texas, September 1979. URL:
  21. Jonathan Edwards. Reno 2010 [online]. October 2010. URL: [cited Jan 2023].
  22. Diwaker Gupta. What is a good first programming language? ACM Crossroads, 10(4):7, August 2004. Google Scholar
  23. Michiel Haisma. Grace in Spoofax. Master’s thesis, TUDelft, May 2017. Google Scholar
  24. Michiel Haisma, Vlad Vergu, and Eelco Visser. Grace in Spoofax: Readable specification and implementation in one. In Grace workshop at ECOOP, July 2016. URL:
  25. Michiel Haisma, Vlad Vergu, and Eelco Visser. Spoofax-based implementation of the Grace language, February 2017. URL:
  26. Michael Homer. Graceful Language Features and Interfaces. PhD thesis, Victoria University of Wellington, 2014. Google Scholar
  27. Michael Homer, Timothy Jones, James Noble, Kim B Bruce, and Andrew P Black. Graceful dialects. In Richard Jones, editor, ECOOP, volume 8586 of LNCS, pages 131-156. Springer, 2014. Google Scholar
  28. Atsushi Igarashi, Benjamin Pierce, and Philip Wadler. Featherweight Java: a minimal core calculus for Java and GJ. TOPLAS, 23(3):396-450, 2001. URL:
  29. Poul-Henning Kamp. Sir, please step away from the ASR-33! to move forward with programming languages we need to break free from the tyranny of ASCII. Queue, 8(10):40-42, October 2010. Google Scholar
  30. Lennart C.L. Kats and Eelco Visser. The Spoofax language workbench: Rules for declarative specification of languages and IDEs. In Proc. ACM Int. Conf. Object Oriented Programming Systems Languages and Applications, OOPSLA '10, pages 444-463, New York, NY, USA, 2010. ACM. URL:
  31. Laserfiche contributor. How your first programming language warps your brain [online]. Undated. URL:
  32. Ole Lehrmann Madsen, Birger Møller-Pedersen, and Kristen Nygaard. Object-Oriented Programming in the BETA Programming Language. Addison-Wesley, 1993. Google Scholar
  33. C. H. Lindsey. A history of Algol 68. In History of Programming Languages - II, pages 27-96. Association for Computing Machinery, New York, NY, USA, 1996. URL:
  34. Todd Millstein and Craig Chambers. Modular statically typed multimethods. In ECOOP Proceedings, 1999. Google Scholar
  35. Pierre Néron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. A theory of name resolution. In ESOP, pages 205-231, 2015. Google Scholar
  36. James Noble, Andrew P. Black, Kim B. Bruce, Michael Homer, and Timothy Jones. Grace’s inheritance. Journal of Object Technology, 16(2):2:1-35, April 2017. Google Scholar
  37. James Noble, Michael Homer, Kim B. Bruce, and Andrew P. Black. Designing Grace: Can an introductory programming language support the teaching of software engineering. In IEEE Conference on Software Engineering Education and Training (CSEE&T), 2013. URL:
  38. Jack Rosenberger. Grace: A manifesto for a new educational object-oriented programming language. Blog@CACM, October 2010. Retrieved Jan 2023. URL:
  39. Simon, Raina Mason, Tom Crick, James H. Davenport, and Ellen Murphy. Language choice in introductory programming courses at Australasian and UK universities. In Proc. 49th ACM Technical Symposium on Computer Science Education, SIGCSE '18, pages 852-857, 2018. Google Scholar
  40. Michel Sintzoff. Existence of a Van Wijngaarden syntax for every recursively enumerable set. Annales de la Société scientifique de Bruxelles, Série 2, 81:115-118, 1967. Google Scholar
  41. TIOBE Index for June 2022., 2022.
  42. G.B. Trudeau. Yuge!: 30 Years of Doonesbury on Trump. Andrews McMeel, 2016. Google Scholar
  43. Hendrik van Antwerpen, Pierre Néron, Andrew P. Tolmach, Eelco Visser, and Guido Wachsmuth. A constraint language for static semantic analysis based on scope graphs. In PEPM, pages 49-60, 2016. Google Scholar
  44. A. van Wijngaarden. Orthogonal design and description of a formal language. Rekenafdeling: MR. Stichting Mathematisch Centrum, 1965. MR 76. URL:
  45. Vlad Vergu, Michiel Haisma, and Eelco Visser. The semantics of name resolution in Grace. In DLS, pages 63-74, 2017. Google Scholar
  46. Vlad A. Vergu, Pierre Néron, and Eelco Visser. DynSem: A DSL for dynamic semantics specification. In 26th Int. Conf. Rewriting Techniques and Applications (RTA '15), pages 365-378, June-July 2015. Google Scholar
  47. Eelco Visser. A family of syntax definition formalisms. Technical Report P9706, Progr. Research Group, University of Amsterdam, July 1997. URL:
  48. Eelco Visser. Polymorphic syntax definition. Theoretical Computer Science, 199(1-2):57-86, 1998. URL:
  49. Eelco Visser. A brief history of the Spoofax language workbench [online]. February 2021. URL: [cited January 2023].
  50. Richard L. Wexelblat. The consequences of one’s first programming language. In SIGSMALL, pages 52-55, 1980. URL:
  51. Niklaus Wirth. What can we do about the unnecessary diversity of notation for syntactic definitions? CACM, 20(11):822-823, 1977. Google Scholar
  52. A.K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115(1):38-94, November 1994. Google Scholar