Wednesday, March 19, 2003

COOL
Read an article by Paul Graham. Being a software architect, and in particular the architect for our system, the thing that hit me the most was his discussion about writting a language that the user/developer can use to "hack the system."

Got me to thinking about our system, and what our developer's use to hack it. Our system is very configurable. The developer's write their rules in CLIPS and they configure the system with our configuration files (for the most part). The configuration file is more than just a data file and it allows things like includes, macros, etc... but it is still a pretty weak "language". Again, stronger than a data file, but still pretty weak. CLIPS on the other hand is a pretty strong language. So I started thinking... the system would be stronger if the developer could actually hack the system, with the language they used to developer their system! Its just kind of natural. If you are trying to get something done in the system, and you have to do it in CLIPS, then wouldn't it be natural to also use CLIPS to get something done on the system?

Anyway... started looking at a particular piece I'm working on now. Have been coming up with the BNF of how to configure this particular piece... and changed my whole view based on the above. I'm now looking at configuring it with COOL (CLIPS Object Oriented Language). More powerful, easy to extend, can do all kinds of extra things if needed via the rules, and natural. Given the developer's already code using CLIPS, then explaing how the configuration is done isn't necessary.

And not only does it make sense (at least to me), but it is also fun to play with something new and check out COOL. We've looked at it before, but never done much with it. As with all of the CLIPS APIs, interacting with it from C++ is very straight-forward. 

Very cool stuff (no pun intended). I'm glad I read the article. Thanks Paul!

No comments: