Reference Tutorial Developer 1 Compile 2 Design 3 Implement 4 Modify 5 Misc 6 Licence SEARCH

4.1 The Danger of Modifying Languages

FunnelWeb is a computer program that implements the semantics of the FunnelWeb language. As such, you should take great care when making changes to FunnelWeb that modify the syntax or semantics of its language:

> Removing features: Removal of features (featurectomy) is extremely difficult once the legacy base is using the features. If a feature is removed, users will have to go through all their files and find a way to simulate the effect of the removed feature with other features. This is usually unthinkable.

> Modifying features: Modification of features has less direct impact than the removal of features, but can cause more subtle errors. Anyone modifying features should be sure that they are not inadvertently laying semantic traps.

> Adding features: Although the addition of features is generally the most painless for the user community, as Hoare points out, it is also the most dangerous in the long run.

> "When any new language design project is nearing completion, there is always a mad rush to get new features added before standardization. The rush is mad indeed, because it leads into a trap from which there is no escape. A feature which is omitted can always be added later, when its design and its implications are well understood. A feature which is included before it is fully understood can never be removed later."[Hoare80]

The benefits of tight control over a language are enormous.

> Universal portability: Source files can be treated as portable.

> Clear semantics: Doubt about the semantics of the language are minimized.

For these reasons, I have decided to keep tight control over the FunnelWeb syntax and semantics. If you develop a variant of FunnelWeb, please take these issues into account.

Webmaster Copyright © Ross N. Williams 1992,1999. All rights reserved.