The Problem with Programming

Bjarne Stroustrup, the inventor of the C++ programming language, defends his legacy and examines what's wrong with most software code.

provided by: 


In the 1980s and 90s, Bjarne Stroustrup designed and implemented the C++ programming language, which popularized object-oriented programming and influenced numerous other programming languages, including Java.

C++ remains the archetypal "high level" computer language (that is, one that preserves the features of natural, human language), and it is still used by millions of programmers. Many of the systems and applications of the PC and Internet eras were written in C++. For all that, the language remains controversial, largely because it is notoriously difficult to learn and use, and also because Stroustrup's design allows developers to make serious programming mistakes in the interest of preserving their freedom.

Stroustrup, for many years a researcher at AT&T Bell Labs, is now a professor of computer science in the Department of Engineering, at Texas A&M University, near Houston.

Technology Review: Why is most software so bad?

Bjarne Stroustrup: Some software is actually pretty good by any standards. Think of the Mars Rovers, Google, and the Human Genome Project. That's quality software! Fifteen years ago, most people, and especially most experts, would have said each of those examples was impossible. Our technological civilization depends on software, so if software had been as bad as its worst reputation, most of us would have been dead by now.

On the other hand, looking at "average" pieces of code can make me cry. The structure is appalling, and the programmers clearly didn't think deeply about correctness, algorithms, data structures, or maintainability. Most people don't actually read code; they just see Internet Explorer "freeze."

I think the real problem is that "we" (that is, we software developers) are in a permanent state of emergency, grasping at straws to get our work done. We perform many minor miracles through trial and error, excessive use of brute force, and lots and lots of testing, but--so often--it's not enough.

Software developers have become adept at the difficult art of building reasonably reliable systems out of unreliable parts. The snag is that often we do not know exactly how we did it: a system just "sort of evolved" into something minimally acceptable. Personally, I prefer to know when a system will work, and why it will.

TR: How can we fix the mess we are in?

BS: In theory, the answer is simple: educate our software developers better, use more-appropriate design methods, and design for flexibility and for the long haul. Reward correct, solid, and safe systems. Punish sloppiness.

In reality, that's impossible. People reward developers who deliver software that is cheap, buggy, and first. That's because people want fancy new gadgets now. They don't want inconvenience, don't want to learn new ways of interacting with their computers, don't want delays in delivery, and don't want to pay extra for quality (unless it's obvious up front--and often not even then). And without real changes in user behavior, software suppliers are unlikely to change.

We can't just stop the world for a decade while we reprogram everything from our coffee machines to our financial systems. On the other hand, just muddling along is expensive, dangerous, and depressing. Significant improvements are needed, and they can only come gradually. They must come on a broad front; no single change is sufficient.

One problem is that "academic smokestacks" get in the way: too many people push some area as a panacea. Better design methods can help, better specification techniques can help, better programming languages can help, better testing technologies can help, better operating systems can help, better middle-ware infrastructures can help, better understanding of application domains can help, better understanding of data structures and algorithms can help--and so on. For example, type theory, model-based development, and formal methods can undoubtedly provide significant help in some areas, but pushed as the solution to the exclusion of other approaches, each guarantees failure in large-scale projects. People push what they know and what they have seen work; how could they do otherwise? But few have the technical maturity to balance the demands and the resources.

By Jason Pontin

Read article at techreview.com

Regional Articles
- The Problem with Programming Alabama
- The Problem with Programming Alaska
- The Problem with Programming Arizona
- The Problem with Programming Arkansas
- The Problem with Programming California
- The Problem with Programming Colorado
- The Problem with Programming Connecticut
- The Problem with Programming DC
- The Problem with Programming Delaware
- The Problem with Programming Florida
- The Problem with Programming Georgia
- The Problem with Programming Hawaii
- The Problem with Programming Idaho
- The Problem with Programming Illinois
- The Problem with Programming Indiana
- The Problem with Programming Iowa
- The Problem with Programming Kansas
- The Problem with Programming Kentucky
- The Problem with Programming Louisiana
- The Problem with Programming Maine
- The Problem with Programming Maryland
- The Problem with Programming Massachusetts
- The Problem with Programming Michigan
- The Problem with Programming Minnesota
- The Problem with Programming Mississippi
- The Problem with Programming Missouri
- The Problem with Programming Montana
- The Problem with Programming Nebraska
- The Problem with Programming Nevada
- The Problem with Programming New Hampshire
- The Problem with Programming New Jersey
- The Problem with Programming New Mexico
- The Problem with Programming New York
- The Problem with Programming North Carolina
- The Problem with Programming North Dakota
- The Problem with Programming Ohio
- The Problem with Programming Oklahoma
- The Problem with Programming Oregon
- The Problem with Programming Pennsylvania
- The Problem with Programming Rhode Island
- The Problem with Programming South Carolina
- The Problem with Programming South Dakota
- The Problem with Programming Tennessee
- The Problem with Programming Texas
- The Problem with Programming Utah
- The Problem with Programming Vermont
- The Problem with Programming Virginia
- The Problem with Programming Washington
- The Problem with Programming West Virginia
- The Problem with Programming Wisconsin
- The Problem with Programming Wyoming
Rate Article
     
Articles Insider

Rss   Delicious   Digg   Add To My Yahoo   Add To My Google   Bookmark   Search Plugin

Topics:
Advertising Education Industrial Goods & Services Software
Business Services Family Insurance Technology
Career Financial Services Internet Telecommunications
Cars Food & Beverage Legal Transportation & Logistics
Computer Hardware Health Real Estate Travel
Construction Home Services Retail & Consumer Services Wedding