Hay un lugar para la historia en todo lo familiar.

El mes pasado investigué dos cuestiones históricas. Originalmente publiqué los resultados como hilos en Twitter, pero ahora los estoy duplicando como un artículo.





Por que vim usa hjkl

Pregunta : ¿Por qué vim usa hjkl y no flechas para la navegación?





Explicación típica : evitar que los dedos se salgan de la fila de inicio.





Explicación histórica : Bill Joy desarrolló vi en el terminal de video ADM-3A, que carecía de teclas de flecha individuales. Si observa el teclado ADM, hay flechas en las teclas hjkl. Joy usó la misma lógica para vi, y luego para Vim.





Teclado ADM
Teclado ADM

Explicación aún más histórica : en realidad, es extraño que en ADM se usara hjkl para flechas. ¿Por qué exactamente estas letras?





Hay una gran razón para esto. Mire la versión de 1967 de la tabla 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 = &quot;Day Mon 00 00:00:00 1900\\n&quot;; *cp++ = *ncp++;);
    ncp = &amp;&quot;SunMonTueWedThuFriSat&quot;[3*t[6]];
    cp = cbuf;
    *cp++ = *ncp++;
    *cp++ = *ncp++;
    *cp++ = *ncp++;
    cp++;
    tp = &amp;t[4];
    ncp = &amp;&quot;JanFebMarAprMayJunJulAugSepOctNovDec&quot;[(*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, . , .





. , , , . , , , , . .








All Articles