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.
Similar content being viewed by others
Notes
DEL stood for Decode-Encode Language, according to Crocker the first version of a host protocol language. See Reynolds and Postel (1987), p. 2.
See Reynolds and Postel (1987), p. 7.
For the most recent version of The Jargon File, see Raymond (2004b).
See, for example, Holman (1938).
See Time (1945).
See Samson (1959).
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).
See Sebesta (2010), p. 208, 211.
See Sebesta (2010), p. 209-210.
See Watson (2005), p. 142–152.
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).
See Sachs (1976).
See Sachs (1976).
See Canvas, MediaWiki, Plone Documentation, Drupal API, Amazon Web Services, and GitHub Developer.
See, for example, Knuth (1997).
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.
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).
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.
Bron, D. (2017). What is the history of the term “metasyntactic variable”? Stack Exchange: English Language and Usage.
Burns, K., & Novick, L. (2007). FUBAR. The War: Public Broadcasting Service.
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.
Chapman, R. L., & Wentworth, H. (1986). New dictionary of American slang. New York: Harper & Row.
Chapman, R. L., Kipfer, B. A., & Wentworth, H. (1995). Dictionary of American slang (3rd ed.). New York: HarperCollins.
Chartier, R. (2004). Longest & shortest types in .NET. Contemplation.
Copeland, J. (2010). Stop using Foo Bar! Ruby Forum: Ruby on Rails.
Cormen, T. H., Leiserson, C. E., Rivest, R. L., et al. (2009). Introduction to algorithms (3rd ed.). Cambridge, MA: MIT Press.
Davis, M., & Putnam, H. (1960). A computing procedure for quantification theory. Journal of the ACM, 7(3), 201–215.
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.
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.
Goodliffe, P. (2007). Code Craft: The practice of writing excellent code. San Francisco: No Starch Press.
Gosling, J., Joy, B., Steele, G., Bracha, G., Buckley, A., Smith, D., 2019. The Java® Language Specification: Java SE 12 Edition.
Grouchnikov, K. (2007). And the longest JRE class name is…. Pushing Pixels.
Hart, T. P. and Levin, M.I. (1964). LISP Exercises.
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..
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.
Knuth, D. E., & Merner, J. N. (1961). Algol 60 Confidential. Communications of the ACM, 4(6), 268–272.
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.
MediaWiki. MediaWiki API.
Mother of Five. (1937). Letter to the Editor. Massachusetts Institute of Technology: The Tech.
Nicholls, J. E. (1975). The structure and design of programming languages. Reading, MA: Addison-Wesley.
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.
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.
Raymond, E. S. (2004b). The Jargon File, version 4.4.8.
Reddit (2014). "Foo", "Bar" — Does this actually help anyone — Ever?
Reisner, A. (2012). Eff You Foo Bar. Alex Reisner.
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.
Sachs, J. (1976). Some comments on comments. ACM SIGDOC Asterisk Journal of Computer Documentation, 3(7), 7–14.
Samson, P. (1966). PDP-6 LISP.
Samson, P. R. (1959). Foo. Tech Model Railroad Club Dictionary.
Sebesta, R. W. (2010). Concepts of programming languages (9th ed.). Boston: Addison-Wesley.
Standard ECMA-262: ECMAScript® 2019 Language Specification, 10th Edition, 2019.
The Tech (1938a). On Foo-ism. Massachusetts Institute of Technology.
The Tech (1938b). Temperance Poll Shows 87 Percent of Voters Imbibe. Massachusetts Institute of Technology.
Tim. (2011). What does "foo" mean? Stack Exchange: English Language and Usage.
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.
Wentworth, H., & Flexner, S. B. (Eds.). (1960). Dictionary of American slang. New York: Thomas Y. Crowell.
Wentworth, H., & Flexner, S. B. (1975). Dictionary of American slang. 2d (supplemented ed.). New York: Thomas Y. Crowell.
Ynda-Hummel, I. (2013). What is the longest method name you’ve ever seen? Quora.
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
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
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s13347-019-00387-2