What's the history behind using file extensions to indicate the type of a file?

  • Thread starter Thread starter Stephen Tashi
  • Start date Start date
  • Tags Tags
    File History
AI Thread Summary
File name extensions have evolved from being optional in early computing systems to becoming a standard practice with the advent of MS-DOS, which required specific extensions to identify file types. Initially, extensions served as personal reminders rather than mandatory indicators, especially in mainframe environments. Unix systems in 1977 were among the first to adopt file extensions, predating personal computers like the Apple II and IBM PC. Various systems throughout the 1970s, including DEC and HP computers, also implemented file extensions, reflecting a growing trend in software design. Today, file extensions are crucial for software to recognize and process different file types efficiently.
Stephen Tashi
Science Advisor
Homework Helper
Education Advisor
Messages
7,864
Reaction score
1,602
What's the history of using extensions of file names (such as *.c, *.for, *.bmp etc) to indicate the general type of a file?

My hazy memory of working on ancient mainframe computers is that a file name extensions were not mandatory for most software. For example, if you wanted to compile a Fortran program, you didn't have to end the name of the source file with ".FOR". People did use file name extensions as reminders to themselves, but these were a matter of personal preference.

When ms-DOS, arrived, the associated software did expect files to have particular extensions. For example, a BMP file has information about itself in a specified header within the file, so in principle a program could examine the contents of a file named "WALDO" and determine if it was a BMP image file instead of expecting the file name to be "WALDO.BMP". However, most software was lazy in that respect and required the extenson on the file name to indicate the file's type.
 
  • Like
Likes roam and Wrichik Basu
Computer science news on Phys.org
That's an excellent question. First, we didn't have files, we had decks or tapes. Then we had files but they didn't have names (search for 4 EOF marks on the tape). Then they had names, then they had names with extensions.

The earliest I can remember was Unix in 1977 had file extensions. That long predates the PC or the Apple ][ or MS-DOS.
 
anorlunda said:
The earliest I can remember was Unix in 1977 had file extensions. That long predates the PC or the Apple ][ or MS-DOS.
Not so long, depending on how long "long" is.
Apple ]['s were around in '77, and the IBM PC dates to '81. I don't believe that the Apple computers used file extensions, at least not before ProDOS (if then), but the PCs certainly used file extensions from the get-go, I believe.
 
I also remembered that the DEC machine also had file extensions. PDP-11 date? DEC 20 date? Also Multics going back to the 1960s.

Edit: Also the HP2100 circa 1973 had file extensions. As did the Prime 300 in 1974. The VAX in 77. Data General, Interdata, Modcomp, Xerox, there were many systems with file extensions in the 70s.

Edit: The Apple ][ in 77 yes, but it did not have files until the year ?? when it got floppy disks too. I bought my Apple ][ Plus model in June 1979. It had floppies from the first, if I remember right.
 
Last edited:
  • Like
Likes Klystron and Nik_2213
IBM's MVS/TSO did something similar in 1971.
 
  • Like
Likes Asymptotic
Stephen Tashi said:
What's the history of using extensions of file names (such as *.c, *.for, *.bmp etc) to indicate the general type of a file?

My hazy memory of working on ancient mainframe computers is that a file name extensions were not mandatory for most software. For example, if you wanted to compile a Fortran program, you didn't have to end the name of the source file with ".FOR". People did use file name extensions as reminders to themselves, but these were a matter of personal preference.

When ms-DOS, arrived, the associated software did expect files to have particular extensions. For example, a BMP file has information about itself in a specified header within the file, so in principle a program could examine the contents of a file named "WALDO" and determine if it was a BMP image file instead of expecting the file name to be "WALDO.BMP". However, most software was lazy in that respect and required the extenson on the file name to indicate the file's type.
Vanadium 50 said:
IBM's MVS/TSO did something similar in 1971.
It still does. These days it's called z/OS TSO/E. The EDIT (line editor) command in TSO (Time Sharing Option) uses the final qualifier of a dataset name as a dataset type to set defaults for record format, block size, and logical record length. Most other programs ignore the content of dataset names. MVS still limits dataset name length to 44 characters.
 
Stephen Tashi said:
What's the history of using extensions of file names (such as *.c, *.for, *.bmp etc) to indicate the general type of a file?
The article linked to by @256bits has a link to this 8.3 filename format article.
 
DEC PDP-11's (not sure about the PDP-8) and VAX computers in early 1980's used file extensions. IIRC the C interpreter expected .c and produced .o object files expected by the compiler. My first use of FORTRAN in late 1970's complied according to directives coded on the first punch card (usually colored green) in job control language (JCL). The IBM mainframes included .for and.obj file extensions but do not know if they were required. Probably depended on the program or script.

[Edit: removed .exe from JCL list. Used later.]
 
Last edited:
  • #10
Klystron said:
My first use of FORTRAN in late 1970's complied according to directives coded on the first punch card (usually colored green) in job control language (JCL). The IBM mainframes included .for,.obj, and .exe file extensions but do not know if they were required. Probably depended on the program or script.
The compiler or assembler can generate a dataset name ending in .OBJ for the object module. I've never seen .EXE in an IBM mainframe dataset name. It wouldn't be invalid, but it also wouldn't have its special meaning there. Maybe you remembered the JCL EXEC statement.
 
Last edited:
  • Like
Likes Klystron
  • #11
Klystron said:
(not sure about the PDP-8

OS/8 had two letter extensions.
 
Back
Top