プログラミングに理想的なキーボードレイアウト[クローズ]


87

簡潔にするために記号を多用するプログラミング言語、特にCおよびC ++(APLには触れません)は、Shiftキーを頻繁に使用する必要があるため、入力が難しいという苦情をよく耳にします。1、2年前、私はそれに飽きて、MicrosoftのKeyboard Layout Creatorをダウンロードし、レイアウトにいくつかの変更を加えましたが、一度も振り返ることはありませんでした。速度の違いは驚くべきものです。これらのいくつかの簡単な変更で、C ++コードを約30%速く入力できます。もちろん、それがどれほど毛深いかにもよりますが。何よりも、通常の実行中のテキストでの入力速度が損なわれることはありません。

私の質問は次のとおりです。人気を博しているプログラミング用の代替キーボードレイアウトはどれですか。それらのいずれかが現在も使用されています。個人的に変更されたレイアウトを使用していますか。また、レイアウトをさらに最適化するにはどうすればよいですか。

標準のQWERTYレイアウトに次の変更を加えました。(私はDvorakを使用していませんが、言及する価値のあるプログラマーDvorakレイアウトがあります。)

  • 長いまたは繰り返されるリテラル番号は通常、名前付き定数に置き換えられるため、番号を一番上の行の記号と交換します。
  • バッククォートは多くの言語ではまれですが、デストラクタはC ++で一般的であるため、バッククォートをチルダと交換します。
  • アンダースコアは識別子で一般的であるため、マイナスをアンダースコアと交換します。
  • ブロックは下付き文字よりも一般的であるため、中括弧を角括弧と交換します。そして
  • 文字列は文字リテラルよりも一般的であるため、二重引用符を一重引用符と交換します。

これは、一般的な縮約を入力するためにシフトを使用する必要があるため、テキストの実行を最も妨げるため、おそらく最も物議を醸すものになると思います。このレイアウトにより、C ++、C、Java、およびPerlでの入力速度が大幅に向上し、LISPおよびPythonでは多少向上しました。


32
多分それは私が遅すぎると思っているというだけかもしれません-しかし生のタイピング速度は通常ソフトウェアを開発するときの私の制限要因ではありません。もしそうなら、私はおそらく私が何か間違ったことをしていると思うでしょう。
ルセロ2010

9
@Lucero:全体的には違いますが、(ついに!)自分が何をすべきかを理解したら、より速く、より快適に入力できるようになります。懸命に考えた後は、コード
TJ Crowder

3
@Jon:主観的に閉じる前にこれをCWにすることを強くお勧めします(結局のところ、そうです)。
TJ Crowder 2010

20
@TJ:CWを作成しました。優れたレイアウトは、快適さの1つであるため、生のパフォーマンスの問題ではありませんが、快適さはパフォーマンスにとって非常に重要です。
Jon Purdy 2010

3
あなたがかなりの数の人々に非難されたのはおかしいです、私は彼らを無視することを提案します。それだけでなく、だ(スピードタイピング人間工学はその切り札、あなたは「あなたが思うようプログラム」のことができるようにするのに十分なを入力することができるかどう因子)。しかし、スピードと人間工学は一緒になります。手を緊張させる動きは実行が遅く、疲労はエラーにつながり、それらの税金をさらに修正します。また、長期的には、キーボードレイアウトをニーズに合わせて調整することが、RSIとRSIなしの違いになる可能性があります。
誰か

回答:


30

プロジェクトが完了するまでにかかる時間の主な要因は、タイピングの速度ではないと私は今でも考えています。もしそうなら、大きな問題があります(数週間のコーディングで計画の時間を節約できます)。

あなたの質問に関して、私は標準のレイアウトを使用することを好みます。それは、標準のキーボードレイアウトが提示されたときに、最初の10分間をバカに見せる必要がないことを意味します。

あなたが提案した置換のいくつか、例えば、特殊文字を含む一番上の行は、一方で外側の指が同時にシフトするように動くはずなので、1オンスの違いはありません。

IMHO上記の連鎖レイアウトに役立つことの1つは、キーボードショートカットのみを使用することです。VimとEmacsをお勧めします。これにより、テキストの移動がはるかに高速になります。


