Wednesday, November 27, 2002


On Java vs. C#.

Language evolution doesn't interest me all that much. I think that Java could be substantially improved by having enumerations, basic set logic (a la Pascal), an attribute mechanism, and so forth...but that's not the real issue.

My company sells one of the more complex Java applications on the market today. It's got a few million lines of code in it, reaches out to dozens (and sometimes thousands) of systems while it's running, is servicing hundreds of users simultaneously, and is generally doing a crapload of work.

Such a thing usually deserves a lot of OS-like features. Java is a cross-platform place to program simple applications; it starts to fall down pretty badly in the large. The VM needs to have walls that can be set up between various programs. It needs to have the ability to set resource limits on threads. Scripting systems need to cooperate with this -- one of the most difficult things we've had to deal with is the proliferation of scripts (run in JavaScript/Rhino) that are running inside our application. They gum up the works!

The bottom line -- make the Java VM more managed, with better divisions and walls. That's what's on my Christmas list.
4:29:56 PM    


Extrapolation

Building an expert system is tough. The things that you want to be able to conclude are things that seem like they would "just make sense", but when you actually try to build the rules that form a conclusion, it becomes another game entirely. At the same time, unexpectedly easy conclusions arise from the data you have.

Rule systems create a kind of emergent behavior, where you define hundreds of small rules that perform specific transformations on a knowledge model. Those small rules interact to do much more interesting things on the macro scale.

Most of my work these days involves figuring out good knowledge representations and the kinds of transformations that can be performed on them. If you haven't looked at this stuff before, you owe it to yourself to do it. Most of your program logic shouldn't where it is. It should be coded in rules.
2:34:58 PM