Why We Can't Have "Intuitive" Programming Languages

If a procedure named INSIGHT has been defined and then called seventeen times in the program, and the eighteenth time it is misspelled as INSIHGT, woe to the programmer. The compiler will balk and print a rigidly unsympathetic error message, saying that it has never heard of INSIHGT. Often, when such an error is detected by a compiler, the compiler tries to continue, but because of its lack of insihgt, it has not understood what the programmer meant. In fact, it may very well suppose that something entirely different was meant, and proceed under that erroneous assumption. Then a long series of error messages will pepper the rest of the program, because the compiler-not the programmer-got confused. Imagine the chaos that would result if a simultaneous English-Russian interpreter, upon hearing one phrase of French in the English, began trying to interpret all the remaining English as French. Compilers often get lost in such pathetic ways. C'est la vie.

Perhaps this sounds condemnatory of computers, but it is not meant to be. In some sense, things had to be that way. When you stop to think what most people use computers for, you realize that it is to carry out very definite and precise tasks, which are too complex for people to do. If the computer is to be reliable, then it is necessary that it should understand, without the slightest chance of ambiguity, what it is supposed to do. It is also necessary that it should do neither more nor less than it is explicitly instructed to do. If there is, in the cushion underneath the programmer, a program whose purpose is to "guess" what the programmer wants or means, then it is quite conceivable that the programmer could try to communicate his task and be totally misunderstood. So it is important that the high-level program, while comfortable for the human, still should be unambiguous and precise.

Now it is possible to devise a programming language-and a program which translates it into the lower levels-which allows some sorts of imprecision. One way of putting it would be to say that a translator for such a programming language tries to make sense of things which are done "outside of the rules of the language". But if a language allows certain "transgressions", then transgressions of that type are no longer true transgressions, because they have been included inside the rules' If a programmer is aware that he may make certain types of misspelling, then he may use this feature of the language deliberately, knowing that he is actually operating within the rigid rules of the language, despite appearances. In other words, if the user is aware of all the flexibilities programmed into the translator for his convenience, then he knows the bounds which he cannot overstep, and therefore, to him, the translator still appears rigid and inflexible, although it may allow him much more freedom than early versions of the language, which did not incorporate "automatic compensation for human error".

Notes:

Folksonomies: programming intuition

Taxonomies:
/science/social science/linguistics/translation (0.429364)
/law, govt and politics (0.398614)
/technology and computing/programming languages/java (0.381891)

Keywords:
rigidly unsympathetic error (0.975059 (:0.000000)), simultaneous English-Russian interpreter (0.886807 (:0.000000)), C\'est la vie (0.885770 (:0.000000)), programmer (0.763342 (:0.000000)), eighteenth time (0.653817 (:0.000000)), true transgressions (0.649692 (:0.000000)), erroneous assumption (0.647264 (:0.000000)), error messages (0.644779 (:0.000000)), pathetic ways (0.634608 (:0.000000)), Programming Languages (0.630344 (:0.000000)), slightest chance (0.628690 (:0.000000)), long series (0.619411 (:0.000000)), human error (0.593626 (:0.000000)), high-level program (0.587842 (:0.000000)), early versions (0.584713 (:0.000000)), automatic compensation (0.584047 (:0.000000)), certain types (0.582625 (:0.000000)), lower levels-which (0.580221 (:0.000000)), rigid rules (0.565316 (:0.000000)), programming language (0.551011 (:0.000000)), insihgt (0.519373 (:0.000000)), compiler (0.506145 (:0.000000)), translator (0.464858 (:0.000000)), computers (0.428813 (:0.000000)), sense (0.411551 (:0.000000)), things (0.408597 (:0.000000)), people (0.408370 (:0.000000)), woe (0.386430 (:0.000000)), flexibilities (0.376852 (:0.000000)), imprecision (0.376191 (:0.000000)), ambiguity (0.370724 (:0.000000)), times (0.367142 (:0.000000)), Intuitive (0.364514 (:0.000000)), fact (0.363850 (:0.000000)), lack (0.362999 (:0.000000)), phrase (0.362499 (:0.000000)), procedure (0.361933 (:0.000000)), bounds (0.361246 (:0.000000)), INSIGHT (0.360877 (:0.000000)), Compilers (0.360164 (:0.000000)), cushion (0.358401 (:0.000000)), rest (0.357918 (:0.000000)), chaos (0.356549 (:0.000000)), purpose (0.356108 (:0.000000)), sorts (0.355951 (:0.000000)), misspelling (0.355905 (:0.000000)), feature (0.355824 (:0.000000)), appearances (0.355579 (:0.000000)), convenience (0.355300 (:0.000000)), words (0.355211 (:0.000000))

Entities:
programmer:JobTitle (0.907802 (:0.000000))

Concepts:
Programming language (0.949090): dbpedia_resource
Computer program (0.627060): dbpedia_resource
Source code (0.556635): dbpedia_resource
Computer (0.544460): dbpedia_resource
Computer programming (0.513167): dbpedia_resource
Compiler (0.475415): dbpedia_resource
Programmer (0.442604): dbpedia_resource
Translation (0.428926): dbpedia_resource

 Gödel, Escher, Bach: An Eternal Golden Braid
Books, Brochures, and Chapters>Book:  Hofstadter , Douglas R. (1979), Gödel, Escher, Bach: An Eternal Golden Braid, Retrieved on 2017-10-25
Folksonomies: ideas connections