20
ああ、いや、タイピング速度は決してボトルネックではありませんが、同時に、なぜキーボードのようなばかげたものが邪魔になるのですか?両方を頻繁に使用するため、レイアウトと他のレイアウトを切り替えるのに問題はありませんでした。私は単に私の方が好きです。そして、私が認めなければならないのは、emacsは、キーシーケンスを検索する必要がない場合に、プログラミングを可能な限り高速にすることです。
Jon Purdy 2010

4
ああ、そして左手と右手の動きの同時性も違いはありません。キーを押す前にモディファイアを押す必要があります。確かにミリ秒の違いですが、繰り返しになりますが、なぜ自分自身を妨げるのですか?うまくいかないレイアウトでプログラミングすることは、スティッキーキーボードでプログラミングするようなものです。
Jon Purdy 2010

6
私は、いくつかのキーボードレイアウトをメモリに保持することで、筋肉の記憶を妨害し、それによってタイピングを遅くしていると主張しています。
JesperE 2010

1
シフトキーのもう1つの問題は、交互に行うシーケンスです。そのため、両手が一番上の行からシフトキーにジャンプして戻ってきます。心配するほど一般的だと言っているわけではありませんが、「(!* x)」のようなものはイライラする可能性があります。
Steve314 2010

1
-1:議論に何も貢献せず(「愚かに見える」議論は経験からの1つのデータによっても裏付けられておらず、前向きな心配です)、修正することはできません。
Evgeni Sergeev 2014年

16

私はあなたの質問に次のようにアプローチします。タスクは、特定のテキストのキーストロークと手の動きを最小限に抑えるような方法でキーボードを整理することです。

考えられる解決策へのステップ。次のようなプログラムを作成します。

  1. ソースコードを含むテキストファイルを取得します。(大きいほど良い、さまざまなソースから!)
  2. 各記号の使用頻度(テキスト内での存在)をカウントします。
  3. (オプション)ステップ2に基づく:プログラムは、各記号のキーストローク数に加えて、手が中央位置からどれだけ離れなければならないかを生成します。その結果、キーボードレイアウトの効果を測定できます。

手動で、またはプログラムを作成して、次の方法でレイアウトを再定義します。最も頻繁に使用するシンボルを、強い手に近い中央の位置に置きます。2番目のシンボルは、中央の位置にある弱い手に行きます。3番目のシンボルはあなたの強い手に戻ります...など。次に、手の中央の位置からキーボードのより「離れた」領域に徐々に移動します。すべてのキーボードがいっぱいになったら、キーを割り当てるプロセスを続行しますが、今回はShiftキーを押します。他の違いは、シフトがダウンしているときに各シンボルの強い手と弱い手を回転させないことです。最初にShiftキーを押したままにすると、キーボードの中央の位置を入力してから、より離れた位置に移動します。

これらすべてを実行したら、新しいレイアウトに対して手順3を再度実行して、レイアウトがどのように改善されたかを確認します。

キーボードは常に携帯しなければならない場合があります。明るい面では、誰もあなたのコンピュータに触れません。それはあなたをプロのように見せます。

最後に、あなたの発見を共有することを忘れないでください。


私はこの答えが本当に好きです、:P
pjincz

13

現在、シンボルを大幅に変更して、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%:?

これは、Carpalxから取得した6キースワップの部分的な最適化に基づいており、通常のカット/コピー/貼り付け/元に戻すショートカットが保持され、通常のプログラミング文字へのアクセスが改善されるように変更されています。


1
文字を数字よりもデフォルトにするというアイデアが好きです。つまり、shift + 1で1つ取得し、1を押すと!
レイ

12

簡単なキーロガーを作成し、各キーが押された回数を数えます。1〜2日実行してから、出力をテキストファイルに保存します。これを時々行います。どのキーが最も使用されているかを確認するだけなので、使用しているレイアウトは関係ありません。

