Un layout di tastiera ideale per la programmazione [chiuso]


89

Sento spesso lamentele sul fatto che i linguaggi di programmazione che fanno un uso massiccio di simboli per brevità, in particolare C e C ++ (non toccherò APL), sono difficili da digitare perché richiedono un uso frequente del tasto Maiusc. Uno o due anni fa, me ne sono stancato io stesso, ho scaricato Keyboard Layout Creator di Microsoft , apportato alcune modifiche al mio layout e non ho guardato indietro nemmeno una volta. La differenza di velocità è sbalorditiva; con queste poche semplici modifiche riesco a digitare il codice C ++ circa il 30% più velocemente, a seconda ovviamente di quanto sia peloso; la cosa migliore è che la mia velocità di digitazione nel normale testo corrente non è compromessa.

Le mie domande sono queste: quali layout di tastiera alternativi sono esistiti per la programmazione, che hanno guadagnato popolarità, sono ancora in uso moderno, usi personalmente un layout alterato e come può essere ulteriormente ottimizzato il mio layout?

Ho apportato le seguenti modifiche a un layout QWERTY standard. (Non uso Dvorak , ma c'è un layout Dvorak del programmatore degno di nota.)

  • Scambia i numeri con i simboli nella riga superiore, perché i numeri letterali lunghi o ripetuti vengono generalmente sostituiti con costanti denominate;
  • Scambia il backquote con la tilde, perché i backquote sono rari in molti linguaggi ma i distruttori sono comuni in C ++;
  • Scambia il segno meno con il carattere di sottolineatura, perché i caratteri di sottolineatura sono comuni negli identificatori;
  • Scambia parentesi graffe con parentesi quadre, perché i blocchi sono più comuni dei pedici; e
  • Scambia virgolette doppie con virgolette singole, perché le stringhe sono più comuni dei caratteri letterali.

Sospetto che quest'ultimo sarà probabilmente il più controverso, poiché interferisce maggiormente con il testo in esecuzione richiedendo l'uso di shift per digitare le contrazioni comuni. Questo layout ha notevolmente aumentato la mia velocità di digitazione in C ++, C, Java e Perl, e in qualche modo l'ha aumentata in LISP e Python.


32
Forse è solo che sto pensando troppo lentamente, ma la velocità di digitazione grezza di solito non è il mio fattore limitante durante lo sviluppo del software. Se lo fosse, probabilmente penserei che sto facendo qualcosa di sbagliato.
Lucero

9
@ Lucero: Nel complesso , no, ma quando ho (finalmente!) Capito cosa dovrei fare, più velocemente e più comodamente posso scriverlo, meglio è. Una volta che hai pensato a fondo, a volte c'è solo un sacco di macinatura del codice da fare ... :-)
TJ Crowder

3
@ Jon: Consiglio vivamente di renderlo un CW prima che venga chiuso come soggettivo (che, dopo tutto, lo è).
TJ Crowder,

20
@TJ: made CW. Un buon layout non è tanto una questione di prestazioni grezze quanto di comfort, ma il comfort è molto importante per le prestazioni.
Jon Purdy,

3
È divertente come sei stato sbattuto da un bel po 'di persone, suggerirei di ignorarle. Non è solo la velocità di battitura (che è un fattore se puoi digitare abbastanza per essere in grado di "programmare come pensi"), l'ergonomia la supera. Ma velocità ed ergonomia vanno di pari passo: le mosse che affaticano le mani sono lente da eseguire, la fatica porta a errori e aggiustare quelle faticano ancora di più. E a lungo termine, modificare il layout della tastiera per soddisfare le tue esigenze potrebbe fare la differenza tra RSI o nessun RSI.
solo qualcuno il

Risposte:


32

Continuo a ritenere che la velocità di digitazione non sia il fattore principale nel tempo necessario per completare un progetto. Se lo è, c'è un grosso problema (settimane di programmazione ci fanno risparmiare ore di pianificazione).

Per quanto riguarda la tua domanda, preferisco utilizzare il layout standard in quanto significa che non devo passare i primi 10 minuti a sembrare stupido quando viene presentato con un layout di tastiera standard.

Alcune delle sostituzioni che hai suggerito, ad esempio la riga in alto con i caratteri speciali non fa la differenza in quanto il dito esterno d'altra parte dovrebbe muoversi per spostarsi allo stesso tempo.

IMHO Una cosa che aiuta a concatenare i layout è usare solo le scorciatoie da tastiera. Si raccomandano Vim ed Emacs. Rende lo spostamento del testo molto più veloce.


22
Oh, no, la velocità di digitazione non è affatto un collo di bottiglia, ma allo stesso tempo, perché lasciare che qualcosa di così sciocco come una tastiera si intrometta? Non ho avuto problemi a passare avanti e indietro tra il mio layout e gli altri, perché li uso spesso entrambi; Preferisco semplicemente il mio. E devo ammetterlo, emacs rende la programmazione più veloce che può essere, quando non devo cercare una sequenza di tasti.
Jon Purdy,

4
Oh, e anche la simultaneità dei movimenti della mano destra e sinistra non fa differenza: il modificatore deve ancora essere premuto prima di premere il tasto. Una differenza di millisecondi, sicuramente, ma ancora una volta, perché ostacolarti? Programmare con un layout che non funziona per te è come programmare su una tastiera appiccicosa.
Jon Purdy,

7
Sostengo che mantenendo in memoria diversi layout di tastiera stai sabotando la tua memoria muscolare e quindi rallentando la tua digitazione.
JesperE

1
L'altro problema con il tasto Maiusc sono le sequenze in cui ti stai alternando, quindi entrambe le mani stanno saltando dalla riga in alto al tasto Maiusc e viceversa. Non sto dicendo che sia abbastanza comune di cui preoccuparsi, però, ma cose come "(! * X)" potrebbero essere considerate irritanti.
Steve314

2
-1: Non contribuisce in alcun modo alla discussione (l'argomento "sembrare stupido" non è supportato da nemmeno un dato dall'esperienza, è una preoccupazione lungimirante) e non può essere risolto.
Evgeni Sergeev

19

Affronterei la tua domanda nel modo seguente. Il compito è organizzare una tastiera in modo tale da ridurre al minimo i colpi di tasti e il movimento della mano per un determinato testo.

Passi verso una possibile soluzione. Crea un programma che:

  1. Accetta un file di testo con codice sorgente. (Più grande è, meglio è e da varie fonti!)
  2. Conta la frequenza di utilizzo di ogni simbolo (la sua presenza nel testo).
  3. (opzionale) Basato sul passaggio 2: Il programma genera il conteggio delle battute dei tasti per ogni simbolo più la distanza che la lancetta deve percorrere dalla posizione centrale. Di conseguenza avrai una misura dell'efficacia del layout della tastiera.

Ora manualmente o scrivendo un programma Ridefinisci il tuo layout nel modo seguente. Metti il ​​simbolo usato più di frequente in una posizione centrale più vicino alla tua mano forte. Il secondo simbolo va alla tua mano debole in posizione centrale. Il terzo simbolo torna alla tua mano forte ... e così via. Quindi ti sposti gradualmente dalla posizione centrale delle mani alle aree più "distanti" della tastiera. Quando tutta la tastiera è piena, si continua il processo di assegnazione dei tasti, ma questa volta con il tasto Maiusc premuto. L'altra differenza sarebbe che non ruoti la mano forte e debole per ogni simbolo quando lo Shift è abbassato. Con il tasto Maiusc abbassato prima, riempiresti le posizioni centrali sulla tastiera e poi ti sposteresti in posizioni più distanti.

Quando si esegue tutto ciò, eseguire nuovamente il passaggio 3 per il nuovo layout per vedere come è stato migliorato il layout.

Potrebbe essere necessario portare con sé la tastiera in ogni momento. Il lato positivo è che nessuno toccherà il tuo computer. Ti farà sembrare un professionista.

Infine, non dimenticare di condividere le tue scoperte.


Mi piace molto questa risposta
,:

Se si volesse rendere le cose più complicate, si potrebbe tenere conto delle combinazioni di caratteri e cercare di alternare le mani o evitare colpi con le stesse dita (come "chilo" su QWERTY)
awe lot

15

Al momento sto giocando con una variante del layout Colemak con pesanti cambiamenti di simboli:

senza SHIFT:

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

con SHIFT:

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

Forse ripristinerò il tasto / ...

Ma questo non si basa su alcuna ricerca sul suono, e mi piacerebbe anche vedere un layout ottimizzato (ottimizzazione che include cose come l'alterazione della mano ecc., Anche la conservazione ZXCV, ...) con un corpus basato sul codice sorgente, perché tutti questi layout sembrano essere ottimizzato solo per la prosa. Ad esempio, "f" è una lettera molto comune in C (if, for).

Aggiornamento: attualmente sto utilizzando

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

con SHIFT:

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

Questo si basa su un'ottimizzazione parziale dello scambio di 6 tasti presa da Carpalx con la conservazione delle solite scorciatoie Taglia / Copia / Incolla / Annulla e modificata per dare un migliore accesso ai soliti caratteri di programmazione.


1
Mi piace l'idea di rendere i caratteri predefiniti sui numeri. cioè: shift + 1 per ottenerne uno e premendo 1 ti dà!
Ray

14

Crea un semplice key logger, quindi conta il numero di volte in cui ogni tasto viene premuto. Eseguilo per un giorno o due, quindi salva l'output in un file di testo. Fallo ogni tanto. Non importa quale layout stai utilizzando, poiché stai solo vedendo quali tasti vengono utilizzati di più.

Se vuoi creare un buon layout, non puoi aver paura di allontanarti dalla norma. Suggerirei di mettere le prime 11 chiavi lungo la riga principale, quindi le successive 11 chiavi superiori come riga superiore (lasciare le 2 chiavi sopra il tasto Invio come chiavi meno utilizzate), quindi le terze 11 chiavi superiori come riga inferiore . Ora dovrebbero essere rimaste 4 chiavi. Prendili e inseriscili negli slot - = e] \. Congratulazioni! Ora hai creato un ottimo layout di tastiera per i tuoi scopi! = D


1
Risposta molto buona: la tastiera dovrebbe essere adattata al proprietario
Julien__

2
Per le statistiche sull'utilizzo della tastiera, ci sono già buoni programmi che possono mostrare una mappa di calore, come questa: WhatPulse
Mihai MATEI

[Visitando i commenti sui vecchi post] Questa è in realtà un'idea davvero interessante (o accesa;]). Dovrò verificarlo io stesso!
Tgwizman

10

Nel complesso, penso che avere un buon editor di testo e sapere come usarlo sia meglio che cercare di migliorare la velocità di digitazione. Essere in grado di registrare e riprodurre macro a volte è un salvavita e una selezione di frammenti di codice assegnati da scorciatoie può essere utile perché normalmente ci sono limiti imposti dalla lingua su ciò che può essere trasformato in una libreria.

Più in generale, penso che i veri stimolatori della produttività siano tutti sulla conoscenza ...

  • Sapere quali strumenti e librerie sono disponibili e come usarli.
  • Conoscere la struttura generale del codice su cui stai lavorando, non solo la tua piccola parte.
  • Conoscere algoritmi chiave, modelli di progettazione e modi di dire in modo da non doverli reinventare.
  • Conoscere le regole abbastanza bene da poter essere flessibili - sai quando infrangerle.
  • Conoscere i tuoi colleghi e i loro punti di forza, di debolezza, ecc. - cioè sapere quando capire qualcosa da solo, ma anche quando e a chi chiedere.

FWIW, non sto affermando di essere forte su tutti questi. Sono sempre stato troppo spinto a risolvere i problemi da solo e con una tendenza troppo forte a reinventare la ruota e i grandi schemi architettonici.

Ad ogni modo, ho solo il sospetto che il tempo speso a cambiare e imparare i layout di tastiera sarebbe una distrazione da questioni più importanti.


1
Sono d'accordo con te su tutti i punti! Fare buon uso di strumenti e modi di dire è solo una buona programmazione. Ma questa è una domanda su una cosa molto specifica e, ehi, quindici minuti di due anni fa mi ha risparmiato una ragionevole quantità di frustrazione da allora.
Jon Purdy,

@ Jon - Ho capito, ma penso che le mie abitudini di digitazione siano ormai programmate in modo abbastanza forte - il cambiamento sarebbe un duro lavoro.
Steve314

-1: non sembra che si basi sull'esperienza con layout di tastiera alternativi; va contro la mia esperienza con loro. Divagazioni ben oltre l'argomento. Non fornisce azioni concrete. Non può essere riparato.
Evgeni Sergeev

-4

Cambiare il layout della tastiera è una cattiva idea poiché (forse) aumenterebbe la velocità di digitazione su una tastiera, ma danneggerebbe gravemente la velocità di digitazione su altre tastiere o su computer in cui non hai il tuo layout di tastiera speciale. Ho scoperto che spesso è meglio adeguarsi alle impostazioni predefinite, che doverle cambiare ovunque. (Personalmente, le mie dita sono fortemente influenzate da Emacs, il che causa un sacco di attrito di battitura ovunque.)


7
Passo felicemente tra due layout. Jon riferisce che è stato "un anno o due" e non ha problemi ad andare avanti e indietro. YMMV, fondamentalmente.
TJ Crowder

4
Trovo che cambiare tra tastiere e layout di tastiera sia facile / difficile come cambiare il parlare in lingue diverse: se le conosci bene, dopo pochi minuti riacquisti la piena velocità di pensiero.
liori

1
@liori: ben detto, anche se è nell'ordine di minuti o secondi dipende interamente da quanto sono stanco. : P
Jon Purdy,

2
@ Jason D: Punti validi, ma sono contento che non siano applicabili a me ... Uso raramente i computer di altre persone.
liori

2
@Liori. Molte aziende dispongono di sale conferenze con computer condivisi. E un buon numero di sviluppatori lascerà che qualcun altro "guidi" il proprio computer quando taggano un problema difficile. Se altri si RIFIUTANO di toccare il tuo computer a causa del tuo layout non standard, potresti ostacolare la risoluzione cooperativa dei problemi. E per il tuo datore di lavoro, ciò elimina la maggior parte dei vantaggi personali che raccogli con il layout scelto. Ricorda, lo sviluppo di solito non è un uomo contro il mondo. Di solito è fatto come una squadra.
Jason D
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.