Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

After reading Paul Graham's essay Hackers and Painters and Joel Spolsky's Advice for Computer Science College Students, I think I've finally gotten it through my thick skull that I should not be loath to work hard in academic courses that aren't "programming" or "computer science" courses. To quote the former:

I've found that the best sources of ideas are not the other fields that have the word "computer" in their names, but the other fields inhabited by makers. Painting has been a much richer source of ideas than the theory of computation.

— Paul Graham, "Hackers and Painters"

There are certainly other, much stronger reasons to work hard in the "boring" classes. However, it'd also be neat to know that these classes may someday inspire me in programming.

My question is: what are some specific examples where ideas from literature, art, humanities, philosophy, and other fields made their way into programming? In particular, ideas that weren't obviously applied the way they were meant to (like most math and domain-specific knowledge), but instead gave utterance or inspiration to a program's design and choice of names.

Good examples:

  • The term endian comes from Gulliver's Travels by Jonathan Swift (see here), where it refers to the trivial matter of which side people crack open their eggs.
  • The terms journal and transaction refer to nearly identical concepts in both filesystem design and double-entry bookkeeping (financial accounting). mkfs.ext2 even says:

    Writing superblocks and filesystem accounting information: done
    

Off-topic:

  • Learning to write English well is important, as it enables a programmer to document and evangelize his/her software, as well as appear competent to other programmers online.
  • Trigonometry is used in 2D and 3D games to implement rotation and direction aspects.
  • Knowing finance will come in handy if you want to write an accounting package.
  • Knowing XYZ will come in handy if you want to write an XYZ package.

Arguably on-topic:

share|improve this question
add comment

closed as too broad by gnat, MichaelT, GlenH7, Dynamic, Dan Pichelman Jul 16 '13 at 13:32

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.If this question can be reworded to fit the rules in the help center, please edit the question.

5 Answers

up vote 3 down vote accepted

Architecture

I think one of the best examples of the terms and practices of another field making their way into software is that of the construction industry, especially architecture.

Not only does the term architecture itself line up well — being a combination of design and structure — but many analogies (and therefore lessons) can be drawn from the concept of building architecture and other practices of the construction industry.

Just one small example from Alan Coopers The Inmates are running the Asylum:

I read an interesting story in a Sunday supplement about an American couple who retired to Mexico. They purchased a lot on the outskirts of a large city and hired an American architect to design their dream home. They then hired a Mexican building contractor and turned the blueprints over to him. As construction proceeded, they were flabbergasted to find that the building wasn't turning out the way the architect had specified.

The blueprints showed the front wall of the house containing four windows whose manufacturer and part number were precisely specified. The owners discovered that the actual wall contained three windows from another maker with quite different appearance and size. When they queried the Mexican builder, he shrugged and said, "They're windows. The plan says windows go in this wall. What is the problem?"

The owners and architect were from one culture, sharing one set of values, and the builder came from another culture and valued aspects of the problem differently. No doubt he was able to procure the windows for much less money and effort, and-in his world-these considerations took precedence. The American owners and architect believed that the blueprints implied full and exact compliance. The Mexican builder believed that the blueprints were a suggestion, not a requirement. He believed that his imperatives of thrift and acquisition ease naturally outranked any exactitude in the specifications. He was sincerely trying to fulfill the architect's vision but was applying his own cultural filters-his own values-to the problem.

share|improve this answer
add comment
  1. Web UI design has its origins with print media

  2. Usability and user experience took much from psychology

  3. Design of imaging devices (which display a sequence of quickly changing images, frames) based on the observation of the human body specifics (image perception delay by a human eye) in medical studies

  4. Lambda-functions in programming languages are based on the Lambda calculus from mathematics

  5. The binary system (0s and 1s) owes its existence to the physics and electronics (inability to reliably distinguish between more than 2 potential states of an element). Additionally, the number 2 seems to manifest itself everywhere in the nature.

share|improve this answer
    
"Additionally, the number 2 seems to manifest itself everywhere in the nature." - Not 2, but 23! ;) –  back2dos Jan 13 '11 at 18:39
    
@back2dos: Why is so? –  user8685 Jan 13 '11 at 19:30
    
My Dad was in Print and Production; one of his manuals on layout and symbols for proofing was one of the most useful I've read for technically annotating UI design/describing UI changes. –  StuperUser Sep 6 '11 at 15:24
    
Also, for point 2 "The Design of Everyday Things" is a must read. –  StuperUser Sep 6 '11 at 15:25
add comment

Genetic algorithm from biological evolution, and it's branches.

Starting in 1957, the Australian quantitative geneticist Alex Fraser published a series of papers on simulation of artificial selection of organisms with multiple loci controlling a measurable trait. From these beginnings, computer simulation of evolution by biologists became more common in the early 1960s, and the methods were described in books by Fraser and Burnell (1970) and Crosby (1973). Fraser's simulations included all of the essential elements of modern genetic algorithms...

share|improve this answer
add comment

1) Good UI design connects psychology, print media concepts, typography, neuroscience, biology and arts.

2) Linguistic concepts (grammars, languages, ...) have been adopted and formalized by mathematics and CS.

3) Heuristics heavily borrow concepts from different sciences

  • Genetic algorithms: Biology
  • Simulated annealing: Forging, physics
  • Ant-colony optimization: Biology
share|improve this answer
add comment

Adding to the Semaphore example...the naval semaphore system specifies signals for letters, numbers, and "raising a red flag" to indicate a warning, such as dangerous weather. I have heard "flag" used a lot; perhaps this term comes from the use of flags for semaphore.

share|improve this answer
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.