Ein ideales Tastaturlayout für die Programmierung [geschlossen]


85

Ich höre oft Beschwerden, dass Programmiersprachen, die der Kürze halber häufig Symbole verwenden, insbesondere C und C ++ (ich werde APL nicht berühren), schwierig zu tippen sind, da sie häufig die Umschalttaste verwenden müssen. Vor ein oder zwei Jahren hatte ich es selbst satt, lud den Keyboard Layout Creator von Microsoft herunter , nahm einige Änderungen an meinem Layout vor und habe kein einziges Mal zurückgeschaut. Der Geschwindigkeitsunterschied ist erstaunlich; Mit diesen wenigen einfachen Änderungen kann ich C ++ - Code etwa 30% schneller eingeben, je nachdem, wie haarig er ist. Das Beste ist, dass meine Schreibgeschwindigkeit in normalem Text nicht beeinträchtigt wird.

Meine Fragen lauten wie folgt: Welche alternativen Tastaturlayouts gibt es für die Programmierung, die an Beliebtheit gewonnen haben, werden sie noch immer modern verwendet, verwenden Sie persönlich ein geändertes Layout und wie kann mein Layout weiter optimiert werden?

Ich habe die folgenden Änderungen an einem Standard-QWERTZ-Layout vorgenommen. (Ich benutze kein Dvorak , aber es gibt ein erwähnenswertes Dvorak- Layout für Programmierer .)

  • Tauschen Sie Zahlen mit Symbolen in der oberen Reihe aus, da lange oder wiederholte Literalzahlen normalerweise durch benannte Konstanten ersetzt werden.
  • Tauschen Sie Backquote mit Tilde aus, da Backquote in vielen Sprachen selten ist, Destruktoren in C ++ jedoch häufig vorkommen.
  • Tauschen Sie Minus gegen Unterstrich aus, da Unterstriche in Bezeichnern häufig vorkommen.
  • Tauschen Sie geschweifte Klammern gegen eckige Klammern aus, da Blöcke häufiger vorkommen als Indizes. und
  • Tauschen Sie doppelte Anführungszeichen gegen einfache Anführungszeichen aus, da Zeichenfolgen häufiger vorkommen als Zeichenliterale.

Ich vermute, dass letzteres wahrscheinlich das umstrittenste sein wird, da es den laufenden Text am meisten stört, indem es die Verwendung von Shift erfordert, um gemeinsame Kontraktionen einzugeben. Dieses Layout hat meine Schreibgeschwindigkeit in C ++, C, Java und Perl erheblich erhöht und in LISP und Python etwas erhöht.


32
Vielleicht ist es nur so, dass ich zu langsam denke - aber die rohe Schreibgeschwindigkeit ist normalerweise nicht mein begrenzender Faktor bei der Entwicklung von Software. Wenn es so wäre, würde ich wahrscheinlich denken, dass ich etwas falsch mache.
Lucero

9
@Lucero: Insgesamt nein, aber wenn ich (endlich!) Herausgefunden habe, was ich tun soll, ist es umso besser, je schneller und bequemer ich es tippen kann. Sobald Sie alle Ihre harten Gedanken gemacht haben, gibt es manchmal nur eine Menge Code-Schleifen zu tun ... :-)
TJ Crowder

3
@ Jon: Ich empfehle dringend, dies zu einem CW zu machen, bevor es als subjektiv geschlossen wird (was es schließlich ist).
TJ Crowder

20
@TJ: CW gemacht. Ein gutes Layout ist weniger ein Problem der Rohleistung als vielmehr des Komforts - aber Komfort ist für die Leistung sehr wichtig.
Jon Purdy

3
Es ist lustig, wie du von einigen Leuten verprügelt wurdest. Ich würde vorschlagen, sie zu ignorieren. Es ist nicht nur die Eingabe einer Geschwindigkeit (das ist ein Faktor , wenn Sie genug geben kann , um in der Lage sein „Programm , wie Sie denken“), Ergonomie , dass Trümpfe. Aber Geschwindigkeit und Ergonomie gehören zusammen: Bewegungen, die Ihre Hände belasten, führen nur langsam aus, Müdigkeit führt zu Fehlern und fixiert die Steuern Ihrer Hände noch mehr. Auf lange Sicht kann die Anpassung Ihres Tastaturlayouts an Ihre Anforderungen den Unterschied zwischen RSI und keinem RSI ausmachen.
Nur jemand

