เค้าโครงแป้นพิมพ์ที่เหมาะสำหรับการเขียนโปรแกรม [ปิด]


89

ฉันมักจะได้ยินคำบ่นว่าภาษาโปรแกรมที่ใช้สัญลักษณ์อย่างหนักเพื่อความกระชับโดยเฉพาะอย่างยิ่ง C และ C ++ (ฉันจะไม่แตะ APL) นั้นพิมพ์ยากเพราะต้องใช้ปุ่ม shift บ่อยๆ หนึ่งหรือสองปีที่ผ่านมาฉันเบื่อตัวเองดาวน์โหลดKeyboard Layout Creatorของ Microsoft ทำการเปลี่ยนแปลงบางอย่างกับเลย์เอาต์ของฉันและไม่เคยมองย้อนกลับไปเลย ความแตกต่างของความเร็วนั้นน่าตกใจ ด้วยการเปลี่ยนแปลงง่ายๆเหล่านี้ฉันสามารถพิมพ์รหัส C ++ ได้เร็วขึ้นประมาณ 30% ขึ้นอยู่กับว่ามันมีขนดกแค่ไหน เหนือสิ่งอื่นใดความเร็วในการพิมพ์ของฉันในข้อความวิ่งธรรมดาจะไม่ถูกทำลาย

คำถามของฉันมีดังนี้: เค้าโครงแป้นพิมพ์อื่นที่มีอยู่สำหรับการเขียนโปรแกรมซึ่งได้รับความนิยมมีรูปแบบใดบ้างที่ยังคงใช้งานอยู่ในปัจจุบันคุณใช้เค้าโครงที่เปลี่ยนแปลงเป็นการส่วนตัวหรือไม่และเค้าโครงของฉันจะปรับให้เหมาะสมเพิ่มเติมได้อย่างไร

ฉันได้ทำการเปลี่ยนแปลงต่อไปนี้กับเค้าโครง QWERTY มาตรฐาน (ฉันไม่ได้ใช้Dvorakแต่มีเค้าโครงโปรแกรมเมอร์ Dvorak ที่น่ากล่าวถึง)

  • สลับตัวเลขที่มีสัญลักษณ์ในแถวบนสุดเนื่องจากโดยทั่วไปแล้วตัวเลขตามตัวอักษรยาวหรือซ้ำกันมักจะถูกแทนที่ด้วยค่าคงที่ที่มีชื่อ
  • สลับ backquote กับ tildeเนื่องจาก backquotes หายากในหลายภาษา แต่ตัวทำลายพบได้บ่อยใน C ++
  • สลับลบด้วยขีดล่างเนื่องจากขีดล่างเป็นเรื่องปกติในตัวระบุ
  • สลับวงเล็บปีกกากับวงเล็บเหลี่ยมเนื่องจากบล็อกเป็นแบบธรรมดามากกว่าตัวห้อย และ
  • สลับเครื่องหมายคำพูดคู่กับเครื่องหมายคำพูดเดี่ยวเนื่องจากสตริงเป็นแบบธรรมดามากกว่าตัวอักษร

ฉันสงสัยว่าสุดท้ายนี้น่าจะเป็นที่ถกเถียงกันมากที่สุดเนื่องจากมันรบกวนข้อความที่กำลังทำงานอยู่มากที่สุดโดยต้องใช้ shift เพื่อพิมพ์การหดตัวทั่วไป เลย์เอาต์นี้เพิ่มความเร็วในการพิมพ์ของฉันอย่างมากใน C ++, C, Java และ Perl และเพิ่มขึ้นบ้างใน LISP และ Python


32
บางทีมันอาจจะเป็นแค่ว่าฉันคิดช้าเกินไป - แต่ความเร็วในการพิมพ์ดิบมักไม่ใช่ปัจจัย จำกัด ของฉันเมื่อพัฒนาซอฟต์แวร์ ถ้าเป็นเช่นนั้นฉันคงคิดว่าฉันทำอะไรผิด
Lucero

