Profile picture
Arvind Narayanan @random_walker
, 11 tweets, 4 min read Read on Twitter
Have you ever wondered why the meaning of sorting in computing (ordering or ranking) is different from its everyday meaning (dividing into piles or categories)? The answer has to do with the history of sorting going back 130 years and turns out to be really interesting.
Here’s an IBM card sorter (probably a type 083 from the 1950s). It is sorting punch cards into 10 piles based on a particular digit (units digit, tens’ digit, etc.) The operator can specify which digit/column to sort on by turning a knob.
Suppose each card has a 3 digit number, and we do 3 passes through the machine — first sorting the unit digit, then tens, then hundreds. After each pass we collect the cards from the piles in order. Voila — the cards are now numerically ordered! This is the radix sort algorithm.
The sorter is an electro-mechanical system. It has no electronics. The human and machine together execute algorithms to perform computations. The machine is only directly capable of sorting-as-in-categorizing, but we can use it for sorting-as-in-ordering. Elegant!
These beasts have a fascinating history. Herman Hollerith invented an early version, along with tabulating machines, for the US Census circa 1890. They dramatically cut down on data processing time and expense. Other government agencies soon adopted them. en.wikipedia.org/wiki/Tabulatin…
When governments adopt technology that brings new capabilities—or simply results in substantial labor savings—it shifts the balance of power. IBM machines were used for running concentration camps in Nazi Germany and Japanese internment camps in the US. en.wikipedia.org/wiki/IBM_durin…
Today we debate the ethics of using AI in military and law enforcement contexts (drones, body camera face recognition, etc.) but it’s worth remembering that even the humble sort algorithm once had similarly profound effects!
Here’s another neat pre-digitial-era solution for something that is trivial with computers today. To be able to quickly find words that end with a given suffix or rhyme with a given word, create a index of words spelled in reverse.
I’m collecting examples of innovative ways in which computing was done before computers. I didn’t learn these in CS classes but would love to incorporate them into my own teaching. If you come across other examples (I'm sure there are hundreds!) please send them my way. 🙏
UPDATE: there's a whole book about computing before computers, and it's freely available online. ed-thelen.org/comp-hist/CBC.…
This is what I'm going to be reading for the next few days 😃
Punch cards go back 200–300 years and were invented to automate the weaving patterns in looms. Important step in the early industrial revolution. Perhaps the first example of what we'd consider programming today. Computing history is endlessly fascinating.
en.wikipedia.org/wiki/Jacquard_…
Missing some Tweet in this thread?
You can try to force a refresh.

Like this thread? Get email updates or save it to PDF!

Subscribe to Arvind Narayanan
Profile picture

Get real-time email alerts when new unrolls are available from this author!

This content may be removed anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member and get exclusive features!

Premium member ($3.00/month or $30.00/year)

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!