The Quest for the Perfect Programming Language and Other Myths
|
||||||||||||||||||||||||||||||
by Jeffrey Sward
|
||||||||||||||||||||||||||||||
Very Brief History of Programming Languages | ||||||||||||||||||||||||||||||
The first programming of computers was accomplished by hand coding the binary machine code. Since references were absolute addresses, insertion of instructions in the middle of existing lines of code was impossible, causing a branch out and branch back, thus inventing the first instances of spaghetti code. Assembly language was the first generation of any language which was symbolically based. Since assembly language is compiled into machine code, many advantages were realized, such as symbolic variables and easy insertion of new code. (However, by some peculiar part of human nature, spaghetti code exists in nearly every language although it can now be easily avoided.) After assembly language, a variety of symbolic languages were invented, evolved, and subsequently reinvented. Various basic language precepts were created, such as imperative-procedural, functional, logic-based, object-oriented, etc. As noted in the Wikipedia article on the history of programming languages , "The 1990s saw no fundamental novelty, but much recombination as well as maturation of old ideas." For example:
|
||||||||||||||||||||||||||||||
Commercial Adoption Rates | ||||||||||||||||||||||||||||||
The very interesting Tiobe site maintains a current list of Programming Language Popularity. This chart is based on actual usage, not any technical characteristics. Already it is clear that commercial usage has nothing to do with language attributes or quality. Commercial usage is often determined by marketing, such as Microsoft marketing C# and Sun marketing Java. The best man does not win. Rather, the best marketed man often wins. |
||||||||||||||||||||||||||||||
Commercial Objectives of Programming Languages | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
Comparison of Programming Language Attributes | ||||||||||||||||||||||||||||||
Consider the following summary of the advantages and disadvantages of programming language attributes: |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
Newton's Law of Programming Language Motion | ||||||||||||||||||||||||||||||
As should be obvious by the above chart, every conceivable attribute of a language has an equal and opposite attribute which is employed by a different language. Obviously, the advantages of an attribute are equivalent to the disadvantages of the opposite attribute. Stated differently, the above chart illustrates Newton's Law of Programming Language Motion, namely: For every programming language, for each attribute which can be construed as an advantage for one use, there is an equal and opposite disadvantage for a different use. |
||||||||||||||||||||||||||||||
The Peculiar Notion of Progress, Holy Wars, and the Pitfalls of Advocacy | ||||||||||||||||||||||||||||||
Periodically advocates of the most recent programming language will indicate that the newest language is the result of progress. As already noted, at this point in history, new programming languages are recombinations. Progress has nothing to do with recreation. Yet, for both personal projects and commercial uses, a language must be selected. Often programmers who engage in personal projects adopt a language which is best suited for their personal style and personal preferences. Most often commercial languages are chosen by some combination of the implementation of commercial objectives listed above. Some practitioners are even advocating, with apparent seriousness, the creation of a new specialized programming language for each project. Widespread implementation of a programming-language-per-project will certainly place us on the fast track to Babel. Especially when personal projects are involved, programmers often develop a quasi-religious devotion to their selected language. Disputes over language choices in organizations with groups of programmers are often called "Holy Wars." Holy Wars can generate enormous amounts of unnecessary animosity over abstract principles and arbitrary choices. Ultimately, advocacy of programming languages is at best an expression of personal preferences and at worst interpersonal badgering. Applying personal preferences to larger groups is inherently flawed. |
||||||||||||||||||||||||||||||
Summary and Conclusions | ||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
And Yet The Quest Continues | ||||||||||||||||||||||||||||||
Atención todos los Caballeros de la Triste Figura. Entren inmediatamente adelante en la búsqueda para la perfección. Just watch your rear for those windmill blades. |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||
All written content of this web site is solely the editorial opinion of Jeffrey Sward. All images, graphics, and written content of this web site, including the html files, are creative products covered by copyright law. All content copyright Jeffrey Sward 1975-2019. All rights reserved. No portion of this web site or its constituent elements may be reproduced in any form, by any means, without prior written permission. So there. |
||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||