9
@ ลูเซโร: โดยรวมแล้วไม่ แต่เมื่อฉัน (ในที่สุด!) ก็คิดได้ว่าฉันควรจะทำอะไรฉันก็จะพิมพ์ได้เร็วและสะดวกสบายมากขึ้นเท่านั้น เมื่อคุณได้ทำทุกอย่างที่คิดอย่างหนักแล้วบางครั้งก็มีโค้ดมากมายที่ต้องทำ ... :-)
TJ Crowder

3
@ จอน: ขอแนะนำอย่างยิ่งให้สร้าง CW นี้ก่อนที่จะปิดเป็นอัตนัย (ซึ่งหลังจากนั้นก็เป็นเช่นนั้น)
TJ Crowder

20
@TJ: ทำ CW. การจัดวางที่ดีไม่ได้เป็นปัญหาของประสิทธิภาพดิบมากนักเนื่องจากเป็นหนึ่งในความสะดวกสบาย แต่ความสะดวกสบายนั้นสำคัญมากต่อประสิทธิภาพ
Jon Purdy

3
เป็นเรื่องตลกที่คุณโดนคนไม่กี่คนกระแทกฉันขอแนะนำให้เพิกเฉย ไม่ใช่แค่ความเร็วในการพิมพ์เท่านั้น (ซึ่งเป็นปัจจัยที่หากคุณพิมพ์ได้มากพอที่จะสามารถ "ตั้งโปรแกรมตามที่คุณคิด" ได้) การยศาสตร์ก็สำคัญกว่า แต่ความเร็วและการยศาสตร์ไปด้วยกัน: การเคลื่อนไหวที่ทำให้มือของคุณตึงช้าลงความเมื่อยล้านำไปสู่ข้อผิดพลาดและแก้ไขภาษีเหล่านั้นให้มือของคุณมากยิ่งขึ้น และในระยะยาวการปรับแต่งรูปแบบแป้นพิมพ์ให้ตรงกับความต้องการของคุณอาจทำให้ RSI หรือ RSI แตกต่างกัน
แค่ใครสักคน

คำตอบ:


32

ฉันยังคงยึดถือว่าความเร็วในการพิมพ์ไม่ใช่ปัจจัยหลักในระยะเวลาที่ใช้ในการทำโปรเจ็กต์ หากเป็นเช่นนั้นก็เป็นปัญหาใหญ่ (สัปดาห์ของการเข้ารหัสช่วยให้เราประหยัดเวลาในการวางแผนได้หลายชั่วโมง)

เกี่ยวกับคำถามของคุณฉันชอบใช้เลย์เอาต์มาตรฐานเพราะมันหมายความว่าฉันไม่ต้องใช้เวลา 10 นาทีแรกที่ดูโง่ ๆ เมื่อนำเสนอด้วยรูปแบบแป้นพิมพ์มาตรฐาน

การแทนที่บางอย่างที่คุณแนะนำเช่นแถวบนสุดที่มีอักขระพิเศษไม่ได้สร้างความแตกต่างสักออนซ์เนื่องจากในทางกลับกันนิ้วด้านนอกควรจะขยับเพื่อเลื่อนในเวลาเดียวกัน

IMHO สิ่งหนึ่งที่ช่วยเหนือการจัดวางแบบโซ่คือการใช้แป้นพิมพ์ลัดเท่านั้น แนะนำให้ใช้ Vim และ Emacs ทำให้ข้อความเคลื่อนที่ไปรอบ ๆ ได้เร็วขึ้น


22
โอ้ไม่ความเร็วในการพิมพ์ไม่ได้เป็นคอขวด แต่อย่างใด แต่ในขณะเดียวกันทำไมต้องปล่อยให้บางสิ่งที่โง่เขลาอย่างแป้นพิมพ์เข้ามาขวางทางคุณ? ฉันไม่มีปัญหาในการสลับไปมาระหว่างเลย์เอาต์และอื่น ๆ เพราะฉันใช้ทั้งสองอย่างบ่อย ฉันชอบของฉันมากกว่า และฉันต้องยอมรับว่า emac ทำให้การเขียนโปรแกรมเร็วที่สุดเท่าที่จะทำได้ - เมื่อฉันไม่ต้องค้นหาลำดับคีย์
Jon Purdy

