Script for Capt. Abstraction/Sgt. Spaghetticode Encounter
at the end of the 6.001 symbolic differentiation lecture.
[Lecturer has previously put up symbolic differentiator code that uses lots of data abstraction.]
Lecturer: [A few sentences on the virtues of abstraction.] In short, the benefits of abstraction are undeniable.
Sgt. Spaghetticode: [From the back of the room] I deny that, Mr. Lecturer! [Runs down stairs of lecture hall waving overhead sheet] Hold everything! Stop the lecture! Hold on here!
Lecturer: Oh no! I was afraid this might happen. It's Sgt. Spaghetticode!
Sgt: [Puts up alternative symbolic differentiator] Check out this version of the symbolic differentiator! It's shorter, more concrete, and doesn't need all the muss and fuss of extra procedures. What do you say to that, Mr. Lecturer, sir?
Lecturer: [nonplussed] Well, I'm not sure. I've already presented a cogent argument. What could I possibly say to change your mind? I guess I feel a little bit helpless in this situation ...
Capt. Abstraction [disguised as a mild-mannered student in the lecture hall, stands up from seat] I'll help you Mr. Lecturer!
Lecturer: But how can you help me? You're just a mild-mannered student!
Capt: I may look like "just" a student, but in dire situations like this I change from my mild-mannered appearance [put on mask] into none other than [take off shirt/coat to reveal superhero outfit] Captain Abstraction!
[Wait for class response to die down.]
[To Sgt.] Well, well --- if it isn't my old arch-nemesis Sgt. Spaghetticode trying to subvert the pure minds of these innocent 6.001 students. But wielding my trusty Abstraction Barrier [lift shield-like barrier; Sgt. shrinks back in fear.] I can readily protect them from you and the vile concrete programming style that you stand for. Away, you evil one, away! [Sgt. runs screaming up the stairs.]
[To students] There's a lesson here, class. You should never succumb to the temptations of Sgt. Spaghetticode! Always be sure write your code in an abstract style that [point to shield] shields the client of a data structure from the implementer. I'll be watching you. And if you should ever write something gross like this [points to Sgt.'s code], I'll be sure to flag your with this mark of public dishonor [put "abstraction violation" transparency on top.]
[To lecturer and students] My job here is now done. If any of you ever require my assistance again, don't hesitate to call for [shouts as leaving room] Captain Abstraction!