Foo, Bar, Baz…: The Metasyntactic Variable and the Programming Language Hierarchy


This article argues that the English-language nonsense words “foo,” “bar,” “baz,” and others in a more or less standardized sequence of so-called metasyntactic variables commonly used in computer programming ought to be understood as meta-abstractive, re-representing a linguistically derived code’s abstraction of language and the abstraction of the programming language hierarchy itself, making it legible in a manner that rewards culturally oriented study: for example, of programming as a culture and of cultures of software development or engineering.

This is a preview of subscription content, access via your institution.


  1. 1.

    See Russell (2014), p. 168–169; Braman (2011), p. 296–298; Abbate (2000), p. 73–74.

  2. 2.

    DEL stood for Decode-Encode Language, according to Crocker the first version of a host protocol language. See Reynolds and Postel (1987), p. 2.

  3. 3.

    See Abbate (2000), p. 74 and Reynolds and Postel (1987), p. 3.

  4. 4.

    See Reynolds and Postel (1987), p. 7.

  5. 5.

    For the most recent version of The Jargon File, see Raymond (2004b).

  6. 6.

    See, for example, “Mother of Five” (1937), The Tech (1938a), and The Tech (1938b) — all examples provided in Tim 2011.

  7. 7.

    See, for example, Holman (1938).

  8. 8.

    See Time (1945).

  9. 9.

    On “snafu” and “fubar,” see Elkin (1946), Oxford Essential Dictionary of the US Military (2002), Burns and Novick (2007), Blackmore (2009), and Oxford English Dictionary Online, (2016).

  10. 10.

    See Samson (1959).

  11. 11.

    On the language metaphor in early computing, see Nofre et al. (2014). In practice, programming language specifications can vary widely, and in some cases a standardization document, reference document, or reference implementation serves in place of a specification. For examples representing the most widely used languages today, see Gosling et al. (2019), ISO/IEC 9899:2018 Information Technology, Programming Languages, C (2018), ISO/IEC 14882:2017 Programming Languages, C++ (2017), Standard ECMA-262: ECMAScript® 2019 Language Specification, 10th Edition (2019), and The Python Language Reference (2019).

  12. 12.

    See, for example, Kernighan (1974), McConnell (1993), and Goodliffe (2007).

  13. 13.

    The latter name reflects the complexity of graphical user interface (GUI) application components written in a programming language that strictly enforces an object-oriented programming style, such as Java. See, for example, Chartier (2004), Grouchnikov (2007), and Ynda-Hummel (2013).

  14. 14.

    See, for example, Berkeley and Bobrow (1964), Hart and Levin (1964), and Samson (1966).

  15. 15.

    See Sebesta (2010), p. 208, 211.

  16. 16.

    See Sebesta (2010), p. 209-210.

  17. 17.

    See Watson (2005), p. 142–152.

  18. 18.

    See Wentworth and Flexner (1960), Wentworth and Flexner (1975), Chapman and Wentworth (1986), and Chapman et al. (1995).

  19. 19.

    See Backus (1959). For Davis and Putnam’s use of “syntactic variable” see Davis and Putnam (1960). The phrase “metasyntactic classes” and “metasyntactic formulae” appear in ALGOL Bulletin (1961) and Knuth and Merner (1961), both in discussing the Algol 60 specification. For a catalog of other early examples of these and similar usages, see Bron (2017).

  20. 20.

    See, for example, Hewitt et al. (1973), Nicholls (1975), and Galley and Pfister (1979).

  21. 21.

    See Sachs (1976).

  22. 22.

    See Sachs (1976).

  23. 23.

    See Canvas, MediaWiki, Plone Documentation, Drupal API, Amazon Web Services, and GitHub Developer.

  24. 24.

    See, for example, Knuth (1997).

  25. 25.

    For another relevant discussion in this form, see Copeland (2010). For another example of a complaint, see Reisner (2012).

  26. 26.

    See Kernighan (1974), McConnell (1993), and Goodliffe (2007), as cited previously.

  27. 27.

    The classification of programming languages includes an imagined fourth and fifth generations; see Martin (1982).


  1. Abbate, J. (2000). Inventing the Internet. Cambridge, MA: MIT Press.

    Google Scholar 

  2. Abebe, S. L., Haiduc, S., Tonella P., et al. (2011). The Effect of Lexicon Bad Smells on concept location in source code. In IEEE 11th International Working Conference on Source Code Analysis and Manipulation, 125–134.

  3. Backus, J. W. (1959). The syntax and semantics of the proposed international algebraic language of the Zurich ACM-GAMM Conference. In In Proceedings of the International Conference on Information Processing, UNESCO (pp. 125–132).

    Google Scholar 

  4. Berkeley, E. C. and Bobrow, D.G., eds. (1964). The programming language LISP: its operation and applications. Information International.

  5. Blackmore, D. S. T. (2009). Fubar. The seafaring dictionary: terms, idioms and legends of the past and present. Jefferson, N.C: McFarland & Co.

  6. Braman, S. (2011). The framing years: policy fundamentals in the Internet design process, 1969–1979. The Information Society, 27(5), 295–310.

    Article  Google Scholar 

  7. Bron, D. (2017). What is the history of the term “metasyntactic variable”? Stack Exchange: English Language and Usage.

    Google Scholar 

  8. Burns, K., & Novick, L. (2007). FUBAR. The War: Public Broadcasting Service.

    Google Scholar 

  9. Canvas. Welcome to the Canvas LMS API Documentation.

  10. Carpenter, B. E., & Partridge, C. (2010). Internet requests for comments (RFCs) as scholarly publications. ACM SIGCOMM Computer Communication Review, 40(1), 31–33.

    Article  Google Scholar 

  11. Chapman, R. L., & Wentworth, H. (1986). New dictionary of American slang. New York: Harper & Row.

    Google Scholar 

  12. Chapman, R. L., Kipfer, B. A., & Wentworth, H. (1995). Dictionary of American slang (3rd ed.). New York: HarperCollins.

    Google Scholar 

  13. Chartier, R. (2004). Longest & shortest types in .NET. Contemplation.

  14. Copeland, J. (2010). Stop using Foo Bar! Ruby Forum: Ruby on Rails.

    Google Scholar 

  15. Cormen, T. H., Leiserson, C. E., Rivest, R. L., et al. (2009). Introduction to algorithms (3rd ed.). Cambridge, MA: MIT Press.

    Google Scholar 

  16. Davis, M., & Putnam, H. (1960). A computing procedure for quantification theory. Journal of the ACM, 7(3), 201–215.

    Article  Google Scholar 

  17. Eastlake, D., Manros, C. and Raymond, E. (2001). Etymology of "Foo." Request for Comments (RFC) 3092.

  18. Elkin, F. (1946). The soldier’s language. American Journal of Sociology, 51(5), 414–422.

    Article  Google Scholar 

  19. Everett, J. (1996). Foobar. alt.folklore.computers .

  20. Galley, S. W., & Pfister, G. (1979). The MDL programming language. Massachusetts Institute of Technology: Laboratory for Computer Science.

    Google Scholar 

  21. Goodliffe, P. (2007). Code Craft: The practice of writing excellent code. San Francisco: No Starch Press.

    Google Scholar 

  22. Gosling, J., Joy, B., Steele, G., Bracha, G., Buckley, A., Smith, D., 2019. The Java® Language Specification: Java SE 12 Edition.

    Google Scholar 

  23. Grouchnikov, K. (2007). And the longest JRE class name is…. Pushing Pixels.

  24. Hart, T. P. and Levin, M.I. (1964). LISP Exercises.

    Google Scholar 

  25. Hewitt, C., Bishop, P. and Steiger, R. (1973). A universal modular ACTOR formalism for artificial intelligence. In Proceedings of the Third International Joint Conference on Artificial Intelligence, 235–245.

  26. Holman, B. (1938). Smokey Stover and the Fire Chief of Foo. Racine, WI: Whitman Publishing Co..

    Google Scholar 

  27. ISO/IEC 9899:2018 Information technology — Programming Languages — C. 2018.

  28. ISO/IEC 14882:2017 Programming languages — C++. 2017.

  29. Kernighan, B. W. (1974). The elements of programming style (First ed.). New York: McGraw-Hill.

  30. Knuth, D. E. (1997). The Art of Computer Programming, Vol. 1: Fundamental Algorithms (3rd ed.). Reading, MA: Addison-Wesley.

    Google Scholar 

  31. Knuth, D. E., & Merner, J. N. (1961). Algol 60 Confidential. Communications of the ACM, 4(6), 268–272.

    Article  Google Scholar 

  32. Martin, J. (1982). Application development without programmers. Englewood Cliffs, N.J: Prentice-Hall.

  33. McConnell, S. (1993). Code complete: a practical handbook of software construction. Redmond, WA: Microsoft Press.

    Google Scholar 

  34. MediaWiki. MediaWiki API.

  35. Mother of Five. (1937). Letter to the Editor. Massachusetts Institute of Technology: The Tech.

    Google Scholar 

  36. Nicholls, J. E. (1975). The structure and design of programming languages. Reading, MA: Addison-Wesley.

    Google Scholar 

  37. Nofre, D., Priestley, M., & Alberts, G. (2014). When technology became language: the origins of the linguistic conception of computer programming, 1950–1960. Technology and Culture, 55(1), 40–75.

    Article  Google Scholar 

  38. Oxford English Dictionary Online. (2016). Fubar, adj. Oxford University Press.

  39. Oxford Essential Dictionary of the U.S. Military. (2002). Fubar. Oxford University Press.

  40. Pound, L. (1924). Notes on the vernacular. The American Mercury, 233–237.

  41. The Python Language Reference. 2019.

  42. Raymond, E. S. (2004a). Metasyntactic variable. The Jargon File.

    Google Scholar 

  43. Raymond, E. S. (2004b). The Jargon File, version 4.4.8.

    Google Scholar 

  44. Reddit (2014). "Foo", "Bar" — Does this actually help anyone — Ever?

  45. Reisner, A. (2012). Eff You Foo Bar. Alex Reisner.

    Google Scholar 

  46. Reynolds, J., & Postel, J. (1987). The Request for Comments Reference Guide. Request for Comments (RFC), 1000.

  47. Russell, A. L. (2014). Open standards and the digital age: history, ideology, and networks. Cambridge: Cambridge University Press.

    Book  Google Scholar 

  48. Sachs, J. (1976). Some comments on comments. ACM SIGDOC Asterisk Journal of Computer Documentation, 3(7), 7–14.

    Article  Google Scholar 

  49. Samson, P. (1966). PDP-6 LISP.

    Google Scholar 

  50. Samson, P. R. (1959). Foo. Tech Model Railroad Club Dictionary.

    Google Scholar 

  51. Sebesta, R. W. (2010). Concepts of programming languages (9th ed.). Boston: Addison-Wesley.

    Google Scholar 

  52. Standard ECMA-262: ECMAScript® 2019 Language Specification, 10th Edition, 2019.

  53. The Tech (1938a). On Foo-ism. Massachusetts Institute of Technology.

    Google Scholar 

  54. The Tech (1938b). Temperance Poll Shows 87 Percent of Voters Imbibe. Massachusetts Institute of Technology.

    Google Scholar 

  55. Tim. (2011). What does "foo" mean? Stack Exchange: English Language and Usage.

    Google Scholar 

  56. Time (1945). Science: Foo-Fighter. Time 45(3), p. 72.

  57. Watson, I. (2005). Cognitive design: creating the sets of categories and labels that structure our shared experience. Department of Sociology: Rutgers University.

    Google Scholar 

  58. Wentworth, H., & Flexner, S. B. (Eds.). (1960). Dictionary of American slang. New York: Thomas Y. Crowell.

    Google Scholar 

  59. Wentworth, H., & Flexner, S. B. (1975). Dictionary of American slang. 2d (supplemented ed.). New York: Thomas Y. Crowell.

    Google Scholar 

  60. Ynda-Hummel, I. (2013). What is the longest method name you’ve ever seen? Quora.

    Google Scholar 

Download references

Author information



Corresponding author

Correspondence to Brian Lennon.

Additional information

Publisher’s Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Reprints and Permissions

About this article

Verify currency and authenticity via CrossMark

Cite this article

Lennon, B. Foo, Bar, Baz…: The Metasyntactic Variable and the Programming Language Hierarchy. Philos. Technol. 34, 13–32 (2021).

Download citation


  • Foo
  • Bar
  • Metasyntactic variable
  • Programming language
  • Request for Comments (RFC)