# On the success of 'natural language programming'

DevFeed: [On the success of 'natural language programming'](<https://devfeed.tech/articles/on-the-success-of-natural-language-programming-12585.md>)

Original publisher: [Read original article](<http://brooker.co.za/blog/2025/12/16/natural-language.html>)

Author: Marc Brooker

Published: 2025-12-16T00:00:00Z

Content type: opinion

Language: en

Sources: [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog.md>), [Marc Brooker's Blog](<https://devfeed.tech/sources/marc-brooker-s-blog-2.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Code](<https://devfeed.tech/topics/code.md>), [Protocol (disambiguation)](<https://devfeed.tech/topics/protocol.md>), [Mathematics](<https://devfeed.tech/topics/mathematics.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [algorithms](<https://devfeed.tech/tags/algorithms.md>), [programming](<https://devfeed.tech/tags/programming.md>), [reasoning](<https://devfeed.tech/tags/reasoning.md>), [software](<https://devfeed.tech/tags/software.md>), [writing](<https://devfeed.tech/tags/writing.md>)

## AI overview

The article argues that programming has increasingly become specification: developers describe what software should do while implementation details are hidden behind layers of abstraction. It proposes that natural language may become central to future programming languages, while acknowledging that ambiguity makes natural-language specifications difficult to use precisely. The discussion references bugs in distributed-protocol implementations and argues that formal mathematical and symbolic tools remain powerful for precise reasoning.

## Source excerpt

On the success of 'natural language programming' Specifications, in plain speech. I believe that specification is the future of programming. Over the last four decades, we've seen the practice of building programs, and software systems grow closer and closer to the practice of specification. Details of the implementation, from layout in memory and disk, to layout in entire data centers, to algorithm and data structure choice, have become more and more abstract. Most application builders aren't writing frameworks, framework builders aren't building databases, database builders aren't designing protocols, protocol designers aren't writing kernels, and so on. Our modern software world is built on abstractions. Significant advancements are made, from time to time, by cutting through these abstractions. But still, the abstractions dominate, and will continue to. The practice of programming has become closer and closer to the practice of specification. Of crisply writing down what we want programs to do, and what makes them right. The how is less important. I believe that natural language will form the core of the programming languages of the future. The Ambiguity Problem The most common objection to this view is that natural language is ambiguous. It's exact meaning is potentially unclear, and highly dependent on context. This is a real problem. For example, in The Bug in Paxos Made Simple, I look at a common bug in implementations of Paxos caused directly by the ambiguity of natural language. Pointing out this ambiguity isn't criticizing [Lamport's] writing, but rather reminding you about how hard it is to write crisp descriptions of even relatively simple distributed protocols in text. As Lamport says: Prose is not the way to precisely describe algorithms. Perhaps the most famous statement of this problem is Dijkstra's from On the foolishness of "natural language programming": When all is said and told, the "naturalness" with which we use our native tongues boils down