Alan Perlis quotes

From Motley Bytes Wiki
Jump to: navigation, search

Alan Jay Perlis. (1922 - 1990). American computer scientist, software engineer, educator, ACM Turing award recipient.

Fit and Try

“Fundamentally, the procedure you mention, which is ‘fit-and-try’, will work very well with three or four people. If you have a hundred people the ‘fit-and-try’ process diverges because of lack of control.”

Simulation Becomes System

“The critical point is that the simulation becomes the system.”

Iterative Simulation Design

“1. A software system can best be designed if the testing is interlaced with the designing instead of being used after the design.
2. A simulation which matches the requirements contains the control which organizes the design of the system.
3. Through successive repetitions of this process of interlaced testing and design the model ultimately becomes the software system itself.
I think that it is the key of the approach that has been suggested, that there is no such question as testing things after the fact with simulation models, but that in effect the testing and the replacement of simulations with modules that are deeper and more detailed goes on with the simulation model controlling, as it were, the place and order in which these things are done.”

Human Communication Limits

“A man can communicate with about five colleagues on a software project without too much difficulty. Likewise he can supervise about five people and know pretty well what they are doing. One would structure 120 people in three levels, in which no man is talking to more than about eight people, both across his level and up and down”

Software Engineering Competence

“It is a fact that there are software engineers around today who are quite competent. There are systems in many places which are quite stable and which provide magnificent service. It is also the case that there are large numbers of efforts, containing large numbers of programs and programmers, which have no software engineers on them, that is that people function as though they did not know how to build software.”
  • Note: Un-indexed continuation of quote: “I have a number of questions: 1. Is it possible to have software engineers in the numbers in which we need them, without formal software engineering education? 2. Is software engineering the same as Computer Science? 3. Is software engineering best provided by baccalaureate programs in universities? Or by adult education courses? Or by two year courses following the standard grade school education? 4. Do the people educated in these programs have a growing and future role in our society? 5. Will they be useful enough in a firm or government or university, and is their value such that they can distribute their talents in other activities, or must they always remain programmers? 6. What curriculum do we have in mind for software engineers, regardless of what level we choose to educate them? 7. Is software engineering really different from what we now call systems engineering?”

Useful Software Systems

“We recognize that a practical problem of considerable difficulty and importance has arisen: The successful design, production and maintenance of useful software systems. The importance is obvious and the more so since we see only greater growth in demands and requirements in the future. The consequences of poor performance, poor design, instability and mismatching of promise and performance are not going to be limited to the computing fraternity, or even their nearest neighbors, but will affect considerable sections of our society whose ability to forgive is inversely proportional to their ignorance of the difficulties we face. The source of difficulty is distributed through the whole problem, easy to identify, and yet its cure is hard to pinpoint so that systematic improvement can be gotten.”

First Software Engineering Conference

“This is the first conference ever held on software engineering and it behooves us to take this conference quite seriously since it will likely set the tone of future work in this field”

Training

“Our problems arise from demands, appetites, and our exuberant optimism. They are magnified by the unevenly trained personnel with which we work. In our deliberations we will not, I believe, be able to avoid the education problem — software engineering does not exist without software engineers.”

Program Parts Recurse

“Every program is a part of some other program...”


Understanding Code

“It is easier to write an incorrect program than understand a correct one.”

Understanding Programs

“To understand a program you must become both the machine and the program.”

Reading Programs

“Perhaps if we wrote programs from childhood on, as adults we'd be able to read them.”

Program Sameness

“If two people write exactly the same program, each should be put in microcode and then they certainly won't be the same.”


Program Purpose

“Every program has (at least) two purposes: the one for which it was written and another for which it wasn't.”

Listening

“If a listener nods his head when you're explaining your program, wake him up.”

Programming Language

“A language that doesn't affect the way you think about programming, is not worth knowing.”

Modularity

“Wherever there is modularity there is the potential for misunderstanding: Hiding information implies a need to check communication.”

Optimization

“Optimization hinders evolution.”

Command Language

“A good system can't have a weak command language.”

Complex Information in the Mind

“One can only display complex information in the mind. Like seeing, movement or flow or alteration of view is more important than the static picture, no matter how lovely.”

Programming Special Cases

“In programming, everything we do is a special case of something more general - and often we know it too quickly.”

Simplicity Follows Complexity

“Simplicity does not precede complexity, but follows it.”

Ingenuity and Analysis

“Programmers are not to be measured by their ingenuity and their logic but by the completeness of their case analysis.”

Programming the Excluded Muddle

“Structured Programming supports the law of the excluded muddle.”

Error-Free Programs

“There are two ways to write error-free programs; only the third one works.”

Ideas and the Semantic Gulf

“So many good ideas are never heard from again once they embark in a voyage on the semantic gulf.”

Specifications

“It is easier to change the specification to fit the program than vice versa.”

Complexity

“Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.”

Parameters

“It is the user who should parametrize procedures, not their creators.”

God and AI

“A year spent in artificial intelligence is enough to make one believe in God.”

Programming Language Wish

“When someone says ‘I want a programming language in which I need only say what I wish done,’ give him a lollipop.”

Responsible Ideas

“Don't have good ideas if you aren't willing to be responsible for them.”

Failure and Success

“Dealing with failure is easy: Work hard to improve. Success is also easy to handle: You've solved the wrong problem. Work hard to improve.”

Formal

“One can't proceed from the informal to the formal by formal means.”

Complexity Communication

“You can't communicate complexity, only an awareness of it.”

Neuroscience, Psychology, and Software

“The only constructive theory connecting neuroscience and psychology will arise from the study of software.”

Unnatural Natural Language

“Within a computer natural language is unnatural.”

Programming Impossible for Most

Most people find the concept of programming obvious, but the doing impossible.”

Learning Knowledge and Programming

“You think you know when you learn, are more sure when you can write, even more when you can teach, but certain when you can program.”

Programming Education

“It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical?”

Programming Unnatural

“Programming is an unnatural act.”

Simplicity Gets in the Way

“In seeking the unattainable, simplicity only gets in the way. If there are epigrams, there must be meta-epigrams.”

Computing Fun

“I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.”
  • Source: Quoted in The Structure and Interpretation of Computer Programs by Hal Abelson, Gerald Jay Sussman and Julie Sussman (McGraw-Hill, 2nd edition, 1996).

Knowledge and Wisdom

“Both knowledge and wisdom extend man's reach. Knowledge led to computers, wisdom to chopsticks.”

Balance Efficiency and Generality

“Our progress, then, is measured by the balance we achieve between efficiency and generality. As the nature of our involvement with computation changes — and it does — the appropriate description of language changes; our emphasis shifts. I feel that our successor model will show such a change. Computer science is a restless infant and its progress depends as much on shifts in point of view as on the orderly development of our current concepts.”