Non Orthogonal Language Features

These are two or more features in languages which arguably overlap enough that having both/all are of questionable value or design.



I suppose this should be held distinct from the fact that orthogonal language features tend to involve CrossCuttingConcerns and utterly non-orthogonal language design and language implementation requirements (due to FeatureInteraction... which is EssentialComplexity since half the purpose of using a language with two features instead of two languages each with one feature is to have the language implementation efficiently handle FeatureInteraction).

It might also be kept distinct from SyntacticSugar, in which a syntactic shorthand is provided to convenience the authors. For example, the ability to write "Hello, World!" instead of ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']. SyntacticSugar is, perhaps, a syntactic language feature... but not a semantic one. It doesn't imply the same costs on the compiler (or interpreter) as do semantic language features. OTOH, SyntacticSugar does have a cost on the parser and on the user who is learning the language or maintaining programs written in it by others.

Re: ability to write "Hello, World!" instead of ['H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '!']

Ah, similar to early ForTran. Good times!


Non-IT Examples

The Model-T engine had a brilliant form of conceptual reuse. The earliest Model-T's had water-pumps to circulate water to cool the engine. But it was eventually realized that with a slight redesign, the engine's own heat could power water circulation. Thus, the water-pump was soon dropped, reducing cost and reducing the number of parts that could break. Heat is energy (at least when next to non-heat), thus it might as well be put to use when it can. This kind of thinking is one reason why the Model-T was so successful for its time. (Unfortunately, this technique is not consistent enough for modern or larger engines.)


See also: ParadigmPotpourriMeansDiminishingReturns, LanguageIdiomClutter, AbstractionsTooNear, GreatLispWar

CategoryProgrammingLanguage, CategoryLanguageDesign CategoryMultiparadigm


EditText of this page (last edited December 26, 2013) or FindPage with title or text search