Menaip sentuh untuk pengaturcara: simbol, nombor dan kelajuan yang penting

Menaip sentuh untuk pengaturcara kebanyakannya tentang kekunci yang dilangkau oleh kursus menaip biasa: digit, kurungan, operator dan gabungan Shift di sekelilingnya. Pengaturcara yang menaip prosa pada 90 WPM boleh jadi perlahan menaip kod, dan penaip prosa 50 WPM boleh jadi pantas. Kami perasan perkara ini semasa menampal fail sumber kami sendiri ke dalam mod tersuai ketika menguji. Kelajuan jatuh sepertiga atau lebih berbanding mod perkataan, peta haba setiap kekunci menyala pada baris nombor dan kelingking kanan, dan burst paling perlahan berlaku pada token yang mengandungi kurungan.

Mengapa WPM prosa ialah pengganti yang lemah untuk menaip kod

Kod berbeza daripada teks dalam tiga cara, dan ujian menaip yang dibina daripada perkataan bahasa Inggeris biasa tidak mengukur satu pun daripadanya.

Yang pertama ialah campuran aksara. Kami mengiranya. Merentasi sepuluh catatan pertama di blog ini, kira-kira 93 daripada setiap 100 aksara bukan ruang ialah huruf, 5 tanda baca dan 2 digit. Dalam kod sumber JavaScript alat baris perintah npm, huruf jatuh kepada kira-kira 80 dan simbol naik kepada 19. Modul json dan email Python menghasilkan 80 hingga 85 huruf, dan satu skrip binaan kami yang padat pada 64, dengan sepertiga aksaranya simbol. Jadi kod mempunyai kira-kira tiga hingga tujuh kali ganda simbol berbanding prosa kami. Kebanyakannya terletak di baris atas atau memerlukan Shift, bermakna kelingking kanan dan capaian yang lebih lemah. Ujian perkataan bahasa Inggeris kami dibina daripada 1,000 perkataan paling biasa dalam korpus sari kata; "{" tiada dalam senarai itu.

Yang kedua ialah rentak. Prosa ditaip dalam larian panjang. Kod ditaip dalam ledakan pendek di antara jeda untuk berfikir, menatal dan membaca. Sukarelawan dalam kajian Dhakal et al. pada 2018 terhadap 136 juta ketukan kekunci, yang menyalin ayat, mencatat purata kira-kira 239 ms antara kekunci. Hari seorang pengaturcara penuh dengan sela beberapa saat, dan kelajuan burst dalam larian pendek lebih penting daripada sebarang purata.

Yang ketiga ialah editor. Autolengkap, snippet dan pintasan papan kekunci bermakna pengaturcara yang bekerja hanya menaip sebahagian kecil aksara yang ada pada skrin. Tiada ujian menaip yang dapat mengukurnya, dan ujian kami tidak berpura-pura dapat.

Adakah kelajuan menaip penting untuk pengaturcaraan?

Kurang daripada yang disangka, dan di tempat yang berbeza. Apabila seseorang bertanya sama ada 60 WPM cukup untuk menjadi pengaturcara, jawapannya ya, dengan satu syarat: jika anda memandang ke bawah untuk simbol dan nombor, 60 WPM bukanlah kelajuan anda menaip kod. Keupayaan menaip satu baris tanpa memutuskan aliran fikiran lebih penting daripada kelajuan mentah, dan memandang papan kekunci itulah yang memutuskannya.

Cara menaip simbol lebih pantas, dan mengapa tiada siapa yang mengajarnya

Satu soalan yang berulang kali timbul di forum menaip: seseorang boleh menaip sentuh huruf pada kelajuan yang baik, tetapi sebaik sahaja mula menulis kod, mereka kembali mencari-cari simbol, nombor dan juga huruf besar, dan mereka mahu cara beransur-ansur untuk mempelajarinya, seperti cara mereka mempelajari huruf, beberapa kekunci pada satu masa.

Sebahagian daripada kesukaran simbol ialah Shift. Dalam kod sumber npm yang kami kira, kira-kira 45% ketukan simbol ialah aksara yang memerlukan Shift seperti ( ) { } : dan $, hampir 9 daripada setiap 100 aksara bukan ruang sebelum anda mengira satu huruf besar pun. Jadi betulkan tabiat Shift dahulu: tekan Shift dengan tangan yang tidak menaip aksara itu. ( dan ) terletak pada 9 dan 0 tangan kanan, jadi ia menggunakan Shift kiri; ! @ # $ terletak di tangan kiri, jadi ia menggunakan Shift kanan. Kebanyakan penaip yang belajar sendiri menahan Shift kiri untuk segala-galanya, dan untuk ! itu memaksa kelingking kiri menekan dua kekunci serentak. Semak tabiat anda sendiri dengan menaip satu baris yang mengandungi @ dan $ dan perhatikan kelingking mana yang bergerak.

