FACTOID # 152: Of the eight countries which include the word "democratic" in their conventional long form name, three are dictatorships: North Korea (Democratic People's Republic of Korea), Laos (Lao People's Democratic Republic) and the Democratic republic of the Congo.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RELATED ARTICLES
People who viewed "INTERCAL" also viewed:
RECENT ARTICLES
More Recent Articles »
 

SEARCH ALL

FACTS & STATISTICS    Advanced view

Search encyclopedia, statistics and forums:

 

 

(* = Graphable)

 

 


Encyclopedia > INTERCAL
Jimbo Lyon, one of the authors of INTERCAL
Jimbo Lyon, one of the authors of INTERCAL

INTERCAL, programming language parody, is the canonical esoteric programming language created by Don Woods and James M. Lyon, two Princeton University students, in 1972. It satirizes aspects of the FORTRAN and COBOL programming languages, as well as the proliferation of proposed language constructs and notations in the 1960s. Consequently, the humour may appear rather dated to modern readers brought up with C or Java. Image File history File linksMetadata Jimbo_Lyon. ... Image File history File linksMetadata Jimbo_Lyon. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... Parody of Back to the Future In contemporary usage, a parody is a work that imitates another work in order to ridicule, ironically comment on, or poke some affectionate fun at the work itself, the subject of the work, the author or fictional voice of the parody, or another subject. ... Canonical is an adjective derived from canon. ... An esoteric programming language (sometimes shortened to esolang) is a programming language designed as a test of the boundaries of computer programming language design, as a proof of concept, or as a joke. ... Don Woods is a perennial hacker and computer programmer. ... Princeton University is a coeducational private university located in Princeton, New Jersey, in the United States of America. ... Fortran (previously FORTRAN[1]) is a general-purpose[2], procedural,[3] imperative programming language that is especially suited to numeric computation and scientific computing. ... COBOL is a third-generation programming language, and one of the oldest programming languages still in active use. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... Java is an object-oriented programming language developed by Sun Microsystems in the early 1990s. ...


According to the original manual by the authors,[1]

The full name of the compiler is "Compiler Language With No Pronounceable Acronym", which is, for obvious reasons, abbreviated "INTERCAL".

