Tata Letak Keyboard yang Ideal untuk Pemrograman [tertutup]

89

Saya sering mendengar keluhan bahwa bahasa pemrograman yang terlalu banyak menggunakan simbol untuk singkatnya, terutama C dan C ++ (saya tidak akan menyentuh APL), sulit untuk diketik karena mereka memerlukan penggunaan tombol shift yang sering. Satu atau dua tahun yang lalu, saya bosan sendiri, mengunduh Microsoft's Keyboard Layout Creator , membuat beberapa perubahan pada tata letak saya, dan tidak pernah melihat ke belakang. Perbedaan kecepatannya mencengangkan; dengan beberapa perubahan sederhana ini saya dapat mengetik kode C ++ sekitar 30% lebih cepat, tentu saja tergantung seberapa berbulu; Yang terbaik dari semuanya, kecepatan mengetik saya dalam teks berjalan biasa tidak terganggu.

Pertanyaan saya adalah ini: tata letak keyboard alternatif apa yang telah ada untuk pemrograman, yang telah mendapatkan popularitas, apakah ada yang masih dalam penggunaan modern, apakah Anda secara pribadi menggunakan tata letak yang diubah, dan bagaimana tata letak saya dapat dioptimalkan lebih lanjut?

Saya membuat perubahan berikut pada tata letak QWERTY standar. (Saya tidak menggunakan Dvorak , tetapi ada tata letak Dvorak programmer yang layak disebutkan.)

  • Tukar angka dengan simbol di baris atas, karena angka literal yang panjang atau berulang biasanya diganti dengan konstanta bernama;
  • Tukar backquote dengan tilde, karena backquote jarang ditemukan dalam banyak bahasa tetapi destruktor biasa terjadi di C ++;
  • Tukar tanda minus dengan garis bawah, karena garis bawah biasa ditemukan dalam pengenal;
  • Tukar tanda kurung kurawal dengan tanda kurung siku, karena blok lebih umum daripada subskrip; dan
  • Tukar kutipan ganda dengan tanda kutip tunggal, karena string lebih umum daripada literal karakter.

Saya menduga yang terakhir ini mungkin akan menjadi yang paling kontroversial, karena ini paling mengganggu teks berjalan dengan mengharuskan penggunaan shift untuk mengetik kontraksi umum. Tata letak ini secara signifikan meningkatkan kecepatan mengetik saya di C ++, C, Java, dan Perl, dan agak meningkatkannya di LISP dan Python.

Jon Purdy
sumber
32
Mungkin hanya saja saya berpikir terlalu lambat - tetapi kecepatan mengetik mentah biasanya bukan faktor pembatas saya saat mengembangkan perangkat lunak. Jika ya, saya mungkin akan berpikir bahwa saya melakukan sesuatu yang salah.
Lucero
9
@ Lucero: Secara keseluruhan , tidak, tapi ketika saya (akhirnya!) Menemukan apa yang harus saya lakukan, semakin cepat dan nyaman saya mengetiknya, semakin baik. Setelah Anda menyelesaikan semua pemikiran Anda, terkadang ada banyak penggilingan kode yang harus dilakukan ... :-)
TJ Crowder
3
@ Jon: Sangat merekomendasikan menjadikan ini CW sebelum ditutup sebagai subjektif (yang, bagaimanapun, itu).
TJ Crowder
20
@TJ: membuat CW. Tata letak yang baik bukanlah masalah kinerja mentah, melainkan salah satu kenyamanan — tetapi kenyamanan sangat penting untuk kinerja.
Jon Purdy
3
Lucu sekali bagaimana Anda dibanting oleh beberapa orang, saya sarankan untuk mengabaikan mereka. Tidak hanya kecepatan mengetik (yang merupakan faktor jika Anda dapat mengetik cukup untuk dapat "memprogram seperti yang Anda pikirkan"), ergonomi mengalahkan itu. Tetapi kecepatan dan ergonomi berjalan seiring: gerakan yang melelahkan tangan Anda lambat untuk dilakukan, kelelahan menyebabkan kesalahan dan lebih memperbaiki pajak tersebut. Dan dalam jangka panjang, menyesuaikan tata letak keyboard agar sesuai dengan kebutuhan Anda mungkin menjadi perbedaan antara RSI atau tanpa RSI.
hanya seseorang

Jawaban:

32

