This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: I Have Nothing to Declare But My Genius
Feed Title: Travis Griggs - Blog
Feed URL: http://www.cincomsmalltalk.com/rssBlog/travis-rss.xml
Feed Description: This TAG Line is Extra
I have had this group of ideas that I'm struggling to express ever since OOPSLA. In truth, it goes back long before that, but some things started to click. The title of this post was inspired by Brian Foote's usage of the same quote when he discussed his ideas about Dynamic Languages. Brian will be speaking at Smalltalk Solutions this year, and I sincerely hope he gives pretty much the same presentation.
I think it really comes down to this notion of "Declarative". I think most know that I haven't been terribly excited about some of the "language changes" that have worked their way into my favorite Smalltalk (VisualWorks) since its 5i release. At the time, there was a lot of talk about "Declarative" Smalltalk. I recently reread Allen Wirfs-Brock's paper on the the subject. And the declarative word showed up today in Rich Demers well written post about Declaring Announcements.
Rich may have misunderstood my conclusion from yesterday's Announcement Reflections though. While I came to the conclusion that I could not write an algorithm which would deduce the declaration, I was not dissapointed. If anything, I was somewhat elated. A simple introspective algorithm would have been cool. But even cooler, is that it seemed to avoid declaration. Or rather, a sense of "staticness."
The penultimate example of what I think many view "declarative" as is the classical header file. I hate them. Type systems and other keywords are also "declarative" things. They state something about something else. And in doing so, that something else becomes static, unfungeable. Being required to "flatten" the Announcements of a class into a static method declaration is the Smalltalk version of a header file. I quite recognize that an automatic documentation system needs something like this. Static code structure definitions. I'm just not sure one can have their cake and eat it too, in this regard. I think believe that the genuis of Smalltalk (at least in part) is that it has nothing to declare. And when it's dummed down or burdened down with enough stuff that it can be declared, it won't be so genius anymore.
The declarative word means many things to many people. I found it interesting after reading Allen's paper, to go lookup Declarative Programming on Wikipedia. Interestingly, what Allen describes is still an imperative approach, at least by the wikipedia notion. It still involves a "list of instructions to execute in a certain order". What the paper describes is how to get to a development model which is not self hosted. The closest realizations to these flavors of Smalltalk today or PocketSmalltalk and OOVM.
I'm still not satisfied I've done my thoughts service here. But if I don't attempting to put it to words, I'll never get there.