Ідеальна розкладка клавіатури для програмування [закрито]


87

Я часто чую скарги на те, що мови програмування, які використовують стислі символи для стислості, особливо C та C ++ (я не збираюся торкатися APL), важко ввести, оскільки вони вимагають частого використання клавіші Shift. Рік-два тому я сам від цього втомився, завантажив Microsoft Keyboard Layout Creator , зробив кілька змін у своєму макеті і жодного разу не оглядався назад. Різниця в швидкості вражає; за допомогою цих кількох простих змін я можу набрати код C ++ приблизно на 30% швидше, залежно, звичайно, наскільки він волохатий; найкраще, швидкість набору тексту в звичайному тексті не порушена.

Мої запитання такі: які альтернативні розкладки клавіатури існували для програмування, які набули популярності, чи є якісь із них досі в сучасному використанні, чи використовуєте ви особисто якісь змінені розкладки, і як можна додатково оптимізувати мою розкладку?

Я вніс наступні зміни в стандартний макет QWERTY. (Я не використовую Dvorak , але є програміст Dvorak, про який варто згадати.)

  • Поміняйте місцями цифри символами у верхньому рядку, оскільки довгі або повторювані буквальні числа, як правило, замінюються названими константами;
  • Поміняйте зворотне цитування на тильду, оскільки зворотні цитати рідкісні у багатьох мовах, але деструктори поширені в C ++;
  • Поміняйте мінус на підкреслення, оскільки підкреслення є загальними в ідентифікаторах;
  • Поміняйте фігурні дужки на квадратні дужки, оскільки блоки частіше, ніж індекси; і
  • Поміняйте місцями подвійні лапки на одинарні, оскільки рядки зустрічаються частіше, ніж символи.

Я підозрюю, що це останнє, мабуть, буде найбільш суперечливим, оскільки найбільше заважає запущеному тексту, вимагаючи використання shift для введення загальних скорочень. Цей макет значно збільшив мою швидкість набору тексту на C ++, C, Java та Perl та дещо збільшив її на LISP та Python.


32
Можливо, я просто думаю надто повільно, але швидкість набору тексту, як правило, не є моїм обмежуючим фактором при розробці програмного забезпечення. Якби це було, я б, мабуть, подумав, що роблю щось не так.
Lucero

9
@Lucero: В цілому , ні, але коли я (нарешті!) Зрозумів, що мені робити, чим швидше і зручніше я можу це ввести, тим краще. Після того, як ви потурбуєтесь, іноді залишається багато шліфування коду ... :-)
TJ Crowder

3
@Jon: Настійно рекомендую зробити цей CW, перш ніж він закриється як суб'єктивний (що, зрештою, є).
TJ Crowder,

20
@TJ: зроблено CW. Хороший макет - це не проблема невисокої продуктивності, а лише комфорту, але комфорт дуже важливий для продуктивності.
Джон Перді

3
Забавно, як вас зачепило чимало людей, я б запропонував їх ігнорувати. Це не лише швидкість набору тексту (що є фактором, якщо ви можете набирати достатньо для того, щоб мати можливість «програмувати, як ви думаєте»), це ергономічність. Але швидкість і ергономічність поєднуються: рухи, які напружують ваші руки, виконуються повільно, втома призводить до помилок і ще більше фіксує ці податки. І в довгостроковій перспективі налаштування розкладки клавіатури відповідно до ваших потреб може бути різницею між RSI або відсутністю RSI.
просто хтось

Відповіді:


30

Я все ще вважаю, що швидкість друку не є головним фактором часу, необхідного для завершення проекту. Якщо це так, є велика проблема (Тижні кодування економить години планування).

Щодо вашого запитання, я віддаю перевагу використанню стандартної розкладки, оскільки це означає, що мені не доведеться витрачати перші 10 хвилин на вигляд дурного, коли мені пропонують стандартну розкладку клавіатури.

Деякі із запропонованих вами замін, наприклад, верхній рядок зі спеціальними символами не має жодної різниці, оскільки зовнішній палець, з іншого боку, повинен рухатися, щоб переміщатися одночасно.

IMHO Одне, що допомагає вище розкладання ланцюжків, - це використання лише комбінацій клавіш. Рекомендуються Vim та Emacs. Це робить переміщення тексту набагато швидшим.


20
О, ні, швидкість набору тексту - це ніяким чином не вузьке місце, але в той же час, чому нехай щось настільки безглузде, як клавіатура, заважає вам? У мене не було проблем з перемиканням між своїм макетом та іншими, тому що я часто використовую обидва; Я просто віддаю перевагу своєму. І я повинен визнати, що emacs робить програмування швидким, наскільки це можливо - коли мені не потрібно шукати ключову послідовність.
Джон Перді

