Bootstrapping is not a trivial task. A Spellchecker Used to Be a Major Feat of Software Engineering is a reminder about the bootstrapping phase of software development for personal computing.
Here’s the situation: it’s 1984, and you’re assigned to write the spellchecker for a new MS-DOS word processor. Some users, but not many, will have 640K of memory in their PCs. You need to support systems with as little as 256K. That a quarter megabyte to contain the word processor, the document being edited, and the memory needed by the operating system. Oh, and the spellchecker.
…
Fast forward to today. A program to load /usr/share/dict/words into a hash table is 3-5 lines of Perl or Python, depending on how terse you mind being. Looking up a word in this hash table dictionary is a trivial expression, one built into the language. And that’s it. Sure, you could come up with some ways to decrease the load time or reduce the memory footprint, but that’s icing and likely won’t be needed. The basic implementation is so mindlessly trivial that it could be an exercise for the reader in an early chapter of any Python tutorial.
When I was going to school, the IBM 360 was the big machine. That had main storage often ran about a megabyte or less. That was when memory was little magnetic cores with lots of wires threaded through them. It always struck me as funny that this computer was built on the idea of 4 letter words – it was a 32 bit machine with byte addressable memory. It was the transition machine from discrete components to the integrated circuit. This is also the time when minicomputers, such as the PDP 11, showed up and Unix appeared. There was a significant difference between the business computing hardware and the academic stuff.
It was at the tail end of the IBM 360 product life that the PC showed up. That was an 8 bit PC with 64k of addressable memory and a couple hundred K available on floppy disk. That was the PC for VisiCalc and Electric Pencil. When the IBM PC came out with a 16 bit processor and 1 MB of addressable memory, the spreadsheet and word processor really started to stretch out.
One of the problems those of us who learned to write programs back then have today is to get a handle on the wealth of today’s computing environment. No, we don’t need to be anywhere near as careful with memory usage and processor limitations. These days, the languages for software development have constructions that handle many of the housekeeping chores that kept us busy in the past and there are libraries that encapsulate just about anything that has been done in the past.
Spell checkers make for a good example. At first, they were simply of the ‘find a match’ variety. Then they added the ability to guess at what you meant so they could suggest a correction. Then they became background processes that could help you as you typed in text. Contrast to grammar checkers which have a much more difficult task – or maybe facial recognition which is showing up in modern point and shoot cameras that recognize your family members to set priority on its automatic focus.
There are times when we should take a look at the innovation and invention that we take for granted. We live in an amazing time of growth in the intellectual realm.
Post a Comment