Antworten:


30

Ich bin immer noch der Meinung, dass die Schreibgeschwindigkeit nicht der Hauptfaktor für die Zeit ist, die ein Projekt benötigt, um abgeschlossen zu werden. Wenn ja, gibt es ein großes Problem (Wochen der Codierung sparen uns Stunden der Planung).

In Bezug auf Ihre Frage bevorzuge ich die Verwendung des Standardlayouts, da dies bedeutet, dass ich die ersten 10 Minuten nicht damit verbringen muss, dumm auszusehen, wenn ein Standardtastaturlayout angezeigt wird.

Einige der von Ihnen vorgeschlagenen Ersetzungen, z. B. die oberste Reihe mit den Sonderzeichen, machen keinen Unterschied, da sich der äußere Finger andererseits bewegen sollte, um sich gleichzeitig zu verschieben.

IMHO Eine Sache, die über das Verketten von Layouts hinaus hilft, ist die Verwendung von Tastaturkürzeln. Vim und Emacs werden empfohlen. Dadurch wird das Verschieben von Text erheblich beschleunigt.


19
Oh nein, die Schreibgeschwindigkeit ist keineswegs ein Engpass, aber warum sollte Ihnen gleichzeitig etwas so Dummes wie eine Tastatur im Weg stehen? Ich hatte keine Probleme, zwischen meinem Layout und anderen hin und her zu wechseln, da ich beide häufig verwende. Ich bevorzuge einfach meine. Und ich muss zugeben, emacs macht das Programmieren so schnell wie möglich - wenn ich keine Tastenfolge nachschlagen muss.
Jon Purdy

4
Oh, und die Gleichzeitigkeit von Bewegungen der linken und rechten Hand macht auch keinen Unterschied: Der Modifikator muss noch gedrückt werden, bevor die Taste gedrückt wird. Sicherlich ein Unterschied von Millisekunden, aber warum sollten Sie sich selbst behindern? Das Programmieren mit einem Layout, das für Sie nicht funktioniert, ist wie das Programmieren auf einer klebrigen Tastatur.
Jon Purdy

6
Ich behaupte, dass Sie durch das Speichern mehrerer Tastaturlayouts Ihr Muskelgedächtnis sabotieren und dadurch Ihre Eingabe verlangsamen.
JesperE

1
Das andere Problem mit der Umschalttaste sind Sequenzen, in denen Sie abwechseln, sodass beide Hände von der obersten Reihe zu ihrer Umschalttaste und zurück springen. Ich sage nicht, dass es häufig genug ist, um sich Sorgen zu machen, aber Dinge wie "(! * X)" könnten als irritierend gelten.
Steve314

1
-1: Trägt nichts zur Diskussion bei (das Argument "dumm aussehen" wird nicht durch ein Datum aus Erfahrung gestützt, es ist eine zukunftsgerichtete Sorge) und kann nicht behoben werden.
Evgeni Sergeev

16

Ich würde Ihre Frage folgendermaßen angehen. Die Aufgabe besteht darin, eine Tastatur so zu organisieren, dass Tastenanschläge und Handbewegungen für einen bestimmten Text minimiert werden.

Schritte zu einer möglichen Lösung. Machen Sie ein Programm, das:

  1. Nimmt eine Textdatei mit Quellcode. (Je größer desto besser und aus verschiedenen Quellen!)
  2. Zählt die Verwendungshäufigkeit jedes Symbols (seine Anwesenheit im Text).
  3. (optional) Basierend auf Schritt 2: Das Programm generiert für jedes Symbol die Anzahl der Tastenanschläge sowie die Entfernung der Hand von der Mittelposition. Als Ergebnis haben Sie ein Maß dafür, wie effektiv Ihr Tastaturlayout ist.

