[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

FWIW: script vs. configurtion file

I suppose I'll get complaints about this being off-topic, but perhaps we can expose a disagreement on terminology without the clutter and heat of the discussion in  which it came up.

Words, when spoken, mean what the speaker meant. When heard, they mean what the listener thinks they mean. Communiction only occurs when there is some agreement  between the two.

Programming is a field of mathematics. Mathematically speaking, limiting a language to a declarative syntax does not mean that the language ceases to be a language.

Trying to assert that configuration files which are limited to declarations are not scripts is most kindly viewed as an assertion that the configuration file syntax is simpler (for some definition of simple) than configuration files that are allowed a greater number of constructs (for  example, conditions, loops, definitions, etc.).

This is a subjective matter. One person's simple is not guaranteed to be every person's simple.

A known consequence of limiting syntax to declarations is that certain kinds of complexity which can be exposed by a richer syntax end up being hidden by the limited syntax.

The complexities do not actually disappear, they are just hidden, becoming implicit, buried in the definitions of  the things being declared.

Whether hiding such complexities is truly simplification or not is often (but not always) a matter of taste.

One thing is pretty much guaranteed: as the semantic domain of the declarative language is expanded, the number of identifiers increases. Without care, the number of identfiers can increase exponentially.

In other words, you end up trading the need to understand the richer set of constructs for a need to remember and understand a lot more identifiers.

Also, if definition is one of the constructs eliminated from the language, you become entirely dependent on the providers of the language for functionality. If they choose not to provide an identifier that will invoke some function you need, you're stuck.

(Of course, as long as the source for the interpreter is open and not too restricted, you might have a hope of digging into the interpreter and adding what you need yourself, if your skills are up to the job and you have the time to debug your efforts, etc.)

(Maybe I'll get a chance, later, to re-write that a little less pedantically on  my blog, but I have another job waiting for me.)

Reply to: