In lieu of an abstract, here is a brief excerpt of the content:

There is no magic or genius to the process of programming, just small components built upon larger structures, and then still larger structures built upon those. Isaac Newton explained that he progressed by standing on the shoulders of giants, but perhaps a more appropriate metaphor for software development is that modern computing rests on the back of a giant turtle, which rests on the back of another turtle, which rests on another turtle. . . . 1 A Summary for Non-Geeks I have come to realize, over the course of many parties and dates, that some people do not like hearing about the details of computer programming . For them, I offer this summary of the important points that are relevant to the law and the economics of software patents. FromEquations toSoftware CHAPTER THREE 24 1. No mythology claims that the earth rests on an infinite pile of turtles. A few Native American stories surmise that North America rests on the back of a giant turtle; and a Hindi myth explains that the earth rests on an elephant, which rests on a turtle. Dr. Seuss’s Yertle the Turtle is about a tyrannical turtle king who commands his turtles to form a tower so that he can survey his kingdom; and there is a joke, often attributed to Stephen Hawking, about a flat-earther who insists that the earth rests on a turtle, and when asked what the turtle is standing on, she exclaims, “It’s turtles all the way down!” 03-4942-2 CH3 10/27/05 3:12 PM Page 24 StateMachinesversusPurpose-BuiltCircuits When the digital processors in dollar-store calculators, digital clocks, and microwave ovens leave the factory, they are set up to do only a few things, which are enabled by burning circuits into the machine’s circuit board. By contrast, the processors of modern computers are designed to do a great variety of things if put into different states—that is, reprogrammed —by the user. In computer science terminology, they are state machines. It is possible to change their state because computers are built to respond in given ways to sequences of coded instructions known as programs. There is little if any gray area between the program changing the state of a computer and the computer itself (the state machine). The state machine is a device that is burnt into place at the factory; its states can be reconfigured at will by the user. AProgramConsistsofNothingbutDataStructuresandFunctions Computer programs are constructed using formal systems of symbols known as programming languages. The coded instructions that make up a program break down into data structures and functions. The data structures are simply a formal means of organizing data. Functions are the verbs of programming languages, and they translate directly into algorithms . A good data structure allows a program to efficiently process information internally and make coherent external records of data for future use. For example, word processor documents are complex data structures that encode all the information needed to assemble those documents and transmit them in the form of a stream of ones and zeros to a hard drive. If another program can understand the data structure, then it can edit or display the document encoded into the file and interoperate with the original word processor. AnyProgramCanBeTranslatedintoVirtuallyAnyProgrammingLanguage Translating from one language to another is trivial, and unlike translating from French to English, say, it can be done exactly.2 That is, programming languages are not equivalent in the colloquial sense of being very similar but in the formal mathematical sense, just as (3  2) and 6 are equivalent. FROM EQUATIONS TO SOFTWARE 25 2. Italicized technical terms are defined in the glossary at the back of this book. 03-4942-2 CH3 10/27/05 3:12 PM Page 25 [18.226.251.68] Project MUSE (2024-04-20 04:12 GMT) AProgramSuchasaWordProcessororSpreadsheetDefinesaLanguage Under the hood, the typical word processor or spreadsheet is nothing but a multitude of functions, each doing a specialized task like calculating the placement of words on a page or of widgets on the screen. Those functions also define a specialized language. Although this book does not cover the graphic design issues connected with user-oriented software, those parts of such a program that fall under patent law can be trivially translated into any traditional programming language. ThereIsNoDistinctionbetweenCodeandMathematics Beyond the fact that most programming languages readily translate into other such languages, they can also be translated into a method of writing pure mathematical functions known as the lambda...

Share