Why there is a function called strcat
and not a function called stringConcatenation
, or stringConcat
or string_concat
or something like that? Why there is a clrscr
function and not clearScreen
or clear_screen
?
Does it have something to do with source code size in past days, where every byte was worth gold on overly-sized floppy disks? Or is this fueled by programmers' inherent laziness? Is it a convention?
This is partly historical.
In very old C compilers, there was no guarantee that more than the first 8 characters of an identifier name would be used to determine uniqueness. This meant that, originally, all identifiers had to be eight or fewer characters, so method names were all made short.
For details, see Identifiers in the C Book.
When C and its associated tools were first being developed, input devices were not nearly as easy to use as modern keyboards. I've never actually used an ASR-33 Teletype, but as I understand it typing stringConcatenation
on such a beast was significantly more difficult than typing strcat
(and without autocompletion, you would have had to type the entire name with no typos). It took a substantial amount of pressure to activate each key. Output was also painfully slow by modern standards.
This also explains why common Unix command names are so terse (mv
and cp
rather than move
or rename
and copy
).
And it's probably also why old linkers only supported such short names. Programmers would generally create short names in the first place, so there was little point in using scarce memory to allow for longer ones.
In addition to all this, there's a case to be made that shorter names are just as good as longer ones. Names of library functions, whether strcat
or stringConcatenation
(or is it stringConcatenate
? String_Concatenate
? stringCatenation
?) are essentially arbitrary. Ease of typing isn't as important as it once was, but it's still a consideration.
精彩评论