Thursday, November 05, 2009
The dinosaur that I am
Wlofie and I discussed The Question for a few hours today. Wlofie's answer was something along the lines of: a tool is a crutch when it's removed from a practitioner who can not conceive of a way of continuing their job without it.
It's a nice definition, and it certainly fits my biased viewpoints on the subject, but in thinking about it longer, to most programmers, even a simple text editor is a crutch.
Imagine being given a 1982 era IBM PC with a floppy drive and a single disk that contains a
bootable MS-DOS system with IO.SYS
,
MSDOS.SYS
and COMMAND.COM
(the minimum required to
boot to a usable (for various values of “usable”) system at the time) and
a stack of reference materials. Your goal (assuming you are a programmer) is
to write a program that does something simple, like, play a game (however
badly) of tic-tac-toe. No editor.
No assembler. No compiler. No linker. Just COMMAND.COM
and a
stack of reference materials.
It's not impossible. Just
difficult and insanely tedious. First order of business would be to
write a program (by typing binary data directly from the keyboard to a
.COM
file) that accepts octal codes [1] and outputs the binary values
(I don't even need to deal with files as file redirection can help
here).
From there, I can hand write a simple Forth environment and using my “octal to binary conversion” program, enter it in and debug it. Once that's working, I can bootstrap myself further.
Would I ever seriously do such a thing? Well … I doubt it, unless, perhaps, if I ever felt the need for a programmer's version of survival camp (dropped in the middle of the Rockies with nothing more than the clothes on my back and a rusty pocket knife—see you a month!) but more importantly, I could do it.
And it's entirely conceivable that I'm overintellectualizing this into
the ground (or I'm upset that kids programmers today just have no
concept of what it's like to walk eight miles uphill in 10′ snow
drifts to school program in only 16K without benefit of a full-screen editor).
- Why octal and not hexadecimal? Because the instruction set just makes more sense when viewed octally (that is, in groupings of eight) than hexadecimally (in groupings of sixteen), which would make hand-assembly of instructions easier to do. [Back]