The Story of Mel is an archetypical piece of computer programming folklore. Its subject, Melvin Kaye, [1] is an exemplary "Real Programmer" whose subtle techniques fascinate his colleagues.
Ed Nather's The Story of Mel details the extraordinary programming prowess of a former colleague of his, "Mel", at Royal McBee Computer Corporation. [2] [3] Although originally written in prose, Nather's story was modified by someone into a "free verse" form which has become widespread. [4] [5]
Little is known about Mel Kaye, beyond the fact that he was credited with doing the "bulk of the programming" on the 1959 ACT-1 compiler for the Royal McBee LGP-30 computer. [6] [7] In Nather's story, Kaye is portrayed as being prone to avoiding optimizing assemblers in favor of crafting code to take advantage of hardware quirks, for example taking advantage of the rotation of the LGP-30's drum memory to avoid writing delay loops into the code.
The story, as written by Nather, involved Kaye's work on rewriting a blackjack program from the LGP-30 to a newer Royal McBee system, the RPC-4000; company sales executives had requested to modify the program so that they could flip a front panel switch and cause the program to lose (and the user to win). Kaye reluctantly acceded to the request, but to his own delight, he got the test wrong, and the switch would instead cause the program to win every time (and the user to lose).
Subsequent to Kaye's departure, Nather was asked to fix the bug. While examining the code, he was puzzled to discover that it contained what appeared to be an infinite loop, yet control did not remain inside the loop. Eventually he realized that Kaye was using self-modifying code to process elements of an array, and had coded the loop in such a way as to take advantage of an Integer overflow. Adding 1 to the address field of an instruction that referred to address x normally just changed the address to x+1. But when x was already the highest possible address, not only did the address wrap around to 0, but a 1 was carried into the bits from which the opcode would be read—in this case changing the opcode to "jump to" so that the full instruction became "jump to address 0". This impressed Nather so much that, out of respect, he gave up the task and reported that he could not find the bug.
Nather recounted this story from memory, more than 20 years later. Some technical details are known to be incorrect, including the location of an "Index" flag bit in the instruction word; Kaye's use of it presumably gave Nather the vital clue that a coding trick was being used. Nevertheless there are plausible hacks which Kaye might have implemented on the actual RPC-4000 and which are largely in line with Nather's account. [8]
The early computers of IAS machine design had no index register. Using self-modifying code was necessary for array operations. The LGP-30 instruction y 2000
did "replace the contents of the address portion of the word in memory location 2000 with the contents of the address portion of the word in the accumulator" to ease writing self-modifying code. [9]
The essay was originally published in the Usenet news group "net.followup" on May 21, 1983, by utastro!nather (the UUCP email address of Ed Nather at the time). [2] [3]
The Royal McBee computers were developed and manufactured by Librascope, and the documentation written for the blackjack program was written by Mel Kaye of Librascope Inc. The August 1956 edition of The Librazette, the Librascope newsletter, contains a story about training on the LGP-30, and mentions that some Librascope application engineers were transferred to the Royal McBee payroll. Among the engineers named is Mel Kaye. [1]
There is a photograph on the front page of that issue showing that first class of neophyte LGP-30 programmers and the instructors, including Mel Kaye. [10]
In computer programming, assembly language, often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence between the instructions in the language and the architecture's machine code instructions. Assembly language usually has one statement per machine instruction (1:1), but constants, comments, assembler directives, symbolic labels of, e.g., memory locations, registers, and macros are generally also supported.
B is a programming language developed at Bell Labs circa 1969 by Ken Thompson and Dennis Ritchie.
In distributed computing, a remote procedure call (RPC) is when a computer program causes a procedure (subroutine) to execute in a different address space, which is written as if it were a normal (local) procedure call, without the programmer explicitly writing the details for the remote interaction. That is, the programmer writes essentially the same code whether the subroutine is local to the executing program, or remote. This is a form of client–server interaction, typically implemented via a request–response message passing system. In the object-oriented programming paradigm, RPCs are represented by remote method invocation (RMI). The RPC model implies a level of location transparency, namely that calling procedures are largely the same whether they are local or remote, but usually, they are not identical, so local calls can be distinguished from remote calls. Remote calls are usually orders of magnitude slower and less reliable than local calls, so distinguishing them is important.
In computer science, a library is a collection of resources that is leveraged during software development to implement a computer program.
The IBM 650 Magnetic Drum Data-Processing Machine is an early digital computer produced by IBM in the mid-1950s. It was the first mass-produced computer in the world. Almost 2,000 systems were produced, the last in 1962, and it was the first computer to make a meaningful profit. The first one was installed in late 1954 and it was the most popular computer of the 1950s.
Drum memory was a magnetic data storage device invented by Gustav Tauschek in 1932 in Austria. Drums were widely used in the 1950s and into the 1960s as computer memory.
Addressing modes are an aspect of the instruction set architecture in most central processing unit (CPU) designs. The various addressing modes that are defined in a given instruction set architecture define how the machine language instructions in that architecture identify the operand(s) of each instruction. An addressing mode specifies how to calculate the effective memory address of an operand by using information held in registers and/or constants contained within a machine instruction or elsewhere.
A branch, jump or transfer is an instruction in a computer program that can cause a computer to begin executing a different instruction sequence and thus deviate from its default behavior of executing instructions in order. Branch may also refer to the act of switching execution to a different instruction sequence as a result of executing a branch instruction. Branch instructions are used to implement control flow in program loops and conditionals.
GEOS is a computer operating environment, graphical user interface (GUI), and suite of application software. Originally released as PC/GEOS, it runs on MS-DOS-based, IBM PC compatible computers. Versions for some handheld platforms were also released and licensed to some companies.
The LGP-30, standing for Librascope General Purpose and then Librascope General Precision, is an early off-the-shelf computer. It was manufactured by the Librascope company of Glendale, California, and sold and serviced by the Royal Precision Electronic Computer Company, a joint venture with the Royal McBee division of the Royal Typewriter Company. The LGP-30 was first manufactured in 1956, at a retail price of $47,000, equivalent to $530,000 in 2023.
Royal Consumer Information Products, Inc. is an American technology company founded in January 1904 as a manufacturer of typewriters. Royal’s product line has evolved to include cash registers, shredders, personal digital assistants (PDAs)/electronic organizers, postal scales, weather stations, and a wide range of original and compatible/remanufactured imaging supplies supporting printers, faxes, and copiers. The company is headquartered in Hartford, Connecticut.
"Real Programmers Don't Use Pascal" is an essay about computer programming written by Ed Post of Tektronix, Inc., and published in July 1983 as a reader's contribution in Datamation.
In computer architecture, 31-bit integers, memory addresses, or other data units are those that are 31 bits wide.
In the history of computing, optimum programming, or optimum coding is the practice of arranging a computer program's instructions in memory so as to minimize the time the machine spends waiting for instructions. It is of historical interest mainly due to the design of many early digital computers.
Librascope was a Glendale, California, division of General Precision, Inc. (GPI). It was founded in 1937 by Lewis W. Imm to build and operate theater equipment, and acquired by General Precision in 1941. During World War II it worked on improving aircraft load balancing.
The Little Man Computer (LMC) is an instructional model of a computer, created by Dr. Stuart Madnick in 1965. The LMC is generally used to teach students, because it models a simple von Neumann architecture computer—which has all of the basic features of a modern computer. It can be programmed in machine code or assembly code.
Roy Edward Nather was an American astronomer, who at the time of his death, was professor emeritus in Astronomy at University of Texas at Austin. He pioneered the fields of asteroseismology of white dwarfs, and observational studies of interacting binary collapsed stars.
Stanford Extended ASCII (SEASCII) is a derivation of the 7-bit ASCII character set developed at the Stanford Artificial Intelligence Laboratory (SAIL/SU-AI) in the early 1970s. Not all symbols match ASCII.
The Darmstadt Electronic Computing Machine (DERA), (German:Darmstädter Elektronischer Rechenautomat) was an experimental, room-sized electronic computer calculator with vacuum tube built in 1951. It was built at the Technische Universität Darmstadt under the direction of Alwin Walther. The first operation was in 1957, with development completed in 1959.
{{cite journal}}
: CS1 maint: DOI inactive as of November 2024 (link)