Pimesikirjutamine programmeerijatele tähendab peamiselt klahve, mille tavaline trükkimiskursus vahele jätab: numbreid, sulge, tehtemärke ja nende ümber olevaid Shifti kombinatsioone. Programmeerija, kes trükib proosat 90 WPM-iga, võib koodiga aeglane olla ja 50 WPM-iga proosatrükkija võib sellega kiire olla. Märkasime seda, kui kleepisime testimise ajal oma lähtekoodi faile kohandatud režiimi. Kiirus langes sõnade režiimiga võrreldes kolmandiku võrra või rohkemgi, klahvide soojuskaart lõi numbrireal ja parema väikese sõrme all põlema ning kõige aeglasemad spurdid olid sulgudega sõnedel.
Miks proosateksti WPM on koodi trükkimise kohta kehv näitaja
Kood erineb tekstist kolmel viisil ja levinud ingliskeelsetest sõnadest koostatud trükkimistest ei mõõda ühtki neist.
Esimene on märkide segu. Me lugesime üle. Selle blogi esimeses kümnes postituses on umbes 93 iga 100 mittetühikumärgi kohta tähed, 5 kirjavahemärgid ja 2 numbrid. npm-i käsureatööriista JavaScripti lähtekoodis langeb tähtede osa umbes 80-ni ja sümbolite osa tõuseb 19-ni. Pythoni json- ja email-moodulites on tähti 80–85 ning ühes meie tihedas ehitusskriptis 64, kolmandik selle märkidest on sümbolid. Seega on koodis umbes kolm kuni seitse korda rohkem sümboleid kui meie proosas. Enamik neist asub ülemisel real või vajab Shifti, mis tähendab paremat väikest sõrme ja nõrgemaid sirutusi. Meie ingliskeelsed sõnatestid on koostatud subtiitrikorpuse 1 000 kõige sagedasemast sõnast; „{“ nende hulka ei kuulu.
Teine on rütm. Proosat trükitakse pikkade jadadena. Koodi trükitakse lühikeste spurtidena, mille vahel on pausid mõtlemiseks, kerimiseks ja lugemiseks. Dhakali jt 2018. aasta uuringus 136 miljoni klahvivajutusega kopeerisid vabatahtlikud lauseid ja nende keskmine vahe klahvivajutuste vahel oli umbes 239 ms. Programmeerija päev on täis mitmesekundilisi vahesid ja spurdikiirus lühikeste jadade sees loeb rohkem kui ükskõik milline keskmine.
Kolmas on redaktor. Automaatne lõpetamine, koodijupid ja kiirklahvid tähendavad, et töötav programmeerija trükib vaid murdosa ekraanil olevatest märkidest. Ükski trükkimistest ei suuda seda mõõta ja meie oma ei teeskle, et suudab.
Kas trükkimiskiirus on programmeerimisel oluline?
Vähem, kui inimesed arvavad, ja teises kohas. Kui keegi küsib, kas 60 WPM-ist piisab programmeerijaks olemiseks, on vastus jah, ühe reservatsiooniga: kui vaatad sümbolite ja numbrite jaoks alla, ei trüki sa koodi 60 WPM-iga. Oskus trükkida rida mõttelõnga katkestamata loeb rohkem kui toores kiirus ja just klaviatuurile alla vaatamine selle katkestab.
Kuidas sümboleid kiiremini trükkida ja miks seda keegi ei õpeta
Küsimus, mis trükkimisfoorumites ikka ja jälle esile kerkib: keegi oskab tähti pimesi korraliku kiirusega trükkida, kuid kohe, kui ta kodeerima hakkab, otsib ta jälle sümboleid, numbreid ja isegi suurtähti ning tahaks õppida neid järk-järgult, nagu ta õppis tähti, paar klahvi korraga.
Osaliselt teeb sümbolid raskeks Shift. npm-i lähtekoodis, mida lugesime, olid umbes 45% sümbolite klahvivajutustest Shiftiga märgid, nagu ( ) { } : ja $, peaaegu 9 iga 100 mittetühikumärgi kohta enne, kui ühtki suurtähte arvestada. Seega paranda kõigepealt Shifti harjumus: vajuta Shifti selle käega, mis märki ei trüki. ( ja ) asuvad parema käe klahvidel 9 ja 0, nii et need võtavad vasaku Shifti; ! @ # $ asuvad vasaku käe all, nii et need võtavad parema Shifti. Enamik iseõppinud trükkijaid hoiab kõige jaoks vasakut Shifti ja ! puhul nõuab see, et vasak väike sõrm vajutaks korraga kahte klahvi. Kontrolli oma harjumust: trüki rida, milles on @ ja $, ja vaata, kumb väike sõrm liigub.
Sümboleid on raske eraldi drillida ja igav üldse drillida: tähed tulevad koos sõnadega, sulud koos koodiga ja juhuslik kood pole huvitav. Meie vastus on drillida sümboleid päris koodiridadel, üks klass korraga.
Üks klass korraga
See on järjekord, mida meie kasutaksime, ja ühtlasi järjekord sümbolite rajal, mida harjutamise lehele ehitame. Kuni see valmis pole, saad teha sama, kleepides päris koodi kohandatud režiimi, üks sümbolite klass korraga, ja lisamata järgmist klassi enne, kui praegune on 95% täpsusega:
- Numbrid. Numbririda, põhirea sõrmed sirutuvad üles. See tuleb esimesena, sest see on kõige enam kasutatav mittetäheline klass ja peaaegu kõigil on siin mõni halb harjumus, näiteks nimetissõrm, mis vajutab 4, 5, 6 ja 7. Numbrite test on kiire kontroll.
- Sulud paaridena. Kõigepealt ( ), siis [ ], siis { }. Paaridena, sest peaaegu kunagi ei trüki sa üht ilma teiseta: selles npm-i lähtekoodis esineb ( 6 195 ja ) 6 194 korda. Avamise ja sulgemise liigutuse treenimine ühe tervikuna teebki selle kiireks. Sulgev sulg on koht, kus enamikul inimestel rütm katkeb.
- Tehtemärgid. = + - * / ja noolsulud (väiksem- ja suurem-märk) ning liitvormid (==, =>, +=, !=). Need on laiali numbrireal ja parema käe kirjavahemärkide klahvidel ning mitu neist vajab sama käe Shifti, mis on ebamugav osa.
- Jutumärgid ja kirjavahemärgid. ' " ; : , . ja suurema osa tööst teeb parem väike sõrm. Semikoolonite ja kooloniga erinevad C-perekonna ja Pythoni trükkijad kõige rohkem, nii et harjuta selle keele ridadel, mida kasutad.
- Shell ja veidrad märgid. Püstkriips, kaldkriips vasakule, tilde, graavis, katus, ampersand, trell, dollar, ätt ja _ klahv. _ ja graavis üllatavad enamikku; snake_case-kood kasutab _ pidevalt ja enamik trükkijaid vajutab seda vale sõrmega.
Iga klass võtab enamikul inimestel nädal või kaks kümneminutilisi sessioone, nii et kogu rada on kaks kuni kolm kuud. See on aeglasem kui tähtede õppimine, sest sümbolite klahvid on kaugemal ja harjumused, mida asendad, on vanemad.
Mis läheb valesti, klahvipõhist statistikat jälgides: inimesed õpivad sümboli õige sõrmega selgeks ja pöörduvad surve all tagasi vana juurde, sest vana liigutus on paar nädalat kiirem. Statistikas paistab see klahvina, mille vajutusvahe kõigub metsikult: kiire, kui sirutad õigesti, ja aeglane, kui mitte. Lahendus on jääda sellesse klassi veel üheks nädalaks.
Sulupaarid ja automaatne sulgemine
Redaktorid sulgevad sulud automaatselt, mis tekitab õigustatud küsimuse: miks õppida sulgevat sulgu trükkima?
Kahel põhjusel. Automaatne sulgemine on ebajärjekindel: mõnes kohas see töötab ja mõnes mitte, näiteks terminalis või vestlusaknas. Trükkija, kes sellele loodab, kõhkleb iga kord, et kontrollida, kas see rakendus, ja kõhklus maksab rohkem kui klahvivajutus. Ning automaatselt suletud sulu ületrükkimine (vajutad „)“, kui redaktor on selle juba lisanud) on samuti klahvivajutus, nii et sulgeva sulu trükid igal juhul.
Kui kleebid koodi siin kohandatud režiimi, jagatakse tekst tühimärkide kohalt, nii et taane kaob ja igast sõnest saab sõna. See on korraga piirang ja mugavus: sa ei trüki iga Pythoni rea alguses nelja tühikut, aga ei harjuta neid ka. Korralik koodirežiim, mis käsitleb taanet ja automaatselt suletud paare nii, nagu redaktor seda teeb, on meie nimekirjas ja see on raskem, kui tundub.
Koodi ja proosa kiirused
Meil pole piisavalt koodirežiimi tulemusi, et protsentiile avaldada, ja ootame pigem, kui mõtleme need välja. Meie endi katsetes on koodi kiirus realistlikul koodijupil olnud kuskil pool kuni kaks kolmandikku sama inimese proosakiirusest ja see suhe paraneb sümbolite harjutamisega rohkem kui üldise harjutamisega.
Number, mis üle kandub, on täpsus. Programmeerijal, kes trükib proosat 97% ja koodi 90% täpsusega, on sümbolite probleem ja klahvide soojuskaart näitab täpselt, millised sümbolid. Programmeerija, kellel on mõlemas 97%, peab lihtsalt rohkem koodi trükkima. Meie hindamismetoodika selgitab, kuidas täpsus parandatud vigu arvestab.
Standardse võrdlusaluse jaoks on kirjavahemärkide test koos sisselülitatud numbritega meie tavarežiimidest koodile kõige lähemal. Looksulge seal pole, kuid see toob mängu Shift-klahvi ja numbrirea ning enamikul inimestel on lünk just seal.
Klaviatuurivalikud, mis aitavad
Klaviatuurinõuanded, mida programmeerijad saavad, puudutavad peamiselt lüliteid ja on enamasti asjast mööda.
Paigutus loeb rohkem kui lüliti. Dvorak viib sulud numbrireale ja paigutab suurema osa kirjavahemärkidest ümber. Colemak ja Workman hoiavad sulud seal, kus QWERTY-l, kuid mõlemad viivad semikooloni sinna, kus QWERTY-l on P, ja C-perekonna programmeerijad tunnevad seda. Paigutuste artiklis on pikk versioon.
Sümbolikiht on parem kui suurem klaviatuur. Paljud poolitatud ja kompaktsed klaviatuurid lasevad panna sulud ja tehtemärgid põhirea sõrmede alla kihile, mida hoitakse pöidlaklahviga. Kõigist riistvaramuudatustest, mida programmeerijad kirjeldavad, prooviksime seda esimesena, sest see tähendab, et sa ei vaata sümboli pärast enam kunagi alla.
ISO versus ANSI. ISO-klaviatuuridel (Ühendkuningriigis ja suuremas osas Euroopast) muudavad vasaku Shifti kõrval olev lisaklahv ja kõrge Enter-klahv kaldkriipsu vasakule ja püstkriipsu asukohta. Kui harjutad ühel ja töötad teisel, eksib su väike sõrm. Sel põhjusel sisaldab meie emulatsioon Colemak-DH mõlemat varianti.
Lülitid kiiruse jaoks peaaegu ei loe. Lineaarsed, taktiilsed ja klõpsuvad lülitid erinevad tunnetuse ja heli poolest ning klahvivajutuste logi ei tea, millist sa vajutasid. Meie mehaaniliste klaviatuuride artikkel käib numbrid läbi.
Heli aitab mõnel inimesel tagasisidega: veaheli ütleb sulle, et sümbol oli vale, ilma et peaksid alla vaatama. Lülita see sümbolite õppimise ajaks sisse.
Programmeerija kümneminutiline sessioon
Mida me teeksime iga päev need kaks või kolm kuud, mis sümbolite rada võtab:
- Kaks minutit: 30-sekundiline sõnatest soojenduseks, täpsus 97%.
- Kuus minutit: praegune sümbolite klass, kohandatud tekstil, mille oled kleepinud oma koodist. Lõpeta esimese märgi peale, et hakkad vana sõrme juurde tagasi minema.
- Kaks minutit: üks koodijupp keeles, mida kõige rohkem kasutad. Vaata pärast klahvide soojuskaarti, mitte WPM-i.
Päevadel, mil sul kümmet minutit pole, trüki sulgev sulg ise. See on selle artikli väikseim harjumus ja tavaliselt esimene, mis end ära tasub.
Korduma kippuvad küsimused
Mis on programmeerija jaoks hea trükkimiskiirus?
Kõik alates umbes 40 WPM-ist on kasutatav, kui trükid sümboleid ja numbreid pimesi. Sealt edasi on kitsaskohaks mõtlemine, lugemine ja redaktori valdamine, mitte sõrmede kiirus.
Kuidas õppida numbreid pimesi trükkima?
Harjuta numbririda eraldi, kuni täpsus püsib 95% juures, kasutades iga numbri jaoks sõrme, mis asub põhireal otse selle all, ja sega siis numbrid tavalisse teksti.