No mês passado, pesquisei duas questões históricas. Originalmente, postei os resultados como tópicos no Twitter, mas agora estou duplicando-os como um artigo.
Por que o vim usa hjkl
Pergunta : Por que o vim usa hjkl e não setas para navegação?
Explicação típica : Para evitar que os dedos saiam da linha inicial.
Explicação histórica : Bill Joy desenvolveu o vi no terminal de vídeo ADM-3A, que não tinha teclas de seta individuais. Se você olhar para o teclado ADM, verá que há setas nas teclas hjkl. Joy usou a mesma lógica para o vi e, posteriormente, para o Vim.
Explicação ainda mais histórica : na verdade, é estranho que no ADM hjkl fosse usado para flechas. Por que exatamente essas letras?
Existe um grande motivo para isso. Observe a versão de 1967 da tabela de caracteres ASCII:
7 . 32 — " ", , -. , QWERTY-, , . "" , . . , "backspace", ctrl+H ( ^H). 100 1000 000 1000. , , ^J.
ADM, , "backspace" ADM " " . ^H ^J "" "", ^K ^L "" "". ADM hjkl , vi.
JavaScript
: JavaScript' date API 0-11, 1-12. ?
: . , . , date.GetMonth() .
: Java, , , C.
: C ? , C, , ?
tm_date
ANSI C89, . C , Unix-. Unix, , <ctime.c>
C , .
#define SEC 0
#define MIN 1
#define HOUR 2
#define MDAY 3
#define MON 4
#define YEAR 5
#define WDAY 6
#define YDAY 7
#define ISDAY 8
ctime -- (SMH), HMS. , , . Unix 5 , :
int *t;
{
register char *cp, *ncp;
register int *tp;
cp = cbuf;
for (ncp = "Day Mon 00 00:00:00 1900\\n"; *cp++ = *ncp++;);
ncp = &"SunMonTueWedThuFriSat"[3*t[6]];
cp = cbuf;
*cp++ = *ncp++;
*cp++ = *ncp++;
*cp++ = *ncp++;
cp++;
tp = &t[4];
ncp = &"JanFebMarAprMayJunJulAugSepOctNovDec"[(*tp)*3]; // (a)
*cp++ = *ncp++;
*cp++ = *ncp++;
*cp++ = *ncp++;
cp = numb(cp, *--tp); // (b)
cp = numb(cp, *--tp+100); // (c)
cp = numb(cp, *--tp+100);
cp = numb(cp, *--tp+100);
cp =+ 2;
cp = numb(cp, t[YEAR]);
return(cbuf);
}
. (a). , , , , . , (b) HMS (c), . SMH ( ). , , , .
, . , Unix PDP-7. 1970- . , , 10% RAM!
, CPU, — , , . , , (b), .
: MDAY ( ) , YDAY ( ) — . " ": . ( ).
. , "" . hjkl, , ASCII- . tm_date, Unix, , , . — . , .
. , . , - , , - . , , "", , . , , , " ". , , "" .
. , — . , , , , . , ADM-3A, . , .
. , , , . , , , , . .