Log in

No account? Create an account
entries friends calendar profile Elf Sternberg's Pendorwright Projects Previous Previous Next Next
The DIM Epiphany - Elf M. Sternberg
The DIM Epiphany

When I was 13 years old, I laid my hands on my first true computer. It was a DEC PDP-11/44, later upgraded to a PDP-11/70, running RSTS/E and the BASIC/PLUS shell environment. Live every teenage boy, I started out by writing video games. Bad ones, naturally, since all we had was the ANSI escape codes on a black-and-white monitor. And while my code kinda worked, there was a statement in the BASIC language that escaped my insight. DIM.

DIM A(100)

I really didn’t “get” what this statement meant or why it was necessary. Indexing didn’t make any sense to me at all. There wasn’t anyone to explain it to me, and the magazines and books I had weren’t helping. It was literally a year before I finally had an epiphany: DIM was creating a row of boxes in which to store things, and the index numbr let me say which box I wanted. Variables were no longer just storing things; they were storing things that pointed to other things.

I had to visualize it before I understood it.

Djikstra once said that “As potential programmers, students who have had prior exposure to BASIC are mentally mutilated beyond hope of reconstruction.” While that may sound a little harsh, I suspect there’s some truth to it. For years that need to be able visualize what a program was doing before I could trust that it was correct hampered me from moving forward with a lot of different and interesting projects. To this day, I still feel like I need concrete, working examples of something before I understand what it’s doing.

It gets worse when I’m working with highly abstract material. Learning to trust that singly linked lists do what they’re supposed to do was actually hard for me. It took more than a dozen tries, and to this day if we get past five links of responsibility I have to find a way to abstract the thing I’m working on into a singular concept, beating it into my brain that it’s okay, that chunk of code is going to do what I want it to. I want to know down to the electrons flowing through the wires what’s going on with my code.

A friend of mine, a highly accomplished mathematician in his own right, is fond of the notion of notation as a tool for thought, and that getting past the need to visualize is a critical stage in mathematical thinking. That’s probably true, and I fear I’ll never get past that critical stage. Indeed, at my age, it may already be too late.

That’s not going to stop me from trying, of course. I am not going to treat programming as applied demonology, which is what most developers do these days.  Giving is just not in my nature.

2 comments or Leave a comment
sirfox From: sirfox Date: January 8th, 2017 04:30 pm (UTC) (Link)
Just starting high school, just over a quarter century ago, I was interested to learn that there were programming classes. (this was 1990, it was BASIC and Pascal on apple ][e emerald-monochrome monitors with a luxurious TWO 5.25" disk drives each.)

I knew that my brain was going to be suited to something techy or scientific. I'm really glad i had the chance early on that...


I still remember one teacher chanting "topdown design! Stepwise refinement!" Honestly, that's MOST of what I remember, clearly, at least, besides few BASIC commands, and all i remember of pascal was that it was too many goddamned parentheses.

I had a better affinity with the core sciences (bio/chem/physics) anyway, and I've turned that into two degrees and a relatively successful career in biopharma/biotech. Programming does keep creeping in, my last job was my first time trying to teach a robot how to do multiplate pipetting assays.

At least now it's evolved out of some of the mentally scarring early stages where the Graphical part of the GUI was actually a gooey GUI; namely your brain. It was your imagination, and heaven help anybody who couldn't build this new kind of infinitely nesting Magical Cupboard of Curiosity in their imagination, (my best analogy for the epiphany you described) because there was no intuitive way the stuff on the screen was going to make sense like that.

Now we've moved that to a drag and drop interface on a screen we can all see, that will scream at you if you build a stupid recursive loop somewhere, before you even try to start. So, progress...
resonant From: resonant Date: January 8th, 2017 04:55 pm (UTC) (Link)
Even if we were irreparably harmed with learning BASIC, we at least were taught good practices with conserving memory and operations.
2 comments or Leave a comment