Advertisement

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

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 to check access.

Access options

Buy single article

Instant unlimited access to the full article PDF.

US$ 39.95

Price includes VAT for USA

Subscribe to journal

Immediate online access to all issues from 2019. Subscription will auto renew annually.

US$ 99

This is the net price. Taxes to be calculated in checkout.

Notes

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

References

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

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

  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.

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

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

  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.

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

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

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

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

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

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

  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.

  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.

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

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

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

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

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

  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.

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

  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.

  34. MediaWiki. MediaWiki API.

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

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

  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.

  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.

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

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

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

  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.

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

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

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

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

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

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

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

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

  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.

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

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

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

Download references

Author information

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

Download citation

Keywords

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