Kiss me, cruel Fortran

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.

Advertisements