4
Ох, і одночасність рухів лівою та правою руками також не має різниці: модифікатор все одно потрібно натиснути перед натисканням клавіші. Звичайно, різниця в мілісекундах, але знову ж таки, чому заважати собі? Програмування з макетом, який не працює для вас, схоже на програмування на липкій клавіатурі.
Джон Перді

6
Я стверджую, що, зберігаючи в пам'яті кілька розкладів клавіатури, ви саботуєте свою м’язову пам’ять і тим самим робите повільніше друкувати.
JesperE

1
Інша проблема з клавішею shift - це послідовності, де ви чергуєтесь, тому обидві руки стрибають з верхнього рядка на свою клавішу shift і назад. Хоча я не кажу, що це достатньо часто турбуватися, але такі речі, як "(! * X)", можуть кваліфікувати як дратівливі.
Steve314,

1
-1: Нічого не сприяє дискусії (аргумент "виглядає нерозумно" не підкріплюється навіть одним даними з досвіду, це неспокійне занепокоєння) і не може бути виправлений.
Євген Сергєєв

16

Я підійшов би до вашого запитання наступним чином. Завдання полягає в тому, щоб організувати клавіатуру таким чином, щоб мінімізувати натискання клавіш та рух рук для даного тексту.

Кроки до можливого рішення. Складіть програму, яка:

  1. Бере текстовий файл із вихідним кодом. (Чим більше, тим краще та з різних джерел!)
  2. Підраховує частоту використання кожного символу (його наявність у тексті).
  3. (необов’язково) На основі кроку 2: Програма генерує кількість обведень клавіш для кожного символу плюс відстань, яку повинна пройти рука від центрального положення. В результаті ви отримаєте показник ефективності розкладки клавіатури.

Тепер вручну або написавши програму. Визначте свій макет наступним чином. Поставте найбільш часто використовуваний символ у центральне положення ближче до вашої міцної руки. Другий символ надходить до вашої слабкої руки в центральному положенні. Третій символ повертається до вашої міцної руки ... і так далі. Потім ви поступово переходите з центрального положення рук у більш «віддалені» зони клавіатури. Коли вся клавіатура заповнена, ви продовжуєте процес призначення клавіш, але цього разу натиснутою клавішу Shift. Інша різниця полягала б у тому, що ви не обертаєте сильну і слабку руку для кожного символу, коли Shift не працює. Якщо натиснути клавішу Shift, спочатку ви заповнили центральні позиції на клавіатурі, а потім перейшли до більш віддалених позицій.

Коли ви знову виконуєте крок 3 для нового макета, щоб побачити, як було покращено макет.

Можливо, вам доведеться постійно носити з собою клавіатуру. З гарної сторони ніхто не торкнеться вашого комп’ютера. Це змусить вас виглядати як професіонал.

Нарешті, не забудьте поділитися своїми висновками.


Мені дуже подобається така відповідь
,:

13

На даний момент я граю з варіантом макета Colemak із сильними змінами символів:

без SHIFT:

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

з SHIFT:

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

Можливо, я відновлю ключ / ...

Але це не засновано на жодному звуковому дослідженні, і я також хотів би бачити оптимізований макет (Оптимізація, включаючи такі речі, як зміна рук тощо, також збереження ZXCV, ...) з корпусом на основі вихідного коду, оскільки всі ці макети, здається, бути оптимізованим лише для прози. Наприклад, 'f' є дуже поширеною буквою в C (якщо, для).

Оновлення: Зараз я використовую

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

з SHIFT:

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

Це базується на частковій оптимізації заміни 6 ключів, взятої з Carpalx із збереженням звичайних ярликів Вирізати / Копіювати / Вставити / Скасувати та модифікованих, щоб забезпечити кращий доступ до звичайних символів програмування.


1
Мені подобається ідея зробити символи типовими для цифр. тобто: shift + 1, щоб отримати один, а натискання 1 дає вам!
Рей

12

Створіть простий реєстратор клавіш, а потім підрахуйте кількість натискань кожної клавіші. Запустіть його на день-два, а потім збережіть вихідні дані у текстовому файлі. Робіть це раз у раз. Не має значення, який макет ви використовуєте, оскільки ви просто бачите, які клавіші використовуються найбільше.

