language-icon Old Web
English
Sign In

INTERCAL

The Compiler Language With No Pronounceable Acronym, abbreviated INTERCAL, is an esoteric programming language that was created as a parody by Don Woods and James M. Lyon, two Princeton University students, in 1972. It satirizes aspects of the various programming languages at the time, as well as the proliferation of proposed language constructs and notations in the 1960s.The full name of the compiler is 'Compiler Language With No Pronounceable Acronym,' which is, for obvious reasons, abbreviated 'INTERCAL.'It is a well-known and oft-demonstrated fact that a person whose work is incomprehensible is held in high esteem. For example, if one were to state that the simplest way to store a value of 65536 in a 32-bit INTERCAL variable is:Caution! Under no circumstances confuse the mesh with the interleave operator, except under confusing circumstances!The compiler, appropriately named 'ick', continues the parody. Anything the compiler can't understand, which in a normal language would result in a compilation error, is just skipped. This 'forgiving' feature makes finding bugs very difficult; it also introduces a unique system for adding program comments. The programmer merely inserts non-compileable text anywhere in the program, being careful not to accidentally embed a bit of valid code in the middle of their comment.If PLEASE was not encountered often enough, the program would be rejected; that is, ignored without explanation by the compiler. Too often and it would still be rejected, this time for sniveling. Combined with other words that are rarely used in programming languages but appear as statements in INTERCAL, the code reads like someone pleading. The Compiler Language With No Pronounceable Acronym, abbreviated INTERCAL, is an esoteric programming language that was created as a parody by Don Woods and James M. Lyon, two Princeton University students, in 1972. It satirizes aspects of the various programming languages at the time, as well as the proliferation of proposed language constructs and notations in the 1960s. There are two currently maintained versions of INTERCAL: C-INTERCAL, maintained by Eric S. Raymond, and CLC-INTERCAL, maintained by Claudio Calvelli. According to the original manual by the authors, The original Princeton implementation used punched cards and the EBCDIC character set. To allow INTERCAL to run on computers using ASCII, substitutions for two characters had to be made: $ substituted for ¢ as the mingle operator, 'represent the increasing cost of software in relation to hardware', and ? was substituted for ⊻ as the unary exclusive-or operator to 'correctly express the average person's reaction on first encountering exclusive-or'. In recent versions of C-INTERCAL, the older operators are supported as alternatives; INTERCAL programs may now be encoded in ASCII, Latin-1, or UTF-8. INTERCAL was intended to be completely different from all other computer languages. Common operations in other languages have cryptic and redundant syntax in INTERCAL. From the INTERCAL Reference Manual: INTERCAL has many other features designed to make it even more aesthetically unpleasing to the programmer: it uses statements such as 'READ OUT', 'IGNORE', 'FORGET', and modifiers such as 'PLEASE'. This last keyword provides two reasons for the program's rejection by the compiler: if 'PLEASE' does not appear often enough, the program is considered insufficiently polite, and the error message says this; if too often, the program could be rejected as excessively polite. Although this feature existed in the original INTERCAL compiler, it was undocumented. Despite the language's intentionally obtuse and wordy syntax, INTERCAL is nevertheless Turing-complete: given enough memory, INTERCAL can solve any problem that a Universal Turing machine can solve. Most implementations of INTERCAL do this very slowly, however. A Sieve of Eratosthenes benchmark, computing all prime numbers less than 65536, was tested on a Sun SPARCstation 1. In C, it took less than half a second; the same program in INTERCAL took over seventeen hours.

[ "Operating system", "Combinatorics", "Discrete mathematics", "Programming language" ]
Parent Topic
Child Topic
    No Parent Topic