4
โอ้และการเคลื่อนไหวของมือซ้ายและขวาพร้อมกันก็ไม่ได้สร้างความแตกต่างเช่นกันตัวปรับแต่งยังคงต้องถูกกดก่อนที่จะกดปุ่ม ความแตกต่างของมิลลิวินาทีแน่นอน แต่อีกครั้งทำไมต้องขัดขวางตัวเอง? การเขียนโปรแกรมด้วยเค้าโครงที่ไม่เหมาะกับคุณก็เหมือนกับการเขียนโปรแกรมบนแป้นพิมพ์แบบเหนียว
Jon Purdy

7
ฉันรักษาไว้ด้วยการเก็บรูปแบบแป้นพิมพ์หลาย ๆ แบบไว้ในหน่วยความจำคุณกำลังทำลายความทรงจำของกล้ามเนื้อและทำให้การพิมพ์ช้าลง
JesperE

1
ปัญหาอื่น ๆ ของปุ่ม shift คือลำดับที่คุณสลับกันดังนั้นมือทั้งสองจึงกระโดดจากแถวบนไปยังแป้น Shift และถอยหลัง ฉันไม่ได้บอกว่ามันเป็นเรื่องธรรมดาพอที่จะกังวล แต่สิ่งต่างๆเช่น "(! * x)" อาจทำให้ระคายเคือง
Steve314

2
-1: ไม่มีส่วนร่วมใด ๆ ในการอภิปราย (การโต้แย้ง "ดูโง่" ไม่ได้รับการสนับสนุนข้อมูลจากประสบการณ์แม้แต่ข้อเดียวมันเป็นความกังวลในอนาคต) และไม่สามารถแก้ไข
Evgeni Sergeev

19

ฉันจะตอบคำถามของคุณด้วยวิธีต่อไปนี้ ภารกิจคือการจัดระเบียบแป้นพิมพ์ในลักษณะเพื่อลดการกดแป้นและการเคลื่อนไหวของมือสำหรับข้อความที่กำหนด

ก้าวไปสู่แนวทางแก้ไขที่เป็นไปได้ สร้างโปรแกรมที่:

  1. รับไฟล์ข้อความพร้อมซอร์สโค้ด (ยิ่งใหญ่ยิ่งดีและจากแหล่งต่างๆ!)
  2. นับความถี่ในการใช้สัญลักษณ์แต่ละตัว (มีอยู่ในข้อความ)
  3. (ไม่บังคับ) ขึ้นอยู่กับขั้นตอนที่ 2: โปรแกรมจะสร้างการนับจังหวะสำคัญสำหรับแต่ละสัญลักษณ์บวกกับระยะที่เข็มต้องไปจากตำแหน่งกลาง ด้วยเหตุนี้คุณจะสามารถวัดได้ว่ารูปแบบแป้นพิมพ์ของคุณมีประสิทธิภาพเพียงใด

ตอนนี้ด้วยตนเองหรือโดยการเขียนโปรแกรมกำหนดโครงร่างของคุณใหม่ด้วยวิธีต่อไปนี้ วางสัญลักษณ์ที่ใช้บ่อยที่สุดไว้ตรงกลางใกล้มือที่แข็งแรงของคุณ สัญลักษณ์ที่สองจะไปที่มือที่อ่อนแอของคุณในตำแหน่งกลาง สัญลักษณ์ที่สามกลับไปสู่มือที่แข็งแกร่งของคุณ ... และอื่น ๆ จากนั้นคุณค่อยๆเคลื่อนจากตำแหน่งกลางมือไปยังบริเวณที่ "ห่าง" ของแป้นพิมพ์มากขึ้น เมื่อแป้นพิมพ์ทั้งหมดเต็มคุณจะดำเนินการกำหนดแป้นต่อไป แต่คราวนี้กดแป้น Shift ความแตกต่างอื่น ๆ คือคุณไม่หมุนมือที่แข็งแรงและอ่อนแอสำหรับแต่ละสัญลักษณ์เมื่อ Shift ลง ด้วยการกดปุ่ม Shift ลงก่อนคุณจะต้องกรอกตำแหน่งกลางของแป้นพิมพ์จากนั้นย้ายไปยังตำแหน่งที่ไกลขึ้น

