Skip to Content

On Rules

Strict and simple conventions favor the useful expression of ideas
January 1, 2007

On Friday, April 6, 1327, during Easter mass in the Church of St. Claire in Avignon, Francesco ­Petrarca beheld the woman he would commemorate as Laura, and irrevocably fell in love. Petrarch was 23 years old. If literary tradition is correct in identifying the object of his coup de foudre as Laura de Noves, she was 17.

Jason Pontin, Editor in Chief and Publisher

Petrarch probably never met Laura; she refused to see him because she was already married. But by the time he died in 1374, he had composed hundreds poems extolling her beauty, bemoaning his misfortune, and mourning her early death at the age of 38, a respectable mother of 11.

The poems are collected in a book commonly called Il Canzoniere, or “The Song Book.” To praise Laura, Petrarch perfected the lyric form called the sonnet, which in his hands consists of 14 lines, usually of hendecasyllables, rhyming abba, abba, cdc, dcd or some other variation. This crabbed little form has been imitated by thousands of poets and has inspired many celebrated examples of literary art. The Petrarchan sonnet has been called a cage, but it is a cage that captures a peculiar economy of thought: the octave, the first eight lines, offers a proposition of some sort that is satisfyingly resolved in the sestet, the last six lines. The rules of a sonnet are strict but simple.

By contrast, consider the C++ programming language.


  • Watch the Editor's video.

A program, like a poem, is a form for expressing ideas: in one case, words in a natural language, constrained within a lyric, express a man’s love for a pretty woman; in the other, computer code, bound by the syntactical conventions of a programming language, express the idea, say, that an extraterrestrial robot like the Mars Rover could have an autonomous, embedded driving system.

C++ is arguably the most influential language of the last 25 years; many of the systems and applications of the personal-computer and Internet eras were written in it, including Google’s search engine and the electronic switching systems that underlie our telecommunications networks. But for all that, C++ is notoriously hard to learn and use. Partly, this is owing to the difficulty of mastering the language’s paradigmatic method, called “object-oriented programming.” But mainly it is because software developers are free to express their ideas in C++ in a bewildering variety of forms.

In The Design and Evolution of C++, the language’s inventor, Bjarne Stroustrup (whom we interview in this special issue on software; see “The Problem with Programming”), explains that he designed the language this way for quasi-philosophical reasons: “I find ­Kierkegaard’s almost fanatical concern for the individual much more appealing than the grandiose schemes for humanity of Hegel and Marx. … Often, when I was tempted to outlaw a feature I disliked, I refrained from doing so because I did not think I had the right to force my views on others.”

Stroustrup’s restraint hasn’t pleased the generations of programmers who have struggled with C++’s quirks of syntax and “features overload” (to use coder’s jargon). When a version of our interview with Stroustrup was posted on Slashdot, an aggregator website that offers “news for nerds,” it attracted 605 comments. “JCR” asked, “Why does C++ introduce so much complexity for so little benefit?” The rules of C++ are complicated but lax.

Programming languages affect more people than professional coders. Although our technological civilization runs on software, the software doesn’t work very well. As our cover story by Scott Rosenberg puts it, “Everywhere you look, software is over budget, behind schedule, insecure, unreliable, and hard to use” (see “Anything You Can Do, I Can Do Meta”). Excessively complicated programming languages, of which C++ is one example, are a major reason for software’s confusion. This is because a useful programming language should be what computer scientists call an “abstraction” of the underlying complexity of control flows and data structures. C++ preserves for programmers the maximum possible freedom of expression; but as ­”JLeslie” (another Slashdot commentator) admitted, “The cost was that it wasn’t much of an abstraction.”

There may be another way. Charles Simonyi, the former chief architect of Microsoft, who is now the chief of Intentional Software, wants to overthrow programming languages for something he calls “intentional programming.” Rosenberg’s profile of Simonyi explains how intentional programming might give developers a higher order of abstraction. Rather than writing software code in programming languages, programmers would gratefully relinquish the production of code to a “generator” that would swallow their designs, representing the intentions of computer users, and spit out working code in a language that computers could understand, compile, and run.

The best expression of ideas occurs in forms that are strict and simple. Could Charles Simonyi be offering programmers a new form that is at once easier and more rigorous than anything they have had before? Write and tell me at

Deep Dive


Our best illustrations of 2022

Our artists’ thought-provoking, playful creations bring our stories to life, often saying more with an image than words ever could.

How CRISPR is making farmed animals bigger, stronger, and healthier

These gene-edited fish, pigs, and other animals could soon be on the menu.

The Download: the Saudi sci-fi megacity, and sleeping babies’ brains

This is today’s edition of The Download, our weekday newsletter that provides a daily dose of what’s going on in the world of technology. These exclusive satellite images show Saudi Arabia’s sci-fi megacity is well underway In early 2021, Crown Prince Mohammed bin Salman of Saudi Arabia announced The Line: a “civilizational revolution” that would house up…

10 Breakthrough Technologies 2023

Every year, we pick the 10 technologies that matter the most right now. We look for advances that will have a big impact on our lives and break down why they matter.

Stay connected

Illustration by Rose Wong

Get the latest updates from
MIT Technology Review

Discover special offers, top stories, upcoming events, and more.

Thank you for submitting your email!

Explore more newsletters

It looks like something went wrong.

We’re having trouble saving your preferences. Try refreshing this page and updating them one more time. If you continue to get this message, reach out to us at with a list of newsletters you’d like to receive.