Pragmatism in Programming Proverbs

2020-05-31

I was originally going to write a normal prose article regarding the topic of Pragmatism in Programming, however I thought I’d experiment in style by writing in a proverbial style.

The following concepts express the school of thought that I subscribe to which I call Pragmatism in Programming.

Proverbs written by Ginger Bill

The concept of programming

Problem solving

Practice

Model building

Management

Experimentation and emergence

Philosophical concepts

Other topics

Quotes

Aristotle

In every systematic inquiry (methodos) where there are first principles, or causes, or elements, knowledge and science result from acquiring knowledge of these; for we think we know something just in case we acquire knowledge of the primary causes, the primary first principles, all the way to the elements. It is clear, then, that in the science of nature as elsewhere, we should try first to determine questions about the first principles. The naturally proper direction of our road is from things better known and clearer to us, to things that are clearer and better known by nature; for the things known to us are not the same as the things known unconditionally (haplôs). Hence it is necessary for us to progress, following this procedure, from the things that are less clear by nature, but clearer to us, towards things that are clearer and better known by nature.

Phys. 184a10–21

Our proper course with this subject as with others will be to present the various views about it, and then, after first reviewing the difficulties they involve, finally to establish if possible all or, if not all, the greater part and the most important of the opinions generally held with respect to these states of mind; since if the discrepancies can be solved, and a residuum of current opinion left standing, the true view will have been sufficiently established.

The Nicomachean Ethics

We must consider it, however, in the light not only of our conclusion and our premisses, but also of what is commonly said about it; for with a true view all the facts harmonize, but with a false one they soon clash.

The Nicomachean Ethics

Excellence is never an accident. It is always the result of high intention, sincere effort, and intelligent execution; it represents the wise choice of many alternatives – choice, not chance, determines your destiny.

The Nicomachean Ethics

The pleasures arising from thinking and learning will make us think and learn all the more.

The Nicomachean Ethics 1153a23

William James

A great many people think they are thinking when they are merely rearranging their prejudices.

The world we see that seems so insane is the result of a belief system that is not working. To perceive the world differently, we must be willing to change our belief system, let the past slip away, expand our sense of now, and dissolve the fear in our minds.

The art of being wise is the art of knowing what to overlook.

Mike Acton

The purpose of all programs, and all parts of those programs, is to transform data from form to another.

Different problems require different solutions.

If you have different data, you have a different problem.

If you don’t understand the hardware, you can’t reason about the cost of solving the problem

Everything is a data problem. Including usability, maintenance, debug-ability, etc. Everything

Solving problems you probably don’t have creates more problems you definitely do.

Latency and throughput are only the same in sequential systems.

Rule of thumb: Where there is one, there are many. Try looking on the time axis.

Rule of thumb: The more context you have, the better you can make the solution. Don’t throw away data you need.

Software does not run in magic fairy aether powered by the fevered dreams of CS PhDs.

Reason must prevail, like if anything is unreasonable for any reason, or imaginary, then it has to go.

Fred Brooks

Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won’t usually need your flowcharts; they’ll be obvious.

The Mythical Man-Month: Essays on Software Engineering (1975, 1995)

A little retrospection shows that although many fine, useful software systems have been designed by committees and built as part of multipart projects, those software systems that have excited passionate fans are those that are the products of one or a few designing minds, great designers.

No Silver Bullet

C.A.R Hoare

The language designer should be familiar with many alternative features designed by others, and should have excellent judgment in choosing the best and rejecting any that are mutually inconsistent… One thing he should not do is to include untried ideas of his own. His task is consolidation, not innovation.

The most important property of a program is whether it accomplishes the intention of its user

Alan C. Kay

Most ideas come from previous ideas.

The Early History Of Smalltalk

Rob Pike

Data dominates. If you’ve chosen the right data structures and organized things well, the algorithms will almost always be self-evident. Data structures, not algorithms, are central to programming.

Rule 1. You can’t tell where a program is going to spend its time. Bottlenecks occur in surprising places, so don’t try to second guess and put in a speed hack until you’ve proven that’s where the bottleneck is.

There’s nothing in computing that can’t be broken by another level of indirection.

When there is no type hierarchy you don’t have to manage the type hierarchy.

Fancy algorithms are slow when N is small, and N is usually small.

Niklaus Wirth

Reliable and transparent programs are usually not in the interest of the designer.

A Digital Contrarian Retires (1999)

… we do not consider it as good engineering practice to consume a resource lavishly just because it happens to be cheap

Project Oberon

Increasingly, people seem to interpret complexity as sophistication, which is baffling – the incomprehensible should cause suspicion, not admiration. Possibly this results from the mistaken belief that using a mysterious device confers [extra] power on the user.