The best way to prepare [to be a programmer] is to write programs, and to study great programs that other people have written. In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating systems.
FORTRAN is not a flower but a weed - it is hardy, occasionally blooms, and grows in every computer.
Talk is cheap. Show me the code.
When building a complex system, having crackerjack programmers (who can make any design work, even a bad one) can be a liability. The result, after lots of effort, is a working system that cannot be easily maintained or upgraded. Good -but not great- programmers would fail early, causing a realization that the system must be redesigned, and then reimplemented. The extra cost is paid once, early in the system's cycle (when it is cheap), instead of repeatedly paid late in the system's cycle (when it is more expensive).
The truth is, when all is said and done, one does not teach a subject, one teaches a student how to learn it.
Text is linear; it is black and white; it doesn't zoom around the page in 3-D; it isn't intelligent by itself; in fact, in terms of immediate reaction it is quite boring. I can't imagine a single preliterate was ever wowed at the first sight of text, and yet text has been the basis of arguably the most fundamental intellectual transformation of the human species. It and its subforms, such as algebra, have made science education for all a plausible goal.
The first step in fixing a broken program is getting it to fail repeatably [on the simplest example possible].
In the development of the understanding of complex phenomena, the most powerful tool available to the human intellect is abstraction. Abstraction arises from the recognition of similarities between certain objects, situations, or processes in the real world and the decision to concentrate on these similarities and to ignore, for the time being, their differences.
Every now and then go away, have a little relaxation, for when you come back to your work your judgment will be surer.
I was eventually persuaded of the need to design programming notations so as to maximize the number of errors which cannot be made, or if made, can be reliably detected at compile time.
No matter how slick the demo is in rehearsal, when you do it in front of a live audience the probability of a flawless presentation is inversely proportional to the number of people watching, raised to the power of the amount of money involved.
If our designs are failing due to the constant rain of changing requirements, it is our designs that are at fault. We must somehow find a way to make our designs resilient to such changes and protect them from rotting.
Not only is example the best way to teach, it is the only way.
I, myself, have had many failures and I've learned that if you are not failing a lot, you are probably not being as creative as you could be -you aren't stretching your imagination.
Question authority; but, raise your hand first.
One purpose of CRC cards [a design tool] is to fail early, to fail often, and to fail inexpensively. It is a lot cheaper to tear up a bunch of cards that it would be to reorganize a large amount of source code.
In the practical use of our intellect, forgetting is as important as remembering.
Computer system analysis is like child-rearing; you can do grievous damage, but you cannot ensure success.
The structure of a software system provides the ecology in which code is born, matures, and dies. A well-designed habitat allows for the successful evolution of all the components needed in a software system.
Code never lies, comments sometimes do.
Making the simple complicated is commonplace.
People think that computer science is the art of geniuses but the actual reality is the opposite, just many people doing things that build on each other, like a wall of mini stones.
To treat programming scientifically, it must be possible to specify the required properties of programs precisely. Formality is certainly not an end in itself. The importance of formal specifications must ultimately rest in their utility -in whether or not they are used to improve the quality of software or to reduce the cost of producing and maintaining software.
The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination. Few media of creation are so flexible, so easy to polish and rework, so readily capable of realizing grand conceptual structures.
Code should run as fast as necessary, but no faster; something important is always traded away to increase speed.
Follow AzQuotes on Facebook, Twitter and Google+. Every day we present the best quotes! Improve yourself, find your inspiration, share with friends
or simply: