Alan Turing (1912-1954)
- We shall do a much better programming job, provided we approach the task with a full appreciation of its tremendous difficulty, provided that we respect the intrinsic limitations of the human mind and approach the task as very humble programmers.
Richard Hamming (1915-1998)
- It is better to do the right problem the wrong way than the wrong problem the right way.
- It may be said "In research, if you know what you are doing, then you shouldn't be doing it." In a sense, if the answer turns out to be exactly what you expected, then you have learned nothing new, although you may have had your confidence increased somewhat.
- Often the great scientists, by turning the problem around a bit, changed a defect to an asset. For example, many scientists when they found they couldn't do a problem finally began to study why not. They then turned it around the other way and said, "But of course, this is what it is" and got an important result.
- The purpose of computation is insight, not numbers.
- True greatness is when your name is like ampere, watt, and fourier-when it's spelled with a lower case letter.
Claude Elwood Shannon(1916-2001) - The father of Information Theory
- I visualize a time when we will be to robots what dogs are to humans, and I'm rooting for the machines.
- Information is the resolution of uncertainty.
- Information: the negative reciprocal value of probability.
Edsger Wybe Dijkstra (1930-2002)
- Testing shows the presence, not the absence of bugs.
- The question of whether Machines Can Think... is about as relevant as the question of whether Submarines Can Swim.
- Elegance is not a dispensable luxury but a quality that decides between success and failure.
- Simplicity is prerequisite for reliability.
- 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.
- If debugging is the process of removing software bugs, then programming must be the process of putting them in.
- 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.
Donald Knuth (1938-)
- Computers are good at following instructions, but not at reading your mind.
- Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better.
- Email is a wonderful thing for people whose role in life is to be on top of things. But not for me; my role is to be on the bottom of things. What I do takes long hours of studying and uninterruptible concentration.
- Beware of bugs in the above code; I have only proved it correct, not tried it.
- When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense. The chief goal of my work as an educator and author is to help people learn how to write beautiful programs ... My feeling is that when we prepare a program, the experience can be just like composing poetry or music ... Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programs, noble programs, truly magnificent ones! ... computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. Programmers who subconsciously view themselves as artists will enjoy what they do and will do it better.
- Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil.
Alan Kay (1940-) - pioneering work on object oriented programming, and originator of Smalltalk.
- If you're not failing 90% of the time, then you're probably not working on sufficiently challenging problems.
- I said that 30 years ago! Why does no one ever listen to me?
- The best way to predict the future is to invent it.
Brian Kernighan(1942)
- Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.
Dennis Ritchie (1941-2011)
- C is quirky, flawed, and an enormous success.
Bjarne Stroustrup (1950-)
- In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg.
- 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
- There are only two kinds of programming languages: those people always bitch about and those nobody uses.
- A SMALL REQUEST:
Never Be Against COMPUTERS
- I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled optimization. Clean code does one thing well.
- I have reaffirmed a long-standing and strongly held view: Language comparisons are rarely meaningful and even less often fair.
- A closed mind is a recipe for bigotry.
John McCarthy(1927-2011) - Inventor of the term "artificial intelligence" (AI), developed the Lisp
- One can even conjecture that Lisp owes its survival specifically to the fact that its programs are lists, which everyone, including me, has regarded as a disadvantage.
Linus Torvalds (1969-)
- Software is like sex: It's better when it's free.
- Talk is cheap. Show me the code.
- Those that can, do. Those that can't, complain.
- The Linux philosophy is 'Laugh in the face of danger'. Oops. Wrong One. 'Do it yourself'. Yes, that's it.
- See, you not only have to be a good coder to create a system like Linux, you have to be a sneaky bastard too.
- I'm an egotistical bastard, and I name all my projects after myself. First 'Linux', now 'git'.
(note: 'git' is British English slang roughly equivalent to "unpleasant person")
Tony Hoare (1934-)
- 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.
- There is nothing a mere scientist can say that will stand against the flood of a hundred million dollars. But there is one quality that cannot be purchased in this way - and that is reliability. The price of reliability is the pursuit of the utmost simplicity. It is a price which the very rich find most hard to pay.
- Inside every well-written large program is a well-written small program.
Bertrand Meyer (1950-) - Creater of Eiffel
- You can either have software quality or you can have pointer arithmetic, but you cannot have both at the same time.
- Bubbles don't crash.
- Incorrect documentation is often worse than no documentation.
- Correctness is clearly the prime quality. If a system does not do what it is supposed to do, then everything else about it matters little.
Bill Gates (1955-)
- 640K ought to be enough for anybody (1981).
- Software suppliers are trying to make their software packages more 'user-friendly'. Their best approach so far has been to take all the old brochures and stamp the words 'user-friendly' on the cover.
- A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.
- Measuring programming progress by lines of code is like measuring aircraft building progress by weight.
- Success is a lousy teacher. It seduces smart people into thinking they can't lose. And it's an unreliable guide to the future. What seems to be the perfect business plan or the latest technology today may soon be as out-of-date as the eight-track tape player, the vacuum-tube television, or the mainframe computer. I've watched it happen. History is a good teacher, though, and observing many companies over a long period of time can teach us principles that will help us with strategies for the years ahead.
Seymour Cray (1925-1996)
- The trouble with programmers is that you can never tell what a programmer is doing until it's too late.
- If you were plowing a field, which would you rather use? Two strong oxen or 1024 chickens?
- Anyone can build a fast CPU. The trick is to build a fast system.
Paul Halmos (1916-2006)
Hungarian-born American mathematician who made fundamental advances in the areas of probability theory, statistics, operator theory, ergodic theory, and functional analysis (Hilbert spaces)
- The spectacular thing about Johnny [von Neumann] was not his power as a mathematician, which was great, or his insight and his clarity, but his rapidity; he was very, very fast. And like the modern computer, which no longer bothers to retrieve the logarithm of 11 from its memory (but, instead, computes the logarithm of 11 each time it is needed), Johnny didn't bother to remember things. He computed them. You asked him a question, and if he didn't know the answer, he thought for three seconds and would produce and answer.
Guido van Rossum (1956-), creator of Python
- Now, it's my belief that Python is a lot easier than to teach to students programming and teach them C or C++ or Java at the same time because all the details of the languages are so much harder. Other scripting languages really don't work very well there either.
- If you're talking about Java in particular, Python is about the best fit you can get amongst all the other languages. Yet the funny thing is, from a language point of view, JavaScript has a lot in common with Python, but it is sort of a restricted subset.
James Gosling (1955-), known as the father of Java
- Every configuration file becomes a programming language, so you might as well think that way.
- People think of security as a noun, something you go buy. In reality, it's an abstract concept like happiness. Openness is unbelievably helpful to security.
- A lot of [developers] have an amazingly weak grasp of physics. We've become a much more connected world and there's a lot more to program for than Web services.
- To the question of "Which
Programming Language would you use *now* on top of JVM, except Java?".
The answer was surprisingly fast and very clear: - Scala.
Robin Milner (1934-2010), inventor of ML
- There are many ways of trying to understand programs. People often rely too much on one way, which is called "debugging" and consists of running a partly-understood program to see if it does what you expected. Another way, which ML advocates, is to install some means of understanding in the very programs themselves.
Mark Oderky (1958-), creator of Scala
- Although Scala is designed to help programmers build very large-scale systems, it also scales down nicely to scripting.
- The moral is that you should not shy away from using recursive algorithms to solve your problem. Often, a recursive solution is more elegant and concise than a loop-based one
- How will Scala compare to the other languages? First, there's a big divide between statically typed (which typically goes along with a fast runtime) and dynamic typed (which typically goes along with being a little slower). Scala is one of the few statically typed languages on the JVM. The other big one, of course, is Java. It's true that there are some other statically typed languages coming out and we'll have to see what kind of traction they get. Scala, however, was the first statically typed alternative. The other big thing for Scala is that it combines the OO model of Java with functional programming. And it's the only language to do so. The other functional language on the JVM is Clojure, but Clojure sheds the OO model.
Stephen Wolfram (1959-), creator of Mathematica
- So the thing I realized rather gradually - I must say starting about 20 years ago now that we know about computers and things - there's a possibility of a more general basis for rules to describe nature.
- You kind of alluded to it in your introduction. I mean, for the last 300 or so years, the exact sciences have been dominated by what is really a good idea, which is the idea that one can describe the natural world using mathematical equations.
- A lot of [developers] have an amazingly weak grasp of physics. We've become a much more connected world and there's a lot more to program for than Web services.
- The most important precedents deal with the whole idea of symbolic programming - the notion of setting up symbolic expressions that can represent anything one wants, and then having functions that operate on both their structure and content.
Carl Sagan (1934-1996)
- At the heart of science is an essential balance between two seemingly contradictory attitudes--an openness to new ideas, no matter how bizarre or counterintuitive they may be, and the most ruthless skeptical scrutiny of all ideas, old and new. This is how deep truths are winnowed from deep nonsense.
Others
- First, solve the problem. Then, write the code. (John Johnson)
- Copy and paste is a design error. (David Parnas)
- Rules of Optimization:
Rule 1: Don't do it.
Rule 2 (for experts only): Don't do it yet. (Michael A. Jackson)
- First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack.
(George Carrette)
- Before software can be reusable it first has to be usable. (Ralph Johnson)
- Programming can be fun, so can cryptography; however they should not be combined. (Kreitzberg and Shneiderman)
- Walking on water and developing software from a specification are easy if both are frozen. (Edward V Berard)
- Optimism is an occupational hazard of programming; feedback is the treatment.
(Kent Beck (1961-) - creator of the Extreme Programming)
- Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration. (Stan Kelly-Bootle)
- Java is to JavaScript what Car is to Carpet. (Chris Heilmann)
- Java is, in many ways, C++-. (Michael Feldman)
- If Java had true garbage collection, most programs would delete themselves upon execution. (Robert Sewell)
- 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. (Steve McConnell - Author of Code Complete)
- Good code is its own best documentation. As you're about to add a comment, ask yourself, "How can I improve the code so that this comment isn't needed?" Improve the code and then document it to make it even clearer. (Steve McConnell - Author of Code Complete)
- Fifty years of programming language research, and we end up with C++? (Richard A. O'Keefe)
- C++ : Where friends have access to your private members.
(Gavin Russell Baker)
- Writing in C or C++ is like running a chain saw with all the safety guards removed.
(Bob Gray)
- I don't care if it works on your machine! We are not shipping your machine!
(Vidiu Platon)
- Everything that can be invented has been invented.
(Charles H. Duell, Commissioner, U.S. Office of Patents, 1899)
- Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning.
(Robert Cringley)
- The code for a computer 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 computer system. (R. Pattis)
- When debugging, novices insert corrective code; experts remove defective code. (R. Pattis)
- The Macintosh uses an experimental pointing device called a 'mouse.' There is no evidence that people want to use these things. What businessman knows about point sizes on typefaces or the value of variable point sizes ? Who out there in the general marketplace even knows what a 'font' is ?
The whole concept and attitude towards icons and hieroglyphs is actually counterrevolutionary - it's a language that is hardly 'user friendly'. This type of machine was developed by hardware hackers working out of Xerox's Palo Alto Research Center. It has yet to find popular success. There seems to be some mysterious user resistance to this type of machine."
( John C. Dvorak on why the Macintosh would fail, San Francisco Examiner, 1984/02/19)
- Computers are useless. They can only give you answers. (Pablo Picasso, 1968)
- In fact, hacking is more about following the law that breaking it. The essence of hacking is finding unintended or overlooked uses for the laws and properties of a given situation and then applying them in new and inventive ways to solve a problem - whatever it may be. (Jon Erickson in his book Hacking - the art of exploitation)
- The best thing about a boolean is even if you are wrong, you are only off by a bit.
- Login: yes
Password: i dont have one
password is incorrect
Login: yes
Password: incorrect
- Artificial Intelligence usually beats natural stupidity.
- I can't uninstall it, there seems to be some kind of 'Uninstall Shield'.
- If it's there and you can see it - it's real.
If it's not there and you can see it - it's virtual.
If it's there and you can't see it - it's transparent.
If it's not there and you can't see it - you erased it !"
- Helpdesk: Double click on "My Computer"
User: I can't see your computer.
Helpdesk: No, double click on "My Computer" on your computer.
User: Huh?
Helpdesk: There is an icon on your computer labeled "My Computer". Double click on it.
User: What's your computer doing on mine?
More to come...