Kvikkalkul
Encyclopedia
Kvikkalkul is an esoteric programming language
ostensibly developed by the Swedish Navy
in the 1950s and used on the SABINA
computer. It came to fame in 1994 when someone made an anonymous post
to USENET
regarding it. Kvikkalkul's origins are probably not as claimed, but instead it was likely invented as a joke, like INTERCAL. Unlike INTERCAL, it is not overtly humorous, and contains nothing terribly silly.
Kvikkalkul was allegedly developed on Baudot code
systems, and used only the "figures" mode, so the only characters in Kvikkalkul source are whitespace, digits, and a handful of punctuation characters. However, not even all of the punctuation characters available in "figures" mode is used, most notably the addition sign remains unused. The complete absence of letters is touted as a virtue because it makes it impossible to have misleading comments and object names. Without these crutches, reading a Kvikkalkul program requires one to work out what the program actually does.
The main data type is a fixed-point ones' complement fractional number, originally of 15 bits but more in later implementations. The minimum representable number is a little above −1 (−1 + 2-14 with 15 bits), and the maximum representable number is a little below +1 (+1 − 2-14 with 15 bits). The all-bits-one value represents overflow. This rather strange data type is perfectly workable, in some ways simply the opposite of the more conventional choice of representing only integers. It has some interesting theoretical properties which are discussed in the USENET posts.
The language contains ordinary arithmetic and comparison operators, and unconditional, conditional, and assigned jumps. There is no concept of subroutines, but there are routines at well-known labels and a convention of using a particular register to hold a return address
(returning by an assigned jump). It has a built-in concept of I/O
streams, and the USENET posts describe the mainframe
environment with which they interface. All of this is reasonably normal for a mainframe language of the era, but looks a little surreal
when expressed without letters.
A standard function library was described by the USENET posts, including I/O routines and floating point
arithmetic. Characters (five-bit Baudot characters, of course) could be stored three to a 15-bit word, but this representation is impossible to handle except by library routines. Floating point data is similarly packed into a word and handled by library. Interestingly, integer
arithmetic is also handled as an alien data type by library routines.
Among esoteric programming languages Kvikkalkul is unusual in being neither hopelessly unusable nor very minimal. As a programming language it has two really unusual features (the fixed-point data type and the non-alphabetic syntax). The effects of these two features are explored well in a language fleshed out with otherwise-normal (for its purported era) supporting features.
Esoteric programming language
An esoteric programming language 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...
ostensibly developed by the Swedish Navy
Swedish Navy
The Royal Swedish Navy is the naval branch of the Swedish Armed Forces. It is composed of surface and submarine naval units – the Fleet – as well as marine units, the so-called Amphibious Corps .In Swedish, vessels of the Swedish Navy are given the prefix "HMS," short for Hans/Hennes...
in the 1950s and used on the SABINA
Sabina
Sabina, the region in the Sabine Hills of Latium named for the Sabines, is the ancient territory that today is still identified mainly with the North-Eastern Province of Rome and the Province of Rieti, Lazio.-History:...
computer. It came to fame in 1994 when someone made an anonymous post
Anonymous post
An anonymous post is an entry on a bulletin board system, Internet forum or message board, blog, or other discussion forum without a screen name or more commonly by using a non-identifiable pseudonym....
to USENET
Usenet
Usenet is a worldwide distributed Internet discussion system. It developed from the general purpose UUCP architecture of the same name.Duke University graduate students Tom Truscott and Jim Ellis conceived the idea in 1979 and it was established in 1980...
regarding it. Kvikkalkul's origins are probably not as claimed, but instead it was likely invented as a joke, like INTERCAL. Unlike INTERCAL, it is not overtly humorous, and contains nothing terribly silly.
Kvikkalkul was allegedly developed on Baudot code
Baudot code
The Baudot code, invented by Émile Baudot, is a character set predating EBCDIC and ASCII. It was the predecessor to the International Telegraph Alphabet No 2 , the teleprinter code in use until the advent of ASCII. Each character in the alphabet is represented by a series of bits, sent over a...
systems, and used only the "figures" mode, so the only characters in Kvikkalkul source are whitespace, digits, and a handful of punctuation characters. However, not even all of the punctuation characters available in "figures" mode is used, most notably the addition sign remains unused. The complete absence of letters is touted as a virtue because it makes it impossible to have misleading comments and object names. Without these crutches, reading a Kvikkalkul program requires one to work out what the program actually does.
The main data type is a fixed-point ones' complement fractional number, originally of 15 bits but more in later implementations. The minimum representable number is a little above −1 (−1 + 2-14 with 15 bits), and the maximum representable number is a little below +1 (+1 − 2-14 with 15 bits). The all-bits-one value represents overflow. This rather strange data type is perfectly workable, in some ways simply the opposite of the more conventional choice of representing only integers. It has some interesting theoretical properties which are discussed in the USENET posts.
The language contains ordinary arithmetic and comparison operators, and unconditional, conditional, and assigned jumps. There is no concept of subroutines, but there are routines at well-known labels and a convention of using a particular register to hold a return address
Return address
In postal mail, a return address is an explicit inclusion of the address of the person sending the message. It provides the recipient with a means to determine how to respond to the sender of the message if needed....
(returning by an assigned jump). It has a built-in concept of I/O
I/O
I/O may refer to:* Input/output, a system of communication for information processing systems* Input-output model, an economic model of flow prediction between sectors...
streams, and the USENET posts describe the mainframe
Mainframe computer
Mainframes are powerful computers used primarily by corporate and governmental organizations for critical applications, bulk data processing such as census, industry and consumer statistics, enterprise resource planning, and financial transaction processing.The term originally referred to the...
environment with which they interface. All of this is reasonably normal for a mainframe language of the era, but looks a little surreal
Surrealism
Surrealism is a cultural movement that began in the early 1920s, and is best known for the visual artworks and writings of the group members....
when expressed without letters.
A standard function library was described by the USENET posts, including I/O routines and floating point
Floating point
In computing, floating point describes a method of representing real numbers in a way that can support a wide range of values. Numbers are, in general, represented approximately to a fixed number of significant digits and scaled using an exponent. The base for the scaling is normally 2, 10 or 16...
arithmetic. Characters (five-bit Baudot characters, of course) could be stored three to a 15-bit word, but this representation is impossible to handle except by library routines. Floating point data is similarly packed into a word and handled by library. Interestingly, integer
Integer
The integers are formed by the natural numbers together with the negatives of the non-zero natural numbers .They are known as Positive and Negative Integers respectively...
arithmetic is also handled as an alien data type by library routines.
Among esoteric programming languages Kvikkalkul is unusual in being neither hopelessly unusable nor very minimal. As a programming language it has two really unusual features (the fixed-point data type and the non-alphabetic syntax). The effects of these two features are explored well in a language fleshed out with otherwise-normal (for its purported era) supporting features.