Author’s postprint version, preceding journal copy editing but otherwise identical to publisher’s PDF.
2016 was an inconspicuously transitional year for the information space once commonly referred to as The World Wide Web. Those attentive to linguistic usage will recall that the 2016 edition of The Associated Press Stylebook and Briefing on Media Law released in June recommended that the words “internet” and “web” no longer be written with initial capital letters,1 in a sign that the propriety marked by their referents’ novelty had finally settled, or worn off. For those more attuned to matters of technical infrastructure, what may come to mind instead is the announcement by Oracle Corporation that its Java web browser plugin would be deprecated in the forthcoming ninth version of its Java Development Kit (JDK), a platform for writing and packaging software applications in the Java programming language.2 Taking these two real, if lesser milestones together, it seems safe to say that for anyone who remembers the original promise made for Java applets as a common WWW technology, at their moment of emergence in the mid-1990s, this was a chapter of recent technological and cultural history quietly coming to an end.3
To be sure, Oracle’s hand had been forced by Microsoft, Google and Apple, who had either reduced Java plugin support in their browser products or removed it entirely. And yet embedded Java applets had long since become a legacy technology, still useful for some computationally intensive graphical visualization tasks (disproportionately in scientific applications), but no longer in wide use outside that domain. Whether or not they are old enough to remember the role originally imagined for Java in the browser, in particular, most of those who design web sites and program web applications for a living today would be unlikely to regret their eclipse. Even before the emergence of personal data security as a substantive public issue in 2012, Java applets presented grave, often intractable security risks that web developers had had to learn how to manage, or ignore. A more general reason for the irrelevance of Java browser applets by 2016 was a historical one, linked to changes in the profile of the Java programming language and Java programmers in the software development industry as a whole. When Fredrick P. Brooks, Jr. chose for the seventh chapter of The Mythical Man-Month: Essays on Software Engineering (1975) the title “Why Did the Tower of Babel Fail?,” he was reflecting on the biblical story of Babel as a fable of engineering (the hubristic or merely presumptuous construction of a tower tall enough to reach heaven), rather than a fable of language (divine punishment imposed in the form of linguistic difference and permanently impaired communication).4 Nevertheless, The Mythical Man-Month, the first widely read and still the most celebrated reflection on managing large software projects, was also an informal study of communication, not excluding the metaphorized communication that a software programmer struggles to achieve with a machine.
The present essay is an essay about the negotiation of technical expertise, specifically the technical expertise involved in software programming, and in particular that involved in programming web sites and applications — that is, what is today called “web development.” I take my bearings from the present historical moment, understood as an interval of continued economic recession (or if one insists, “uneven recovery”) shaped by both economic and political investment in “coding” instruction as job retraining for unemployed and underemployed U.S. blue- and white-collar workers alike. In recent years sociologically oriented cultural studies scholars like Adrian Mackenzie have produced valuable work on cultures of software development, work that is laudable for being simultaneously technically informed and socially focused.5 While it has been receptive to such research in so-called software studies, scholarship in humanities disciplines has not displayed a proportionate interest in the specifically social and cultural dimensions of the specifically linguistic history of computing, and this is the case especially where individual programming languages and their development and usage cultures are concerned.6 The broad exception is, of course, the historiography of computing, and science and technology studies more broadly. But even here, Mark Priestley is surely right to suggest that early, purely technical histories of programming languages have been followed by socially attentive histories of software as a general object and domain, leaving individual languages behind as objects of potentially equally both technically and socially focused study.7
Granting that no duplication of the early, narrow technical histories is necessary — they were meticulous, if unsurprisingly disproportionately anecdotal in character8 — how can we describe the humanities research space separating an early historiography of programming languages that is as old as the Fortran, Lisp, Algol, and Cobol languages themselves (which originates, that is to say, in the late 1950s), and recent social histories of the software concept as Martin Campbell-Kelly’s From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry (2004)?9 A clue is to be found, I would suggest, in an essay by William Paulson titled “For a Cosmopolitical Philology: Lessons from Science Studies,”10 in so far as in that essay, published in 2001, Paulson suggested the value of bringing science and technology studies (STS) scholarship into contact with an older literary humanist tradition of philology: a tradition whose methodologies were globally comparative and multilingual, whose mode was the study of texts in multiple languages (which required intensive study of the languages themselves), and which was rooted in a specific Western intellectual-historical tradition, the tradition of secular or historical humanism. If we set aside this latter tradition (one that STS scholars would surely understand themselves as sharing with “philologists,” that is, with language and literature scholars), philology’s characteristic mode of focus, grounded as it is in the mandates of linguistic specificity, even incommensurability, cannot be described as a great strength or even necessarily a normal characteristic of scholarship in STS.
From a position close to Paulson’s own, then, one might invite software studies and so-called critical code studies, as well as STS itself, to establish an as-yet imagined contact with philology. What, we might ask, would a philological study — that is, a minimally both technically and socially oriented historiography — of a specific computer programming language look like? For an example of how this question might be posed within the disciplinary context of the information sciences, rather than within that of the humanities (as I shall do here), we can consult recent work like Andrew J. Ko’s “What Is a Programming Language, Really?” “In computing,” Ko remarks, “we usually take a technical view of programming languages (PL), defining them as formal means of specifying a computer behavior. This view shapes much of the research that we do on PL, determining the questions we ask about them, the improvements we make to them, and how we teach people to use them. But to many people, PL are not purely technical things, but socio-technical things.”11 Still, essays like Ko’s are quite remarkably few and far between, in the domain of the technical sciences as much as in the social sciences and the humanities — and often, as in this particular case, perhaps unavoidably perfunctory. Regardless of how we choose to explain it, Ko’s conclusion in 2016 that “[o]ther agendas, particular those that probe the human, social, societal, and ethical dimensions of PL, are hardly explored at all”12 is certainly warranted.13
Efforts to make programming accessible to non-professionals did not, as one might expect, lag the effort to make programming more convenient for professionals; rather, they were coterminous and developed in parallel, not without significant overlap. At Dartmouth College, John Kemeny had devised DARSIMCO (DARtmouth SIMplified COde), “Dartmouth’s first crack at a simple computer language,”23 a year before the appearance in 1957 of FORTRAN, the first widely adopted and lasting example of a higher-level or “third generation” language.24 “Dartmouth students,” Thomas E. Kurtz recalled in 1978, “are interested mainly in subjects outside the sciences,” and most of the future “decision makers of business and government” among them were not science students.25 The rationale for Dartmouth BASIC, or “Beginner’s All-Purpose Symbolic Instruction Code,” was to provide such students with experience in writing programs (rather than merely learning about computer use) without having to understand operation codes “or even FORTRAN or ALGOL” (the latter another higher-level language developed in the 1950s) which Kurtz and his colleagues considered “clearly out of the question. The majority would balk at the seemingly pointless detail.”26 But the growth of Dartmouth BASIC into an entire family or class of languages represented its dissemination not only as an instructional language, but in some lines of development (such as that which produced Microsoft’s Visual Basic) as “a production programming language for professionals” as well.27
Today, terminological usage more or less clearly distinguishes “scripting” languages from “system programming” languages. System programming languages like C and C++ were designed to abstract away much of the detail of assembly-language programming (that is, programming in operation codes) while still leaving the programmer facilities for manually allocating and deallocating memory and thus staying “close to the metal,” as programmers like to say, while enjoying the benefits of higher-level abstraction where that was preferred (for example, in syntax for iteration, branching and other control structures, function calls, and creating and managing collections of items of data). Managing memory efficiently involves distinguishing clearly among different data types (primarily, between mathematical and textual data types) as one makes use of them, so that no more memory than is needed is allocated for storing an item of data, and compilers for system programming languages typically enforce such discipline in the programmer — for example, by refusing to compile a working executable otherwise. Scripting languages, by contrast, abstract away and automate both data typing and memory allocation and deallocation, for the convenience of the programmer. This is partly because they they can take for granted the presence of an underlying system programming language and its libraries, for whose components they serve as a kind of adhesive or connective tissue, and in which they themselves are implemented (that is, the interpreter that provides a scripting language with its execution environment is itself a system-level language program).
Since the 1990s, however, various factors including the accelerating sophistication of hardware and innovations in programming language design have eroded some difference in the performance of scripting languages relative to system programming languages, at least in specific environments and for specific applications, and significant gains have arguably been made in some measures of programmer productivity. The economy of expression made possible once memory allocation and data typing is abstracted away can be fairly dramatic. If code in a system programming language like C is three to six times shorter, in countable individual instructions, than its equivalent in assembly language code,28 the same instructions in a scripting language like Python might be half as long as their equivalent in C, C++, or Java syntax, and depending on the task possibly much shorter than that.
The opening of securities markets to a new class of investor whose expertise was improvised, at best, was not the only significant economic event of 1995 and the years following it. It was in February 1995 that the 233-year-old Barings Bank, one of the world’s oldest surviving financial institutions, collapsed due to losses incurred by a single Singapore-based derivatives trader who relied on the global distribution of Barings’s operations help him evade scrutiny of his activities. Billionaire business publishing executive Steve Forbes launched his campaign for the 1996 Republican presidential nomination, refusing matching funds from the U.S. Federal Election Commission to avoid any obstruction in expending his personal wealth, a decision that would change U.S. national electoral campaign financing for good by removing the relative financial restraint imposed by FEC funds matching. Also in 1995, a new, fully formalized international institution, the World Trade Organization (WTO), replaced the treaty structure known as the General Agreement on Tariffs and Trade (GATT) that dated to the end of the Second World War — an event that might be understood as economically stabilizing, were it not for the prompt eruption of disputes between developed and developing-economy members (the as yet unresolved “Singapore issues”) and the attention of anti-globalization activists, which would culminate in violent street protests at the 1999 Seattle conference.
1995 was not an uneventful year politically, either. United States national political volatility increased as Speaker of the U.S. House of Representatives Newt Gingrich, capitalizing on Republican success in the 1994 midterm elections, finished crafting the insurgent conservative legislation known as the Contract with America and forced the first of a series of U.S. federal government closures in a dispute with President Bill Clinton. The nearly two-decade long bombing campaign of Theodore John “Ted” Kaczynski, a former University of California, Berkeley mathematician who had simultaneously renounced modern technology and taught himself to construct primitive explosives (and who had targeted academic scientists and computer stores in particular) culminated with a series of explanatory letters and the publication of the so-called “Unabomber Manifesto” by The New York Times and The Washington Post. And Timothy McVeigh and Terry Nichols destroyed the Alfred P. Murrah Federal Building in Oklahoma City with a truck bomb in the United States’ most significant act of domestic terrorism then and since.
[W]hat people wanted back then (and still want) is the ability to go one step beyond HTML and add a little bit of code that makes a web page dynamic — that makes things move, respond to user input, or change color; that makes new windows pop up; or that raises a dialog box to ask a question, with an answer necessary to proceed — things that HTML cannot express. That’s really where you need a programming language, but something simpler than Java or C++. Content creation should not be recondite. It should not be this bizarre arcana that only experts and gold-plated computer science gurus can do.37
I have already mentioned the first edition of ECMA-262 (ISO/IEC 16262), Ecma International’s specification for ECMAScript, which described ECMAScript as a scripting language “intended for use by both professional and non-professional programmers.”40 There exist seven published editions to date (ECMAScript 1, 2, 3, 5, 5.1, 6, and 7, excluding ECMAScript 4, which was abandoned), and the first edition’s emphasis on design for nonprofessional users was retained all the way through the fifth edition published in 2009. The third edition published in 1999 included minor changes to the initial paragraphs of the section titled “Overview” (section 4), changing “A scripting language is intended for use by both professional and non-professional programmers, and therefore there may be a number of informalities built into the language” to “A scripting language is intended for use by both professional and nonprofessional programmers. To accommodate non-professional programmers, some aspects of the language may be somewhat less strict.”41 The fifth edition published in 2009 deleted the latter sentence, leaving only “A scripting language is intended for use by both professional and nonprofessional programmers.”42
ECMAScript usage has moved beyond simple scripting and it is now used for the full spectrum of programming tasks in many different environments and scales. As the usage of ECMAScript has expanded, so has the features and facilities it provides. ECMAScript is now a fully featured general propose programming language.44
In 2014 Brendan Eich’s resignation as CEO of the Mozilla Corporation, only nine days after taking the position, was described by a writer for The New Yorker as “the least surprising C.E.O. departure ever,” given that Silicon Valley was “a region of the business world where social liberalism is close to a universal ideology.”53 (Eich’s having donated to an anti-marriage equality campaign supporting California’s ballot Proposition 8 in 2008 was a fact known beforehand, which became newly controversial upon Eich’s appointment.) It might be more accurate to say that in a broader context, the episode reflects the fundamental confusion of the specifically cyberlibertarian politics of Silicon Valley investment and management culture, which borrows ideas freely, but mostly unreflectively and unsynthetically from both statist left and anti-statist right-wing political platforms, in ways that seem to reflect the startup culture’s ambivalence about its own expertise. Though a great deal of work remains to be done to articulate the meaning such contexts lend to topics such as my own, in this essay, such social dynamics cannot be delinked from the technical history of the artifacts designed and produced in contexts determined by them — even, or perhaps especially, such an artifact as a programming language.
Alba, Davey. “The AP Finally Realizes It’s 2016, Will Let Us Stop Capitalizing ‘Internet’.” Wired, April 2016. http://www.wired.com/2016/04/ap-finally-realizes-2016-will-let-us-stop-capitalizing-internet/.
Ashkenas, Jeremy. “List of Languages That Compile to JS.” GitHub, 2016. https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-JS.
Bergin, Thomas J. “A History of the History of Programming Languages.” Commun. ACM 50, no. 5 (May 2007): 69–74. doi:10.1145/1230819.1230841.
Bergin, Thomas J., and Richard G. Gibson, eds. History of Programming Languages II. New York: ACM Press; Addison-Wesley, 1996.
Britcher, Robert N. The Limits of Software: People, Projects, and Perspectives. Reading, MA: Addison-Wesley, 1999.
Brooks, Frederick P., Jr. The Mythical Man-Month: Essays on Software Engineering. Anniversary edition. Reading, MA: Addison-Wesley, 1995.
Campbell-Kelly, Martin. From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry. History of Computing. Cambridge, Mass.: MIT Press, 2004.
Cassel, David. “Evolve or Die: Java, C++ Confront Newcomers on the TIOBE Index.” The New Stack, March 2016. https://thenewstack.io/evolve-die-popular-programming-languages-confront-newcomers-tiobe-index/.
Clark, Jim. Netscape Time: The Making of the Billion-Dollar Start-up That Took on Microsoft. New York: St. Martin’s Press, 1999.
“Computing Conversations with Brendan Eich,” January 2012. https://www.youtube.com/watch?v=IPxQ9kEaF8c.
Cusumano, Michael A., and David B. Yoffie. Competing on Internet Time: Lessons from Netscape and Its Battle with Microsoft. New York, NY: Free Press, 1998.
Friedman, Daniel P., and Matthias Felleisen. The Little Schemer. 4th ed. Cambridge Mass: MIT Press, 1996.
Hamilton, Walter. “Hooked on Speed: How Day Trading Works.” The Los Angeles Times, February 1999. http://articles.latimes.com/1999/feb/21/business/fi-10174.
Knuth, Donald E., and Luis Trabb Pardo. “The Early Development of Programming Languages.” Stanford, CA, August 1976.
Ko, Andrew J. “What Is a Programming Language, Really?” 32–33. ACM Press, 2016. doi:10.1145/3001878.3001880.
Kurtz, Thomas E. “BASIC Session.” In History of Programming Languages, edited by Richard L. Wexelblat, 515–50. New York: Academic Press, 1981.
Landow, George P. Hypertext: The Convergence of Contemporary Critical Theory and Technology. Parallax. Baltimore: Johns Hopkins University Press, 1992.
Lee, Alison, and Andreas Girgensohn. “Developing Collaborative Applications Using the World Wide Web "Shell",” 144. ACM Press, 1997. doi:10.1145/1120212.1120314.
Mackenzie, Adrian. Cutting Code: Software and Sociality. Digital Formations, v. 30. New York: Peter Lang, 2006.
Marino, Mark C. “Critical Code Studies.” Electronic Book Review, December 2006. http://www.electronicbookreview.com/thread/electropoetics/codology.
Martin, James. Application Development Without Programmers. Englewood Cliffs, N.J: Prentice-Hall, 1982.
McMillan, Robert. “Is Java Losing Its Mojo?” Wired, January 2013. http://www.wired.com/2013/01/java-no-longer-a-favorite/.
Montfort, Nick, Patsy Baudoin, John Bell, Ian Bogost, Jeremy Douglass, Mark C. Marino, Michael Mateas, Casey Reas, Mark Sample, and Noah Vawter. 10 PRINT CHR$(205.5+RND(1));:GOTO 10. Computer software Studies. Cambridge, MA: MIT Press, 2013.
Nofre, David, Mark Priestley, and Gerard Alberts. “When Technology Became Language: The Origins of the Linguistic Conception of Computer Programming, 1950–1960.” Technology and Culture 55, no. 1 (2014): 40–75. doi:10.1353/tech.2014.0031.
Ousterhout, J.K. “Scripting: Higher Level Programming for the 21st Century.” Computer 31, no. 3 (1998): 23–30. doi:10.1109/2.660187.
Paulson, William. “For a Cosmopolitical Philology: Lessons from Science Studies.” SubStance 30, no. 3 (January 2001): 101–19. doi:10.1353/sub.2001.0033.
Priestley, Mark. A Science of Operations: Machines, Logic and the Invention of Programming. History of Computing. New York; London: Springer, 2010.
Quittner, Joshua, and Michelle Slatalla. Speeding the Net: The Inside Story of Netscape and How It Challenged Microsoft. New York: Atlantic Monthly Press, 1998.
Reid, Robert. Architects of the Web: 1,000 Days That Built the Future of Business. New York: John Wiley & Sons, 1997.
Rosenberg, Scott. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software. New York: Three Rivers Press, 2008.
Sammet, Jean E. Programming Languages: History and Fundamentals. Englewood Cliffs, N.J.: Prentice-Hall, 1969.
Simpson, Kyle. Up & Going. First Edition. You Don’t Know JS. Sebastopol, CA: O’Reilly Media, 2015.
Snyder, Bill. “Java Is Becoming the New Cobol.” InfoWorld, December 2007. http://www.infoworld.com/article/2650254/application-development/java-is-becoming-the-new-cobol.html.
Stroustrup, Bjarne. “Bjarne Stroustrup’s FAQ.” Bjarne Stroustrup’s Homepage, February 2016. http://www.stroustrup.com/bs_faq.html.
Surowiecki, James. “How Mozilla Lost Its C.E.O.” The New Yorker, April 2014. http://www.newyorker.com/business/currency/how-mozilla-lost-its-c-e-o.
Ullman, Ellen. Close to the Machine: Technophilia and Its Discontents. New York: Picador / Farrar, Straus,; Giroux, 2012.
Warren, Tom. “Oracle’s Finally Killing Its Terrible Java Browser Plugin.” The Verge, January 2016. http://www.theverge.com/2016/1/28/10858250/oracle-java-plugin-deprecation-jdk-9.
Weinberg, Gerald M. The Psychology of Computer Programming. Silver anniversary edition. New York: Dorset House, 1998.
Wexelblat, Richard L., ed. History of Programming Languages. New York: Academic Press, 1981.
Davey Alba, “The AP Finally Realizes It’s 2016, Will Let Us Stop Capitalizing ‘Internet’,” Wired, April 2016, http://www.wired.com/2016/04/ap-finally-realizes-2016-will-let-us-stop-capitalizing-internet/.↩
Tom Warren, “Oracle’s Finally Killing Its Terrible Java Browser Plugin,” The Verge, January 2016, http://www.theverge.com/2016/1/28/10858250/oracle-java-plugin-deprecation-jdk-9.↩
Some readers may also have thought of the acquisition of Yahoo Inc. by Verizon Communications, announced on July 25, 2016, several months after an initial draft of this essay was completed.↩
See Frederick P. Brooks Jr., The Mythical Man-Month: Essays on Software Engineering, Anniversary edition (Reading, MA: Addison-Wesley, 1995).↩
See Adrian Mackenzie, Cutting Code: Software and Sociality, Digital Formations, v. 30 (New York: Peter Lang, 2006).↩
A partial exception is Nick Montfort et al., 10 PRINT CHR$(205.5+RND(1));:GOTO 10, Computer software Studies (Cambridge, MA: MIT Press, 2013), seven of the eleven main chapters of which focus on the BASIC programming language. Only one of these seven chapters could reasonably be called a study of the BASIC language, however, with the remaining six devoted to explaining very simple command sequences and very brief programs to readers who are assumed to have no knowledge either of BASIC or any other programming language. The book’s eighth main chapter, titled simply “BASIC,” does discuss language design and syntax variation in some detail, but is otherwise given over to reviewing BASIC’s implementation and usage history, again for a reader assumed to lack elementary knowledge of the subject. As of this writing, 10 PRINT CHR$(205.5+RND(1));:GOTO 10 is the only book-length publication to have emerged from “critical code studies,” an undertaking that Mark C. Marino, “Critical Code Studies,” Electronic Book Review, December 2006, http://www.electronicbookreview.com/thread/electropoetics/codology attempted to distinguish from “software studies” more than a decade ago.↩
Mark Priestley, A Science of Operations: Machines, Logic and the Invention of Programming, History of Computing (New York; London: Springer, 2010), 2.↩
See Jean E. Sammet, Programming Languages: History and Fundamentals (Englewood Cliffs, N.J.: Prentice-Hall, 1969), Donald E. Knuth and Luis Trabb Pardo, “The Early Development of Programming Languages” (Stanford, CA, August 1976), Richard L. Wexelblat, ed., History of Programming Languages (New York: Academic Press, 1981), Thomas J. Bergin and Richard G. Gibson, eds., History of Programming Languages II (New York: ACM Press; Addison-Wesley, 1996), Thomas J. Bergin, “A History of the History of Programming Languages,” Commun. ACM 50, no. 5 (May 2007): 69–74, doi:10.1145/1230819.1230841.↩
See Martin Campbell-Kelly, From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry, History of Computing (Cambridge, Mass.: MIT Press, 2004).↩
Ko, “What Is a Programming Language, Really?” 33.↩
The “politico-social history of Algol” promised by R. W. Bemer, “A Politico-Social History of Algol (with a Chronology in the Form of a Log Book),” in Annual Review of Automatic Programming, Annual Review of Automatic Programming 5 (Pergamon, 1969), 151–237, for example, turns out to be a bibliography with abridged extracts from various primary sources (letters, meeting minutes, committee resolutions, and so on), many relating to the famously fractious negotiations of the specification of Algol 60 in particular. It is to that history of conflict to which the term “politico-social” presumably refers; still, this document is entirely descriptive and offers no analysis whatsoever.↩
Designed by Bjarne Stroustrup while working at AT&T in the late 1970s, C++ was originally called “C with Classes,” marking Stroustrup’s intention to “superset” the C language (that is, to remain completely compatible with it) while also improving it. See Bjarne Stroustrup, “Bjarne Stroustrup’s FAQ,” Bjarne Stroustrup’s Homepage, February 2016, http://www.stroustrup.com/bs_faq.html.↩
In response to such claims, Java programmers often point to Java’s leading position in the TIOBE Programming Community Index compiled by the software services provider TIOBE Software BV, or similar rankings aggregators like the PYPL Popularity of Programming Language Index — leaving unmentioned such rankings’ historical “trend” indexes for Java’s position, which are frequently negative. See Robert McMillan, “Is Java Losing Its Mojo?” Wired, January 2013, http://www.wired.com/2013/01/java-no-longer-a-favorite/ and David Cassel, “Evolve or Die: Java, C++ Confront Newcomers on the TIOBE Index,” The New Stack, March 2016, https://thenewstack.io/evolve-die-popular-programming-languages-confront-newcomers-tiobe-index/, both of whom argue that TIOBE data itself shows Java’s position “slipping” and “trending down” (McMillan also quotes Paul Jansen, managing director of TIOBE Software, as stating that “Java is falling down”). In any case, at any point in the history of a programming language past the point of its initial adoption, a language’s reputation — as expressive or otherwise pleasant to use, as adaptable to ongoing hardware evolution, as usable in solving newer computational problems — may diverge from its market share or other measures of usage quite radically, if only because once they are in place, large industrial software infrastructures are kept operating for as long as possible. It is the incongruence of Java’s reputation with its market share, today, that animates non-meaningless if possibly glib comparisons of Java to Cobol, such as that made by Bill Snyder, “Java Is Becoming the New Cobol,” InfoWorld, December 2007, http://www.infoworld.com/article/2650254/application-development/java-is-becoming-the-new-cobol.html. The inclusion in Java version 9 of a REPL (Read-Evaluate-Print-Loop) feature for exploratory programming is a concession to the encroachment on Java’s position of both scripting languages and newer functional programming languages, languages in both categories of which have offered REPL-type features — whose purpose and usage are fundamentally incompatible with Java-style object oriented programming — for many decades. Arguably, the rise of Scala, Clojure, and other languages designed to run on the Java Virtual Machine (JVM) and provide access to Java standard libraries, but otherwise breaking either partly or completely with Java’s imperative syntax and its enforcement of an object-oriented paradigm, marks the endurance of the JVM as a platform but the eclipse of Java as a (paradigmatic) language.↩
The difficulties of larger-scale software production are documented by a management-oriented literature stretching back to the 1970s. The canonical text, mentioned previously, is Frederick P. Brooks, Jr., The Mythical Man-Month: Essays on Software Engineering (1975). See Brooks, The Mythical Man-Month, along with Robert N. Britcher, The Limits of Software: People, Projects, and Perspectives (Reading, MA: Addison-Wesley, 1999), Scott Rosenberg, Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software (New York: Three Rivers Press, 2008), Gerald M. Weinberg, The Psychology of Computer Programming, Silver anniversary edition (New York: Dorset House, 1998), and, for useful counterpoint, Ellen Ullman, Close to the Machine: Technophilia and Its Discontents (New York: Picador / Farrar, Straus,; Giroux, 2012).↩
“ECMAScript: A General Purpose, Cross-Platform Programming Language. Standard Ecma-262, June 1997” (ECMA, June 1997), 1, http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%201st%20edition,%20June%201997.pdf.↩
Thomas E. Kurtz, “BASIC Session,” in History of Programming Languages, ed. Richard L. Wexelblat (New York: Academic Press, 1981), 516.↩
The most widely used term in both professional software development and the discipline of computer science is “higher level language,” a spatial metaphor used to describe abstraction from the “lower” level of hardware operation codes. Academic researchers use the historical metaphor of the generation in a similar, if perhaps also more sensible way: a first generation of purely numerically represented instructions (“machine code”) is followed by a second generation of mnemonic abbreviations (“assembly language”), followed in turn by compiled, hardware-independent algebraic syntaxes and keywords and phrases in the English language (“programming language” as we use the term today). The classification includes a fourth and a fifth generation, which is beyond my purview here. See James Martin, Application Development Without Programmers (Englewood Cliffs, N.J: Prentice-Hall, 1982).↩
Kurtz, “BASIC Session,” 518.↩
Kurtz, “BASIC Session,” 518.↩
Kurtz, “BASIC Session,” 547.↩
On the early history of Netscape, see Robert Reid, Architects of the Web: 1,000 Days That Built the Future of Business (New York: John Wiley & Sons, 1997), Michael A. Cusumano and David B. Yoffie, Competing on Internet Time: Lessons from Netscape and Its Battle with Microsoft (New York, NY: Free Press, 1998), Joshua Quittner and Michelle Slatalla, Speeding the Net: The Inside Story of Netscape and How It Challenged Microsoft (New York: Atlantic Monthly Press, 1998), and Jim Clark, Netscape Time: The Making of the Billion-Dollar Start-up That Took on Microsoft (New York: St. Martin’s Press, 1999).↩
See Walter Hamilton, “Hooked on Speed: How Day Trading Works,” The Los Angeles Times, February 1999, http://articles.latimes.com/1999/feb/21/business/fi-10174.↩
“Computing Conversations with Brendan Eich.”↩
The Little Schemer, 4th ed (Cambridge Mass: MIT Press, 1996).↩
“ECMAScript Language Specification: Standard ECMA-262, 3rd Edition” (ECMA, December 1999), 1, http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262,%203rd%20edition,%20December%201999.pdf.↩
“ECMAScript Language Specification: Standard ECMA-262, 5th Edition” (ECMA, December 2009), 2, http://www.ecma-international.org/publications/files/ECMA-ST-ARCH/ECMA-262%205th%20edition%20December%202009.pdf.↩
“ECMAScript Language Specification.”↩
See David Nofre, Mark Priestley, and Gerard Alberts, “When Technology Became Language: The Origins of the Linguistic Conception of Computer Programming, 1950–1960,” Technology and Culture 55, no. 1 (2014): 40–75, doi:10.1353/tech.2014.0031.↩
Jeremy Ashkenas, “List of Languages That Compile to JS” (GitHub, 2016), https://github.com/jashkenas/coffeescript/wiki/list-of-languages-that-compile-to-JS.↩
“Computing Conversations with Brendan Eich.”↩
See, for example, George P. Landow, Hypertext: The Convergence of Contemporary Critical Theory and Technology, Parallax (Baltimore: Johns Hopkins University Press, 1992).↩
James Surowiecki, “How Mozilla Lost Its C.E.O.” The New Yorker, April 2014, http://www.newyorker.com/business/currency/how-mozilla-lost-its-c-e-o.↩