Saya masih berpendapat bahwa kecepatan mengetik bukanlah faktor utama dalam waktu yang dibutuhkan untuk menyelesaikan sebuah proyek. Jika ya, ada masalah besar (Minggu pengodean menghemat waktu berjam-jam untuk perencanaan).

Mengenai pertanyaan Anda, saya lebih suka menggunakan tata letak standar karena itu berarti saya tidak perlu menghabiskan 10 menit pertama terlihat bodoh ketika disajikan dengan tata letak keyboard standar.

Beberapa penggantian yang Anda sarankan, misalnya baris atas dengan karakter khusus tidak membuat perbedaan sedikit pun karena jari bagian luar di sisi lain harus bergerak untuk bergeser pada saat yang bersamaan.

IMHO Satu hal yang membantu tata letak rangkaian di atas adalah hanya menggunakan pintasan keyboard. Vim dan Emacs direkomendasikan. Itu membuat teks bergerak jauh lebih cepat.

Yacoby
sumber
22
Oh, tidak, kecepatan mengetik bukanlah penghambat sama sekali, tetapi pada saat yang sama, mengapa membiarkan sesuatu yang konyol seperti keyboard menghalangi Anda? Saya tidak mengalami kesulitan untuk beralih antara tata letak saya dan lainnya, karena saya sering menggunakan keduanya; Saya lebih suka milik saya. Dan harus saya akui, emacs membuat pemrograman secepat mungkin — ketika saya tidak perlu mencari urutan kunci.
Jon Purdy
4
Oh ya, keserempakan gerakan tangan kiri dan kanan juga tidak ada bedanya: modifikator tetap harus tertekan sebelum tuts dibunyikan. Perbedaan milidetik, tentu saja, tetapi sekali lagi, mengapa menghalangi diri Anda sendiri? Pemrograman dengan tata letak yang tidak bekerja untuk Anda seperti pemrograman pada keyboard yang lengket.
Jon Purdy
7
Saya mempertahankannya dengan menyimpan beberapa tata letak keyboard dalam memori Anda menyabotase memori otot Anda dan dengan demikian membuat pengetikan Anda lebih lambat.
JesperE
1
Masalah lain dengan tombol shift adalah urutan di mana Anda berganti-ganti, jadi kedua tangan melompat dari baris atas ke tombol shift dan ke belakang. Saya tidak mengatakan itu cukup umum untuk dikhawatirkan, tetapi hal-hal seperti "(! * X)" mungkin memenuhi syarat sebagai menjengkelkan.
Steve314
2
-1: Tidak memberikan kontribusi apa pun pada diskusi (argumen "tampak bodoh" tidak didukung bahkan oleh satu datum dari pengalaman, ini adalah kekhawatiran berwawasan ke depan) dan tidak dapat diperbaiki.
Evgeni Sergeev
19

Saya akan menjawab pertanyaan Anda dengan cara berikut. Tugasnya adalah mengatur keyboard sedemikian rupa untuk meminimalkan penekanan tombol dan gerakan tangan untuk teks tertentu.

Langkah-langkah menuju solusi yang mungkin. Buatlah program yang:

  1. Mengambil file teks dengan kode sumber. (Semakin besar semakin baik dan dari berbagai sumber!)
  2. Menghitung frekuensi penggunaan setiap simbol (keberadaannya dalam teks).
  3. (opsional) Berdasarkan langkah 2: Program ini menghasilkan jumlah pukulan kunci untuk setiap simbol ditambah seberapa jauh tangan harus bergerak dari posisi tengah. Hasilnya, Anda akan mengukur seberapa efektif tata letak keyboard Anda.

Sekarang secara manual atau dengan menulis program Definisikan ulang tata letak Anda dengan cara berikut. Letakkan simbol yang paling sering digunakan di posisi tengah lebih dekat ke tangan kuat Anda. Simbol kedua pergi ke tangan Anda yang lemah di posisi tengah. Simbol ketiga kembali ke tangan Anda yang kuat ... dan seterusnya. Kemudian Anda secara bertahap berpindah dari posisi tengah tangan ke area keyboard yang lebih "jauh". Ketika semua keyboard sudah penuh maka Anda melanjutkan proses menetapkan tombol tetapi kali ini dengan menekan tombol Shift. Perbedaan lainnya adalah Anda tidak memutar tangan yang kuat dan yang lemah untuk setiap simbol saat Shift turun. Dengan menekan tombol shift terlebih dahulu Anda akan mengisi posisi sentral pada keyboard dan kemudian pindah ke posisi yang lebih jauh.

