Can programming be liberated from the von Neumann style?
1978/08/01 by John Backus · 2,595 citations
Computer Science · Mathematics · #Algebra over a field #Algebraic expression #Algebraic number #Computability, Logic, AI Algorithms #Computer science #Formal Methods in Verification #Functional programming #Logic, programming, and type systems #Mathematics #Programming language #Programming paradigm #Programming style #Pure mathematics #Semantics (computer science) #Style (visual arts) #Theoretical computer science #Von Neumann architecture
paper · pdf · doi:10.1145/359576.359579
published in Communications of the ACM 21(8), 613-641 (Association for Computing Machinery)
openalex publication_date 1978/08/01 · openalex created_date 2025/10/10 · openalex updated_date 2026/08/05
Abstract
Conventional programming languages are growing ever more enormous, but not stronger. Inherent defects at the most basic level cause them to be both fat and weak: their primitive word-at-a-time style of programming inherited from their common ancestor—the von Neumann computer, their close coupling of semantics to state transitions, their division of programming into a world of expressions and a world of statements, their inability to effectively use powerful combining forms for building new programs from existing ones, and their lack of useful mathematical properties for reasoning about programs. An alternative functional style of programming is founded on the use of combining forms for creating programs. Functional programs deal with structured data, are often nonrepetitive and nonrecursive, are hierarchically constructed, do not name their arguments, and do not require the complex machinery of procedure declarations to become generally applicable. Combining forms can use high level programs to build still higher level ones in a style not possible in conventional languages. Associated with the functional style of programming is an algebra of programs whose variables range over programs and whose operations are combining forms. This algebra can be used to transform programs and to solve equations whose “unknowns” are programs in much the same way one transforms equations in high school algebra. These transformations are given by algebraic laws and are carried out in the same language in which programs are written. Combining forms are chosen not only for their programming power but also for the power of their associated algebraic laws. General theorems of the algebra give the detailed behavior and termination conditions for large classes of programs. A new class of computing systems uses the functional programming style both in its programming language and in its state transition rules. Unlike von Neumann languages, these systems have semantics loosely coupled to states—only one state transition occurs per major computation.
Citations
Cited by
- On biological and artificial consciousness: A case for biological computationalism
- BLADE: An in-Cache Computing Architecture for Edge Devices
- Reliability of Capacitive Read in Arrays of Ferroelectric Capacitors
- Retriever: Composing Closed-Loop Asynchronous Robot Programs
- Current Should Not Sneak: Constrained Codes for Reliable Memristor Crossbar Arrays
- Relational Programming in Rel
- A Survey and Discussion of Memcomputing Machines
- Learning Dynamics in Memristor-Based Equilibrium Propagation
- A topological field-effect memristor
- Online Training of Spiking Recurrent Neural Networks with Phase-Change Memory Synapses
- How to extend the Single-Processor Paradigm to the Explicitly Many-Processor Approach
- Reward-based learning under hardware constraints - Using a RISC processor embedded in a neuromorphic substrate
- STICK: Spike Time Interval Computational Kernel, A Framework for General Purpose Computation using Neurons, Precise Timing, Delays, and Synchrony
- A Survey of Neuromorphic Computing and Neural Networks in Hardware
- A Generalized Streaming Model for Concurrent Computing
- Bringing Algebraic Hierarchical Decompositions to Concatenative Functional Languages
- One Life to Learn: Inferring Symbolic World Models for Stochastic Environments from Unguided Exploration
- Design, fabrication, and metrology of 10 × 100 multi-planar integrated photonic routing manifolds for neural networks
- A Lambda Calculus for Quantum Computation
- DarwinWafer: A Wafer-Scale Neuromorphic Chip
- AI Compute Architecture and Evolution Trends
- Why Is Dual-Pivot Quicksort Fast?
- The Python user interface of the elsA cfd software: a coupling framework for external steering layers
- Keeping CALM: When Distributed Consistency is Easy
- Maximized Lateral Inhibition in Paired Magnetic Domain Wall Racetracks for Neuromorphic Computing
- Functionals and hardware
- Augmenting Von Neumann's Architecture for an Intelligent Future
- Solving Sudoku using oscillatory neural networks
- Neural Network Architectures for Scalable Quantum State Tomography: Benchmarking and Memristor-Based Acceleration
- Rel: A Programming Language for Relational Data
- Beyond Silicon: Materials, Mechanisms, and Methods for Physical Neural Computing
- X-CHANGR: Changing Memristive Crossbar Mapping for Mitigating Line-Resistance Induced Accuracy Degradation in Deep Neural Networks
- Magneto-Ionic Hardware Security Primitives: Embedding Data Protection at the Material Level
- Data parallel algorithms
- PeleNet: A Reservoir Computing Framework for Loihi
- Analog circuits for mixed-signal neuromorphic computing architectures in 28 nm FD-SOI technology
- Single Flux Quantum Based Ultrahigh Speed Spiking Neuromorphic Processor Architecture
- Have Object-Oriented Languages Missed a Trick with Class Function and its Subclasses?
- A history of Haskell
- Integrating functional and imperative programming
- Do cooperative cycles of hydrogen bonding exist in proteins?
- Computing Integer Sequences: Filtering vs Generation (Functional Pearl)
- The evolution of Lisp
- Addressing memory bandwidth scalability in vector processors for streaming applications
- Genome as a functional program
- An agent-based framework for building decision support systems
- Elements of a relational theory of datatypes
- INsight: A Neuromorphic Computing System for Evaluation of Large Neural Networks
- Precise neural network computation with imprecise analog devices
- Programming Languages
- OOPAL
- A personal view of APL
- Language as an intellectual tool: From hieroglyphics to APL
- Programming languages for distributed computing systems
- Principles of Neuromorphic Photonics
- Conception, evolution, and application of functional programming languages
- Spreadsheet functional programming
- The history of Fortran I, II, and III
- Nanoscale resistive switching in electrodeposited MOF Prussian blue analogs driven by K-ion intercalation probed by C-AFM
- Random number generators for large-scale parallel Monte Carlo simulations on FPGA
- Evolving a language in and for the real world
- Pure functions in APL and J
- Memcomputing with membrane memcapacitive systems
- The Semantics of Rank Polymorphism
- A Digital Neuromorphic Architecture Efficiently Facilitating Complex Synaptic Response Functions Applied to Liquid State Machines
- X-SRAM: Enabling In-Memory Boolean Computations in CMOS Static Random Access Memories
- The Composability of Intermediate Values in Composable Inductive Programming
- Products in a Category with Only One Object
- S3DB core: a framework for RDF generation and management in bioinformatics infrastructures
- Functional programming [wikipedia]
- History of computing hardware [wikipedia]
- PROTO-PLASM: parallel language for adaptive and scalable modelling of biosystems. [europepmc]
- S3DB core: a framework for RDF generation and management in bioinformatics infrastructures. [europepmc]
- Reward-based learning under hardware constraints-using a RISC processor embedded in a neuromorphic substrate. [europepmc]
- Calculating with light using a chip-scale all-optical abacus. [europepmc]
- A Photoelectric-Stimulated MoS 2 Transistor for Neuromorphic Engineering. [europepmc]
- Magnetic Elements for Neuromorphic Computing. [europepmc]
- A New Approach to the Fabrication of Memristive Neuromorphic Devices: Compositionally Graded Films. [europepmc]
- An electronic neuromorphic system for real-time detection of high frequency oscillations (HFO) in intracranial EEG. [europepmc]
- Exploring Area-Dependent Pr 0.7 Ca 0.3 MnO 3 -Based Memristive Devices as Synapses in Spiking and Artificial Neural Networks. [europepmc]
- Multi-Input Logic-in-Memory for Ultra-Low Power Non-Von Neumann Computing. [europepmc]
- Dynamical Characteristics of Recurrent Neuronal Networks Are Robust Against Low Synaptic Weight Resolution. [europepmc]
- Unraveling the Role of Polydopamines in Resistive Switching in Al/Polydopamine/Al Structure for Organic Resistive Random-Access Memory. [europepmc]
- On the Role of Speed in Technological and Biological Information Transfer for Computations. [europepmc]
- Two-Terminal Lithium-Mediated Artificial Synapses with Enhanced Weight Modulation for Feasible Hardware Neural Networks. [europepmc]
- Enhanced Synaptic Behaviors in Chitosan Electrolyte-Based Electric-Double-Layer Transistors with Poly-Si Nanowire Channel Structures. [europepmc]
- Reconfigurable optical logic in silicon platform. [europepmc]
- A CMOS-compatible oscillation-based VO 2 Ising machine solver. [europepmc]
- Perspective: an optoelectronic future for heterogeneous, dendritic computing. [europepmc]
- Investigation of Grain Boundary Effects in Sm 0.2 Ce 0.8 O 2-x Thin Film Memristors. [europepmc]
- Wordline Input Bias Scheme for Neural Network Implementation in 3D-NAND Flash. [europepmc]
- High-Entropy Oxide Memristors for Neuromorphic Computing: From Material Engineering to Functional Integration. [europepmc]
- Learning Dynamics of Solitonic Optical Multichannel Neurons. [europepmc]
- Polymorphic functionalization driven by ion displacement-induced antiferroelectric ordering in CuBiP₂Se₆. [europepmc]
- Reconfigurable skin electronics enabled by intrinsically stretchable photoelectric memory transistors. [europepmc]
- Dopamine-Mediated Attenuation of OECT-Based Aqueous Artificial Chemical Synapses. [europepmc]
Related