เมื่อคุณทำตามขั้นตอนที่ 3 อีกครั้งสำหรับเค้าโครงใหม่เพื่อดูว่าเค้าโครงได้รับการปรับปรุงอย่างไร

คุณอาจต้องพกคีย์บอร์ดติดตัวตลอดเวลา ในด้านสว่างจะไม่มีใครแตะต้องคอมพิวเตอร์ของคุณ จะทำให้คุณดูเป็นมือโปร

สุดท้ายอย่าลืมแบ่งปันสิ่งที่คุณค้นพบ


ฉันชอบคำตอบนี้มาก: P
pjincz

หากต้องการทำให้สิ่งต่างๆซับซ้อนขึ้นเราสามารถแยกตัวประกอบในการผสมอักขระและพยายามทำให้มือสลับกันหรือหลีกเลี่ยงการลากนิ้วเดียวกัน (เช่น "กิโล" ใน QWERTY)
กลัวมาก

15

ฉันกำลังเล่นกับรูปแบบของเลย์เอาต์ Colemak ในขณะนี้โดยมีการเปลี่ยนแปลงสัญลักษณ์อย่างหนัก:

ไม่มี SHIFT:

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

ด้วย SHIFT:

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

บางทีฉันจะกู้คืน / คีย์ ...

แต่สิ่งนี้ไม่ได้ขึ้นอยู่กับการวิจัยด้านเสียงใด ๆ และฉันชอบที่จะเห็นเลย์เอาต์ที่ได้รับการปรับให้เหมาะสมที่สุด (การเพิ่มประสิทธิภาพรวมถึงสิ่งต่างๆเช่นการปรับเปลี่ยนมือ ฯลฯ รวมถึงการเก็บรักษา ZXCV, ... ได้รับการปรับให้เหมาะสมสำหรับร้อยแก้วเท่านั้น ตัวอย่างเช่น 'f' เป็นตัวอักษรทั่วไปใน C (if, for)

อัปเดต: ฉันกำลังใช้

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

ด้วย SHIFT:

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

สิ่งนี้ขึ้นอยู่กับการเพิ่มประสิทธิภาพบางส่วนแบบ 6 คีย์ - สลับที่นำมาจากCarpalxด้วยการเก็บรักษาทางลัด Cut / Copy / Paste / Undo ตามปกติและแก้ไขเพื่อให้สามารถเข้าถึงอักขระการเขียนโปรแกรมตามปกติได้ดีขึ้น


1
ฉันชอบแนวคิดในการกำหนดให้อักขระเป็นค่าเริ่มต้นมากกว่าตัวเลข เช่น: shift + 1 เพื่อรับหนึ่งและกด 1 ให้!
เรย์

14

สร้างตัวบันทึกคีย์อย่างง่ายจากนั้นนับจำนวนครั้งที่กดแต่ละคีย์ เรียกใช้เป็นเวลาหนึ่งหรือสองวันจากนั้นบันทึกผลลัพธ์ลงในไฟล์ข้อความ ทำเช่นนี้ทุกๆครั้ง ไม่สำคัญว่าคุณจะใช้เลย์เอาต์ใดเนื่องจากคุณเพียงแค่ดูว่าคีย์ใดถูกใช้มากที่สุด

หากคุณต้องการสร้างเลย์เอาต์ที่ดีคุณไม่ต้องกลัวที่จะไปจากบรรทัดฐาน ฉันขอแนะนำให้วางคีย์ 11 อันดับแรกตามแถวบ้านจากนั้นคีย์ 11 อันดับถัดไปถัดไปเป็นแถวบนสุด (ปล่อยให้ 2 คีย์เหนือคีย์ย้อนกลับเป็นคีย์ที่ใช้น้อยที่สุด) จากนั้นคีย์อันดับที่ 3 11 อันดับแรกเป็นแถวล่างสุด . ตอนนี้ควรมีคีย์เหลืออยู่ 4 ปุ่ม นำสิ่งเหล่านั้นมาใส่ไว้ในช่อง - = and] \ ยินดีด้วย! ตอนนี้คุณได้สร้างรูปแบบแป้นพิมพ์ที่ยอดเยี่ยมสำหรับวัตถุประสงค์ของคุณแล้ว! = ง


