Xaonon, when he joined Interröbang Cartel, claimed to be the future author of a song called “Kiss Me, Cruel Fortran”, but to date he has not written such a song.
Sometime later swt, in a discussion of songs that switch between languages, pointed out the lack of songs that modulate between human and computer languages, and Xaonon opined that someone should do that in lyrics for “Kiss Me, Cruel Fortran”. Chris Reuter responded with some lyrics, and I responded with different ones — later, but unaware at the time of Chris’s.
common[1]
common man am I
common
but I’m willing to die
data[1]
data weaves a spell
data
lures you into her hell
she’s a bleak mistress of a certain age
outlived her siblings on the binary stage[2]
oh she’ll bring you to joy and then she’ll fill you with rage[3]
come kiss me, come kiss me
cruel fortran
input[1]
input your desire
input
on a telephone wire
goto[1]
go to her once again
goto
the compiler of men
well she’s real and I’m not if I don’t declare[4]
and she’ll never point[5] but she’ll globally share[6]
you can state your case just don’t expect her to care[7]
come kiss me, come kiss me
cruel fortran
program[1]
program for the end
program
gonna need a friend
format[1]
format your demise
format
in the monitor’s eyes
if you curse again will she know what to do[8]
her numbers are numbers and they’re never true[9]
and she’ll cut you dead right after seventy-two[10]
come kiss me, come kiss me
cruel fortran
Footnotes:
(In the following, “Fortran” refers to FORTRAN 4 and/or Fortran 77.)
[1] COMMON, DATA, INPUT, GOTO, PROGRAM, and FORMAT are all Fortran keywords.
[2] Well, most of them. Some people still use COBOL.
[3] Trust me on this.
[4] In the absence of any explicit declaration or IMPLICIT statement, variables whose names begin with the letters I through N (such as “I”) are integers and variables with names starting with other letters (such as “SHE”) are floating point, or in Fortran terms, REAL.
[5] Fortran doesn’t do pointers.
[6] Fortran has COMMON blocks for the management of more or less global variables.
[7] Fortran is case insensitive.
[8] Some implementations of Fortran permitted recursion, but it was not a language requirement.
[9] Unlike C, where logical expressions evaluate to 0 (false) or nonzero (true), Fortran has a separate LOGICAL data type whose two possible values are .TRUE. and .FALSE. You can’t say e.g. “IF (37) GOTO 100″ because 37 is not LOGICAL.
[10] Fortran statments use columns 1-5 for a statement number, column 6 for a continuation character, and columns 7-72 for the statement itself; anything past column 72 is ignored.

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License.