IT and communication - Characters and encodings:

Character histories:
notes on some Ascii code positions

This document contains some remarks on the history of the Ascii character code, especially on how and why some code positions were assigned to different characters in different versions and proposals in the development of Ascii. This hopefully throws some light on some still relevant problems with the following characters: dollar sign ($), apostrophe ('), less than and greater than sign (<>), square brackets ([]), reverse solidus (\), circumflex accent (^), low line (_), grave accent (`), curly brackets ({}), vertical line (|), tilde (~).

For a presentation of the current meanings of characters in the Ascii code positions, especially as defined in ISO 8859-1 and Unicode, see my document The ISO Latin 1 character repertoire - a description with usage notes. It also contains some remarks on the history of these and other characters. (The headings below are links to corresponding parts of that document.)

In the references below, the following abbreviations are used:

CBI
The collections of the Charles Babbage Institute at the University of Minnesota, Minneapolis, Minnesota, USA.
NMAH
The National Museum of American History, Smithsonian Institution, Washington, DC, USA.
ISO
International Organization for Standardization
CCITT
International Telegraph and Telephone Consultative Committee, a predecessor of ITU-T
CACM
Communications of the ACM
SHARE
The SHARE association, a computer users' organization, originally for IBM users

The documents cited are not generally available on the Web.

DOLLAR SIGN 

Roman Czyborra writes in his Good ole' ASCII that "the socialist countries managed to substitute the international currency sign ¤ for ASCII's capitalist dollar sign $ in the the first international reference version ISO-646-IRV". However, the international currency symbol ¤ was proposed for inclusion in the international standard character code in place of the dollar or pound sign by the Italian delegation to the CCITT, not by the socialist countries. In a later vote, Italy, Portugal, Switzerland, and the USSR favored the use of the ¤ character; Canada, France, Germany, the Netherlands, Sweden, and the United Kingdom preferred to standardize the $ and £ signs.

Sources: CCITT Working Group on Alphabets, October 6-9, 1964, CBI 67, box 3, folder 3; ISO TC 97/SC 2 and CCITT/GM ALP joint meeting, April 26-28, 1966, NMAH 310, box 5.

APOSTROPHE

Originally included for use as the apostrophe; later overloaded to also mean the acute accent; also used as a single quotation mark.

References:

This character has had the following names in different versions of ASCII standards:

X3.4-1963 APOS.
X3.4-1965 Apostrophe (closing single quotation mark; acute accent)
X3.4-1967 Apostrophe (Closing Single Quotation Mark; Acute Accent)
X3.4-1968 Apostrophe (Closing Single Quotation Mark; Acute Accent)
X3.4-1977 Apostrophe (Closing Single Quotation Mark; Acute Accent)
X3.4-1986 APOSTROPHE, RIGHT SINGLE QUOTATION MARK, ACUTE ACCENT

The current revisions of ISO 646, CCITT International Reference Alphabet (formerly International Alphabet No. 5), ISO 8859, ISO 10646, and Unicode all call it just an apostrophe.

LESS-THAN SIGN 

GREATER-THAN SIGN 

The inclusion of < and > characters was considered as necessary for COBOL programming.

Reference: Minutes of ECMA TC-1 and ASA X3.2 joint meeting, March 8-9, 1962, CBI 67, box 1, folder 3.

LEFT SQUARE BRACKET  

RIGHT SQUARE BRACKET 

The left and right square brackets [] were proposed for inclusion because of their "high use in ALGOL" (in conjunction with arrays) and for being "useful for human-to-human communication".

Reference: R. W. Bemer, letter to members of X3.2, September 28, 1961, NMAH 310, box 2.

REVERSE SOLIDUS

Proposed as "reverse division" operator and for use in two-character sequences for logical operators. It was said that "reverse division is a useful device in programming, particularly for continued fractions". The operator usage was for "adjoining the two types of slashes in either permutation gives a reasonable representation of the logical symbols AND and OR in ALGOL. (/\ \/)"

In some versions of the BASIC programming language, the reverse solidus has been to denote division of a kind: integer division, which returns an integer result, discarding the remainder (e.g., 7\2 would yield 3).

Reference: R. W. Bemer, letter to members of X3.2, September 28, 1961, NMAH 310, box 2.

For more details, see Bemer's How ASCII Got Its Backslash.

The phrase "reverse division" is rarely used nowadays, and some of the uses seem to refer to a machine instruction for division (such as FDIVR) which simply has the arguments in an order which is reverse to the normal division instruction. The proposal mentioned above seems to have meant something quite different, since it referred to continued fractions, perhaps meaning that a continued fraction which can be presented as [a1,a2,...,an] in abbreviated mathematical notation would be written as a1\a2\...\an in some programming language(s). I haven't been able to track down any such usage.

However, there is actually a close connection between reverse division and continued fractions. This is explained in the document Reverse division and continued fractions.

ALGOL was at that time an important language, and the Algol 60 reference language contained a collection of special symbols for logical operators. In actual usage in programming, those symbols were replaced by various surrogate notations, like the words "and" and "or"; the introduction of the reverse solidus would have allowed the use of a notation which fairly well approximates the appearance symbols used in logic. But it seems that the combinations /\ and \/ were not used much in actual implementations and usage. So the history is in this sense different from that of the square brackets, which have actually been used in ALGOL and its derivatives and are very commonly used to enclose array subscripts.

CIRCUMFLEX ACCENT 

Introduced for use as an accent and as a mostly-compatible replacement for the up-arrow (programming symbol) present in early versions of the Ascii code.

References:

LOW LINE 

In early versions of ASCII, the position of the low line (underscore) was occupied by a left-pointing arrow. This character was used as an assignment operator in some programming languages.

The low line character was introduced to serve a dual purpose: to underline text in ordinary writing, and to serve as an "acknowledge" character in automatic teleprinter communications. Acknowledge was reassigned, so the character became exclusively for underlining. The idea was to overprint text with underline characters, as was common when using typewriters.

References:

GRAVE ACCENT

Originally included for use as an accent; overloaded in the US to also mean an opening single quotation mark.

Ref.:

Eric Fischer has kindly given the following additional information (in an E-mail message; here slightly edited for use on the Web):

Unfortunately L. L. Griffin's report on the October, 1963 ISO meeting isn't really an ideal source for early information about this character. I cited it because this was the meeting where the character was added to the draft ISO standard, but the report never actually refers to it by name.

It appears to have been at their May 13-15, 1963 meeting that the CCITT decided that the proposed ISO 7-bit code standard would be suitable for their needs if a lower case alphabet and five diacritical marks, including the grave accent, were added to it.

At the October 29-31 meeting, then, the ISO subcommittee altered the ISO draft to meet the CCITT requirements, replacing the up-arrow and left-arrow with diacriticals, adding diacritical meanings to the apostrophe and quotation mark, and making the number sign a dual for the tilde.

The character was finally mentioned by name when the second ISO draft was distributed in December, 1963. Here it is unambiguously the grave accent, with no mention of the opening single quotation mark.

The use of the character as a quotation mark seems to appear only in the US versions of the standard. It wouldn't surprise me if this meaning was added only to justify the replacement of the left-arrow to English speakers who would have little use for the grave accent. I'm not sure exactly when the character, under any name, was added to the US draft standard, but the earliest reference to the "opening single quotation mark" name that I've been able to find is in the minutes of the September 22-23, 1964 X3.2.4 meeting.

LEFT CURLY BRACKET

RIGHT CURLY BRACKET  

The curly brackets (braces) {} were proposed for "consistency of meaning when the last two columns are folded over the previous two columns" and "high utility factor in general use (human communication)". Perhaps the latter refers to conventional use in mathematical notations with nested parentheses.

Reference: X3.2.4 task group minutes, December 17-18, 1963, NMAH 310, box 4.

VERTICAL LINE  

Originally proposed for inclusion as a mathematical symbol; missing from the code from late 1961 to late 1963; added back in with the same rationale as for the curly braces; later explained to refer to the logical OR operation; then disassociated from logical OR to appease the SHARE PL/I language committee.

From a Usenet posting by Eric Fischer:

The SHARE IBM users' group opposed the adoption of ASCII-1967 because the vertical bar, which - - is the PL/I logical OR operator, appears in a section of the code reserved for "national use" characters, and, moreover, in the lower case section of the code which might not be supported by all devices. SHARE insisted that there be a vertical bar in the uppercase, international section of the code, so the X3.2 subcommittee made it acceptable to substitute a vertical bar symbol for the exclamation point, and broke the character that was supposed to be a vertical bar in half so it could not be mistaken for a logical OR symbol. The damage was repaired in ASCII-1977, but by this time large numbers of devices were using the broken-bar symbol and the transition back to the real, solid, international, vertical bar is still not complete.

It has been conjectured that the vertical line character was introduced to the area of computing with the Backus-Naur Form metalanguage for describing programming languages. It was also taken into use in APL in early 1960's and incorporated into PL/I at about the same time as the OR operator and, doubled, as the concatenation operator.

References:

TILDE 

For some reason, the tilde is a second-class citizen among accents. Originally proposed as an alternate graphic for "#"; then made an alternate graphic for "^"; then an alternate graphic for overline (programming symbol); only later the standard graphic.

References:


This document is partly based on a long Usenet discussion thread Apostrophe that started from Markus Kuhn's posting on 2000-03-17, Message-ID <8atesj$i6l$3@pegasus.csx.cam.ac.uk>.

I have also used extensively the material sent to me by Eric Fischer in response to my request for some additional information related to his postings (especially a posting explaining the rationale for the inclusion of some characters into Ascii in the above-mentioned thread. I am very grateful to him for taking the trouble of composing the information and for giving permission to use it on my page. He also mentioned the following sources of information (which I have not read yet) as the two best published sources he can recommend for information about the history of the ISO 646 and ASCII character codes:

Naturally, any mistakes in this document shall be regarded as mine only.