1
คำตอบที่ดีมาก: ควรให้แป้นพิมพ์แก่เจ้าของ
Julien__

2
สำหรับสถิติการใช้แป้นพิมพ์มีโปรแกรมดีๆอยู่แล้วที่สามารถแสดงแผนที่ความร้อนได้เช่นWhatPulse
Mihai MATEI

[เยี่ยมชมความคิดเห็นในโพสต์เก่า ๆ ] นั่นเป็นไอเดียที่เจ๋งมาก ๆ ฉันจะต้องตรวจสอบตัวเอง!
Tgwizman

10

โดยรวมแล้วฉันคิดว่าการมีโปรแกรมแก้ไขข้อความที่ดีและรู้วิธีใช้มันดีกว่าการพยายามปรับปรุงความเร็วในการพิมพ์ของคุณ บางครั้งความสามารถในการบันทึกและเล่นมาโครซ้ำก็เป็นสิ่งที่ช่วยชีวิตได้และการเลือกข้อมูลโค้ดที่กำหนดทางลัดก็มีประโยชน์เพราะโดยปกติแล้วจะมีการ จำกัด ภาษาสำหรับสิ่งที่สามารถเปลี่ยนเป็นไลบรารี

โดยทั่วไปแล้วฉันคิดว่าตัวเพิ่มประสิทธิภาพการผลิตที่แท้จริงนั้นเกี่ยวกับความรู้ ...

  • รู้ว่ามีเครื่องมือและไลบรารีอะไรบ้างและใช้อย่างไร
  • การรู้โครงสร้างโดยรวมของโค้ดที่คุณกำลังทำงานไม่ใช่แค่เพียงเล็กน้อยเท่านั้น
  • รู้อัลกอริทึมหลักรูปแบบการออกแบบและสำนวนดังนั้นคุณจึงไม่จำเป็นต้องสร้างขึ้นใหม่
  • รู้กฎดีพอที่จะยืดหยุ่นได้ - คุณรู้ว่าเมื่อไรควรทำลาย
  • การรู้จักเพื่อนร่วมงานและจุดแข็งจุดอ่อน ฯลฯ เช่นรู้ว่าเมื่อใดควรคิดอะไรออกมาเอง แต่ต้องถามเมื่อไหร่และใครด้วย

FWIW ฉันไม่ได้อ้างว่าแข็งแกร่งกับสิ่งเหล่านี้ทั้งหมด ฉันมักจะมีอคติในการแก้ปัญหาด้วยตัวเองและมีแนวโน้มที่แข็งแกร่งเกินไปในการคิดค้นล้อและโครงร่างสถาปัตยกรรมที่ยิ่งใหญ่

อย่างไรก็ตามฉันมีความสงสัยว่าเวลาที่ใช้ในการเปลี่ยนและเรียนรู้รูปแบบแป้นพิมพ์จะทำให้ไขว้เขวจากประเด็นที่สำคัญกว่า


1
ฉันเห็นด้วยกับคุณทุกประการ! การใช้เครื่องมือและสำนวนให้ดีนั้นเป็นเพียงการเขียนโปรแกรมที่ดี แต่นี่เป็นคำถามเกี่ยวกับสิ่งหนึ่งที่เฉพาะเจาะจงมากและเดี๋ยวก่อนสิบห้านาทีเมื่อสองปีก่อนช่วยให้ฉันหายหงุดหงิดได้พอสมควร
Jon Purdy

