Monday, October 24, 2011

Toolstrapping is everywhere - can you see it?

Jacques Mattheij introduces an evocative term: toolstrapping: "Whatever tool you are building, you need that tool to build the tool."

One of the reasons behind the continuing success of C seems to be that, by virtue of it being the standard programming language, there's no toolstrapping involved in using C (because it's already been done for you).

In the world of Scheme, we have the phenomenon that most Scheme implementations are written in Scheme, eternally perpetrating Scheme's sillier parts.

And people who say that plain text is somehow natural or native to computing simply ignore the toolstrapping involved in plain text: your quaint Unix is already toolstrapped up the wazoo for handling plain text.

The browser is a chance to raise the toolstrap bar: from plain text to hypermedia. The window of opportunity closes once we're able to run Emacs in X11 in the browser.


John Shutt said...

Re plain text, I note that everything today is toolstrapped. The first computer I learned on (using a vintage BASIC) was a PDP-8E minicomputer; it had toggle switches and lights across the front, so one could, if one chose, directly access the binary contents of the computer. Anything above that level is toolstrapped.

But I maintain plain text, being a sequence of symbols, is inherently simple, and therefore advantageous.

In a related vein, I recall an interview some years ago (sometime in the 80's, I'll guess) with someone representing the Indian programming community. The US interviewer asked about the Indian software industry's competitiveness in the future, obviously expecting a comparison with the US software industry. The reply was that India has a fundamental programming advantage over China because India has a strong historical tradition of using an alphabet.

Manuel Simoni said...

"plain text, being a sequence of symbols" made something click for me. This description shows the appeal of plain text, but also its hard limits: contrast a "sequence of (non-composable) symbols" with Alan Kay's "(encapsulated, abstract, self-displaying) turtles all the way down".

John Shutt said...

Which, in turn, made me think of this :-).

Manuel Simoni said...

Oh! This reminded me of Why the "currency" in the the meta-currency project?: we change our focus from the information tokens, to the flows themselves. We begin to actually be able to see these flows [...] and how the information tokens just help us interact with the flows.

Mathnerd314 said...

But what is a browser? A program designed to turn sequences of plain text symbols into a structured page.

And how do people write web pages? Sure, there are some WYSIWYG editors, but the vast majority of sites are written as more plain text.

The web is not the answer to your question, although it is the answer to some other important questions.

dmbarbour said...

Toolstrapping is the whole reason I got into language design. I needed a language to build my vision. I tried Scheme, but it was counterproductive with respect to distribution, concurrency, and security.

John Shutt said...

Come to think, toolstrapping is to some extent why I got into language design, too. I have in mind a software system or two I'd like to develop, at least in prototype, myself (as the most efficient way to explain what I have in mind), which are simply too vast for one human being. Unless, of course, that one human being is using a programming language with immense abstractive power.