I hear, O Ismael, how they laud is only as my loud is one.
If Nekulon shall be havonfalled surely Makal haven hevens. Go to, let us extell Makal, yea, let us exceedingly extell.
The Program
Slytherins Wake is a JavaScript program for making slithering snakes. Its main feature is a constrictor function called
Snake
, which programmers may summon to create Slytherin snakes of all sorts of shapes, colors, and sizes.If you’re a Harry Potter fan, then you know that Slytherin is one of the four houses of the Hogwarts School of Witchcraft and Wizardry. Like their emblem, the snake, Slytherins are sleek, powerful, and frequently misunderstood. Slytherins sleep well, listening to the lake water lapping against the windows at night. (Is it the wake of a water snake?) If a vanquished snake is sleeping, he may be awoken using the incantation
TheOneWhoseNameShallNotBeSpoken.wake()
.You will become attached to snakes you make with Slytherins Wake, and the snakes you make will respond to your commands. If you’ve played Slither.io or any of the countless variations of the classic video game commonly known as Snake, then you know that a snake that turns into itself dies. Keep watch and stand guard over the bodies of your valiant friends. We who hear Catholicism everywhere are all in this together.
Literate Programming
In the sections that follow, we deconstruct Slytherins Wake using our own take on a style of exposition called structured documentation. Also known as literate programming, structured documentation is exemplified, in grand fashion, in TEX: The Program, a 594 page book composed by Donald E. Knuth (pronunced Ka-NOOTH), who, it is only fair to tell you, is a man of infinite-resource-and-sagacity. Published in 1986 by Addison Wesley, TEX: The Program explains the algorithms of a document compiler called TEX, which, we must not forget, rhymes with the word blecchhh. Donald Ervin Knuth—just only Don to his friends—composed TEX to produce typesetting of high quality, especially beautiful books like his books about TEX, which, we must not forget, rhymes with the word blecchhh: It’s the ‘ch’ sound in Scottish words like loch or German words like ach; it’s a Spanish ‘j’ and a Russian ‘kh’. If we we say it correctly to our machines, their screens may become slightly moist. Have you forgetting? If you have, remember to say it loud. Remember, say it loud! For heaven’s sake, let’s not compound our ignorance with your inaudibility.
On page iix of TEX: The Program, Knuth summarizes the ins and outs of his epic demonstration of literate programming.
The program in this book was prepared with the WEB system of structured documentation. A WEB program is a Pascal program that has been cut up into pieces and rearranged in an order that is easier for a human being to understand. A Pascal program is a WEB program that has been rearranged into an order that is easier for a computer to understand.
In other words, WEB programs and Pascal programs are essentially the same kinds of things, but their parts are arranged differently. You should be able to understand a Pascal program better when you see it in WEB form, if the author of the WEB form has chosen a good order of presentation.
Before you try to read a WEB program, you should be familiar with the Pascal language. [...]
A WEB program consists of numbered sections: First comes §1, then §2, and so on. Each section is intended to be small enough that it can be understood by itself, and the WEB format indicates how each section relates to other sections. In this way, an entire program can be regarded as a web or network, consisting of little pieces and interconnections between pieces. The complex whole can be understood by understanding each simple part and by understanding the simple relationships between neighboring parts.
Large software programs are inherently complex, and there is no ”royal road” to instant comprehension of subtle features. But if you read a well-written WEB program one section at a time, starting with §1, you will find that its ideas are not difficult to assimilate.
Knuth uses TEX and other tools to write literate programs. We’re no Knuth. Our tools are deferent, and we’re trying to tackle a JavaScript program, not a Pascal piece. We’re also foisting Slyterins Wake onto the Web (not to be confused with a WEB), not presenting it in a book. Nevertheless, Antzo and I can still tilt at turbines. We just have to wipe our glosses with what we knows.
We don’t expect all our readers to be JavaScript fanatics. We’re fans, but we’re not fantastic. Therefore, along with our description of Slytherins Wake, we refer you to resources that we like to abuse to fill gaps in our misunderstandings of language.
Sadly, we’re no Duane Bibby either. In fact, we’re not even plural. We’ve tried to liven things up a little with allusions and alliterations in lieu of illustrations. This certainly isn’t what Don had in mind when he coined the phrase literate programming, but we don’t think hell massacore reapprove from silicone Californica on that side of the squiggly crumpus of Stumpfurd Unoversatree to prickaflight with us.
This the way to the museyroom. Mind your hats goan in![Click.]
Addendum
Article: “Interview with Donald Knuth”
by Donald E. Knuth and Andrew Binstock,
InformIT, Pearson Education (25 Apr 2008):
http://www.informit.com/articles/article.aspx?p=1193856.Andrew: One of the few projects of yours that hasn’t been embraced by a widespread community is literate programming. What are your thoughts about why literate programming didn’t catch on? And is there anything you’d have done differently in retrospect regarding literate programming?
Donald: Literate programming is a very personal thing. I think it’s terrific, but that might well be because I’m a very strange person. It has tens of thousands of fans, but not millions.
In my experience, software created with literate programming has turned out to be significantly better than software developed in more traditional ways. Yet ordinary software is usually okay—I’d give it a grade of C (or maybe C++), but not F; hence, the traditional methods stay with us. Since they’re understood by a vast community of programmers, most people have no big incentive to change, just as I’m not motivated to learn Esperanto even though it might be preferable to English and German and French and Russian (if everybody switched).
Jon Bentley probably hit the nail on the head when he once was asked why literate programming hasn’t taken the whole world by storm. He observed that a small percentage of the world’s population is good at programming, and a small percentage is good at writing; apparently I am asking everybody to be in both subsets.
Yet to me, literate programming is certainly the most important thing that came out of the TeX project. Not only has it enabled me to write and maintain programs faster and more reliably than ever before, and been one of my greatest sources of joy since the 1980s—it has actually been indispensable at times. Some of my major programs, such as the MMIX meta-simulator, could not have been written with any other methodology that I’ve ever heard of. The complexity was simply too daunting for my limited brain to handle; without literate programming, the whole enterprise would have flopped miserably.
If people do discover nice ways to use the newfangled multithreaded machines, I would expect the discovery to come from people who routinely use literate programming. Literate programming is what you need to rise above the ordinary level of achievement. But I don’t believe in forcing ideas on anybody. If literate programming isn’t your style, please forget it and do what you like. If nobody likes it but me, let it die.
On a positive note, I’ve been pleased to discover that the conventions of CWEB are already standard equipment within preinstalled software such as Makefiles, when I get off-the-shelf Linux these days.
Book: James Joyce
by Richard Ellmann,
Oxford University Press (1959): 620-621.My dear Joyce,
Joyce was not at all offended, and did not despair of converting Wells in subsequent conversations.I’ve been studying you and thinking about you a lot. The outcome is that I don’t think I can do anything for the propaganda of your work. I’ve an enormous respect for your genius dating from your earliest books and I feel now a great personal liking for you but you and I are set upon absolutely different courses. Your training has been Catholic, Irish, insurrectionary; mine, such as it was, was scientific, constructive and, I suppose, English. The frame of my mind is a world wherein a big unifying and concentrating process is possible (increase of power and range by economy and concentration of effort), a progress not inevitable but interesting and possible. That game attracts and holds me. For it, I want language and statement as simple and clear as possible. [...]
Now with regard to this literary experiment of yours. It’s a considerable thing because you are a very considerable man and you have in your crowded composition a mighty genius for expression which has escaped discipline. But I don’t think it gets anywhere. You have turned your back on common men, on their elementary needs and their restricted time and intelligence and you have elaborated. What is the result? Vast riddles. Your last two works have been more amusing and exciting to write than they ever will be to read. Take me as a typical common reader. Do I get much pleasure from this work? No. Do I feel I am getting something new an illuminating as I do when I read Anrep’s dreadful translation of Pavlov’s badly written book on Conditioning Reflexes? No. So I ask: Who the hell is this Joyce who demands so many waking hours of the few thousands I have still to live for a proper appreciation of his quirks and fancies and flashes of rendering?
All this from my point of view. Perhaps you are right and I am all wrong. Your work is an extraordinary experiment and I would go out of my way to save it from destructive or restrictive interruption. It has its believers and its following. Let them rejoyce in it. To me it is a dead end.
My warmest good wishes to you Joyce. I cant [sic] follow your banner any more than you can follow mine. But the world is wide and there is room for both of us to be wrong.
Yours,
H. G. WellsCriminy! Exercises?!
It’s the old tune. It bears repeating.
The exercises in this set […] have been designed for self-study as well as classroom study. It is difficult, if not impossible, for anyone to learn a subject purely by reading about it, without applying information to specific problems and thereby forcing himself to think about what has been read. Furthermore, we all learn best the things that we have discovered ourselves. Therefore, the exercises form a major part of this work; a definite attempt has been made to keep them as informative as possible and to select problems that are enjoyable to solve.
- Derrida, Deconstruction, Destruktion, Différance, Discourse, DIY
What are these two English words?
They are only half English, if you will, if you will hear them,
that is, do a little more than hear them: read them.
I take them from Finnegans Wake (258.12):
HE WAR—JACQUES DERRIDA, “Two Words for Joyce” (Geoffrey Bennington translation, 2013)
https://en.wikipedia.org/wiki/Deconstruction (13 Jan 2019)
Originated by the philosopher Jacques Derrida, deconstruction is an approach to understanding the relationship between text and meaning.
Derrida's original use of the word "deconstruction" was a translation of Destruktion, a concept from the work of Martin Heidegger that Derrida sought to apply to textual reading. Heidegger's term referred to a process of exploring the categories and concepts that tradition has imposed on a word, and the history behind them.
Derrida states that deconstruction is not an analysis in the traditional sense.[26]:3 This is because the possibility of analysis is predicated on the possibility of breaking up the text being analysed into elemental component parts. Derrida argues that there are no self-sufficient units of meaning in a text, because individual words or sentences in a text can only be properly understood in terms of how they fit into the larger structure of the text and language itself. For more on Derrida's theory of meaning see the article on différance.
https://en.wikipedia.org/wiki/Diff%C3%A9rance (13 Jan 2019)
Différance is a French term coined by Jacques Derrida. It is a central concept in Derrida's deconstruction, a critical outlook concerned with the relationship between text and meaning. The term différance means "difference and deferral of meaning."
We reside, according to this philosophy, in a web of language, or at least one of interpretation, that has been laid down by tradition and which shifts each time we hear or read an utterance—even if it is the same utterance. Différance and deconstruction are attempts to understand this web of language, to search, in Derrida's words, for the "other of language".[15] This "other of language" is close to what Anglophone Philosophy calls the Reference of a word. There is a deferment of meaning with each act of re-reading. There is a difference of readings with each re-reading. In Derrida's words, "there is nothing outside the [con]text" of a word's use and its place in the lexicon. Text, in Derrida's parlance, refers to context and includes all about the "real-life" situation of the speech/text (cf. speech act theory).
https://en.wikipedia.org/wiki/Structure,_Sign,_and_Play_in_the_Discourse_of_the_Human_Sciences (13 Jan 2019)
Structure, Sign, and Play in the Discourse of the Human Sciences (French: La structure, le signe et le jeu dans le discours des sciences humaines) was a lecture presented at Johns Hopkins University on 21 October 1966 by philosopher Jacques Derrida. The lecture was then published in 1967 as chapter ten of Writing and Difference (French: L'écriture et la différence).
"Structure, Sign, and Play" identifies a tendency for philosophers to denounce each other for relying on problematic discourse, and argues that this reliance is to some degree inevitable because we can only write in the language we inherit. Discussing the anthropology of Claude Lévi-Strauss, Derrida argues that we are all bricoleurs, creative tinkerers who must use the tools we find around us.
https://en.wikipedia.org/wiki/Bricolage (13 Jan 2019)
In the arts, bricolage (French for "DIY" or "do-it-yourself projects") is the construction or creation of a work from a diverse range of things that happen to be available, or a work created by mixed media.
In art, bricolage is a technique or creative mode, where works are constructed from various materials available or on hand, and is seen as a characteristic of many postmodern works.
In the discussion of constructionism, Seymour Papert discusses two styles of solving problems. Contrary to the analytical style of solving problems, he describes bricolage as a way to learn and solve problems by trying, testing, playing around.
In her book Life on the Screen (1995), Sherry Turkle discusses the concept of bricolage as it applies to problem solving in code projects and workspace productivity. She advocates the "bricoleur style" of programming as a valid and underexamined alternative to what she describes as the conventional structured "planner" approach. In this style of coding, the programmer works without an exhaustive preliminary specification, opting instead for a step-by-step growth and re-evaluation process. In her essay "Epistemological Pluralism", Turkle writes: "The bricoleur resembles the painter who stands back between brushstrokes, looks at the canvas, and only after this contemplation, decides what to do next."[16]
Exercises
- What is a bit?
- What is a computer program?
- How does a digital computer program emerge from a sequence of bits when a bit has no intrinsic meaning?
- What is the difference between Knuth’s idea of structured documentation or literate programming and Derrida’s idea of deconstruction?
- Try to understand and explain, using your own words, Douglas Hofstadter’s idea of a strange loop.
- Comment on the loopiness of Slytherins Wake.