Monday, June 09, 2008 11:38 AM
Comments About Flat Files
Comments About Flat Files
My last blog post got a lot of reddit attention this weekend. I want to thank all of the posters with constructive comments. Open discussion like this is what makes the Internet great. I would also like to take a moment to discuss some of the ideas brought forth by the comments I’ve received both on my blog and on reddit.
Yes, I work for a Microsoft shop and actually get paid to write software. No, I don’t feel bad about it. It’s obvious that the majority of the comment posters didn’t read anything beyond the title of my post. I’m not going to bother mentioning these posts further as they are only flamebait and not worth my time.
It’s Not an Easy Problem
I do agree that the problem would be extremely hard for a single programmer to tackle. However, given a medium sized team of researchers, I think a major company could have a very usable product within a few years time. Of course, any project’s success is dependent on adequate project management and a host of other factors.
Smalltalk has had a lot of time to make it to the mainstream but for some reason, it never made it. It could be the lack of a really solid IDE. It could be that Smalltalk has a lot of other ideas built into it that make it hard to write or distribute certain types of software. Perhaps it's just too different from what most programmers are used to. I don’t think it is dynamic enough to do everything I’ve been wishing for but I do agree that Smalltalk is really cool and I will spend more time playing with it.
I think it is arguable that in choosing a Turing complete programming language you are making a tradeoff of only what could be considered arbitrary choices. The real question is where do you draw the line? Is it necessary to have everything be arbitrary? In that case, your only option is to write your own language. I understand that a programmer might be attached to the particular arbitraries in a particular language. Wouldn't they be worth leaving behind if something significantly better were to come along?
No Flat File Left Behind
A few posters seemed to think I want to somehow switch over to a “no flat file left behind” methodology tomorrow. I wanted to frame the idea as something that would be interesting to research and play with. I don’t think we are ready now. Don’t worry guys and gals, I’m not some boogeyman who is going to come take away all of your comfortable tools and force you into new ways of doing things.
A Couple of Specific Comments
Jerf is right in that currently code is kept as “Human optimized serialized….”. However, I don’t think he took the time to read my post. I did write a little bit about why this might be bad and he did not address any of those issues. I see the problem as us not all having the same optimization, serialization or structure building routines. Much of the complexity in programming comes from having to work in another person’s code. Maybe it would be better if we could let the computer do as much of that work as possible for the sake of uniformity and ease of understanding.
Cdsmith did mention something I didn’t think about: code has metadata encoded in its very structure. I don’t see why it wouldn’t be possible to also keep this structure in addition to the abstract representation. It could just come along for the ride as metadata. You could toggle it on or off in your IDE.
Literate programming in a wiki looks interesting. I’ve done a little bit of work with MediaWiki and natural language processing in the past. I’ll be sure to check it out.