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: 592
education
|Inspiration
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:
- The Monad class in Haskell is based on a concept by the same name from category theory. Actually, Monads in Haskell are monads in the category of Haskell types and functions. Whatever that means...
© Programmers or respective owner