140-668: The Electronic Delay Storage Automatic Calculator ( EDSAC ) was an early British computer. Inspired by John von Neumann 's seminal First Draft of a Report on the EDVAC , the machine was constructed by Maurice Wilkes and his team at the University of Cambridge Mathematical Laboratory in England. EDSAC was the second electronic digital stored-program computer , after the Manchester Mark 1 , to go into regular service. Later
280-520: A Privatdozent at the University of Berlin in 1928. He was the youngest person elected Privatdozent in the university's history. He began writing nearly one major mathematics paper per month. In 1929, he briefly became a Privatdozent at the University of Hamburg , where the prospects of becoming a tenured professor were better, then in October of that year moved to Princeton University as
420-413: A call stack , a special case of the stack data structure , to implement function calls and returns. Each procedure call creates a new entry, called a stack frame , at the top of the stack; when the procedure returns, its stack frame is deleted from the stack, and its space may be used for other procedure calls. Each stack frame contains the private data of the corresponding call, which typically includes
560-448: A cathode-ray tube screen could be set to display the contents of a particular piece of memory. This was used to see whether a number was converging, for example. A loudspeaker was connected to the accumulator's sign bit; experienced users knew healthy and unhealthy sounds of programs, particularly programs "hung" in a loop. After office hours certain "authorised users" were allowed to run the machine for themselves, which went on late into
700-460: A chemical engineer from ETH Zurich in 1926, and simultaneously passed his final examinations summa cum laude for his Ph.D. in mathematics (with minors in experimental physics and chemistry). However, in A Beautiful Mind by Sylvia Nasar, it's stated that Von Neumann was enrolled in chemical engineering at the University of Budapest while studying mathematics in Berlin. He then went to
840-653: A complex vector space with a Hermitian scalar product , with the corresponding norm being both separable and complete. In the same papers he also proved the general form of the Cauchy–Schwarz inequality that had previously been known only in specific examples. He continued with the development of the spectral theory of operators in Hilbert space in three seminal papers between 1929 and 1932. This work cumulated in his Mathematical Foundations of Quantum Mechanics which alongside two other books by Stone and Banach in
980-612: A lieutenant in the U.S. Army's Officers Reserve Corps . He passed the exams but was rejected because of his age. Klára and John von Neumann were socially active within the local academic community. His white clapboard house on Westcott Road was one of Princeton's largest private residences. He always wore formal suits. He enjoyed Yiddish and "off-color" humor. In Princeton, he received complaints for playing extremely loud German march music ; Von Neumann did some of his best work in noisy, chaotic environments. According to Churchill Eisenhart , von Neumann could attend parties until
1120-416: A Hilbert space, as distinct from self-adjoint operators , which enabled him to give a description of all Hermitian operators which extend a given Hermitian operator. He wrote a paper detailing how the usage of infinite matrices , common at the time in spectral theory, was inadequate as a representation for Hermitian operators. His work on operator theory lead to his most profound invention in pure mathematics,
1260-420: A Hungarian and American mathematician , physicist , computer scientist and engineer . Von Neumann had perhaps the widest coverage of any mathematician of his time, integrating pure and applied sciences and making major contributions to many fields, including mathematics , physics , economics , computing , and statistics . He was a pioneer in building the mathematical framework of quantum physics , in
1400-478: A blueprint for all Air Force long-range missile programs. Many people who had known von Neumann were puzzled by his relationship to the military and to power structures in general. Stanisław Ulam suspected that he had a hidden admiration for people or organizations that could influence the thoughts and decision making of others. He also maintained his knowledge of languages learnt in his youth. He knew Hungarian, French, German and English fluently, and maintained
1540-400: A branch of mathematics that involves the states of dynamical systems with an invariant measure . Of the 1932 papers on ergodic theory, Paul Halmos wrote that even "if von Neumann had never done anything else, they would have been sufficient to guarantee him mathematical immortality". By then von Neumann had already written his articles on operator theory , and the application of this work
SECTION 10
#17327828264291680-485: A broader class of theorems. By 1927, von Neumann was involving himself in discussions in Göttingen on whether elementary arithmetic followed from Peano axioms . Building on the work of Ackermann , he began attempting to prove (using the finistic methods of Hilbert's school ) the consistency of first-order arithmetic . He succeeded in proving the consistency of a fragment of arithmetic of natural numbers (through
1820-485: A capability to programming that has commonality. The term used tends to reflect the context in which it is used – usually based on the language being used. For example: The idea of a callable unit was initially conceived by John Mauchly and Kathleen Antonelli during their work on ENIAC and recorded in a January 1947 Harvard symposium on "Preparation of Problems for EDVAC -type Machines." Maurice Wilkes , David Wheeler , and Stanley Gill are generally credited with
1960-411: A conversational level of Italian, Yiddish, Latin and Ancient Greek. His Spanish was less perfect. He had a passion for and encyclopedic knowledge of ancient history, and he enjoyed reading Ancient Greek historians in the original Greek. Ulam suspected they may have shaped his views on how future events could play out and how human nature and society worked in general. Von Neumann's closest friend in
2100-647: A dedicated hardware stack to store return addresses—such hardware supports only a few levels of subroutine nesting, but can support recursive subroutines. Machines before the mid-1960s—such as the UNIVAC I , the PDP-1 , and the IBM 1130 —typically use a calling convention which saved the instruction counter in the first memory location of the called subroutine. This allows arbitrarily deep levels of subroutine nesting but does not support recursive subroutines. The IBM System/360 had
2240-417: A different name for a callable unit that returns a value ( function or subprogram ) vs. one that does not ( subroutine or procedure ). Other languages, such as C , C++ , C# and Lisp , use only one name for a callable unit, function . The C-family languages use the keyword void to indicate no return value. If declared to return a value, a call can be embedded in an expression in order to consume
2380-461: A hunger) for the more earthy type of comedy and humor". In 1955, a mass was found near von Neumann's collarbone, which turned out to be cancer originating in the skeleton , pancreas or prostate . (While there is general agreement that the tumor had metastasised , sources differ on the location of the primary cancer.) The malignancy may have been caused by exposure to radiation at Los Alamos National Laboratory . As death neared he asked for
2520-421: A library, in the literal sense, which kept indexed collections of tapes or decks of cards for collective use. To remove the need for self-modifying code , computer designers eventually provided an indirect jump instruction, whose operand, instead of being the return address itself, was the location of a variable or processor register containing the return address. On those computers, instead of modifying
2660-494: A meteor". Von Neumann combined traditional projective geometry with modern algebra ( linear algebra , ring theory , lattice theory). Many previously geometric results could then be interpreted in the case of general modules over rings. His work laid the foundations for some of the modern work in projective geometry. His biggest contribution was founding the field of continuous geometry . It followed his path-breaking work on rings of operators. In mathematics, continuous geometry
2800-571: A multiplier register. In 1953, David Wheeler , returning from a stay at the University of Illinois , designed an index register as an extension to the original EDSAC hardware. A magnetic-tape drive was added in 1952 but never worked sufficiently well to be of real use. Until 1952, the available main memory (instructions and data) was only 512 18-bit words, and there was no backing store. The delay lines (or "tanks") were arranged in two batteries providing 512 words each. The second battery came into operation in 1952. The full 1024-word delay-line store
2940-770: A new, ingenious proof for the Radon–Nikodym theorem . His lecture notes on measure theory at the Institute for Advanced Study were an important source for knowledge on the topic in America at the time, and were later published. Using his previous work on measure theory, von Neumann made several contributions to the theory of topological groups , beginning with a paper on almost periodic functions on groups, where von Neumann extended Bohr's theory of almost periodic functions to arbitrary groups . He continued this work with another paper in conjunction with Bochner that improved
SECTION 20
#17327828264293080-523: A paper of 1945 on design proposals for the NPL ACE , going so far as to invent the concept of a return-address stack, which would have allowed recursion.) The lack of an index register also posed a problem to the writer of a subroutine in that they could not know in advance where in memory the subroutine would be loaded, and therefore they could not know how to address any regions of the code that were used for storage of data (so-called "pseudo-orders"). This
3220-409: A priest, and converted to Catholicism , though the priest later recalled that von Neumann found little comfort in his conversion, and in receiving the last rites – he remained terrified of death and unable to accept it. Of his religious views, Von Neumann reportedly said, "So long as there is the possibility of eternal damnation for nonbelievers it is more logical to be a believer at
3360-456: A sequence of numbers, and so on through the list of subroutines needed for a particular problem. ... All these subroutines will then be stored in the machine, and all one needs to do is make a brief reference to them by number, as they are indicated in the coding. Kay McNulty had worked closely with John Mauchly on the ENIAC team and developed an idea for subroutines for the ENIAC computer she
3500-461: A set as a class that belongs to other classes, while a proper class is defined as a class that does not belong to other classes. On the Zermelo–Fraenkel approach, the axioms impede the construction of a set of all sets that do not belong to themselves. In contrast, on von Neumann's approach, the class of all sets that do not belong to themselves can be constructed, but it is a proper class , not
3640-476: A set. Overall, von Neumann's major achievement in set theory was an "axiomatization of set theory and (connected with that) elegant theory of the ordinal and cardinal numbers as well as the first strict formulation of principles of definitions by the transfinite induction ". Building on the Hausdorff paradox of Felix Hausdorff (1914), Stefan Banach and Alfred Tarski in 1924 showed how to subdivide
3780-472: A short paper giving the first derivation of a given norm from an inner product by means of the parallelogram identity . His trace inequality is a key result of matrix theory used in matrix approximation problems. He also first presented the idea that the dual of a pre-norm is a norm in the first major paper discussing the theory of unitarily invariant norms and symmetric gauge functions (now known as symmetric absolute norms). This paper leads naturally to
3920-427: A subroutine call instruction that placed the saved instruction counter value into a general-purpose register; this can be used to support arbitrarily deep subroutine nesting and recursive subroutines. The Burroughs B5000 (1961) is one of the first computers to store subroutine return data on a stack. The DEC PDP-6 (1964) is one of the first accumulator-based machines to have a subroutine call instruction that saved
4060-462: A subroutine called MYSUB from the main program. The subroutine would be coded as The JSB instruction placed the address of the NEXT instruction (namely, BB) into the location specified as its operand (namely, MYSUB), and then branched to the NEXT location after that (namely, AA = MYSUB + 1). The subroutine could then return to the main program by executing the indirect jump JMP MYSUB, I which branched to
4200-679: A tenured professorship at the Institute for Advanced Study in New Jersey, when that institution's plan to appoint Hermann Weyl appeared to have failed. His mother, brothers and in-laws followed von Neumann to the United States in 1939. Von Neumann anglicized his name to John, keeping the German-aristocratic surname von Neumann. Von Neumann became a naturalized U.S. citizen in 1937, and immediately tried to become
4340-479: A theory of noncommutative integration, something that von Neumann hinted to in his work but did not explicitly write out. Another important result on polar decomposition was published in 1932. Between 1935 and 1937, von Neumann worked on lattice theory , the theory of partially ordered sets in which every two elements have a greatest lower bound and a least upper bound. As Garrett Birkhoff wrote, "John von Neumann's brilliant mind blazed over lattice theory like
EDSAC - Misplaced Pages Continue
4480-668: A three-dimensional ball into disjoint sets , then translate and rotate these sets to form two identical copies of the same ball; this is the Banach–Tarski paradox . They also proved that a two-dimensional disk has no such paradoxical decomposition. But in 1929, von Neumann subdivided the disk into finitely many pieces and rearranged them into two disks, using area-preserving affine transformations instead of translations and rotations. The result depended on finding free groups of affine transformations, an important technique extended later by von Neumann in his work on measure theory . With
4620-419: A visiting lecturer in mathematical physics . Von Neumann was baptized a Catholic in 1930. Shortly afterward, he married Marietta Kövesi, who had studied economics at Budapest University. Von Neumann and Marietta had a daughter, Marina , born in 1935; she would become a professor. The couple divorced on November 2, 1937. On November 17, 1938, von Neumann married Klára Dán . In 1933 Von Neumann accepted
4760-478: A wealthy, non-observant Jewish family. His birth name was Neumann János Lajos. In Hungarian, the family name comes first, and his given names are equivalent to John Louis in English. He was the eldest of three brothers; his two younger siblings were Mihály (Michael) and Miklós (Nicholas). His father Neumann Miksa (Max von Neumann) was a banker and held a doctorate in law . He had moved to Budapest from Pécs at
4900-545: A well-defined interface and behavior and can be invoked multiple times. Callable units provide a powerful programming tool. The primary purpose is to allow for the decomposition of a large and/or complicated problem into chunks that have relatively low cognitive load and to assign the chunks meaningful names (unless they are anonymous). Judicious application can reduce the cost of developing and maintaining software, while increasing its quality and reliability. Callable units are present at multiple levels of abstraction in
5040-481: Is isomorphic to the subspace-lattice of an n {\displaystyle {\mathit {n}}} -dimensional vector space V n ( F ) {\displaystyle V_{n}(F)} over a (unique) corresponding division ring F {\displaystyle F} . This is known as the Veblen–Young theorem . Von Neumann extended this fundamental result in projective geometry to
5180-440: Is a substitute of complex projective geometry , where instead of the dimension of a subspace being in a discrete set 0 , 1 , . . . , n {\displaystyle 0,1,...,{\mathit {n}}} it can be an element of the unit interval [ 0 , 1 ] {\displaystyle [0,1]} . Earlier, Menger and Birkhoff had axiomatized complex projective geometry in terms of
5320-415: Is most obvious and objectionable in leaf procedures or leaf functions , which return without making any procedure calls themselves. To reduce that overhead, many modern compilers try to delay the use of a call stack until it is really needed. For example, the call of a procedure P may store the return address and parameters of the called procedure in certain processor registers, and transfer control to
5460-418: Is possible, since all the logical characteristics essential to this procedure are available, to evolve a coding instruction for placing the subroutines in the memory at places known to the machine, and in such a way that they may easily be called into use. In other words, one can designate subroutine A as division and subroutine B as complex multiplication and subroutine C as the evaluation of a standard error of
5600-566: Is the change of group that makes a difference, not the change of space." Around 1942 he told Dorothy Maharam how to prove that every complete σ-finite measure space has a multiplicative lifting; he did not publish this proof and she later came up with a new one. In a number of von Neumann's papers, the methods of argument he employed are considered even more significant than the results. In anticipation of his later study of dimension theory in algebras of operators, von Neumann used results on equivalence by finite decomposition, and reformulated
5740-401: Is used to declare no return value; for example void in C, C++ and C#. In some languages, such as Python, the difference is whether the body contains a return statement with a value, and a particular callable may return with or without a value based on control flow. In many contexts, a callable may have side effect behavior such as modifying passed or global data, reading from or writing to
EDSAC - Misplaced Pages Continue
5880-438: Is usually implemented as a contiguous area of memory. It is an arbitrary design choice whether the bottom of the stack is the lowest or highest address within this area, so that the stack may grow forwards or backwards in memory; however, many architectures chose the latter. Some designs, notably some Forth implementations, used two separate stacks, one mainly for control information (like return addresses and loop counters) and
6020-501: The Add instruction, for example, used the EDSAC character code for the letter A. Internally, the EDSAC used two's complement binary numbers. Numbers were either 17 bits (one word) or 35 bits (two words) long. Unusually, the multiplier was designed to treat numbers as fixed-point fractions in the range −1 ≤ x < 1, i.e. the binary point was immediately to the right of
6160-635: The Strategic Missile Evaluation Committee and the ICBM Scientific Advisory Committee. He was also a member of the influential Atomic Energy Commission in charge of all atomic energy development in the country. He played a key role alongside Bernard Schriever and Trevor Gardner in the design and development of the United States' first ICBM programs. At that time he was considered the nation's foremost expert on nuclear weaponry and
6300-534: The University of Göttingen on a grant from the Rockefeller Foundation to study mathematics under David Hilbert . Hermann Weyl remembers how in the winter of 1926–1927 von Neumann, Emmy Noether , and he would walk through "the cold, wet, rain-wet streets of Göttingen" after class discussing hypercomplex number systems and their representations . Von Neumann's habilitation was completed on December 13, 1927, and he began to give lectures as
6440-710: The University of Manchester , Ferranti , and Plessey . On 13 January 2011, the Computer Conservation Society announced that it planned to build a working replica of EDSAC, at the National Museum of Computing (TNMoC) in Bletchley Park supervised by Andrew Herbert , who studied under Maurice Wilkes. The first parts of the replica were switched on in November 2014. The EDSAC logical circuits were meticulously reconstructed through
6580-524: The execution of a program. Execution continues at the next instruction after the call instruction when it returns control. The features of implementations of callable units evolved over time and varies by context. This section describes features of the various common implementations. Most modern programming languages provide features to define and call functions, including syntax for accessing such features, including: Some languages, such as Pascal , Fortran , Ada and many dialects of BASIC , use
6720-709: The explosive lenses used in the implosion-type nuclear weapon . Before and after the war, he consulted for many organizations including the Office of Scientific Research and Development , the Army's Ballistic Research Laboratory , the Armed Forces Special Weapons Project and the Oak Ridge National Laboratory . At the peak of his influence in the 1950s, he chaired a number of Defense Department committees including
6860-508: The identity operator . The von Neumann bicommutant theorem shows that the analytic definition is equivalent to a purely algebraic definition as being equal to the bicommutant . After elucidating the study of the commutative algebra case, von Neumann embarked in 1936, with the partial collaboration of Murray, on the noncommutative case, the general study of factors classification of von Neumann algebras. The six major papers in which he developed that theory between 1936 and 1940 "rank among
7000-604: The lattices of subspaces of inner product spaces ): Dimension is determined, up to a positive linear transformation, by the following two properties. It is conserved by perspective mappings ("perspectivities") and ordered by inclusion. The deepest part of the proof concerns the equivalence of perspectivity with "projectivity by decomposition"—of which a corollary is the transitivity of perspectivity. For any integer n > 3 {\displaystyle n>3} every n {\displaystyle {\mathit {n}}} -dimensional abstract projective geometry
7140-446: The top unsolved problems in mathematics as of 2024. The "brain" [computer] may one day come down to our level [of the common people] and help with our income-tax and book-keeping calculations. But this is speculation and there is no sign of it so far. In 1952, Sandy Douglas developed OXO , a version of noughts and crosses (tic-tac-toe) for the EDSAC, with graphical output to a VCR97 6" cathode-ray tube . This may well have been
SECTION 50
#17327828264297280-523: The "problem is essentially group-theoretic in character": the existence of a measure could be determined by looking at the properties of the transformation group of the given space. The positive solution for spaces of dimension at most two, and the negative solution for higher dimensions, comes from the fact that the Euclidean group is a solvable group for dimension at most two, and is not solvable for higher dimensions. "Thus, according to von Neumann, it
7420-466: The "problem of measure" for an n -dimensional Euclidean space R may be stated as: "does there exist a positive, normalized, invariant, and additive set function on the class of all subsets of R ?" The work of Felix Hausdorff and Stefan Banach had implied that the problem of measure has a positive solution if n = 1 or n = 2 and a negative solution (because of the Banach–Tarski paradox ) in all other cases. Von Neumann's work argued that
7560-485: The EDSAC, and inspired several other assembly languages: EDSAC was designed specifically to form part of the Mathematical Laboratory's support service for calculation. The first scientific paper to be published using a computer for calculations was by Ronald Fisher . Wilkes and Wheeler had used EDSAC to solve a differential equation relating to gene frequencies for him. In 1951, Miller and Wheeler used
7700-630: The German Johann von Neumann. Von Neumann was a child prodigy who at six years old could divide two eight-digit numbers in his head and converse in Ancient Greek . He, his brothers and his cousins were instructed by governesses. Von Neumann's father believed that knowledge of languages other than their native Hungarian was essential, so the children were tutored in English , French , German and Italian . By age eight, von Neumann
7840-497: The IBM System/360 , for example, the branch instructions BAL or BALR, designed for procedure calling, would save the return address in a processor register specified in the instruction, by convention register 14. To return, the subroutine had only to execute an indirect branch instruction (BR) through that register. If the subroutine needed that register for some other purpose (such as calling another subroutine), it would save
7980-561: The Lutheran Fasori Evangélikus Gimnázium in 1914. Eugene Wigner was a year ahead of von Neumann at the school and soon became his friend. Although von Neumann's father insisted that he attend school at the grade level appropriate to his age, he agreed to hire private tutors to give von Neumann advanced instruction. At 15, he began to study advanced calculus under the analyst Gábor Szegő . By 19, von Neumann had published two major mathematical papers,
8120-430: The United States was the mathematician Stanisław Ulam . Von Neumann believed that much of his mathematical thought occurred intuitively; he would often go to sleep with a problem unsolved and know the answer upon waking up. Ulam noted that von Neumann's way of thinking might not be visual, but more aural. Ulam recalled, "Quite independently of his liking for abstract wit, he had a strong appreciation (one might say almost
8260-638: The best career path was chemical engineering . This was not something that von Neumann had much knowledge of, so it was arranged for him to take a two-year, non-degree course in chemistry at the University of Berlin , after which he sat for the entrance exam to ETH Zurich , which he passed in September 1923. Simultaneously von Neumann entered Pázmány Péter University in Budapest, as a Ph.D. candidate in mathematics . For his thesis, he produced an axiomatization of Cantor's set theory . He graduated as
8400-546: The call stack mechanism can be viewed as the earliest and simplest method for automatic memory management . However, another advantage of the call stack method is that it allows recursive function calls , since each nested call to the same procedure gets a separate instance of its private data. In a multi-threaded environment, there is generally more than one stack. An environment that fully supports coroutines or lazy evaluation may use data structures other than stacks to store their activation records. One disadvantage of
8540-448: The call stack mechanism is the increased cost of a procedure call and its matching return. The extra cost includes incrementing and decrementing the stack pointer (and, in some architectures, checking for stack overflow ), and accessing the local variables and parameters by frame-relative addresses, instead of absolute addresses. The cost may be realized in increased execution time, or increased processor complexity, or both. This overhead
SECTION 60
#17327828264298680-439: The callable declares as formal parameters . A caller passes actual parameters , a.k.a. arguments , to match. Different programming languages provide different conventions for passing arguments. In some languages, such as BASIC, a callable has different syntax (i.e. keyword) for a callable that returns a value vs. one that does not. In other languages, the syntax is the same regardless. In some of these languages an extra keyword
8820-411: The constant would be calculated in an "interlude". The code required to calculate the constant would be supplied along with the full subroutine. After the initial input routine had loaded the calculation-code, it would transfer control to this code. Once the constant had been calculated and written into memory, control would return to the initial input routine, which would continue to write the remainder of
8960-432: The continuous dimensional case. This coordinatization theorem stimulated considerable work in abstract projective geometry and lattice theory, much of which continued using von Neumann's techniques. Birkhoff described this theorem as follows: Subroutine In computer programming , a function (also procedure , method , subroutine , routine , or subprogram ) is a callable unit of software logic that has
9100-437: The contributions of von Neumann to sets, the axiomatic system of the theory of sets avoided the contradictions of earlier systems and became usable as a foundation for mathematics, despite the lack of a proof of its consistency . The next question was whether it provided definitive answers to all mathematical questions that could be posed in it, or whether it might be improved by adding stronger axioms that could be used to prove
9240-469: The development of functional analysis , and in game theory , introducing or codifying concepts including cellular automata , the universal constructor and the digital computer . His analysis of the structure of self-replication preceded the discovery of the structure of DNA . During World War II , von Neumann worked on the Manhattan Project . He developed the mathematical models behind
9380-422: The development of a simulator and the reexamination of some rediscovered original schematics. This documentation has been released under a Creative Commons license. The ongoing project is open to visitors of the museum. In 2016, two original EDSAC operators, Margaret Marrs and Joyce Wheeler , visited the museum to assist the project. As of November 2016, commissioning of the fully completed and operational state of
9520-475: The difficult problem of characterizing the class of C G ( F ) {\displaystyle {\mathit {CG(F)}}} (continuous-dimensional projective geometry over an arbitrary division ring F {\displaystyle {\mathit {F}}\,} ) in abstract language of lattice theory. Von Neumann provided an abstract exploration of dimension in completed complemented modular topological lattices (properties that arise in
9660-494: The early 1930s he proved the existence of proper invariant subspaces for completely continuous operators in a Hilbert space while working on the invariant subspace problem . With I. J. Schoenberg he wrote several items investigating translation invariant Hilbertian metrics on the real number line which resulted in their complete classification. Their motivation lie in various questions related to embedding metric spaces into Hilbert spaces. With Pascual Jordan he wrote
9800-469: The early 1960s Peter Swinnerton-Dyer used the EDSAC computer to calculate the number of points modulo p (denoted by N p ) for a large number of primes p on elliptic curves whose rank was known. Based on these numerical results, Birch & Swinnerton-Dyer (1965) conjectured that N p for a curve E with rank r obeys an asymptotic law, the Birch and Swinnerton-Dyer conjecture , considered one of
9940-470: The early 1980s, to discover the recalculation dependencies in a spreadsheet. Namely, a location was reserved in each cell to store the return address. Since circular references are not allowed for natural recalculation order, this allows a tree walk without reserving space for a stack in memory, which was very limited on small computers such as the IBM PC . Most modern implementations of a function call use
10080-440: The early hours of the morning and then deliver a lecture at 8:30. He was known for always being happy to provide others of all ability levels with scientific and mathematical advice. Wigner wrote that he perhaps supervised more work (in a casual sense) than any other modern mathematician. His daughter wrote that he was very concerned with his legacy in two aspects: his life and the durability of his intellectual contributions to
10220-631: The end of the 1880s. Miksa's father and grandfather were born in Ond (now part of Szerencs ), Zemplén County , northern Hungary. John's mother was Kann Margit (Margaret Kann); her parents were Kann Jákab and Meisels Katalin of the Meisels family . Three generations of the Kann family lived in spacious apartments above the Kann-Heller offices in Budapest; von Neumann's family occupied an 18-room apartment on
10360-422: The end," referring to Pascal's wager . He confided to his mother, "There probably has to be a God. Many things are easier to explain if there is than if there isn't." He died on February 8, 1957, at Walter Reed Army Medical Hospital and was buried at Princeton Cemetery . At the beginning of the 20th century, efforts to base mathematics on naive set theory suffered a setback due to Russell's paradox (on
10500-434: The existence of a set that belongs to itself. In his 1925 doctoral thesis, von Neumann demonstrated two techniques to exclude such sets—the axiom of foundation and the notion of class . The axiom of foundation proposed that every set can be constructed from the bottom up in an ordered succession of steps by way of the Zermelo–Fraenkel principles. If one set belongs to another, then the first must necessarily come before
10640-446: The first thing it did was to modify its concluding jump instruction to that return address. Multiple and nested subroutines could be called so long as the user knew the length of each one in order to calculate the location to jump to; recursive calls were forbidden. The user then copied the code for the subroutine from a master tape onto their own tape following the end of their own program. (However, Alan Turing discussed subroutines in
10780-532: The following categories were available for general use: floating-point arithmetic ; arithmetic operations on complex numbers ; checking; division; exponentiation ; routines relating to functions; differential equations ; special functions; power series ; logarithms ; miscellaneous; print and layout; quadrature ; read (input); n th root; trigonometric functions ; counting operations (simulating repeat until loops , while loops and for loops ); vectors ; and matrices . The first assembly language appeared for
10920-524: The formal invention of this concept, which they termed a closed sub-routine , contrasted with an open subroutine or macro . However, Alan Turing had discussed subroutines in a paper of 1945 on design proposals for the NPL ACE , going so far as to invent the concept of a return address stack . The idea of a subroutine was worked out after computing machines had already existed for some time. The arithmetic and conditional jump instructions were planned ahead of time and have changed relatively little, but
11060-422: The function's return jump, the calling program would store the return address in a variable so that when the function completed, it would execute an indirect jump that would direct execution to the location given by the predefined variable. Another advance was the jump to subroutine instruction, which combined the saving of the return address with the calling jump, thereby minimizing overhead significantly. In
11200-453: The initial orders provided a primitive relocating assembler taking advantage of the mnemonic design described above, all in 31 words. This was the world's first assembler, and arguably the start of the global software industry. There is a simulation of EDSAC available, and a full description of the initial orders and first programs. The first calculation done by EDSAC was a program run on 6 May 1949 to compute square numbers . The program
11340-651: The leading defense scientist at the U.S. Department of Defense . Von Neumann's contributions and intellectual ability drew praise from colleagues in physics, mathematics, and beyond. Accolades he received range from the Medal of Freedom to a crater on the Moon named in his honor. Von Neumann was born in Budapest , Kingdom of Hungary (then part of the Austro-Hungarian Empire ), on December 28, 1903, to
11480-487: The light and read back the codes. When a program was ready, it was hung on a length of line strung up near the paper-tape reader. The machine operators, who were present during the day, selected the next tape from the line and loaded it into EDSAC. This is of course well known today as job queues. If it printed something, then the tape and the printout were returned to the user, otherwise they were informed at which memory location it had stopped. Debuggers were some time away, but
11620-412: The location stored at location MYSUB. Compilers for Fortran and other languages could easily make use of these instructions when available. This approach supported multiple levels of calls; however, since the return address, parameters, and return values of a subroutine were assigned fixed memory locations, it did not allow for recursive calls. Incidentally, a similar method was used by Lotus 1-2-3 , in
11760-522: The lower gate opening. EDSAC's successor, EDSAC 2 , was commissioned in 1958. In 1961, an EDSAC 2 version of Autocode , an ALGOL -like high-level programming language for scientists and engineers, was developed by David Hartley . In the mid-1960s, a successor to the EDSAC 2 was planned, but the move was instead made to the Titan , a prototype Atlas 2 developed from the Atlas Computer of
11900-485: The machine to discover a 79-digit prime – the largest known at the time. The winners of three Nobel Prizes – John Kendrew and Max Perutz (Chemistry, 1962), Andrew Huxley (Medicine, 1963) and Martin Ryle (Physics, 1974) – benefitted from EDSAC's revolutionary computing power. In their acceptance prize speeches, each acknowledged the role that EDSAC had played in their research. In
12040-473: The masterpieces of analysis in the twentieth century"; they collect many foundational results and started several programs in operator algebra theory that mathematicians worked on for decades afterwards. An example is the classification of factors . In addition in 1938 he proved that every von Neumann algebra on a separable Hilbert space is a direct integral of factors; he did not find time to publish this result until 1949. Von Neumann algebras relate closely to
12180-415: The night until a valve blew – which usually happened according to one such user. This is alluded to by Fred Hoyle in his novel The Black Cloud The early programmers had to make use of techniques frowned upon today—in particular, the use of self-modifying code . As there was no index register until much later, the only way of accessing an array was to alter which memory location a particular instruction
12320-496: The other for data. The former was, or worked like, a call stack and was only indirectly accessible to the programmer through other language constructs while the latter was more directly accessible. When stack-based procedure calls were first introduced, an important motivation was to save precious memory. With this scheme, the compiler does not have to reserve separate space in memory for the private data (parameters, return address, and local variables) of each procedure. At any moment,
12460-486: The positive, and in later papers with Stone discussed various generalizations and algebraic aspects of this problem. He also proved by new methods the existence of disintegrations for various general types of measures. Von Neumann also gave a new proof on the uniqueness of Haar measures by using the mean values of functions, although this method only worked for compact groups . He had to create entirely new techniques to apply this to locally compact groups . He also gave
12600-411: The problem of measure in terms of functions. A major contribution von Neumann made to measure theory was the result of a paper written to answer a question of Haar regarding whether there existed an algebra of all bounded functions on the real number line such that they form "a complete system of representatives of the classes of almost everywhere-equal measurable bounded functions". He proved this in
12740-522: The procedure's body by a simple jump. If the procedure P returns without making any other call, the call stack is not used at all. If P needs to call another procedure Q , it will then use the call stack to save the contents of any registers (such as the return address) that will be needed after Q returns. In general, a callable unit is a list of instructions that, starting at the first instruction, executes sequentially except as directed via its internal logic. It can be invoked (called) many times during
12880-408: The procedure's parameters and internal variables, and the return address. The call sequence can be implemented by a sequence of ordinary instructions (an approach still used in reduced instruction set computing (RISC) and very long instruction word (VLIW) architectures), but many traditional machines designed since the late 1960s have included special instructions for that purpose. The call stack
13020-421: The program instructions into memory from a punched paper tape . Each subroutine could then be provided by a separate piece of tape, loaded or spliced before or after the main program (or "mainline" ); and the same subroutine tape could then be used by many different programs. A similar approach was used in computers that loaded program instructions from punched cards . The name subroutine library originally meant
13160-416: The programmer on the one hand, and of the control circuits of the machine on the other". EDSAC's programmers used special techniques to make best use of the limited available memory. For example, at the point of loading a subroutine from punched tape into memory, it might happen that a particular constant would have to be calculated, a constant that would not subsequently need recalculation. In this situation,
13300-492: The programming environment. For example, a programmer may write a function in source code that is compiled to machine code that implements similar semantics . There is a callable unit in the source code and an associated one in the machine code, but they are different kinds of callable units – with different implications and features. The meaning of each callable term (function, procedure, method, ...) is, in fact, different. They are not synonymous . Nevertheless, they each add
13440-607: The project was supported by J. Lyons & Co. Ltd. , intending to develop a commercially applied computer and resulting in Lyons' development of the LEO ;I , based on the EDSAC design. Work on EDSAC started during 1947, and it ran its first programs on 6 May 1949, when it calculated a table of square numbers and a list of prime numbers . EDSAC was finally shut down on 11 July 1958, having been superseded by EDSAC 2 , which remained in use until 1965. As soon as EDSAC
13580-400: The properties of its lattice of linear subspaces . Von Neumann, following his work on rings of operators, weakened those axioms to describe a broader class of lattices, the continuous geometries. While the dimensions of the subspaces of projective geometries are a discrete set (the non-negative integers ), the dimensions of the elements of a continuous geometry can range continuously across
13720-555: The register's contents to a private memory location or a register stack . In systems such as the HP 2100 , the JSB instruction would perform a similar task, except that the return address was stored in the memory location that was the target of the branch. Execution of the procedure would actually begin at the next memory location. In the HP 2100 assembly language, one would write, for example to call
13860-399: The replica was estimated to be the autumn of 2017. However, unforeseen project delays have resulted in an unknown date for a completed and fully operational machine. John von Neumann John von Neumann ( / v ɒ n ˈ n ɔɪ m ən / von NOY -mən ; Hungarian : Neumann János Lajos [ˈnɒjmɒn ˈjaːnoʃ ˈlɒjoʃ] ; December 28, 1903 – February 8, 1957) was
14000-415: The return address in a stack addressed by an accumulator or index register. The later PDP-10 (1966), PDP-11 (1970) and VAX-11 (1976) lines followed suit; this feature also supports both arbitrarily deep subroutine nesting and recursive subroutines. In the very early assemblers, subroutine support was limited. Subroutines were not explicitly separated from each other or from the main program, and indeed
14140-516: The return value. For example, a square root callable unit might be called like y = sqrt(x) . A callable unit that does not return a value is called as a stand-alone statement like print("hello") . This syntax can also be used for a callable unit that returns a value, but the return value will be ignored. Some older languages require a keyword for calls that do not consume a return value, like CALL print("hello") . Most implementations, especially in modern languages, support parameters which
14280-429: The same year were the first monographs on Hilbert space theory. Previous work by others showed that a theory of weak topologies could not be obtained by using sequences . Von Neumann was the first to outline a program of how to overcome the difficulties, which resulted in him defining locally convex spaces and topological vector spaces for the first time. In addition several other topological properties he defined at
14420-429: The second in the succession. This excludes the possibility of a set belonging to itself. To demonstrate that the addition of this new axiom to the others did not produce contradictions, von Neumann introduced the method of inner models , which became an essential demonstration instrument in set theory. The second approach to the problem of sets belonging to themselves took as its base the notion of class , and defines
14560-523: The second of which gave the modern definition of ordinal numbers , which superseded Georg Cantor 's definition. At the conclusion of his education at the gymnasium, he applied for and won the Eötvös Prize, a national award for mathematics. According to his friend Theodore von Kármán , von Neumann's father wanted John to follow him into industry, and asked von Kármán to persuade his son not to take mathematics. Von Neumann and his father decided that
14700-615: The sense of the metric defined by the Hilbert norm and is a vector ψ {\displaystyle \psi } which is such that V t ( ψ ) = ψ {\displaystyle V_{t}(\psi )=\psi } for all t {\displaystyle t} . This was proven in the first paper. In the second paper, von Neumann argued that his results here were sufficient for physical applications relating to Boltzmann's ergodic hypothesis . He also pointed out that ergodicity had not yet been achieved and isolated this for future work. Later in
14840-406: The sense that they cannot prove every truth expressible in their language. Moreover, every consistent extension of these systems necessarily remains incomplete. At the conference, von Neumann suggested to Gödel that he should try to transform his results for undecidable propositions about integers. Less than a month later, von Neumann communicated to Gödel an interesting consequence of his theorem:
14980-409: The set of all sets that do not belong to themselves). The problem of an adequate axiomatization of set theory was resolved implicitly about twenty years later by Ernst Zermelo and Abraham Fraenkel . Zermelo–Fraenkel set theory provided a series of principles that allowed for the construction of the sets used in the everyday practice of mathematics, but did not explicitly exclude the possibility of
15120-441: The sign. The accumulator could hold 71 bits, including the sign, allowing two long (35-bit) numbers to be multiplied without losing any precision. The instructions available were: There was no division instruction (but various division subroutines were supplied) and no way to directly load a number into the accumulator (a "Store and zero accumulator" instruction followed by an "Add" instruction were necessary for this). There
15260-420: The source code of a subroutine could be interspersed with that of other subprograms. Some assemblers would offer predefined macros to generate the call and return sequences. By the 1960s, assemblers usually had much more sophisticated support for both inline and separately assembled subroutines that could be linked together. One of the first programming languages to support user-written subroutines and functions
15400-634: The special instructions used for procedure calls have changed greatly over the years. The earliest computers and microprocessors, such as the Manchester Baby and the RCA 1802 , did not have a single subroutine call instruction. Subroutines could be implemented, but they required programmers to use the call sequence—a series of instructions—at each call site . Subroutines were implemented in Konrad Zuse 's Z4 in 1945. In 1945, Alan M. Turing used
15540-411: The spectral theory of Hermitian operators from the bounded to the unbounded case. Other major achievements in these papers include a complete elucidation of spectral theory for normal operators , the first abstract presentation of the trace of a positive operator , a generalisation of Riesz 's presentation of Hilbert 's spectral theorems at the time, and the discovery of Hermitian operators in
15680-457: The stack contains only the private data of the calls that are currently active (namely, which have been called but haven't returned yet). Because of the ways in which programs were usually assembled from libraries, it was (and still is) not uncommon to find programs that include thousands of functions, of which only a handful are active at any given moment. For such programs, the call stack mechanism could save significant amounts of memory. Indeed,
15820-541: The study of nuclear operators on Banach spaces was among the first achievements of Alexander Grothendieck . Previously in 1937 von Neumann published several results in this area, for example giving 1-parameter scale of different cross norms on l 2 n ⊗ l 2 n {\displaystyle {\textit {l}}\,_{2}^{n}\otimes {\textit {l}}\,_{2}^{n}} and proving several other results on what are now known as Schatten–von Neumann ideals. Von Neumann founded
15960-409: The study of rings of operators, through the von Neumann algebras (originally called W*-algebras). While his original ideas for rings of operators existed already in 1930, he did not begin studying them in depth until he met F. J. Murray several years later. A von Neumann algebra is a *-algebra of bounded operators on a Hilbert space that is closed in the weak operator topology and contains
16100-445: The study of symmetric operator ideals and is the beginning point for modern studies of symmetric operator spaces . Later with Robert Schatten he initiated the study of nuclear operators on Hilbert spaces, tensor products of Banach spaces , introduced and studied trace class operators, their ideals , and their duality with compact operators , and preduality with bounded operators . The generalization of this topic to
16240-431: The study of von Neumann algebras and in general of operator algebras . His later work on rings of operators lead to him revisiting his work on spectral theory and providing a new way of working through the geometric content by the use of direct integrals of Hilbert spaces. Like in his work on measure theory he proved several theorems that he did not find time to publish. He told Nachman Aronszajn and K. T. Smith that in
16380-437: The subroutine into memory, but first adjusting its starting point so as to overwrite the code that had calculated the constant. This allowed quite complicated adjustments to be made to a general-purpose subroutine without making its final footprint in memory any larger than had it been tailored to a specific circumstance. The subroutine concept led to the availability of a substantial subroutine library. By 1951, 87 subroutines in
16520-482: The terms "bury" and "unbury" as a means of calling and returning from subroutines. In January 1947 John Mauchly presented general notes at 'A Symposium of Large Scale Digital Calculating Machinery' under the joint sponsorship of Harvard University and the Bureau of Ordnance, United States Navy. Here he discusses serial and parallel operation suggesting ...the structure of the machine need not be complicated one bit. It
16660-482: The theory of almost periodicity to include functions that took on elements of linear spaces as values rather than numbers. In 1938, he was awarded the Bôcher Memorial Prize for his work in analysis in relation to these papers. In a 1933 paper, he used the newly discovered Haar measure in the solution of Hilbert's fifth problem for the case of compact groups . The basic idea behind this
16800-399: The time (he was among the first mathematicians to apply new topological ideas from Hausdorff from Euclidean to Hilbert spaces) such as boundness and total boundness are still used today. For twenty years von Neumann was considered the 'undisputed master' of this area. These developments were primarily prompted by needs in quantum mechanics where von Neumann realized the need to extend
16940-679: The top floor. On February 20, 1913, Emperor Franz Joseph elevated John's father to the Hungarian nobility for his service to the Austro-Hungarian Empire. The Neumann family thus acquired the hereditary appellation Margittai , meaning "of Margitta" (today Marghita , Romania). The family had no connection with the town; the appellation was chosen in reference to Margaret, as was their chosen coat of arms depicting three marguerites . Neumann János became margittai Neumann János (John Neumann de Margitta), which he later changed to
17080-422: The topmost bit was always unavailable due to timing problems, so only 17 bits were used. An instruction consisted of a five-bit instruction code, one spare bit, a 10-bit operand (usually a memory address), and one length bit to control whether the instruction used a 17-bit or a 35-bit operand (two consecutive words, little-endian ). All instruction codes were by design represented by one mnemonic letter, so that
17220-412: The unit interval [ 0 , 1 ] {\displaystyle [0,1]} . Von Neumann was motivated by his discovery of von Neumann algebras with a dimension function taking a continuous range of dimensions, and the first example of a continuous geometry other than projective space was the projections of the hyperfinite type II factor . In more pure lattice theoretical work, he solved
17360-631: The use of restrictions on induction ). He continued looking for a more general proof of the consistency of classical mathematics using methods from proof theory . A strongly negative answer to whether it was definitive arrived in September 1930 at the Second Conference on the Epistemology of the Exact Sciences , in which Kurt Gödel announced his first theorem of incompleteness : the usual axiomatic systems are incomplete, in
17500-421: The usual axiomatic systems are unable to demonstrate their own consistency. Gödel replied that he had already discovered this consequence, now known as his second incompleteness theorem , and that he would send a preprint of his article containing both results, which never appeared. Von Neumann acknowledged Gödel's priority in his next letter. However, von Neumann's method of proof differed from Gödel's, and he
17640-403: The world's first video game . Another video game was created by Stanley Gill and involved a dot (termed a sheep) approaching a line in which one of two gates could be opened. The Stanley Gill game was controlled via the lightbeam of the EDSAC's paper-tape reader. Interrupting it (such as by the player placing their hand in it) would open the upper gate. Leaving the beam unbroken would result in
17780-422: The world. Many considered him an excellent chairman of committees, deferring rather easily on personal or organizational matters but pressing on technical ones. Herbert York described the many "Von Neumann Committees" that he participated in as "remarkable in style as well as output". The way the committees von Neumann chaired worked directly and intimately with the necessary military or corporate entities became
17920-507: The year he published another influential paper that began the systematic study of ergodicity. He gave and proved a decomposition theorem showing that the ergodic measure preserving actions of the real line are the fundamental building blocks from which all measure preserving actions can be built. Several other key theorems are given and proven. The results in this paper and another in conjunction with Paul Halmos have significant applications in other areas of mathematics. In measure theory ,
18060-446: Was FORTRAN II . The IBM FORTRAN II compiler was released in 1958. ALGOL 58 and other early programming languages also supported procedural programming. Even with this cumbersome approach, subroutines proved very useful. They allowed the use of the same code in many different programs. Memory was a very scarce resource on early computers, and subroutines allowed significant savings in the size of programs. Many early computers loaded
18200-482: Was also of the opinion that the second incompleteness theorem had dealt a much stronger blow to Hilbert's program than Gödel thought it did. With this discovery, which drastically changed his views on mathematical rigor, von Neumann ceased research in the foundations of mathematics and metamathematics and instead spent time on problems connected with applications. In a series of papers published in 1932, von Neumann made foundational contributions to ergodic theory ,
18340-423: Was discovered several years earlier when von Neumann published a paper on the analytic properties of groups of linear transformations and found that closed subgroups of a general linear group are Lie groups . This was later extended by Cartan to arbitrary Lie groups in the form of the closed-subgroup theorem . Von Neumann was the first to axiomatically define an abstract Hilbert space . He defined it as
18480-535: Was familiar with differential and integral calculus , and by twelve he had read Borel's La Théorie des Fonctions . He was also interested in history, reading Wilhelm Oncken 's 46-volume world history series Allgemeine Geschichte in Einzeldarstellungen ( General History in Monographs ). One of the rooms in the apartment was converted into a library and reading room. Von Neumann entered
18620-671: Was instrumental in his mean ergodic theorem . The theorem is about arbitrary one-parameter unitary groups t → V t {\displaystyle {\mathit {t}}\to {\mathit {V_{t}}}} and states that for every vector ϕ {\displaystyle \phi } in the Hilbert space , lim T → ∞ 1 T ∫ 0 T V t ( ϕ ) d t {\textstyle \lim _{T\to \infty }{\frac {1}{T}}\int _{0}^{T}V_{t}(\phi )\,dt} exists in
18760-424: Was no unconditional jump instruction, nor was there a procedure call instruction – it had not yet been invented. Maurice Wilkes discussed relative addressing modes for the EDSAC in a paper published in 1953. He was making the proposals to facilitate the use of subroutines . The initial orders were hard-wired on a set of uniselector switches and loaded into the low words of memory at startup. By May 1949,
18900-478: Was not available until 1955 or early 1956, limiting programs to about 800 words until then. John Lindley (diploma student 1958–1959) mentioned "the incredible difficulty we had ever to produce a single correct piece of paper tape with the crude and unreliable home-made punching, printing and verifying gear available in the late 50s". The EDSAC's main memory consisted of 1024 locations, though only 512 locations were initially installed. Each contained 18 bits, but
19040-422: Was operational, it began serving the university's research needs. It used mercury delay lines for memory and derated vacuum tubes for logic. Power consumption was 11 kW of electricity. Cycle time was 1.5 ms for all ordinary instructions, 6 ms for multiplication. Input was via five-hole punched tape , and output was via a teleprinter . Initially, registers were limited to an accumulator and
19180-529: Was programming during World War II. She and the other ENIAC programmers used the subroutines to help calculate missile trajectories. Goldstine and von Neumann wrote a paper dated 16 August 1948 discussing the use of subroutines. Some very early computers and microprocessors, such as the IBM 1620 , the Intel 4004 and Intel 8008 , and the PIC microcontrollers , have a single-instruction subroutine call that uses
19320-411: Was referencing. David Wheeler , who earned the world's first Computer Science PhD working on the project, is credited with inventing the concept of a subroutine. Users wrote programs that called a routine by jumping to the start of the subroutine with the return address (i.e. the location-plus-one of the jump itself) in the accumulator (a Wheeler Jump ). By convention the subroutine expected this, and
19460-408: Was solved by use of an initial input routine, which was responsible for loading subroutines from punched tape into memory. On loading a subroutine, it would note the start location and increment internal memory references as required. Thus, as Wilkes wrote, "the code used to represent orders outside the machine differs from that used inside, the differences being dictated by the different requirements of
19600-401: Was written by Beatrice Worsley , who had travelled from Canada to study the machine. The machine was used by other members of the university to solve real problems, and many early techniques were developed that are now included in operating systems. Users prepared their programs by punching them (in assembler) onto a paper tape. They soon became good at being able to hold the paper tape up to
#428571