Якщо ви хочете зробити хороший макет, ви не можете боятися піти від норми. Я б запропонував розмістити 11 головних клавіш уздовж домашнього рядка, потім наступні 11 найвищих клавіш як верхній рядок (2 клавіші над клавішею повернення залишити як найменш використовувані клавіші), а потім 3-ті верхні 11 клавіш як нижній рядок . Зараз має залишитися 4 клавіші. Візьміть їх і помістіть у слоти - = і] \. Вітаємо! Зараз ви зробили чудову розкладку клавіатури для своїх цілей! = D


1
Дуже хороша відповідь: клавіатура повинна бути адаптована до власника
Julien__

1
Що стосується статистики використання клавіатури, то вже є хороші програми, які можуть показати теплову карту, наприклад, ця: WhatPulse
Mihai MATEI

[Відвідування коментарів до старих публікацій] Це насправді справді крута (або гаряча;]) ідея. Мені доведеться перевірити це сам!
Тгвізман,

9

Загалом, я думаю, що мати хороший текстовий редактор і знати, як ним користуватися, краще, ніж намагатися покращити швидкість друку. Можливість записувати і відтворювати макроси іноді рятувальник, і вибір фрагментів коду, призначених ярликам, може бути корисним, оскільки зазвичай існують обмеження, встановлені мовою, що можна перетворити на бібліотеку.

У більш загальному плані я думаю, що справжні засоби підвищення продуктивності - це все лише знання ...

  • Знання, які інструменти та бібліотеки доступні та як ними користуватися.
  • Знаючи загальну структуру коду, над яким ви працюєте, а не лише свою трішки.
  • Знаючи ключові алгоритми, шаблони проектування та ідіоми, щоб вам не довелося їх винаходити.
  • Знаючи правила досить добре, щоб ви могли бути гнучкими - ви знаєте, коли їх порушувати.
  • Знання своїх колег та їхніх сильних, слабких сторін тощо - тобто знання, коли щось самостійно з’ясувати, а також коли і кого запитати.

FWIW, я не претендую на те, щоб бути сильним у всьому цьому. Я завжди був надто упереджений до вирішення проблем сам і з надто сильною тенденцією до винаходу колеса та грандіозних архітектурних схем.

У будь-якому випадку, я просто підозрюю, що час, витрачений на зміну та вивчення розкладки клавіатури, буде відволікати від більш важливих питань.


Я погоджуюсь з вами з усіх питань! Якісне використання інструментів та ідіом - це просто хороше програмування. Але це питання про одну цілком конкретну річ, і привіт, п’ятнадцять хвилин два роки тому позбавили мене розумного розчарування з тих пір.
Джон Перді

@Jon - Я розумію думку, але я думаю, що мої друкарські звички на сьогодні досить запрограмовані - зміна буде важкою роботою.
Steve314,

-1: Не схоже, що це базується на досвіді роботи з альтернативними розкладками клавіатури; суперечить моєму досвіду з ними. Відступає далеко за межі теми. Не містить конкретних предметів дій. Неможливо виправити.
Євген Сергєєв

-5

Зміна розкладки клавіатури - погана ідея, оскільки це (можливо) збільшить швидкість набору тексту на одній клавіатурі, але сильно пошкодить швидкість набору тексту на інших клавіатурах або на комп’ютерах, де у вас немає спеціальної розкладки клавіатури. Я виявив, що часто краще налаштовуватись на значення за замовчуванням, що їх доводиться змінювати скрізь. (Особисто у мене пальці сильно упереджені до Emacs, що спричиняє багато тертя друку в будь-якому іншому місці.)


6
Я із задоволенням перемикаюся між двома макетами. Джон повідомляє, що минув "рік чи два", і йому не складно рухатися туди-сюди. YMMV, в основному.
TJ Crowder,

4
Я вважаю, що перемикання між клавіатурами та розкладками клавіатур настільки ж легке / складне, як і перекладання між розмовою різними мовами - якщо ви їх добре знаєте, через кілька хвилин ви набираєте повну швидкість думки.
liori

1
@liori: добре сказано, хоча, чи буде це на хвилини чи секунди, цілком залежить від того, наскільки я втомився. : P
Джон Перді

1
@liori "через кілька хвилин ..." Здається, що (транснаціональні) компанії та країни здійснюють стандартизацію мов з кількома цілями. 1) Швидкість спілкування. 2) точність спілкування. Я підозрюю, що стандартизовані розкладки клавіатур бачать подібні переваги.
Джейсон Д,

2
@ Джейсон Д: Дійсні бали, але я радий, що вони не стосуються мене ... Я рідко користуюся чужими комп’ютерами.
liori
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.