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.
Bjarne StroustrupThe most fundamental problem in software development is complexity. There is only one basic way of dealing with complexity: divide and conquer
Bjarne StroustrupTom [Cargil]s suggestion with a further idea: Propsers of new [C++] features should be required to donate a kidney. That would - Jim [Waldo] pointed out - make people think hard before proposing, and even people without any sense would propose at most two extensions.
Bjarne StroustrupMy impression was and is that many programming languages and tools represent solutions looking for problems, and I was determined that my work should not fall into that category. Thus, I follow the literature on programming languages and the debates about programming languages primarily looking for ideas for solutions to problems my colleagues and I have encountered in real applications. Other programming languages constitute a mountain of ideas and inspiration-but it has to be mined carefully to avoid featurism and inconsistencies.
Bjarne StroustrupToo 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.
Bjarne StroustrupOur civilization depends critically on software, and we have a dangerously low degree of professionalism in the computer fields
Bjarne StroustrupSome software is actually pretty good, by any standard. Think of the Mars Rovers, Google, and the Human Genome Project. Now, that's quality software!
Bjarne StroustrupThe most important single aspect of software development is to be clear about what you are trying to build.
Bjarne StroustrupC++ 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.
Bjarne StroustrupC makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off.
Bjarne StroustrupC++ is my favorite garbage collected language because it generates so little garbage
Bjarne StroustrupFirst, 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.
Bjarne StroustrupAn organisation that treats its programmers as morons will soon have programmers that are willing and able to act like morons only.
Bjarne StroustrupTo many managers, getting rid of the arrogant, undisciplined, over-paid, technology-obsessed, improperly-dressed etc. programmers would appear to be a significant added benefit
Bjarne StroustrupMore good code has been written in languages denounced as "bad'' than in languages proclaimed "wonderful'' - much more.
Bjarne StroustrupI assume that a sufficiently skilled will be able to do anything not explicitly forbidden by the hardware.
Bjarne StroustrupClearly, I reject the view that there is one way that is right for everyone and for every problem.
Bjarne StroustrupAnd no, I'm not a walking C++ dictionary. I do not keep every technical detail in my head at all times. If I did that, I would be a much poorer programmer. I do keep the main points straight in my head most of the time, and I do know where to find the details when I need them.
Bjarne StroustrupDefining 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.
Bjarne StroustrupThe first law of computer science: Every problem is solved by yet another indirection.
Bjarne StroustrupIt is my firm belief that all successful languages are grown and not merely designed from first principles
Bjarne StroustrupThere is no one "root of all evil" in software development. Design is hard in many ways. People tend to underestimate the intellectual and practical difficulties involved in building a significant system involving software. It is not and will not be reduced to a simple mechanical "assembly line" process. Creativity, engineering principles, and evolutionary change are needed to create a satisfactory large system.
Bjarne StroustrupI 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.
Bjarne StroustrupIt's easy to win forgiveness for being wrong; being right is what gets you into real trouble.
Bjarne StroustrupWith 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.
Bjarne StroustrupCertainly not every good program is object-oriented, and not every object-oriented program is good.
Bjarne StroustrupThere'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.
Bjarne StroustrupIt 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.
Bjarne StroustrupThis 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.
Bjarne StroustrupDestructors 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.
Bjarne StroustrupPeople 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.
Bjarne Stroustrup