Saat Anda melakukan semua itu, lakukan langkah 3 lagi untuk tata letak baru untuk melihat bagaimana tata letak diperbaiki.

Anda mungkin harus membawa papan ketik Anda setiap saat. Sisi baiknya, tidak ada yang akan menyentuh komputer Anda. Ini akan membuat Anda terlihat seperti seorang Pro.

Terakhir, jangan lupa untuk membagikan temuan Anda.

Ge Spi
sumber
Saya sangat suka jawaban ini
,:
Jika seseorang ingin membuat segalanya lebih rumit, seseorang dapat mempertimbangkan kombinasi karakter dan mencoba membuat tangan bergantian atau menghindari goresan jari yang sama (seperti "kilo" di QWERTY)
awe lotta
15

Saya bermain dengan varian tata letak Colemak saat ini dengan banyak perubahan simbol:

tanpa SHIFT:

`- {} []; <> () _ =
qwfpgjluy * / # \
arstdhneio '
zxcvbkm,. !

dengan SHIFT:

~ 1 2 3 4 5 6 7 8 9 0 & +
QWFPGJLUY @ ^ $ |
ARSTDHNEIO "
ZXCVBKM%:?

Mungkin aku akan mengembalikan / key ...

Tapi ini tidak didasarkan pada penelitian suara apa pun, dan saya juga ingin melihat tata letak dioptimalkan (Pengoptimalan termasuk hal-hal seperti perubahan tangan dll, juga pelestarian ZXCV, ...) dengan korpus berbasis kode sumber, karena semua tata letak ini tampaknya dioptimalkan hanya untuk prosa. Misalnya, 'f' adalah huruf yang sangat umum di C (jika, untuk).

Pembaruan: Saat ini saya menggunakan

`- {} [] @ <> () _ =
qwkrgyulp *; #
asftdhneio '\
\ zxcvbjm,. /

dengan SHIFT:

~ 1 2 3 4 5 6 7 8 9 0 ^ +
QWKRGYULP &! $
ASFTDHNEIO "|
| ZXCVBJM%:?

Ini didasarkan pada pengoptimalan parsial swap 6-kunci yang diambil dari Carpalx dengan mempertahankan pintasan Cut / Copy / Paste / Undo yang biasa dan dimodifikasi untuk memberikan akses yang lebih baik ke karakter pemrograman biasa.

Jan
sumber
1
Saya suka ide membuat karakter default di atas angka. yaitu: geser + 1 untuk mendapatkan satu, dan menekan 1 memberi Anda!
Ray
14

Buat pencatat tombol sederhana, lalu hitung berapa kali setiap tombol ditekan. Jalankan selama satu atau dua hari, lalu simpan hasilnya ke file teks. Lakukan ini sesekali. Tidak masalah tata letak apa yang Anda gunakan, karena Anda hanya melihat tombol mana yang paling sering digunakan.

Jika Anda ingin membuat tata letak yang baik, Anda tidak perlu takut untuk menjauh dari norma. Saya sarankan untuk meletakkan 11 kunci teratas di sepanjang baris beranda, lalu 11 kunci teratas berikutnya sebagai baris atas (biarkan 2 kunci di atas tombol kembali sebagai kunci yang paling jarang digunakan), lalu 11 kunci teratas ke-3 sebagai baris bawah . Harus ada 4 kunci tersisa sekarang. Ambil itu dan letakkan di slot - = dan] \. Selamat! Anda sekarang telah membuat tata letak keyboard yang bagus untuk tujuan Anda! = D

Tgwizman
sumber
1
Jawaban yang sangat bagus: keyboard harus disesuaikan dengan pemilik
Julien__
2
Untuk statistik penggunaan keyboard, sudah ada program bagus yang dapat menampilkan peta panas, seperti ini: WhatPulse
Mihai MATEI
[Mengunjungi komentar posting lama] Itu sebenarnya adalah ide yang sangat keren (atau panas;]). Aku harus memeriksanya sendiri!
Tgwizman
10

Secara keseluruhan, menurut saya memiliki editor teks yang baik dan mengetahui cara menggunakannya lebih baik daripada mencoba meningkatkan kecepatan mengetik Anda. Mampu merekam dan memutar ulang makro terkadang merupakan penyelamat, dan pilihan potongan kode yang ditetapkan pintasan dapat berguna karena biasanya ada batasan yang ditentukan oleh bahasa tentang apa yang dapat diubah menjadi perpustakaan.

