Fengyun Liu thoughts on programming, language and logic

Quotations

General

No art, however minor, demands less than total dedication if you want to excel in it. — Leon Battista Alberti

It is the mark of an educated mind to be able to entertain a thought without accepting it. — Aristotle

I have no special talents. I am only passionately curious. — Albert Einstein

Was sich überhaupt sagen lässt, lässt sich klar sagen; und wovon man nicht reden kann, darüber muss man schweigen. — Wittgenstein in Tractatus Logico-Philosophicus

First do it, then do it right, then do it better. This is one fundamental I always keep in mind when developing anything. — Addy Osmani

Simplicity is the ultimate sophistication. — Leonardo da Vinci

Doubt is the origin of wisdom. — René Descartes

Divide each difficulty into as many parts as is feasible and necessary to resolve it. — René Descartes

Luck favors the prepared mind. — Louis Pasteur

The only way to be truly satisfied is to do what you believe is great work, and the only way to do great work is to love what you do. If you haven’t found it yet, keep looking, and don’t settle. As with all matters of the heart, you’ll know when you find it. And like any great relationship, it just gets better and better as the years roll on. So keep looking, don’t settle. — Steve Jobs

What we have to learn to do we learn by doing. — Aristotle, Ethica Nicomachea II

Some bookes are to bee tasted, others to bee swallowed, and some few to bee chewed and digested. — Francis Bacon, Essayes (1597)

Writing is nature’s way of letting you know how sloppy your thinking is. — Guindon

“Non sunt multiplicanda entia praeter necessitatem.” “Do not multiply entities beyond necessity.” — Ockham’s Razor, William of Ockham (1285–1349?)

Civilization advances by extending the number of important operations which we can perform without thinking about them. — Alfred North Whitehead, An Introduction to Mathematics, 1911

People have said you don’t understand something until you’ve taught it in a class. The truth is you don’t understand something until you’ve taught it to a computer, until you’ve been able to program it. — George Forsythe

You can’t make imperfections on a perfect thing - you have to have another perfect thing. — Feynman

Computer

Programs should be written for people to read, and only incidentally for machines to execute. — Structure and Interpretation of Computer Programs

We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%. A good programmer will not be lulled into complacency by such reasoning, he will be wise to look carefully at the critical code; but only after that code has been identified. — Donald Knuth

An unreliable programming language generating unreliable programs constitutes a far greater risk to our environment and to our society than unsafe cars, toxic pesticides, or accidents at nuclear power stations. Be vigilant to reduce that risk, not to increase it. – C.A.R Hoare in Mind your languages

Inside every large program, there is a small program trying to get out. — C. A. R. Hoare

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. – Martin Fowler

It is relatively easy to add a new feature to meet a well-understood need in an existing simple language; it is almost impossible to remove an over-elaborate feature from a language which has already gone into use! — C. A. R. Hoare, Everything You’ve Wanted to Know about Programming Languages but Have Been Afraid to Ask

The real merit in a programming language is its success in combining a useful (but not redundant) set of features into single programming tool, which can be widely used and efficiently implemented. It is the right balance between features, and the avoidance of interaction effects, that is most important. — C. A. R. Hoare, Everything You’ve Wanted to Know about Programming Languages but Have Been Afraid to Ask

Listen carefully to what language users say they want, until you have an understanding of what they really want. — C. A. R. Hoare, Hints on Programming Language Design

… it is absurd to make elaborate security checks on debugging runs, when no trust is put in the results, and then remove them in production runs, when an erroneous result could be expensive or disastrous. What would we think of a sailing enthusiast who wears his life-jacket when training on dry land but takes it off as soon as he goes to sea? — C. A. R. Hoare, Hints on Programming Language Design

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. — C. A. R. Hoare

What were the lessons I learned from so many years of intensive work on the practical problem of setting type by computer? 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 demands a significantly higher standard of accuracy than those other things do, and it requires a longer attention span than other intellectual tasks. — Donald Knuth, Keynote address to 11th World Computer Congress (IFIP Congress 89).

Reliability can be purchased only at the price of simplicity. — C. A. R. Hoare, An axiomatic basis for computer programming

The price of reliability is the pursuit of the utmost simplicity. — C. A. R. Hoare, The Emperor’s Old Clothes

The art of programming is the art of organising complexity, of mastering multitude and avoiding its bastard chaos as effectively as possible. — Edsger W. Dijkstra, Notes on structured programming

Program testing can be used to show the presenceof bugs, but never to show their absence! — Edsger W. Dijkstra, Notes on structured programming

Once a person has understood the way in which variables are used in programming, he has understoodthe quintessence of programming. — Edsger W. Dijkstra, Notes on structured programming

Programming (or problem solving in general?) as the judicious postponement of decisions and commitments! — Edsger W. Dijkstra, Notes on structured programming

Simple things should be simple, complex things should be possible. — Alan Kay

Mathematics

In mathematics you don’t understand things, you just get used to them. — John von Neumann

Beauty is the first test: there is no permanent place in this world for ugly mathematics. — G. H. Hardy, A Mathematician’s Apology

Design

A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away. — Antoine de Saint-Exupéry