Simbol sukar dilatih secara berasingan dan membosankan untuk dilatih sama sekali: huruf datang bersama perkataan, kurungan datang bersama kod, dan kod rawak tidak menarik. Jawapan kami ialah melatih simbol pada baris kod sebenar, satu kelas pada satu masa.

Satu kelas pada satu masa

Inilah susunan yang akan kami gunakan, dan susunan trek simbol yang sedang kami bina untuk halaman latihan. Sehingga ia dilancarkan, anda boleh melakukan perkara yang sama dengan menampal kod sebenar ke dalam mod tersuai, satu kelas simbol pada satu masa, dan tidak menambah kelas seterusnya sehingga kelas semasa mencapai ketepatan 95%:

  • Digit. Baris nombor, dengan jari baris asas mencapai ke atas. Ini didahulukan kerana ia kelas bukan huruf yang paling banyak digunakan dan kerana hampir semua orang mempunyai tabiat buruk di sini, contohnya jari telunjuk menekan 4, 5, 6 dan 7. Ujian nombor ialah semakan pantas.
  • Kurungan secara berpasangan. ( ) dahulu, kemudian [ ], kemudian { }. Berpasangan, kerana anda hampir tidak pernah menaip satu tanpa yang lain: dalam kod sumber npm itu, ( muncul 6,195 kali dan ) 6,194 kali. Melatih gerakan buka-tutup sebagai satu unit itulah yang menjadikannya pantas. Kurungan penutup ialah tempat rentak kebanyakan orang terputus.
  • Operator. = + - * / dan kurungan sudut, serta bentuk gabungan (==, =>, +=, !=). Ini tersebar di baris nombor dan kekunci tanda baca tangan kanan, dan beberapa daripadanya memerlukan Shift pada tangan yang sama, itulah bahagian yang janggal.
  • Tanda petik dan tanda baca. ' " ; : , . dengan kelingking kanan melakukan sebahagian besar kerja. Koma bertitik dan titik bertindih ialah tempat penaip keluarga C dan Python paling berbeza, jadi berlatihlah pada baris daripada bahasa yang anda gunakan.
  • Shell dan yang ganjil-ganjil. Paip, garis condong ke belakang, tilde, backtick, karet, ampersan, pagar, dolar, tanda @ dan kekunci _. Kekunci _ dan backtick mengejutkan kebanyakan orang; kod snake_case menggunakan _ sepanjang masa, dan kebanyakan penaip menekannya dengan jari yang salah.

Setiap kelas mengambil masa seminggu atau dua minggu sesi sepuluh minit bagi kebanyakan orang, jadi keseluruhan trek ialah dua hingga tiga bulan. Itu lebih perlahan daripada mempelajari huruf, kerana kekunci simbol lebih jauh dan tabiat yang anda gantikan lebih lama.

Apa yang biasanya tidak kena, berdasarkan pemerhatian statistik setiap kekunci: orang mempelajari simbol dengan jari yang betul dan kemudian kembali kepada cara lama apabila tertekan, kerana gerakan lama lebih pantas selama beberapa minggu. Statistik menunjukkannya sebagai kekunci yang selangnya berubah-ubah dengan ketara, pantas apabila anda mencapai dengan betul dan perlahan apabila tidak. Penyelesaiannya ialah kekal pada kelas itu selama seminggu lagi.

Pasangan kurungan dan autotutup

Editor menutup kurungan secara automatik, yang menimbulkan soalan yang wajar: mengapa belajar menaip kurungan penutup?

Dua sebab. Autotutup tidak konsisten: ia berfungsi di sesetengah tempat dan tidak di tempat lain, seperti terminal atau tetingkap sembang. Penaip yang bergantung padanya teragak-agak setiap kali untuk memeriksa sama ada ia berfungsi, dan teragak-agak itu lebih mahal daripada satu ketukan kekunci. Selain itu, menaip di atas kurungan yang ditutup secara automatik (menekan ")" apabila editor sudah memasukkannya) juga satu ketukan kekunci, jadi anda tetap menaip kurungan penutup.

Apabila anda menampal kod ke dalam mod tersuai di sini, teks dipecahkan pada ruang putih, jadi inden hilang dan setiap token menjadi satu perkataan. Itu satu kekangan dan satu kemudahan sekali gus: anda tidak menaip empat ruang di awal setiap baris Python, dan anda juga tidak melatihnya. Mod kod yang sebenar, yang mengendalikan inden dan pasangan autotutup seperti editor, ada dalam senarai kami, dan ia lebih sukar daripada yang disangka.