There are two currently maintained versions of INTERCAL: C-INTERCAL (formerly maintained by Eric S. Raymond[2]), and CLC-INTERCAL, maintained by Claudio Calvelli.[3] Eric S. Raymond (FISL 6. ...

Contents

Introduction

The 'circuitous diagram' from the INTERCAL Reference Manual, purportedly to explain the operation of the 'select' operator.
The 'circuitous diagram' from the INTERCAL Reference Manual, purportedly to explain the operation of the 'select' operator.

INTERCAL is purposely different from all other computer languages. Common operations in other languages have cryptic and redundant syntax in INTERCAL. From the INTERCAL Reference Manual:[1] Image File history File links Download high-resolution version (744x1010, 83 KB) Other versions Originally from en. ... Image File history File links Download high-resolution version (744x1010, 83 KB) Other versions Originally from en. ...

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: Obfuscate redirects here; for the Discipline from the Vampire: The Masquerade/World of Darkness fictional setting please see Discipline (World of Darkness)#Obfuscate. ...

 DO :1 <- #0¢#256 

Any sensible programmer would say that that was absurd. Since this is indeed the simplest method, the programmer would be made to look foolish in front of his boss, who would of course have happened to turn up, as bosses are wont to do. The effect would be no less devastating for the programmer having been correct.

The INTERCAL reference manual is a work of humor, containing many paradoxical, nonsensical, or otherwise humorous instructions:

Caution! Under no circumstances confuse the mesh with the interleave operator, except under confusing circumstances!

It contains a "tonsil", as explained in this footnote: "4) Since all other reference manuals have Appendices, it was decided that the INTERCAL manual should contain some other type of removable organ."[1]


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 identifiers such as "PLEASE". This last identifier enables 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 would be rejected as excessively polite. Although this feature existed in the original INTERCAL compiler, it was undocumented.[4]


The INTERCAL manual gives unusual names for all non-alphanumeric ASCII characters: single and double quotes are "sparks" and "rabbit ears" respectively. (The exception is the ampersand: as the Jargon File states, "what could be sillier?") The assignment operator, represented as a "half mesh" or equals sign in many other programming languages, is in INTERCAL a "<-", referred to as "gets" and made up of an "angle" and a "worm". There are 95 printable ASCII characters, numbered 32 to 126. ... The Jargon File is a glossary of hacker slang. ...


The original Princeton implementation used punched cards and the EBCDIC character set. In order to allow INTERCAL to run on computers using ASCII, substitutions for two characters had to be made: $ substituted for ¢ as the mingle operator to "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".[1] In recent versions of C-INTERCAL, the older operators are supported as alternates: INTERCAL programs may now be encoded in ASCII, Latin-1, or UTF-8.[4] A CTR census machine, utilizing a punched card system. ... EBCDIC (Extended Binary Coded Decimal Interchange Code) is an 8-bit character encoding (code page) used on IBM mainframe operating systems, like z/OS, OS/390, VM and VSE, as well as IBM minicomputer operating systems like OS/400 and i5/OS. It is also employed on various non-IBM... There are 95 printable ASCII characters, numbered 32 to 126. ... Exclusive or (usual symbol XOR occasionally XNAD <exclusive nand> or EOR), which is sometimes called exclusive disjunction, is a logical operator that results in true if one of the operands, but not both of them, is true. ... There are 95 printable ASCII characters, numbered 32 to 126. ... ISO 8859-1, more formally cited as ISO/IEC 8859-1 or less formally as Latin-1, is part 1 of ISO/IEC 8859, a standard character encoding defined by ISO. It encodes what it refers to as Latin alphabet no. ... UTF-8 (8-bit Unicode Transformation Format) is a variable-length character encoding for Unicode created by Ken Thompson and Rob Pike. ...


The Usenet newsgroup alt.lang.intercal is devoted to the study and appreciation of INTERCAL and other esoteric languages. Usenet (USEr NETwork) is a global, distributed Internet discussion system that evolved from a general purpose UUCP network of the same name. ...


Despite the language's being intentionally obtuse and wordy, INTERCAL is nevertheless Turing-complete: given enough memory, INTERCAL can solve any problem that a universal Turing machine can solve. It does 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 0.5 seconds; the same program in INTERCAL took over seventeen hours.[5] In computability theory a programming language or any other logical system is called Turing-complete if it has a computational power equivalent to a universal Turing machine. ... An artistic representation of a Turing Machine . ... In mathematics, the Sieve of Eratosthenes is a simple, ancient algorithm for finding all prime numbers up to a specified integer. ... SUN redirects here. ...


It should be noted that almost any programming language allows notational horrors as great as or greater than INTERCAL's, as demonstrated in contests such as the International Obfuscated C Code Contest. However, these are generally intentional efforts to create unreadable code, in contrast to INTERCAL's design forcing virtually all code to be unreadable. The term notation can be used in several contexts. ... The International Obfuscated C Code Contest (abbr. ...


According to the INTERCAL manual, "the aim in designing INTERCAL was to have no precedents", supposedly neither in flow control features, nor in data manipulation operators. The designers were partially successful; the only known precedent is a machine instruction [1] in a Soviet mainframe computer BESM-6, released in 1967, that is effectively equivalent to INTERCAL's "select" operator. For other uses, see BESM (disambiguation). ...


Dialects

The original Woods–Lyon INTERCAL was very limited in its input/output capabilities: the only acceptable input were numbers with the digits spelled out, and the only output was an extended version of Roman numerals.[1] In computing, input/output, or I/O, is the collection of interfaces that different functional units (sub-systems) of an information processing system use to communicate with each other, or the signals (information) sent through those interfaces. ... Roman numerals are a numeral system originating in ancient Rome, adapted from Etruscan numerals. ...


The C-INTERCAL reimplementation, being available on the Internet, has made the language more popular with devotees of esoteric programming languages.[citation needed] The C-INTERCAL dialect has a few differences from original INTERCAL and introduced a few new features, such as a COME FROM statement and a means of doing text I/O based on the Turing Text Model.[4] In computer programming, COMEFROM is a control flow structure used in some programming languages. ...


The authors of C-INTERCAL also created the TriINTERCAL variant, based on the ternary system and generalising INTERCAL's set of operators.[4] Ternary can mean: Ternary form, a form used for structuring music Ternary logic, a logic system with values true, false, and some other value Ternary numeral system, a base-3 counting system Ternary operation, an operation that takes three parameters Ternary plot or Ternary graph, a plot that shows the...


A more recent variant is Threaded Intercal, which extends the functionality of COME FROM to support multithreading.[6] Many programming languages, operating systems, and other software development environments support what are called threads of execution. ...


Hello, world

The traditional "Hello, world!" program demonstrates how different INTERCAL is from standard programming languages. In C, it could read as follows: A hello world program is a software program that prints out Hello world! on a display device. ... C is a general-purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ...

 #include <stdio.h> int main(void) { printf("Hello, world!n"); return 0; } 

In other languages, such as Ruby, it can be even simpler. Ruby is a reflective, dynamic, object-oriented programming language. ...

 puts "Hello, world!" 

The equivalent program in C-INTERCAL is longer and harder to read:

 DO ,1 <- #13 PLEASE DO ,1 SUB #1 <- #234 DO ,1 SUB #2 <- #112 DO ,1 SUB #3 <- #112 DO ,1 SUB #4 <- #0 DO ,1 SUB #5 <- #64 DO ,1 SUB #6 <- #194 DO ,1 SUB #7 <- #48 PLEASE DO ,1 SUB #8 <- #22 DO ,1 SUB #9 <- #248 DO ,1 SUB #10 <- #168 DO ,1 SUB #11 <- #24 DO ,1 SUB #12 <- #16 DO ,1 SUB #13 <- #214 PLEASE READ OUT ,1 PLEASE GIVE UP 

Abandon all sanity

In the article "A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics"[7] INTERCAL is described under the heading "Abandon all sanity, ye who enter here: INTERCAL". The compiler and commenting strategy are among the "weird" features described:

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.

Paradoxically, other authors seem to have missed the joke. In one report,[8] INTERCAL is described as an instructional language, with the further remark that "INTERCAL was the only one developed for general use like our language CAL."


In The New Hacker's Dictionary,[9] Lyon's name is pluralized to Lyons, but he's used to that. This edition inherits the error from the jargon file of edition 3.0.0 or later; version 2.2.1 included both the correct and pluralized names. The jargon file comments that "INTERCAL has many other peculiar features designed to make it even more unspeakable." The Jargon File is a glossary of hacker slang. ...


References

  1. ^ a b c d e INTERCAL reference manual
  2. ^ The INTERCAL Resources Page
  3. ^ CLC-INTERCAL
  4. ^ a b c d C-INTERCAL supplemental reference manual
  5. ^ Stross, Charles. "Intercal -- the Language From Hell", Computer Shopper (UK), 1992-09.
  6. ^ Threaded Intercal
  7. ^ Michael Mateas and Nick Montfort, "A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics", PDF
  8. ^ Abhinav Bhatele and Shubham Satyarth, "Compiler Algorithm Language (CAL): An Interpreter and Compiler", CS499 B.Tech. Project Report IIT, PDF
  9. ^ Eric S. Raymond, Guy L. Steele (editors), The New Hacker's Dictionary third edition, circa 2000.

This article relates to the British magazine. ...

External links


Part of an earlier version of this article contains text from The Jargon File 4.2.3 Mar 2001.


  Results from FactBites:
 
Intercalation - Wikipedia, the free encyclopedia (255 words)
Ethidium bromide, e.g., intercalates between adjacent nucleotide side chains.
Intercalation is the insertion of an extra day, week or month into some calendar years to make the calendar follow the seasons.
The determination of whether a year has intercalation may be calculated (Julian, Gregorian and Hebrew calendars), or determined by observation (Iranian calendar).
Graphite intercalation - Patent 4035434 (3954 words)
Intercalation of a Lewis acid fluoride in graphite is effected in the presence of gaseous fluorine.
Such method entails effecting intercalation in the presence of fluorine which appears to act as a catalyst for the reaction and is not retained in the graphite structure.
Intercalation of PF.sub.5 in graphite was accomplished by constreaming PF.sub.5 and 10 volume percent of fluorine in nitrogen each at 40 cc/minute through a 15 gram bed of graphite.
  More results at FactBites »


 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your comments
Please enter the 5-letter protection code

Want to know more?
Search encyclopedia, statistics and forums:

 


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.