[plt-scheme] Re: Novels and programs

From: Neil Toronto (ntoronto at cs.byu.edu)
Date: Tue Feb 17 22:38:32 EST 2009

YC wrote:
> On Tue, Feb 17, 2009 at 9:21 AM, <hendrik at topoi.pooq.com 
> <mailto:hendrik at topoi.pooq.com>> wrote:
>     The thing is, there are good writers in both camps.
>     Are there similar phenomena in computer programming?
> I can find similar phenomena within myself (not saying I am a good 
> developer though as that's for others to judge) :)

I've written both ways for research papers, fiction, and programs, and 
I've noticed the same effects in all three. For me, outlining is great 
when I have a firm grasp of the high-level ideas and flow before I 
start. Outlining often helps me figure that out as well.

But there are cases where I just don't know enough before I start. See 

In all three domains, I think rigid outlining/planning bends whatever 
elements you *didn't* outline to the whims of the elements you *did* 
outline. You end up with characters that are puppets rather than people, 
research papers that are about the wrong subject, and programs you 
didn't really want.

Conversely, not outlining or planning leads to rambling and inconsistency.

> But there are also situations, most often when tackling an 
> unfamiliar problem domain...

Hear hear!

I'm making a DSL for a very rich problem domain that I'm quite familiar 
with. I chose to make a language because it opens up exciting 
possibilities, but I don't know what all of them are yet!

Since I've just begun to explore what can be expressed in this new and 
exciting family of languages, I can't really write enough test cases for 
test cases to drive development. (If I used only current practice, I'd 
end up with a broken interpreter comprised of special cases. Boo.) I 
don't know the available, desirable and/or necessary properties, so I 
can't develop by aiming for ideal properties.

Outlining? Don't make me laugh. I need to discover what problems need to 
be solved first. That's why I'm writing an interpreter!

Chances are I'll rewrite everything at least ten more times. Then I'll 
scrap it all and write a new one, starting from an outline. :)


Posted on the users mailing list.