Une disposition de clavier idéale pour la programmation [fermé]

87

J'entends souvent des plaintes selon lesquelles les langages de programmation qui utilisent beaucoup les symboles pour la brièveté, notamment C et C ++ (je ne vais pas toucher APL), sont difficiles à taper car ils nécessitent une utilisation fréquente de la touche Maj. Il y a un an ou deux, j'en ai eu marre moi-même, j'ai téléchargé le créateur de disposition de clavier de Microsoft, j'ai apporté quelques modifications à ma mise en page et je n'ai pas regardé une seule fois en arrière. La différence de vitesse est stupéfiante; avec ces quelques changements simples, je suis capable de taper du code C ++ environ 30% plus rapidement, en fonction bien sûr de la façon dont il est velu; le meilleur de tous, ma vitesse de frappe dans le texte courant n'est pas compromise.

Mes questions sont les suivantes: quelles autres dispositions de clavier ont existé pour la programmation, qui ont gagné en popularité, certaines d'entre elles sont-elles encore utilisées de façon moderne, utilisez-vous personnellement une disposition modifiée et comment ma disposition peut-elle être encore optimisée?

J'ai apporté les modifications suivantes à une disposition QWERTY standard. (Je n'utilise pas Dvorak , mais il y a une mise en page de programmeur Dvorak qui mérite d'être mentionnée.)

  • Permutez les nombres avec des symboles dans la rangée du haut, car les nombres littéraux longs ou répétés sont généralement remplacés par des constantes nommées;
  • Swap backquote avec tilde, car les backquotes sont rares dans de nombreux langages mais les destructeurs sont communs en C ++;
  • Échangez moins avec un trait de soulignement, car les traits de soulignement sont courants dans les identificateurs
  • Remplacez les accolades par des crochets, car les blocs sont plus courants que les indices; et
  • Permutez les guillemets doubles avec des guillemets simples, car les chaînes sont plus courantes que les littéraux de caractères.

Je soupçonne que ce dernier sera probablement le plus controversé, car il interfère le plus avec le texte en cours d'exécution en nécessitant l'utilisation de shift pour taper les contractions courantes. Cette disposition a considérablement augmenté ma vitesse de frappe en C ++, C, Java et Perl, et l'a quelque peu augmentée en LISP et Python.