Kelajuan kod berbanding prosa

Kami belum mempunyai cukup keputusan mod kod untuk menerbitkan persentil, dan kami lebih rela menunggu daripada mereka-reka angka. Dalam larian kami sendiri, kelajuan kod pada snippet yang realistik berada sekitar separuh hingga dua pertiga kelajuan prosa orang yang sama, dan nisbah itu bertambah baik lebih banyak dengan latihan simbol berbanding latihan umum.

Angka yang benar-benar boleh dipindahkan ialah ketepatan. Pengaturcara yang menaip prosa pada ketepatan 97% dan kod pada 90% mempunyai masalah simbol, dan peta haba setiap kekunci menunjukkan dengan tepat simbol yang mana. Pengaturcara yang mencapai 97% pada kedua-duanya hanya perlu menaip lebih banyak kod. Metodologi pemarkahan kami menerangkan cara ketepatan mengira kesilapan yang dibetulkan.

Untuk penanda aras standard, ujian tanda baca dengan nombor dihidupkan ialah mod biasa kami yang paling hampir dengan kod. Ia tiada kurungan kerinting, tetapi ia melibatkan kekunci Shift dan baris nombor, dan bagi kebanyakan orang itulah jurangnya.

Pilihan papan kekunci yang membantu

Nasihat papan kekunci yang diterima oleh pengaturcara kebanyakannya tentang suis, dan kebanyakannya tidak relevan.

Susun atur lebih penting daripada suis. Dvorak memindahkan kurungan ke baris nombor dan mengalihkan sebahagian besar tanda baca. Colemak dan Workman mengekalkan kurungan di tempatnya pada QWERTY, tetapi kedua-duanya memindahkan koma bertitik ke tempat P pada QWERTY, yang akan dirasai oleh pengaturcara keluarga C. Artikel susun atur ada versi panjangnya.

Lapisan simbol lebih baik daripada papan kekunci yang lebih besar. Banyak papan kekunci terbelah dan padat membolehkan anda meletakkan kurungan dan operator di bawah jari baris asas pada lapisan yang ditahan dengan kekunci ibu jari. Daripada semua perubahan perkakasan yang diceritakan oleh pengaturcara, inilah yang akan kami cuba dahulu, kerana ia bermakna anda tidak perlu memandang ke bawah untuk simbol lagi.

ISO lawan ANSI. Pada papan kekunci ISO (UK dan sebahagian besar Eropah), kekunci tambahan di sebelah Shift kiri dan kekunci Enter yang tinggi mengubah kedudukan garis condong ke belakang dan paip. Jika anda berlatih pada satu jenis dan bekerja pada jenis yang lain, kelingking anda akan tersasar. Emulasi kami menyediakan kedua-dua varian Colemak-DH atas sebab itu.

Suis hampir tidak penting untuk kelajuan. Suis linear, taktil dan berdetik berbeza dari segi rasa dan bunyi, dan log ketukan kekunci tidak tahu yang mana satu anda tekan. Artikel papan kekunci mekanikal kami menghuraikan angka-angkanya.

Bunyi membantu sesetengah orang mendapatkan maklum balas: bunyi kesilapan memberitahu anda sesuatu simbol salah tanpa perlu memandang ke bawah. Hidupkannya semasa belajar simbol.

Sesi sepuluh minit untuk pengaturcara

Apa yang akan kami lakukan setiap hari selama dua atau tiga bulan trek simbol itu:

  • Dua minit: ujian perkataan 30 saat sebagai pemanasan, ketepatan pada 97%.
  • Enam minit: kelas simbol semasa, pada teks tersuai yang ditampal daripada kod anda sendiri. Berhenti pada tanda pertama anda kembali kepada jari lama.
  • Dua minit: satu snippet kod dalam bahasa yang paling kerap anda gunakan. Lihat peta haba setiap kekunci selepas itu, bukan WPM.

Pada hari anda tiada sepuluh minit, taiplah kurungan penutup sendiri. Itulah tabiat paling kecil dalam artikel ini dan biasanya yang pertama memberi hasil.

Soalan lazim

Apakah kelajuan menaip yang baik untuk pengaturcara?

Apa-apa dari kira-kira 40 WPM ke atas boleh digunakan jika anda menaip sentuh simbol dan nombor. Melepasi itu, kesesakannya ialah berfikir, membaca dan kemahiran editor, bukan kelajuan jari.

Bagaimanakah saya belajar menaip sentuh nombor?

Latih baris nombor secara berasingan sehingga ketepatan kekal pada 95%, menggunakan jari yang betul-betul di bawah setiap digit pada baris asas, kemudian campurkan nombor ke dalam teks biasa.

Sumber