@ จอน - ฉันเข้าใจแล้ว แต่ฉันคิดว่านิสัยการพิมพ์ของฉันค่อนข้างถูกตั้งโปรแกรมไว้ในตอนนี้ - การเปลี่ยนแปลงจะเป็นเรื่องยาก
Steve314

-1: ดูเหมือนจะไม่ขึ้นอยู่กับประสบการณ์ของรูปแบบแป้นพิมพ์อื่น ขัดกับประสบการณ์ของฉันกับพวกเขา แยกทางนอกเหนือจากหัวข้อ ไม่มีรายการดำเนินการที่เป็นรูปธรรม ไม่สามารถแก้ไขได้
Evgeni Sergeev

-4

การเปลี่ยนรูปแบบแป้นพิมพ์เป็นความคิดที่ไม่ดีเนื่องจากอาจ (อาจ) เพิ่มความเร็วในการพิมพ์ของคุณบนแป้นพิมพ์เดียว แต่จะทำลายความเร็วในการพิมพ์ของคุณบนแป้นพิมพ์อื่น ๆ หรือบนคอมพิวเตอร์ที่คุณไม่มีรูปแบบแป้นพิมพ์พิเศษ ฉันพบว่าการปรับตัวเองให้เข้ากับค่าเริ่มต้นนั้นดีกว่าโดยที่ต้องเปลี่ยนทุกที่ (โดยส่วนตัวแล้วนิ้วของฉันมีความลำเอียงอย่างมาก Emacs ซึ่งทำให้เกิดแรงเสียดทานในการพิมพ์มากในทุกที่


7
ฉันสลับไปมาระหว่างสองเลย์เอาต์อย่างมีความสุข จอนรายงานว่า "ปีหรือสองปี" และเขาไม่มีปัญหาในการกลับไปกลับมา YMMV โดยทั่วไป
TJ Crowder

4
ฉันพบว่าการเปลี่ยนแปลงระหว่างแป้นพิมพ์และรูปแบบแป้นพิมพ์เป็นเรื่องง่าย / ยากพอ ๆ กับการเปลี่ยนระหว่างการพูดในภาษาต่างๆ - ถ้าคุณรู้จักพวกเขาดีหลังจากนั้นไม่กี่นาทีคุณก็จะคิดได้อย่างเต็มที่
liori

1
@liori: พูดได้ดีแม้ว่าจะเรียงตามลำดับนาทีหรือวินาทีขึ้นอยู่กับว่าฉันเหนื่อยแค่ไหน : P
Jon Purdy

2
@ Jason D: คะแนนที่ถูกต้อง แต่ฉันดีใจที่มันใช้กับฉันไม่ได้ ... ฉันไม่ค่อยใช้คอมพิวเตอร์ของคนอื่น
liori

2
@ ลิโอริ. บริษัท ดีๆหลายแห่งมีห้องประชุมพร้อมคอมพิวเตอร์ที่ใช้ร่วมกัน และนักพัฒนาจำนวนมากจะปล่อยให้คนอื่น "ขับเคลื่อน" คอมพิวเตอร์ของตนเมื่อแท็กทีมกับปัญหาที่ยุ่งยาก หากผู้อื่นปฏิเสธที่จะสัมผัสคอมพิวเตอร์ของคุณเนื่องจากรูปแบบที่ไม่ได้มาตรฐานของคุณคุณอาจขัดขวางการแก้ปัญหาแบบร่วมมือกัน และสำหรับนายจ้างของคุณนั่นจะช่วยขจัดผลประโยชน์ส่วนบุคคลจำนวนมากที่คุณเก็บเกี่ยวได้ด้วยรูปแบบที่เลือก จำไว้ว่าการพัฒนามักไม่ใช่ผู้ชายคนเดียวที่ต่อต้านโลก โดยปกติจะทำกันเป็นทีม
Jason D
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.