FIELD NOTE / 2026.09.136 MIN READ / 5 SOURCES

Goldstine and von Neumann’s Flow Diagrams: Drawing Programs Before Flowcharts Had a Name

Goldstine and von Neumann’s 1947 planning reports used flow diagrams and assertions to make program structure visible before coding, helping establish diagramming as part of programming method.

The 1947 IAS reports treated program planning as a separate intellectual task

Herman Goldstine and John von Neumann’s Planning and Coding of Problems for an Electronic Computing Instrument was issued by the Institute for Advanced Study’s Electronic Computer Project beginning in April 1947. The IAS bibliography identifies it as a multi-part report devoted specifically to the mathematical and logical work required to turn problems into programs.[1] That focus was significant. Stored-program computers promised that sequences of orders could be changed easily, but flexibility also created a new design problem: a complicated calculation had to be organized before its individual instructions were coded. Goldstine and von Neumann therefore proposed a hierarchy of planning artifacts, including diagrams that represented the course of computation. Programming was becoming an activity with a design phase, not merely the clerical translation of formulas into numerical orders.

A program could be reasoned about before it existed as machine code

The flow diagram created an intermediate object between a mathematical problem and the final instruction sequence. That made control structure visible early enough to discuss, revise and verify without first committing every step to addresses and opcodes.

Flow diagrams represented the dynamic course of a calculation

The report’s diagrams used boxes and directed connections to show operations, decisions and the routes by which control would proceed. The IAS exhibit reproduces pages from the report and describes them as explaining how a mathematical problem would be coded for input into the computer.[2] Unlike a static equation, a program can repeat a section, choose between alternatives or terminate under a condition. A diagram can represent those time-dependent relationships spatially. The page becomes a map of possible execution paths. This was particularly useful for numerical algorithms involving iteration because the programmer needed to see not only which arithmetic operations occurred, but when control returned to an earlier stage and what condition allowed it to leave.

The notation was called a flow diagram before computer flowcharts were standardized

The title of this article uses “flowcharts” in the later generic sense, but Goldstine and von Neumann themselves wrote about flow diagrams. Historian Mark Priestley has shown that their 1947 methodology made such diagrams a central element of planning and combined operation and decision boxes with directed control flow and assertion-like annotations.[3] Diagrammatic process charts existed in engineering and management before electronic computing, so it would be misleading to claim that the IAS report invented every form of flowchart. Its importance is narrower and more relevant to programming: it gave computer programmers an explicit graphical notation for the logical structure of a program before widely standardized computer flowchart symbols existed.

The diagram described behavior rather than hardware layout

A circuit drawing answers how a machine is wired. A program flow diagram answers how a computation proceeds. Keeping those representations distinct helped make software logic something that could be designed independently of the physical schematic.

Assertions connected diagrams to reasoning about intermediate states

The planning method did more than connect boxes with arrows. Priestley’s historical analysis emphasizes the report’s use of assertions that describe relations expected to hold at points in a computation.[3] These statements made the diagram a reasoning tool rather than a mere illustration. A programmer could say what should be true on entering or leaving a section and use that expectation to organize the next stage. In modern terms, the idea resembles invariants and preconditions, although the later formal theories were not yet in place. The historical value is that early stored-program practice immediately generated a need to reason about program states. Once the machine could execute long, branching sequences automatically, programmers needed a disciplined way to keep track of what those sequences were supposed to establish.

Coding tables translated the planned flow into concrete instructions

After a problem was organized at the diagram level, it still had to become orders, addresses and memory allocations for a particular machine. Goldstine and von Neumann’s method separated those tasks rather than mixing them from the beginning. Donald Knuth’s study of von Neumann’s early programming work describes the reports as part of a systematic attempt to organize coding for the new stored-program architecture.[4] The flow diagram captured higher-level logical relationships; subsequent coding sheets could assign machine details. This layered representation is an early ancestor of a familiar programming workflow in which algorithm design precedes implementation. It also reduced the cognitive burden of reasoning simultaneously about the mathematics, control structure and numerical encoding of every instruction.

Planning and coding became distinct but linked stages

The diagram was not executable. Its value came from giving the coding stage a stable design to implement, while coding feedback could reveal where the plan needed revision. Programming was becoming an iterative engineering process.

The diagrams made loops and decisions easier to inspect as structures

Repeated calculation is central to numerical computing. Without a diagram, a loop encoded as jumps among numbered instructions can be difficult to understand because its conceptual shape is hidden inside addresses. Drawing the return path makes the repetition obvious. Likewise, a conditional branch becomes a visible fork. Knuth and Luis Trabb Pardo’s survey of early programming languages and notations places the 1946–47 flow-diagram work among the formative attempts to develop representations above raw machine orders.[5] That does not make the notation a high-level programming language, but it served a related purpose: it compressed a long sequence of low-level control transfers into recognizable conceptual forms.

Open publication allowed the planning method to travel with the IAS architecture

The Institute for Advanced Study deliberately distributed the Electronic Computer Project reports widely. Its historical exhibit notes that von Neumann made the specifications and design principles freely available rather than treating them as proprietary secrets.[2] As IAS-style machines were built at other institutions, the reports carried not only architectural ideas but a way of thinking about programs. This is an important mechanism in computing history. An architecture spreads more effectively when builders also receive documentation explaining how to use it, and programming practice spreads when examples and notations can be copied. The flow diagrams therefore belonged to a published package of machine design, logical organization and coding method.

A programming notation can spread through documentation before software tools exist

There was no diagram editor or compiler enforcing the method. Its portability came from paper: reports could be read, copied and adapted by groups building related machines and training new programmers.

Why Goldstine and von Neumann’s flow diagrams belong in programming history

The 1947 work captures a moment when the central difficulty of computing was shifting from constructing a machine to organizing long automatic procedures for it. Flow diagrams answered that difficulty by giving program control a visible geometry. They let programmers discuss loops, branches and stages at a level above individual orders, while assertions supplied statements about what intermediate results should mean. The IAS archive dates the report precisely within the early stored-program period, and later scholarship treats it as one of the foundational documents of programming methodology.[1][5] Modern developers may use structured pseudocode, state diagrams, sequence diagrams or executable tests instead of classic flowcharts, but the underlying move remains familiar: represent the logic in a form that humans can inspect before asking a machine to execute it. Goldstine and von Neumann helped establish that designing a program requires representations for human reasoning as well as instructions for hardware.

RESEARCH / PROVENANCE

Works Cited

5 SOURCES
  1. 01
  2. 02
  3. 03
  4. 04
  5. 05

CodeHistory is a living archive. Citations document the evidence used for this edition; later evidence may refine the account.

Contribute / Corrections

Improve the record.

Use this moderated submission form to suggest a correction, provide a source, challenge a priority claim or identify a missing contributor. Submissions are treated as research leads, not automatically published comments.

Submit a research lead

Please do not submit confidential material or claims you cannot support.