Re: Programmers Shouldn't Touch the Source
Posted: Nov 9, 2005 3:16 PM
> > > Every article that begins with the author
> > > expressing wonder that Unix has survived for so long
> > > immediately suspicious; I think the author is either
> > > inexperienced in the real world, unable to learn
> > > something difficult, or a crank.
> > I don't understand what you refer to here, because I
> > find anything of this sort in Christopher's blog, or
> > linked-to article. Could you provide a quote?
> My comment was about Mr. Wilson's article, not any of Mr.
> Diggins' postings. I'm sure you run across articles and
> blog postings that begin by wondering why text files,
> Unix, vi, emacs, C, what have you have hung on for so
> long, followed by the author proposing a better whiz-bang
> solution. What they often miss is that the longevity and
> hardiness of the simple formats and tools is the reason
> for their continued usefulness and adaptibility. Mr.
> Wilson attributes the persistence of text files and vi to
> aging stick-in-the-mud programmers like me. I attribute
> the persistence (and ongoing adoption by lots of young
> programmers every day) to their usefulness. That's why I
> predicted that in ten years I (and lots of other
> programmers) will still be saving text files of source
> code from vi and its like, and XML will find its proper
> place as a replacement for proprietary binary EDI
There may be a lot to that. As the "Pragmatic Programmers" have pointed out (in the chapter "The Power of Plain Text"): A common standard of information storage and exchange, means that tools from anywhere can work together, if they use that common standard. Plain text is one such universally understood standard.
> > You may scoff of this, but I also think this may be the
> > "next big thing". A lot of indicators point in that
> > direction, such as numerous research projects (several
> > links were given in a posting by Christopher),
> > on "generative programming", etc.
> When any of that moves beyond research projects into
> something useful I'll gladly change my mind. The
> disconnect between what researchers do and what happens in
> the world of real data and real programs is pretty big.
Yes, but remember that things like high-level languages, OO, and generic programming, were once "research projects", as well. :) But, yes, so far, it's mostly research. I didn't say "This is the biggest thing", or something like that. I just find it interesting, and that it _may_ become a big thing.
When I first read about "generative programming" (in the book by the same name - quite a lot to read, but, to me, very rewarding), and in particular the example of "Intentional Programming" (Microsoft's research project), it was an "a-ha!"-moment for me. You see, many years ago (15-20) I played with the idea of a language where you could define your own language (keywords, etc.). I didn't really pursue this idea further, but when I read about IP, it was, like, "They've done it!" :)
One really hard part is how to present a meaningful interface to the user. The AST of even a moderate size program can be very complex, and the structure may easily be lost in a sea of details.
> It was Mr. Wilson who offered XML as an alternative to
> text and ridiculed aging programmers and their devotion to
> text-based tools. The original posting by Mr. Diggins
> offered XML as a structured alternative to plain text. I
> don't know what the deal is with "tree structures" that
> keeps coming up. An outline (in text) can, for example,
> represent hierarchies. What do tree structures have to do
> with program source code?
From what I understand, you can more or less represent a program in such a structure (an AST). However, there may of course be links between the nodes, across the tree.
> > What you talk of as "personalized Towers of Babel",
> > may call a DSL.
> A DSL is great as long as it stays in its specific domain.
> What Mr. Wilson and Mr. Diggins describe is DSLs released
> into the wild.
What I've read of projects like these, is that they are more of a "meta-language", i.e. a language to define a language (such as a DSL).