g-frank@gumby.UUCP (01/19/85)
Here is a suggested new definition for "high-level," as it pertains to programming languages: A language is "high-level" when it is so difficult to learn, and so filled with arcana, that true mastery in it is reserved for just a few. As a corollary to this, the higher level the language, the more cryptic the error messages produced by the compiler (or assembler, or inter- preter), and the more obscure and disastrous the run-time results of miscoding. Features contributing to make a language "high-level" are: 1) Confusing and obscure type declaration syntax. 2) Data types which are implicitly other data types, which is something you're supposed to know, without anyone telling you. 3) No checking for type (or number) of function parameters. 4) Extreme brevity and terseness of expression, the terser the better, so that expressions of great power and subtlety may be created, that in after times will amaze, astound, confuse, and in general prevent maintenence by those who follow on. 5) Non-orthogonality, but not so you'd notice until you try to write something. 6) All minor coding errors not caught by the compiler and flagged with such useful messages as "expression syntax error," or "lvalue required," should at run time generate equally helpful and highly terminal operating system complaints. Messages contain- ing the words "violation", "dump", or the phrase, "internal error, call technical support," are particularly desirable. 7) There should be two types of strings, and half the string operations should work on one type, and half on the other, with no intersection between the sets (this is true of a very popular Pascal compiler; does anyone recognize it?). 8) The language should have a macro processor, but you should not be able to intercept its output in order to debug your macros. 9) Finally, it should be understood that the highest level language that anyone knows is one that he/she has just read a book on, and has not yet tried to do anything useful with. Thus, languages for which it is virtually impossible to find a validated compiler are very highly prized. 10) Conversely, the highest level language that anyone knows is a language about which he/she has never read a book, because real programmers don't learn languages from books. 11) In the same vein, the best language of all is one about which a decent book has NEVER been written, because then only real programmers can learn it. I could go on, but the list would be much too long. I just want to add that while I have included attributes of many high level languages in this list, my particular favorites are C and Intel Assembler (both of which I DO use, by the way). It seems that the more attributes from the above list that a language possesses, the more devoted its following. This I take as scien- tific proof that the level of a language may be verified in an objective fashion, the precise details of which I will publish in a upcoming mono- graph. Watch this space for announcements. -- Dan Frank "good news is just life's way of keeping you off balance."