Programming concepts taken from the arts and humanities

Posted by Joey Adams on Programmers See other posts from Programmers or by Joey Adams
Published on 2010-12-27T04:59:55Z Indexed on 2010/12/27 5:58 UTC
Read the original article Hit count: 561

Filed under:
|

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 Tom 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:

© Programmers or respective owner

Related posts about education

Related posts about Inspiration