Proof by analogy is fraud.

When done well, software is invisible.

A program that has not been tested does not work.

Java isn't platform independent; it is a platform

If you think it's simple, then you have misunderstood the problem.

After all, C++ isn't a perfect match for Java's design aims either.

I would encourage nonproprietary standards for tools and libraries.

Thus, the standard library will serve as both a tool and as a teacher.

I find languages that support just one programming paradigm constraining

I find languages that support just one programming paradigm constraining.

The standard library saves programmers from having to reinvent the wheel.

Design and programming are human activities; forget that and all is lost.

Personally, I look forward to better tools for analyzing C++ source code.

Nobody should call themselves a professional if they only knew one language.

Any verbose and tedious solution is error-prone because programmers get bored.

Most of the programmers in ten years will be us, and we won't get much smarter.

C++ is my favorite garbage collected language because it generates so little garbage

The first law of computer science: Every problem is solved by yet another indirection.

Anybody who comes to you and says he has a perfect language is either naive or a salesman.

"Legacy code" often differs from its suggested alternative by actually working and scaling.

It's easy to win forgiveness for being wrong; being right is what gets you into real trouble.

Clearly, I reject the view that there is one way that is right for everyone and for every problem.

Certainly not every good program is object-oriented, and not every object-oriented program is good.

It is my firm belief that all successful languages are grown and not merely designed from first principles

However, when Java is promoted as the sole programming language, its flaws and limitations become serious.

I assume that a sufficiently skilled will be able to do anything not explicitly forbidden by the hardware.

The most important single aspect of software development is to be clear about what you are trying to build.

C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.

More good code has been written in languages denounced as "bad'' than in languages proclaimed "wonderful'' - much more.

There are more useful systems developed in languages deemed awful than in languages praised for being beautiful - many more.

Our civilization depends critically on software, and we have a dangerously low degree of professionalism in the computer fields

I do not think that safety should be bought at the cost of complicating the expression of good solutions to real-life problems.

An organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.

The most fundamental problem in software development is complexity. There is only one basic way of dealing with complexity: divide and conquer

Some software is actually pretty good, by any standard. Think of the Mars Rovers, Google, and the Human Genome Project. Now, that's quality software!

How to test?" is a question that cannot be answered in general. "When to test?" however, does have a general answer: as early and as often as possible.

This evolution may compromise Java's claim of being simpler than C++, but my guess is that the effort will make Java a better language than it is today.

C++ is designed to allow you to express ideas, but if you don't have ideas or don't have any clue about how to express them, C++ doesn't offer much help.

It is easy to study the rules of overloading and of templates without noticing that together they are one of the keys to elegant and efficient type-safe containers.

Defining OO as based on the use of class hierarchies and virtual functions is also practical in that it provides some guidance as to where OO is likely to be successful.

First, I'd like to see the basic tools such as compilers, debuggers, profilers, database interfaces, GUI builders, CAD tools, and so forth fully support the ISO standard.

There's an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.

To many managers, getting rid of the arrogant, undisciplined, over-paid, technology-obsessed, improperly-dressed etc. programmers would appear to be a significant added benefit

Destructors for virtual base classes are executed in the reverse order of their appearance in a depth-first left-to-right traversal of the directed acyclic graph of base classes.

Too many managers and executives try to reduce programming to a low-level assembly-line activity. That's inefficient, wasteful, costly in the long run, and inhumane to programmers.

People who passionately want to believe that the world is basically simple react to this with a fury that goes beyond what I consider appropriate for discussing a programming language.

With the increasing importance of standards for system-level objects such as COM and CORBA, it is particularly important that the C++ bindings to those be clean, well documented, and simple to use.

Always think about how a piece of code should be used: good interfaces are the essence of good code. You can hide all kinds of clever and dirty code behind a good interface if you really need such code.

I like doing research that has an impact. If I went to a company to make what they call 'real money,' I'd be just trying to make a system work as fast as possible to meet the product and serice deadlines.

My list of basic tools is a partial answer to the question about what has changed: Over the past few years, large numbers of programmers have come to depend on elaborate tools to interface code with systems facilities.

Share This Page