Skip to main content
Log in

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

  • Research Article
  • Published:
Philosophy & Technology Aims and scope Submit manuscript

Abstract

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, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

Notes

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

  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. See Abbate (2000), p. 74 and Reynolds and Postel (1987), p. 3.

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

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

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

  7. See, for example, Holman (1938).

  8. See Time (1945).

  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. See Samson (1959).

  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. See, for example, Kernighan (1974), McConnell (1993), and Goodliffe (2007).

  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. See, for example, Berkeley and Bobrow (1964), Hart and Levin (1964), and Samson (1966).

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

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

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

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

  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. See, for example, Hewitt et al. (1973), Nicholls (1975), and Galley and Pfister (1979).

  21. See Sachs (1976).

  22. See Sachs (1976).

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

  24. See, for example, Knuth (1997).

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

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

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

References

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

    Google Scholar 

  • 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.

  • 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 

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

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

  • 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 

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

    Google Scholar 

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

    Google Scholar 

  • Canvas. Welcome to the Canvas LMS API Documentation.

  • 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 

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

    Google Scholar 

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

    Google Scholar 

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

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

    Google Scholar 

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

    Google Scholar 

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

    Article  Google Scholar 

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

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

    Article  Google Scholar 

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

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

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

    Google Scholar 

  • 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.

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

    Google Scholar 

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

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

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

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

    Google Scholar 

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

    Article  Google Scholar 

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

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

    Google Scholar 

  • MediaWiki. MediaWiki API.

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

    Google Scholar 

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

    Google Scholar 

  • 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 

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

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

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

  • The Python Language Reference. 2019.

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

    Google Scholar 

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

    Google Scholar 

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

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

    Google Scholar 

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

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

    Book  Google Scholar 

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

    Article  Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

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

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

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

Check for updates. 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). https://doi.org/10.1007/s13347-019-00387-2

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s13347-019-00387-2

Keywords

Navigation