良いレイアウトを作りたいのなら、標準から離れることを恐れることはできません。上位11個のキーをホーム行に沿って配置し、次に上位11個のキーを上部の行として配置し(リターンキーの上にある2つのキーを最も使用頻度の低いキーとして残します)、次に上位11個のキーを下部の行として配置することをお勧めします。 。これで4つのキーが残っているはずです。それらを取り、-=および] \スロットに入れます。おめでとうございます!これで、目的に合った優れたキーボードレイアウトが作成されました。= D


1
非常に良い答え:キーボードは所有者に合わせて調整する必要があります
Julien__ 2016年

1
:キーボードの使用統計のために、このようなヒートマップを表示することができ、すでに良いプログラムがあるWhatPulse
ミハイ・マテイ

[古い投稿のコメントを見る]それは実際には本当にクールな(または熱く;])アイデアです。自分でチェックする必要があります!
Tgwizman 2018年

9

全体として、優れたテキストエディタを使用し、その使用方法を知っている方が、入力速度を向上させるよりも優れていると思います。マクロを記録および再生できることは、命の恩人になることがあります。通常、ライブラリに変換できるものには言語による制限があるため、ショートカットで割り当てられたコードスニペットを選択すると便利です。

より一般的には、本当の生産性向上剤はすべて知識に関するものだと思います...

  • 利用可能なツールとライブラリ、およびそれらの使用方法を知る。
  • 少しだけではなく、作業中のコードの全体的な構造を知ること。
  • 主要なアルゴリズム、デザインパターン、イディオムを知っているので、それらを再発明する必要はありません。
  • ルールを十分に理解しているので、柔軟に対応できます。ルールを破るタイミングがわかります。
  • 同僚とその長所、短所などを知る-つまり、いつ自分で何かを理解するかだけでなく、いつ誰に尋ねるかを知る。

FWIW、私はそれらすべてに強いと主張しているわけではありません。私はいつも自分で問題を解決することに偏りすぎており、車輪の再発明や壮大な建築計画を再発明する傾向が強すぎます。

とにかく、私は、キーボードレイアウトの変更と学習に費やされた時間が、より重要な問題から気をそらすことになるのではないかと疑っています。


私はすべての点であなたに同意します!ツールやイディオムをうまく活用することは、優れたプログラミングです。しかし、これは1つの非常に具体的なことについての質問であり、2年前の15分で、それ以来、かなりのフラストレーションを軽減できました。
Jon Purdy 2010

@ Jon-要点はわかりますが、私のタイピングの習慣は今ではかなり強力にプログラムされていると思います-変更は大変な作業になるでしょう。
Steve314 2010

-1:代替のキーボードレイアウトの経験に基づいているようには聞こえません。彼らとの私の経験に反します。トピックをはるかに超えて逸脱します。具体的なアクションアイテムは提供していません。修正できません。
Evgeni Sergeev 2014年

-5

キーボードレイアウトを変更すると、(おそらく)1つのキーボードでの入力速度が向上しますが、他のキーボードや特別なキーボードレイアウトがないコンピューターでは、入力速度が大幅に低下するため、お勧めできません。多くの場合、デフォルトに合わせて調整する方が良いことがわかりました。デフォルトをどこでも変更する必要があります。(個人的には、私の指はEmacsに大きく偏っているため、他の場所では多くのタイピング摩擦が発生します。)


6
私は2つのレイアウトを喜んで切り替えます。ジョンは、「1、2年」経ちましたが、問題なく行き来していると報告しています。YMMV、基本的に。
TJ Crowder 2010

4
キーボードとキーボードレイアウトの変更は、異なる言語での会話の変更と同じくらい簡単/難しいと思います。それらをよく知っていれば、数分後には思考の全速力を取り戻すことができます。
liori 2010

1
@liori:よく言われますが、それが分単位か秒単位かは、私がどれだけ疲れているかに完全に依存します。:P
Jon Purdy 2010

1
@liori 「数分後...」(多国籍)企業や国は、いくつかの目的で言語を標準化しているようです。1)コミュニケーションの速度。2)コミュニケーションの正確さ。キーボードレイアウトを標準化すると、同様のメリットが得られると思います。
ジェイソンD

2
@ジェイソンD:有効なポイントですが、私には当てはまらないのはうれしいです...私は他の人のコンピューターをめったに使用しません。
liori 2010
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.