378: Real Programmers
Title text: Real programmers set the universal constants at the start such that the universe evolves to contain the disk with the data they want.
This comic is a satire on the idea of a Real Programmer. To quote Wikipedia "...the computer folklore term Real Programmer has come to describe the archetypical 'hardcore' programmer who eschews the modern languages and tools of the day in favour of more direct and efficient solutions—closer to the hardware." The implication is that modern programmers are coddled by today's tools of the trade, which eschew detailed understanding for simple workflows.
The first figure is writing a piece of code when another programmer ridicules him for using GNU nano. Nano is a text editor - a program often used to edit the source code of other programs. It is basic and relatively easy-to-use, even having instructions displayed prominently at the bottom of the screen. He goes on to say that "REAL" programmers use Emacs. GNU Emacs is a popular editor known for its vast profusion of features and extensions to perform all sorts of functions beyond simple text editing, and is widely regarded as one of the best examples of software that succeeds despite being fully overtaken by feature creep. The comic continues from here as a series of programmers state progressively more obscure or outdated methods, culminating in the final programmer who claims that "real" programmers use butterflies.
His description of his rather surreal programming method is ludicrously complicated and would require an absurd amount of knowledge and forethought to pull off, bordering on omniscience. In the final panel, the Emacs programmer claims that there's an Emacs code to do that.
The characters present progressively more "old school" solutions to the problem of editing code:
- Emacs and Vim are both text editors still in relatively wide use, with complex user interfaces and a range of features. While useful, neither is particularly easy to get started using. This high barrier to entry is what limits them to the so-called "real programmers".
- ed is a line editor. While relatively simple, it is extremely awkward to use, being designed primarily for use on a teleprinter, not a computer screen at all. It does not even display the file the user is editing!
- cat is a Unix program that concatenates and outputs the contents of files; it's usually run from a Unix shell, which allows its output to be written or appended to a file. It isn't intended as an editor at all, but is convenient to display files. Actually editing files with it would be even less convenient than ed.
- Using a magnetized needle to flip bits on a hard drive requires nanometric precision and intuitive mastery of binary code, but in the early days of programming, people did use needles sometimes to fix bugs on punched cards.
When the final character suggests the utterly surreal idea of using butterflies, he is referring to the Butterfly effect, a "phenomenon whereby a minor change in circumstances can cause a large change in outcome" as illustrated in the short story A Sound of Thunder. The joke at this point relies on stretching the connection between the ideas of "difficult-to-use" and "requires detailed understanding of underlying principles," to suggest that not only do Real Programmers know everything about how computers work, but they know how to manipulate the ambient physical environment in elaborate ways to cause computers to do what they want, akin to performing trick shots that accomplish feats of programming.
The fact that Emacs already has a command for this simply exacerbates the other programmers' frustration with modern coding tools. For reference, Emacs commands are usually referred to by the keyboard sequence required to activate them, such as "C-x M-c" (Control-x Meta-c (this would by typed by holding control and pressing x, releasing both, then holding alt and pressing c, then releasing both)), though this exact key sequence is a bit different from most Emacs commands. The butterfly programmer saying "Dammit, Emacs" plays on Emacs' notoriety for its kitchen sink design approach of including all of the features and options that anybody might ever conceivably want. For example, later versions of Emacs actually added a totally useless "M-x butterfly" command as an easter egg, in reference to this very comic: see the YouTube demo.
The title text further suggests manipulating the universal constants in order to create a universe in which the required computer data will exist. Programming of this sort would require power and knowledge akin to the Abrahamic God.
According to the logic, the programmers shown may even represent the fulfillment of this master programmer's plan. The universe may have been designed in such a way that the programmer's ancestry would result in his parents, who would meet and have a child, who would learn programming and eventually find himself in a position where he undertakes the task of creating a program that fills the disk with the desired data. In tandem, of course, all of the people involved with creating and developing all the required hardware, software, raw materials, computer science, electricity, logic (etc., etc., etc.) would have to be part of the master plan. Put simply, it would probably be simpler just to use Emacs.
The use of a magnetized needle may also be a reference to the Apollo AGC guidance computer, whose instructions were physically written as patterns of wires looped around or through cylindrical magnets in order to record binary code.
- [A Cueball-like man sits at a computer, programming. Cueball stands behind him and looks over his shoulder.]
nano? Real Programmers use
- [Megan appears behind him.]
- Megan: Hey. Real Programmers use
- [A second Cueball-like man appears behind her.]
- Ed Cueball: Well, Real Programmers use
- [A third Cueball-like man appears behind him.]
- Cat Cueball: No, Real Programmers use
- [Hairbun appears behind him.]
- Hairbun: Real Programmers use a magnetized needle and a steady hand.
- [A fourth Cueball-like man enters, facing them all. We see him facing the last two Cueball-like men and Hairbun.]
- Butterfly Cueball: Excuse me, but Real Programmers use butterflies.
- [A Cueball-like programmer is standing and holding out a butterfly in front of his computer. The butterfly flaps its wings.]
- Butterfly Cueball (narrating off-screen): They open their hands and let the delicate wings flap once.
- [The next two panels are smaller, and the two texts below are written uninterrupted respectively above and below both panels. The first panel is the Cueball-like programmer with the butterfly, and above him four curved arrows pointing up or down. The second panel shows the upper atmosphere, with large clouds far below and the earth even further down. Also here are shown seven of the same type of arrows.]
- Butterfly Cueball (narrating off-screen): The disturbances ripple outward, changing the flow of the eddy currents in the upper atmosphere.
- Butterfly Cueball (narrating off-screen): These cause momentary pockets of higher-pressure air to form,
- [Also the next two panels are smaller and the texts below are written uninterrupted above both panels. The first panel shows the atmosphere, again with clouds, and four parallel lines coming from above, and then they begin to merge, getting quite close at the bottom of the panel. The second panel shows the four lines merging on a driver platter.]
- Butterfly Cueball (narrating off-screen): Which act as lenses that deflect incoming cosmic rays, focusing them to strike the drive platter and flip the desired bit.
- [All the programmers who have commented so far stand in the order they have commented facing the last Cueball-like man, who slaps his forehead.]
- Cueball: Nice. 'Course, there's an emacs command to do that.
- Cat Cueball: Oh yeah! Good ol'
C-x M-c M-butterfly...
- Butterfly Cueball: Dammit, Emacs.
add a comment! ⋅ add a topic (use sparingly)! ⋅ refresh comments!