93

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

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

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

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

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

4

6 に答える 6

33

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

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

あなたが提案した置換のいくつか、たとえば、特殊文字を含む一番上の行は、一方で外側の指が同時にシフトするために移動する必要があるため、違いはありません。

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

于 2010-02-21T16:00:38.417 に答える
21

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

可能な解決策へのステップ。次のようなプログラムを作成します。

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

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

すべてを実行したら、新しいレイアウトに対してステップ 3 をもう一度実行して、レイアウトがどのように改善されたかを確認します。

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

最後に、調査結果を共有することを忘れないでください。

于 2011-01-31T02:02:00.707 に答える
16

現時点では、シンボルの大幅な変更を伴う Colemak レイアウトのバリアントで遊んでいます。

シフトなし:

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

シフトで:

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

多分私は/キーを復元します...

しかし、これは健全な研究に基づいたものではなく、ソースコードベースのコーパスを使用して最適化されたレイアウト (手の変更などを含む最適化、ZXCV の保存など) も見たいと思っています。散文のみに最適化されます。たとえば、'f' は C で非常に一般的な文字です (if、for)。

更新:私は現在使用しています

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

シフトで:

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

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

于 2011-07-13T10:51:38.300 に答える
15

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

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

于 2012-11-23T07:12:04.220 に答える
10

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

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

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

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

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

于 2010-02-21T17:03:25.520 に答える