Jetzt manuell oder durch Schreiben eines Programms Definieren Sie Ihr Layout folgendermaßen neu. Platzieren Sie das am häufigsten verwendete Symbol in einer zentralen Position näher an Ihrer starken Hand. Das zweite Symbol geht an Ihre schwache Hand in zentraler Position. Das dritte Symbol geht auf Ihre starke Hand zurück ... und so weiter. Dann bewegen Sie sich allmählich von der zentralen Position der Hände in "weiter entfernte" Bereiche der Tastatur. Wenn alle Tastaturen voll sind, setzen Sie die Zuweisung der Tasten fort, diesmal jedoch mit gedrückter Umschalttaste. Der andere Unterschied wäre, dass Sie nicht für jedes Symbol eine starke und eine schwache Hand drehen, wenn die Umschalttaste gedrückt ist. Wenn Sie zuerst die Umschalttaste nach unten drücken, füllen Sie die zentralen Positionen auf der Tastatur aus und bewegen sich dann zu weiter entfernten Positionen.

Wenn Sie dies alles tun, führen Sie Schritt 3 erneut für das neue Layout aus, um zu sehen, wie das Layout verbessert wurde.

Möglicherweise müssen Sie Ihre Tastatur jederzeit bei sich tragen. Auf der positiven Seite wird niemand Ihren Computer berühren. Dadurch sehen Sie aus wie ein Profi.

Vergessen Sie nicht, Ihre Erkenntnisse mitzuteilen.


Ich mag diese Antwort wirklich: P
pjincz

13

Ich spiele momentan mit einer Variante des Colemak-Layouts mit starken Symboländerungen:

ohne SHIFT:

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

mit UMSCHALT:

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

Vielleicht stelle ich den / key wieder her ...

Dies basiert jedoch nicht auf fundierten Recherchen, und ich würde auch gerne ein optimiertes Layout (Optimierung einschließlich Handänderungen usw., auch ZXCV-Aufbewahrung usw.) mit einem auf Quellcode basierenden Korpus sehen, da all diese Layouts zu sein scheinen nur für Prosa optimiert werden. Zum Beispiel ist 'f' ein sehr häufiger Buchstabe in C (wenn, für).

Update: Ich benutze gerade

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

mit UMSCHALT:

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

Dies basiert auf einer 6-Tasten-Swap- Teiloptimierung von Carpalx unter Beibehaltung der üblichen Verknüpfungen zum Ausschneiden / Kopieren / Einfügen / Rückgängigmachen, die geändert wurden, um einen besseren Zugriff auf die üblichen Programmierzeichen zu ermöglichen.


1
Ich mag die Idee, die Zeichen standardmäßig über die Zahlen zu setzen. dh: Shift + 1, um eine zu erhalten, und Drücken von 1 gibt Ihnen!
Ray

12

Erstellen Sie einen einfachen Tastenlogger und zählen Sie dann, wie oft jede Taste gedrückt wird. Führen Sie es ein oder zwei Tage lang aus und speichern Sie die Ausgabe in einer Textdatei. Tun Sie dies von Zeit zu Zeit. Es spielt keine Rolle, welches Layout Sie verwenden, da Sie nur sehen, welche Tasten am häufigsten verwendet werden.

Wenn Sie ein gutes Layout erstellen möchten, können Sie keine Angst haben, von der Norm abzuweichen. Ich würde vorschlagen, die Top-11-Tasten entlang der Startreihe zu platzieren, dann die nächsten Top-11-Tasten als oberste Reihe (lassen Sie die 2 Tasten über der Return-Taste als am wenigsten verwendete Tasten) und dann die 3. Top-11-Tasten als unterste Reihe . Es sollten jetzt noch 4 Schlüssel übrig sein. Nehmen Sie diese und stecken Sie sie in die Slots - = und] \. Glückwunsch! Sie haben jetzt ein großartiges Tastaturlayout für Ihre Zwecke erstellt! = D.


1
Sehr gute Antwort: Tastatur sollte dem Besitzer
angepasst werden

1
Für Tastaturnutzungsstatistiken gibt es bereits gute Programme, die eine Heatmap anzeigen
Mihai MATEI

[Besuch alter Post-Kommentare] Das ist eigentlich eine wirklich coole (oder hitzige;]) Idee. Ich muss das selbst überprüfen!
Tgwizman

9

Insgesamt denke ich, dass es besser ist, einen guten Texteditor zu haben und zu wissen, wie man ihn verwendet, als zu versuchen, die Schreibgeschwindigkeit zu verbessern. Das Aufzeichnen und Wiedergeben von Makros ist manchmal ein Lebensretter, und eine Auswahl von Code-Snippets mit Verknüpfung kann nützlich sein, da normalerweise sprachliche Beschränkungen für die Umwandlung in eine Bibliothek gelten.

Generell denke ich, dass es bei den wirklichen Produktivitätssteigerern nur um Wissen geht ...

  • Wissen, welche Tools und Bibliotheken verfügbar sind und wie sie verwendet werden.
  • Sie kennen die Gesamtstruktur des Codes, an dem Sie arbeiten, und nicht nur Ihr kleines bisschen.
  • Kennen Sie wichtige Algorithmen, Entwurfsmuster und Redewendungen, damit Sie sie nicht neu erfinden müssen.
  • Wenn Sie die Regeln gut genug kennen, um flexibel zu sein, wissen Sie, wann Sie sie brechen müssen.
  • Kennen Sie Ihre Mitarbeiter und ihre Stärken, Schwächen usw. - dh wissen Sie, wann Sie selbst etwas herausfinden müssen, aber auch wann und wen Sie fragen müssen.

FWIW, ich behaupte nicht, in all diesen Bereichen stark zu sein. Ich war immer zu voreingenommen, um Probleme selbst zu lösen, und hatte eine zu starke Tendenz, das Rad und die großartigen Architekturpläne neu zu erfinden.

Wie auch immer, ich habe nur den Verdacht, dass die Zeit, die für das Ändern und Lernen von Tastaturlayouts aufgewendet wird, eine Ablenkung von wichtigeren Themen darstellt.


Ich stimme Ihnen in allen Punkten zu! Werkzeuge und Redewendungen gut zu nutzen, ist nur eine gute Programmierung. Aber dies ist eine Frage zu einer ganz bestimmten Sache, und hey, vor fünfzehn Minuten vor fünfzehn Jahren hat mir seitdem ein angemessenes Maß an Frustration erspart.
Jon Purdy

@ Jon - Ich verstehe, aber ich denke, meine Schreibgewohnheiten sind mittlerweile ziemlich stark programmiert - Änderungen wären harte Arbeit.
Steve314

-1: Klingt nicht nach Erfahrungen mit alternativen Tastaturlayouts. widerspricht meiner Erfahrung mit ihnen. Abweichungen weit über das Thema hinaus. Bietet keine konkreten Aktionselemente. Kann nicht repariert werden.
Evgeni Sergeev

-6

Das Ändern des Tastaturlayouts ist eine schlechte Idee, da es (möglicherweise) Ihre Schreibgeschwindigkeit auf einer Tastatur erhöhen würde, aber Ihre Schreibgeschwindigkeit auf anderen Tastaturen oder auf Computern, auf denen Sie kein spezielles Tastaturlayout haben, erheblich beeinträchtigen würde. Ich habe festgestellt, dass es oft besser ist, sich an die Standardeinstellungen anzupassen, als sie überall ändern zu müssen. (Persönlich sind meine Finger stark Emacs-voreingenommen, was überall sonst viel Tippreibung verursacht.)


6
Ich wechsle gerne zwischen zwei Layouts. Jon berichtet, es sei "ein oder zwei Jahre" her und er habe keine Probleme, hin und her zu gehen. YMMV im Grunde.
TJ Crowder

4
Ich finde den Wechsel zwischen Tastaturen und Tastaturlayouts so einfach / schwierig wie den Wechsel zwischen dem Sprechen in verschiedenen Sprachen - wenn Sie sie gut kennen, gewinnen Sie nach wenigen Minuten wieder die volle Geschwindigkeit des Denkens.
Liori

1
@liori: Gut gesagt, ob es in der Größenordnung von Minuten oder Sekunden liegt, hängt ganz davon ab, wie müde ich bin. : P
Jon Purdy

1
@liori "nach ein paar Minuten ..." Es scheint, dass (multinationale) Unternehmen und Nationen Sprachen für ein paar Zwecke standardisieren. 1) Kommunikationsgeschwindigkeit. 2) Genauigkeit der Kommunikation. Ich vermute, standardisierte Tastaturlayouts sehen ähnliche Vorteile.
Jason D

2
@ Jason D: Gültige Punkte, aber ich bin froh, dass sie nicht auf mich zutreffen ... Ich benutze selten die Computer anderer Leute.
Liori
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.