Vocabulary

Since software and programming is a new frontier we need now language to be able to express ideas about it, instead of just mapping terminology from bridge-building. Otherwise we can get misled about how things really are, by broken analogies. The best example of this is Rich Hickeys talk about simple made easy.

What are some concepts in software and programming that we don't have a good name for? Try coining some new terms. Is there anything we can import to here from the c2 wiki?

Related Links
Other people have understood the important of this too e.g. the movement for not saying piracy or stealing but copying


 * Copying Is Not Theft - Question Copyright.
 * GNU words to avoid.
 * Bellman on "Dynamic Programming".
 * unmumble programming slang archive mostly jokes.

decomplect
To simplify by unweaving threads.


 * Antonym of complect.

Separation of Concerns
TODO: explain this.


 * Coined by Dijkstra in EWD447.

footgun
Related to: Shooting yourself in the foot.


 * http://www.toodarkpark.org/computers/humor/shoot-self-in-foot.html
 * http://archive.is/Kh8bK

boilerplate
related to bookkeeping code


 * https://en.wikipedia.org/wiki/Boilerplate_%28text%29
 * https://en.wikipedia.org/wiki/Boilerplate_code

cleanroom
Could be used to describe the debugging technique of comparing the output/trace of a working program against an in-development version.

Has two quite different meanings.


 * https://en.wikipedia.org/wiki/Cleanroom_software_engineering
 * https://en.wikipedia.org/wiki/Clean_room_design

over engineered
When you solve a problem with a rube goldberg machine.

endless march/upgrade treadmill
You have to upgrade to fix old bugs, upgrade provides new features that add new bugs. The result is software that is never stable and always has more and more bugs! Makes software soar in terms of linecount.

Keeping up to date on the latest upstream kernel will generally net all the bug fixes that have been created thus far, but with it of course brings completely new features, new code, new bugs, and new attack surface


 * Applies to the linux kernel
 * Applies to gcc.