If you think your users are idiots, only idiots will use it.
Any sufficiently advanced technology is indistinguishable from magic.
It's hard enough to find an error in your code when you're looking for it; it's even harder when you've assumed your code is error-free.
The most likely way for the world to be destroyed, most experts agree, is by accident. That's where we come in; we're computer professionals. We cause accidents.
Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Programming is an explanatory activity.
If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with.
A good scientist is a person with original ideas. A good engineer is a person who makes a design that works with as few original ideas as possible. There are no prima donnas in engineering.
Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.
You cannot teach beginners top-down programming, because they don't know which end is up.
While Microsoft does not share all of Oracle's ambitions for Java, we agree that it is a very valuable tool for software developers.
This attitude [the abstract method in mathematics] can be encapsulated in the following slogan: a mathematical object is what it does.
When a Caltech student asked the eminent cosmologist Michael Turner what his "bias" was in favoring one or another particle as a likely candidate to compromise dark matter in the universe, Feynmann snapped, "Why do you want to know his bias? Form your own bias!"
Yes, I share your concern: how to program well -though a teachable topic- is hardly taught. The situation is similar to that in mathematics, where the explicit curriculum is confined to mathematical results; how to do mathematics is something the student must absorb by osmosis, so to speak. One reason for preferring symbol-manipulating, calculating arguments is that their design is much better teachable than the design of verbal/pictorial arguments. Large-scale introduction of courses on such calculational methodology, however, would encounter unsurmoutable political problems.
By relieving the brain of all unnecessary work, a good notation sets it free to concentrate on more advanced problems, and in effect increases the mental power of the race.
Our intellectual powers are rather geared to master static relations and that our powers to visualize processes evolving in time are relatively poorly developed. For that reason we should do (as wise programmers aware of our limitations) our utmost to shorten the conceptual gap between the static program and the dynamic process, to make the correspondence between the program (spread out in text space) and the process (spread out in time) as trivial as possible.
If you have a large number of unrelated ideas, you have to get quite a distance away from them to get a view of all of them, and this is the role of abstraction. If you look at each too closely you see too many details. If you get far away things may appear simpler because you can only see the large, broad outlines; you do not get lost in petty details.
Given the incredible power of these new technologies, shouldn't we be asking how we can best coexist with them? And if our own extinction is a likely, or even possible, outcome of our technological development, shouldn't we proceed with great caution?
Don't ask what it means, but rather how it is used.
...One of the most important lessons, perhaps, is the fact that SOFTWARE IS HARD. From now on I shall have significantly greater respect for every successful software tool that I encounter. During the past decade I was surprised to learn that the writing of programs for TeX and Metafont proved to be much more difficult than all the other things I had done (like proving theorems or writing books). The creation of good software demand a significiantly higher standard of accuracy than those other things do, and it requires a longer attention span than other intellectual tasks.
We don't have much time, so we don't teach them; we acquaint them with things that they can learn.
We are all shaped by the tools we use, in particular: the formalisms we use shape our thinking habits, for better or for worse, and that means that we have to be very careful in the choice of what we learn and teach, for unlearning is not really possible.
Composing computer programs to solve scientific problems is like writing poetry. You must choose every word with care and link it with the other words in perfect syntax. There is no place for verbosity or carelessness. To become fluent in a computer lnaguage demands almost the antithesis of modern loose thinking. It requires many interactive sessions, the hands-on use of the device. You do not learn a foreign language from a book, rather you have to live in the country for year to let the langauge become an automatic part of you, and the same is true for computer languages.
There is this thing called the GPL (Gnu Public Licence), which we disagree with... nobody can ever improve the software.
Follow AzQuotes on Facebook, Twitter and Google+. Every day we present the best quotes! Improve yourself, find your inspiration, share with friends
or simply: