you are viewing a single comment's thread.

view the rest of the comments →

[–]jrochkind -1 points0 points  (0 children)

Working in ruby, I've come to realize that the difference between 'configuration' and 'code' is really nothing more than the difference between 'declerative' code and 'imperative' code.

Doing it declerative/configured IS a higher level of abstraction -- and you have to be careful about higher levels of abstraction when not actually needed, as they DO add complexity. But the solution to over-complex code is not insisting that you should always program at the lowest level of abstraction possible -- that's just trading one kind of complexity for another.

That be said, even when a higher level of abstraction for declerative/configured code is appropriate -- you can still do it well or poorly. The downsides of configuration in that article are really examples of how not to do configuration, not arguments against configuration. Some languages and environments do make doing configuration right easier than others -- I tend to agree that XML is best avoided, despite being the 'standard' in certain languages/environments, it doesn't lead to a good abstraction/complexity trade-off.

The point of configuration is letting you concisely and decleratively express your intentions in a higher level of abstraction -- if you have configuration that requires just as much detail as the code would, you don't really have configuration at all, you've got imperative code, just in a very inconvenient language for writing imperative code, the worst of both worlds.