Cover of The Art of Computer Programming by Donald E. Knuth - Business and Economics Book

From "The Art of Computer Programming"

Author: Donald E. Knuth
Publisher: Addison-Wesley Professional
Year: 2014
Category: Computers

🎧 Free Preview Complete

You've listened to your free 10-minute preview.
Sign up free to continue listening to the full summary.

🎧 Listen to Summary

Free 10-min Preview
0:00
Speed:
10:00 free remaining
Chapter 9: History and Bibliography
Key Insight 1 from this chapter

The Evolution of Linked Data Structures

Key Insight

Early computing employed linear lists and rectangular arrays stored consecutively, with initial programming treatises detailing traversal algorithms. Prior to index registers, sequential list operations necessitated arithmetic on machine instructions, which significantly influenced the development of computers where programs and data shared memory space. Techniques allowing variable-length linear lists to dynamically share sequential locations, involving shifting data, were a later innovation, developed before 1963 and independently at IBM for a COBOL compiler, remaining largely unpublished until 1964.

The idea of storing linear lists in non-sequential locations originated with rotating drum memories, where sequential instruction fetching was inefficient due to drum rotation. To achieve substantial speed improvements, an extra address field, or 'link,' was integrated into each machine language instruction to point to the next command, a concept known as 'one-plus-one addressing' from 1946. While embryonic, this laid the foundation for linked lists, though dynamic insertion and deletion were not yet conceived. The true genesis of linked memory occurred in 1956 with the creation of IPL-II, the first List-processing language, which utilized pointers and introduced critical concepts such as the list of available space, with IPL-III a year later adding 'push down' and 'pop up' for stacks.

Initially, linked tables used one-word nodes, but by 1959, the efficiency of multi-word nodes and 'multilinked' lists was increasingly recognized, with 'plex' being an early term for nodes. The late 1950s saw the emergence of key List-processing systems: IPL-V, FLPL (FORTRAN subroutines), and LISP, with LISP's functional notation and list representation allowing it to endure decades of progress. Addressing the challenge of shared lists, memory management techniques like reference counting and garbage collection were introduced in 1960. By 1965, the growing importance of link manipulations led to their integration into algebraic programming languages, offering programmers flexible data representation choices without the complexity of assembly language or the overhead of entirely general list structures.

📚 Continue Your Learning Journey — No Payment Required

Access the complete The Art of Computer Programming summary with audio narration, key takeaways, and actionable insights from Donald E. Knuth.