In allem Vertrauten ist ein Platz für Geschichte

Letzten Monat habe ich zwei historische Fragen untersucht. Ich habe die Ergebnisse ursprünglich als Threads auf Twitter gepostet, aber jetzt dupliziere ich sie als Artikel.





Warum vim hjkl benutzt

Frage : Warum verwendet vim hjkl und keine Pfeile für die Navigation?





Typische Erklärung : Damit die Finger die Ausgangsreihe nicht verlassen.





Historische Erklärung : Bill Joy entwickelte vi auf dem ADM-3A-Videoterminal, dem einzelne Pfeiltasten fehlten. Wenn Sie sich die ADM-Tastatur ansehen, befinden sich Pfeile auf den hjkl-Tasten. Joy verwendete dieselbe Logik für vi und später für Vim.





ADM-Tastatur
ADM-Tastatur

Noch mehr historische Erklärung : Eigentlich ist es seltsam, dass auf ADM hjkl für Pfeile verwendet wurde. Warum genau diese Buchstaben?





Dafür gibt es einen guten Grund. Schauen Sie sich die 1967er Version der ASCII-Zeichentabelle an:





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