Jon Purdy
la source
32
C'est peut-être juste que je pense trop lentement - mais la vitesse de frappe brute n'est généralement pas mon facteur limitant lors du développement de logiciels. Si c'était le cas, je penserais probablement que je fais quelque chose de mal.
Lucero le
9
@Lucero: Dans l'ensemble , non, mais quand j'ai (enfin!) Compris ce que je devrais faire, plus je peux le taper rapidement et confortablement, mieux c'est. Une fois que vous avez réfléchi, parfois il y a juste beaucoup de codage à faire ... :-)
TJ Crowder
3
@Jon: Je recommande vivement d'en faire une CW avant qu'elle ne soit fermée de manière subjective (ce qui, après tout, l'est).
TJ Crowder
20
@TJ: fait CW. Un bon agencement n'est pas tant une question de performances brutes que de confort, mais le confort est très important pour les performances.
Jon Purdy
3
C'est drôle comment vous avez été critiqué par pas mal de gens, je suggérerais de les ignorer. Ce n'est pas seulement la vitesse de frappe (qui est un facteur si vous pouvez taper suffisamment pour pouvoir "programmer comme vous le pensez"), l'ergonomie l'emporte sur cela. Mais la vitesse et l'ergonomie vont de pair: les mouvements qui fatiguent vos mains sont lents à effectuer, la fatigue entraîne des erreurs et la fixation de ces taxes sur vos mains encore plus. Et à long terme, modifier la disposition de votre clavier pour répondre à vos besoins peut faire la différence entre RSI ou pas de RSI.
juste quelqu'un

Réponses:

30

Je maintiens toujours que la vitesse de frappe n'est pas le facteur principal du temps nécessaire à la réalisation d'un projet. Si c'est le cas, il y a un gros problème (des semaines de codage nous font gagner des heures de planification).

En ce qui concerne votre question, je préfère utiliser la disposition standard car cela signifie que je n'ai pas à passer les 10 premières minutes à avoir l'air stupide lorsqu'on me présente une disposition de clavier standard.

Certains des remplacements que vous avez suggérés, par exemple, la rangée du haut avec les caractères spéciaux ne font pas une once de différence car le doigt extérieur de l'autre côté devrait bouger pour se déplacer en même temps.

IMHO Une chose qui aide au-dessus des mises en page de chaînage utilise uniquement des raccourcis clavier. Vim et Emacs sont recommandés. Cela accélère le déplacement du texte.

Yacoby
la source
20
Oh, non, la vitesse de frappe n'est en aucun cas un goulot d'étranglement, mais en même temps, pourquoi laisser quelque chose d'aussi stupide qu'un clavier vous gêner? Je n'ai eu aucun problème à basculer entre ma mise en page et les autres, car j'utilise les deux fréquemment; Je préfère simplement le mien. Et je dois admettre qu'emacs rend la programmation aussi rapide que possible - quand je n'ai pas à rechercher une séquence de touches.
Jon Purdy
4
Oh, et la simultanéité des mouvements de la main gauche et droite ne fait pas non plus de différence: le modificateur doit encore être enfoncé avant que la touche ne soit frappée. Une différence de millisecondes, certes, mais encore une fois, pourquoi vous gêner? Programmer avec une disposition qui ne fonctionne pas pour vous, c'est comme programmer sur un clavier collant.
Jon Purdy
6
Je maintiens qu'en gardant plusieurs dispositions de clavier en mémoire, vous sabotez votre mémoire musculaire et ralentissez ainsi votre frappe.
JesperE
1
L'autre problème avec la touche Maj est les séquences où vous alternez, de sorte que les deux mains sautent de la rangée supérieure à leur touche Maj et en arrière. Je ne dis pas que c'est assez courant pour s'inquiéter, cependant, mais des choses comme "(! * X)" peuvent être considérées comme irritantes.
Steve314
1
-1: Ne contribue en rien à la discussion (l'argument "qui a l'air stupide" n'est pas étayé par une seule donnée d'expérience, c'est une inquiétude tournée vers l'avenir) et ne peut pas être corrigé.
Evgeni Sergeev
16

J'aborderais votre question de la manière suivante. La tâche consiste à organiser un clavier de manière à minimiser les touches et les mouvements de la main pour un texte donné.

Étapes vers une solution possible. Créez un programme qui:

  1. Prend un fichier texte avec le code source. (Plus c'est gros, mieux c'est et de diverses sources!)
  2. Compte la fréquence d'utilisation de chaque symbole (sa présence dans le texte).
  3. (facultatif) Basé sur l'étape 2: Le programme génère le nombre de coups de touches pour chaque symbole ainsi que la distance que la main doit parcourir par rapport à la position centrale. En conséquence, vous aurez une mesure de l'efficacité de la disposition de votre clavier.

Maintenant manuellement ou en écrivant un programme Redéfinissez votre mise en page de la manière suivante. Placez le symbole le plus fréquemment utilisé dans une position centrale plus près de votre main forte. Le deuxième symbole va à votre main faible en position centrale. Le troisième symbole renvoie à votre main forte ... et ainsi de suite. Ensuite, vous passez progressivement de la position centrale des mains à des zones plus «éloignées» du clavier. Lorsque tout le clavier est plein, vous continuez le processus d'attribution des touches, mais cette fois avec la touche Shift enfoncée. L'autre différence serait que vous ne faites pas pivoter la main forte et faible pour chaque symbole lorsque le décalage est vers le bas. Avec la touche Maj vers le bas, vous remplissez d'abord les positions centrales du clavier, puis vous vous déplacez vers des positions plus éloignées.

Lorsque vous faites tout cela, effectuez à nouveau l'étape 3 pour la nouvelle mise en page pour voir comment la mise en page a été améliorée.

Il se peut que vous deviez toujours avoir votre clavier sur vous. Du bon côté, personne ne touchera votre ordinateur. Cela vous fera ressembler à un pro.

Enfin, n'oubliez pas de partager vos découvertes.

Ge Spi
la source
J'aime vraiment cette réponse
,:
13

Je joue avec une variante de la mise en page Colemak pour le moment avec de gros changements de symboles:

sans SHIFT:

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

avec SHIFT:

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

Je vais peut-être restaurer la clé / ...

Mais cela n'est basé sur aucune recherche sonore, et j'aimerais aussi voir une mise en page optimisée (optimisation comprenant des éléments comme l'altération de la main, etc., également la préservation de ZXCV, ...) avec un corpus basé sur un code source, car toutes ces mises en page semblent être optimisé pour la prose uniquement. Par exemple, «f» est une lettre très courante en C (si, pour).

Mise à jour: j'utilise actuellement

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

avec SHIFT:

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

Ceci est basé sur une optimisation partielle d'échange de 6 touches tirée de Carpalx avec la préservation des raccourcis habituels Couper / Copier / Coller / Annuler et modifiée pour donner un meilleur accès aux caractères de programmation habituels.

janv.
la source
1
J'aime l'idée de faire passer les caractères par défaut sur les nombres. c'est-à-dire: shift + 1 pour en obtenir un, et appuyer sur 1 vous donne!
Ray
12

Créez un simple enregistreur de touches, puis comptez le nombre de fois que chaque touche est enfoncée. Exécutez-le pendant un jour ou deux, puis enregistrez la sortie dans un fichier texte. Faites cela de temps en temps. Peu importe la disposition que vous utilisez, car vous voyez simplement quelles touches sont les plus utilisées.

Si vous voulez faire une bonne mise en page, vous ne pouvez pas avoir peur de vous éloigner de la norme. Je suggérerais de placer les 11 clés du haut le long de la ligne d'accueil, puis les 11 premières clés suivantes comme rangée du haut (laissez les 2 clés au-dessus de la clé de retour comme les clés les moins utilisées), puis les 3ème 11 clés du haut comme la rangée du bas . Il devrait rester 4 clés maintenant. Prenez-les et placez-les dans les emplacements - = et] \. Félicitations! Vous avez maintenant créé une excellente disposition de clavier pour vos besoins! = D

Tgwizman
la source
1
Très bonne réponse: le clavier doit être personnalisé au propriétaire
Julien__
1
Pour les statistiques d'utilisation du clavier, il existe déjà de bons programmes qui peuvent afficher une carte thermique
Mihai MATEI
[Visite d'anciens commentaires] C'est en fait une idée vraiment cool (ou passionnée;]). Je vais devoir vérifier moi-même!
Tgwizman
9

Dans l'ensemble, je pense qu'il vaut mieux avoir un bon éditeur de texte et savoir comment l'utiliser que d'essayer d'améliorer votre vitesse de frappe. Être capable d'enregistrer et de rejouer des macros est parfois une bouée de sauvetage, et une sélection d'extraits de code attribués à un raccourci peut être pratique car il y a normalement des limites imposées par la langue à ce qui peut être transformé en bibliothèque.

Plus généralement, je pense que les véritables améliorateurs de productivité sont tous liés à la connaissance ...

  • Savoir quels outils et bibliothèques sont disponibles et comment les utiliser.
  • Connaître la structure globale du code sur lequel vous travaillez, pas seulement votre petit morceau.
  • Connaître les algorithmes clés, les modèles de conception et les expressions idiomatiques pour ne pas avoir à les réinventer.
  • Connaissant suffisamment bien les règles pour être flexible - vous savez quand les enfreindre.
  • Connaître vos collègues et leurs forces, faiblesses, etc. - c'est-à-dire savoir quand trouver quelque chose par vous-même, mais aussi quand et à qui demander.

FWIW, je ne prétends pas être fort sur tous ceux-là. J'ai toujours été trop partial pour résoudre moi-même les problèmes et avec une tendance trop forte à réinventer la roue et les grands projets architecturaux.

Quoi qu'il en soit, je soupçonne juste que le temps passé à changer et à apprendre les dispositions de clavier serait une distraction par rapport à des problèmes plus importants.

Steve314
la source
Je suis d'accord avec vous sur tous les plans! Faire bon usage des outils et des idiomes est juste une bonne programmation. Mais c'est une question sur une chose très spécifique, et bon, il y a quinze minutes deux ans, m'a évité une certaine frustration depuis.
Jon Purdy
@Jon - Je comprends, mais je pense que mes habitudes de frappe sont maintenant assez fortement programmées - le changement serait un travail difficile.
Steve314
-1: Cela n'a pas l'air d'être basé sur l'expérience avec des dispositions de clavier alternatives; va à l'encontre de mon expérience avec eux. Digresse bien au-delà du sujet. Ne fournit pas d'éléments d'action concrets. Ne peut pas être réparé.
Evgeni Sergeev
-5

Changer la disposition du clavier est une mauvaise idée car cela augmenterait (peut-être) votre vitesse de frappe sur un clavier, mais endommagerait gravement votre vitesse de frappe sur d'autres claviers ou sur des ordinateurs où vous n'avez pas votre disposition de clavier spéciale. J'ai trouvé qu'il est souvent préférable de s'ajuster aux valeurs par défaut, que de devoir les changer partout. (Personnellement, mes doigts sont fortement biaisés par Emacs, ce qui provoque beaucoup de friction de frappe partout ailleurs.)

JesperE
la source
6
Je passe volontiers entre deux mises en page. Jon rapporte que ça fait "un an ou deux" et qu'il n'a aucun problème à faire des allers-retours. YMMV, en gros.
TJ Crowder
4
Je trouve que changer entre les claviers et les dispositions de clavier est aussi facile / difficile que de changer de parler dans différentes langues - si vous les connaissez bien, après quelques minutes, vous retrouvez toute la vitesse de la pensée.
liori
1
@liori: bien dit, mais que ce soit de l'ordre de quelques minutes ou secondes dépend entièrement de ma fatigue. : P
Jon Purdy
1
@liori "après quelques minutes ..." Il semble que les entreprises (multinationales) et les nations normalisent les langues à plusieurs fins. 1) Vitesse de communication. 2) l'exactitude de la communication. Je soupçonne que la normalisation des dispositions de clavier présente des avantages similaires.
Jason D
2
@Jason D: Des points valides, mais je suis content qu'ils ne s'appliquent pas à moi ... J'utilise rarement les ordinateurs des autres.
liori