Secara lebih umum, saya pikir peningkat produktivitas yang sebenarnya adalah tentang pengetahuan ...

  • Mengetahui alat dan pustaka apa yang tersedia dan bagaimana menggunakannya.
  • Mengetahui keseluruhan struktur kode yang sedang Anda kerjakan, bukan hanya sedikit.
  • Mengetahui algoritme utama, pola desain, dan idiom sehingga Anda tidak perlu menemukannya kembali.
  • Mengetahui aturan dengan cukup baik sehingga Anda bisa fleksibel - Anda tahu kapan harus melanggarnya.
  • Mengetahui rekan kerja Anda dan kekuatan, kelemahan, dll. - yaitu mengetahui kapan harus memikirkan sesuatu sendiri, tetapi juga kapan dan siapa yang harus ditanyakan.

FWIW, saya tidak mengaku kuat pada semua itu. Saya selalu terlalu bias untuk memecahkan masalah sendiri, dan dengan kecenderungan yang terlalu kuat untuk menemukan kembali roda dan skema arsitektur besar.

Bagaimanapun, saya hanya curiga bahwa waktu yang dihabiskan untuk mengubah dan mempelajari tata letak keyboard akan menjadi gangguan dari masalah yang lebih penting.

Steve314
sumber
1
Saya setuju dengan Anda dalam semua hal! Memanfaatkan alat dan idiom dengan baik hanyalah pemrograman yang bagus. Tapi ini adalah pertanyaan tentang satu hal yang sangat spesifik, dan hei, lima belas menit dua tahun lalu telah menyelamatkan saya dari rasa frustrasi yang masuk akal sejak itu.
Jon Purdy
@Jon - Saya mengerti maksudnya, tapi menurut saya kebiasaan mengetik saya sudah diprogram dengan cukup kuat sekarang - perubahan akan menjadi pekerjaan yang sulit.
Steve314
-1: Tidak terdengar seperti berdasarkan pengalaman dengan tata letak keyboard alternatif; bertentangan dengan pengalaman saya dengan mereka. Digresses jauh di luar topik. Tidak menyediakan item tindakan konkret. Tidak bisa diperbaiki.
Evgeni Sergeev
-4

Mengubah tata letak papan tombol adalah ide yang buruk karena (mungkin) akan meningkatkan kecepatan mengetik Anda pada satu papan ketik, tetapi sangat merusak kecepatan mengetik Anda pada papan ketik lain atau pada komputer yang tidak memiliki tata letak papan ketik khusus Anda. Saya telah menemukan bahwa seringkali lebih baik menyesuaikan diri Anda dengan default, bahwa harus mengubahnya di mana-mana. (Secara pribadi, jari saya sangat bias Emacs, yang menyebabkan banyak gesekan pengetikan di tempat lain.)

JesperE
sumber
7
Saya dengan senang hati beralih di antara dua tata letak. Jon melaporkan ini sudah "satu atau dua tahun" dan dia tidak mengalami kesulitan bolak-balik. YMMV, pada dasarnya.
TJ Crowder
4
Menurut saya, beralih antara papan ketik dan tata letak papan ketik semudah / sesulit beralih antara berbicara dalam bahasa yang berbeda - jika Anda mengetahuinya dengan baik, setelah beberapa menit Anda akan mendapatkan kembali kecepatan berpikir sepenuhnya.
liori
1
@liori: dikatakan baik, meskipun apakah itu dalam urutan menit atau detik sepenuhnya tergantung pada seberapa lelah saya. : P
Jon Purdy
2
@Jason D: Poin yang valid, tapi saya senang poin itu tidak berlaku untuk saya ... Saya jarang menggunakan komputer orang lain.
liori
2
@Li. Banyak perusahaan yang memiliki ruang konferensi dengan komputer bersama. Dan banyak pengembang yang baik akan membiarkan orang lain "menggerakkan" komputer mereka saat menandai masalah yang sulit. Jika orang lain MENOLAK untuk menyentuh komputer Anda karena tata letak non-standar Anda, Anda dapat menghambat pemecahan masalah kooperatif. Dan untuk atasan Anda, itu menghilangkan sebagian besar keuntungan pribadi yang Anda peroleh dengan tata letak yang dipilih. Ingat, perkembangan biasanya bukan hanya satu orang yang melawan dunia. Biasanya dilakukan sebagai tim.
Jason D