Soru Programlama için İdeal Klavye Düzeni [kapalı]


Sıklıkla sık sık C ve C ++ (APL'ye dokunmayacağım) için yazım sembollerini ağır kullanan programlama dillerinin, vardiya anahtarının sık kullanılmasını gerektirdiği için yazılması zor olduğu yönünde şikayetler duyuyorum. Bir ya da iki yıl önce, benden yoruldum, Microsoft’u indirdim Klavye Düzeni Oluşturucu, düzenimde birkaç değişiklik yaptı ve bir kez geri bakmadılar. Hız farkı şaşırtıcıdır; Bu birkaç basit değişiklikle C ++ kodunu yaklaşık% 30 daha hızlı yazabilirim; En iyisi, normal koşu metninde yazım hızım tehlikeye girmez.

Benim sorularım şudur: programlama için alternatif klavye düzenleri var, popülerlik kazandı, bunların hepsi hala modern kullanımda mı, kişisel olarak değiştirilmiş bir düzen kullanıyor musunuz ve nasıl benim düzenimi daha da optimize edebilirim?

Aşağıdaki değişiklikleri standart bir QWERTY düzeninde yaptım. (Kullanmıyorum Dvorakama orada bir programcı Dvorak bahsetmeye değer yer.)

  • Sayıları sembollerle değiştirin En üst sırada, uzun veya tekrarlanan basit sayılar tipik olarak adlandırılmış sabitlerle değiştirildiğinden;
  • Arka planı tilde ile değiştir çünkü backquotes birçok dilde nadirdir, ancak C ++'da yıkıcılar yaygındır;
  • Eksi ile alt çizgiyi değiştirin, çünkü alt çizgiler tanımlayıcılarda yaygındır;
  • Küme parantezlerini köşeli parantezlerle değiştirin çünkü bloklar, abonelerden daha yaygındır; ve
  • Tek fiyat teklifi ile çift alıntıyı değiştir, çünkü dizeler karakter değişmezlerinden daha yaygındır.

Bu sonun muhtemelen en tartışmalı olacağından şüpheleniyorum, çünkü ortak kasılmaları yazmak için vardiya kullanmayı gerektirerek en çok metin yayınlamaya çalışmaktadır. Bu düzen, C ++, C, Java ve Perl'de yazım hızımı önemli ölçüde artırdı ve bir şekilde LISP ve Python'da artırdı.


76
2018-02-21 15:57


Menşei


Belki de sadece çok yavaş düşünüyorum - ama yazılım geliştirirken ham yazma hızı genellikle benim sınırlayıcı faktör değil. Öyleyse, muhtemelen yanlış bir şey yaptığımı düşünürdüm. - Lucero
@Lucero: tümHayır, ama ne yapmam gerektiğini (nihayet!) yapmam gerektiğinde, daha hızlı ve daha rahat bir şekilde yazabilirim, o kadar iyi. Bütün düşündüğünüzü yaptıktan sonra, bazen yapması gereken çok fazla kod var ... :-) - T.J. Crowder
@Jon: Bunu bir CW'yi subjektif olarak kapatılmadan önce yapmanız önerilir (sonuçta, bu). - T.J. Crowder
@ T.J .: CW yaptı. İyi bir yerleşim düzeni, bir konfordan ziyade ham performans meselesi değildir, ancak konfor performans açısından çok önemlidir. - Jon Purdy
Oldukça az sayıda insan tarafından nasıl çarptığın komik, onları görmezden gelmenizi öneriyorum. Sadece yazma hızı değil olduğu “Düşünürdüğünüz gibi programlayabilmek için” yazabilmeniz için bir faktör varsa, ergonomi bunu koyar. Ancak hız ve ergonomi birlikte hareket ediyor: ellerinizin harekete geçmesi zor olan hareketler, yorgunluk hatalara yol açıyor ve bu vergileri ellerinize daha da uzatıyor. Ve uzun vadede, klavye düzeninizi ihtiyaçlarınızı karşılayacak şekilde ayarlayarak, RSI veya RSI arasında fark olabilir. - just somebody


Cevaplar:


Hala yazım hızının, bir projenin tamamlanması için gereken süredeki ana faktör olmadığını düşünüyorum. Eğer öyleyse, büyük bir sorun var (kodlama haftaları bizi planlama saatlerinden kurtarıyor).

Sorunuzla ilgili olarak standart düzeni kullanmayı tercih ediyorum, çünkü standart bir klavye düzeniyle sunulduğunda ilk 10 dakikayı aptal göstermek zorunda kalmam.

Önerdiğiniz bazı değişiklikler, ör. Özel karakterler ile en üstteki sıra, diğer elin dış parmağı aynı anda kayması için hareket etmesi gerektiğinden, bir kaç fark yaratmaz.

IMHO Zincirleme düzeni üzerinde yardımcı olan bir şey sadece klavye kısayollarını kullanmaktır. Vim ve Emacs önerilir. Metni çok daha hızlı hareket ettirir.


33



Oh, hayır, yazma hızı herhangi bir şekilde bir darboğaz değil, aynı zamanda neden klavye gibi aptalca bir şey yoluna girsin? Düzenim ve diğerleri arasında geçiş yapmakta zorluk çekmedim, çünkü her ikisini de sık sık kullandım; Ben sadece benimkini tercih ederim. Ve itiraf etmeliyim ki, emacs, olabildiğince hızlı programlama yapıyor. - Jon Purdy
Oh, ve sağ ve sol el hareketlerinin eşzamanlılığı da bir fark yaratmıyor: değiştiricinin hala depresyona girmesi gerekiyor. önce anahtar vuruldu. Milisaniye bir fark, elbette, ama yine de, neden kendini engelliyorsun? Sizin için çalışmayan bir düzen ile programlama, yapışkan bir klavyede programlama gibidir. - Jon Purdy
Hafızada birkaç klavye düzenini koruyarak, kas hafızanızı sabote ettiğinizi ve böylece yazmanızı yavaşlattığınızı düşünüyorum. - JesperE
Vardiya tuşuyla ilgili diğer konu, dönüşümlü olduğunuz dizilerdir, bu yüzden her iki el üst sıradan vardiya anahtarına ve geriye doğru atlar. Bununla ilgili endişelenecek kadar yaygın olduğunu söylemiyorum, ama "(! * X)" gibi şeyler rahatsız edici nitelikte olabilir. - Steve314
-1: Tartışmaya herhangi bir katkıda bulunmaz ("aptalca görünen" argüman, deneyimden bile bir referans ile yedeklenmez, ileriye dönük bir endişedir) ve düzeltilemez. - Evgeni Sergeev


Sorunuza şu şekilde yaklaşırdım. Görev, tuş vuruşlarını ve verilen metin için el hareketini en aza indirecek şekilde bir klavye düzenlemektir.

Olası bir çözüme doğru adımlar. Bir program yapın:

  1. Kaynak kodlu bir metin dosyası alır. (Daha büyük ve çeşitli kaynaklardan daha büyük!)
  2. Her sembolün kullanım sıklığını sayar (metindeki varlığı).
  3. (isteğe bağlı) 2. adıma göre: Program, her sembol için tuş vuruşu sayısını ve elin merkezi konumdan ne kadar ileri gitmesi gerektiğini üretir. Sonuç olarak, klavye düzeninizin ne kadar etkili olduğunu bir ölçüme sahip olacaksınız.

Şimdi el ile veya bir program yazarak Düzeninizi aşağıdaki şekilde yeniden tanımlayın. En çok kullanılan sembolü güçlü elinize daha yakın bir yere yerleştirin. İkinci sembol zayıf elinize merkez pozisyonda gider. Üçüncü sembol, güçlü elinize geri dönüyor ... vb. Sonra yavaş yavaş ellerin merkezi konumundan klavyenin daha "uzak" bölgelerine ilerlersiniz. Tüm klavye dolduğunda, tuşlara basma işlemine devam edersiniz ancak bu kez Shift tuşuna basılır. Diğer fark, Shift aşağıdayken her sembol için güçlü ve zayıf el döndürmemenizdir. Vites tuşu ile önce klavyedeki merkezi pozisyonları doldurup daha uzak konumlara geçersiniz.

Düzenin nasıl geliştirildiğini görmek için yeni düzen için 3. adımı tekrar uyguladıktan sonra.

Klavyenizi her zaman yanınızda taşımanız gerekebilir. Aydınlık tarafta kimse bilgisayarınıza dokunmayacak. Pro gibi görünmeni sağlayacak.

Son olarak, bulgularınızı paylaşmayı unutmayın.


13





Basit bir tuş kaydedici yapın, ardından her tuşa basıldığında kaç kez sayılacağını belirleyin. Bir ya da iki gün boyunca çalıştırın, daha sonra çıktıyı bir metin dosyasına kaydedin. Bunu her seferinde bir süre yapın. Hangi düzeni kullandığınızı farketmez, sadece hangi tuşların en çok kullanıldığını görüyorsunuz.

İyi bir düzen yapmak istiyorsanız, normdan uzaklaşmaktan korkmazsınız. En üstteki 11 tuşu ana satır boyunca, sonra da en üstteki 11 tuşu en üst satır olarak (en az kullanılan tuşlar olarak geri dönüş tuşunun üstündeki 2 tuşunu bırakın), sonra da en üstteki 3. alt tuşun . Şu an 4 anahtar kalmalı. Bunları al ve - = ve / \ yuvalarına koy. Tebrikler! Artık amaçlarınız için harika bir klavye düzeni oluşturdunuz! = D


10



Çok iyi cevap: klavye sahibine uygun olmalı - Julien__
Klavye kullanım istatistikleri için, halihazırda böyle bir ısı haritası gösterebilen iyi programlar var: WhatPulse - Mihai MATEI
[Eski yazı yorumlarını ziyaret etme] Bu aslında gerçekten harika (veya ısıtılmış) bir fikirdir. Bunu kendim kontrol etmeliyim! - Tgwizman


Genel olarak, iyi bir metin editörüne sahip olmanın ve onu nasıl kullanacağınızı bilmenin yazı yazma hızınızı artırmaya çalışmaktan daha iyi olduğunu düşünüyorum. Makroları kaydedip yeniden oynatmak bazen hayat kurtarıcıdır ve kısayol tarafından atanmış kod parçacıklarının seçilmesi kullanışlı olabilir çünkü bir kütüphaneye dönüştürülebilenler için normal olarak uygulanan sınırlar vardır.

Daha genel olarak, gerçek üretkenlik arttırıcıların bilgiyle ilgili olduğunu düşünüyorum.

  • Hangi araç ve kütüphanelerin mevcut olduğunu ve nasıl kullanılacağını bilmek.
  • Üzerinde çalıştığınız kodun genel yapısını bilmek, sadece sizin için değil.
  • Anahtar algoritmaları, tasarım kalıplarını ve deyimleri bilmek, böylece onları yeniden keşfetmeniz gerekmez.
  • Kuralların yeterince esnek olabileceğini bilerek, onları ne zaman kırılacağını bilirsiniz.
  • İş arkadaşlarınızı ve güçlü yanlarını, zayıf yönlerini vb. Bilerek - yani kendinizin ne zaman bir şey ifade edeceğini, ne zaman ve ne zaman sorulacağını bilmek.

FWIW, hepsinde güçlü olduğunu iddia etmiyorum. Her zaman problemleri çözme konusunda çok hevesliydim ve çok güçlü bir şekilde tekerleği ve büyük mimari planları yeniden keşfetme eğilimindeydim.

Her neyse, sadece zaman harcayarak ve klavye düzenlerini öğrenme zamanının daha önemli konulardan uzaklaşacağından şüphe duyuyorum.


9



Tüm sayımlarda size katılıyorum! Araçların ve deyimlerin iyi bir şekilde kullanılması sadece iyi bir programdır. Ama bu çok özel bir şey hakkında bir soru, ve iki yıl önce onbeş dakika ondan beri beni makul bir hüsrana uğrattı. - Jon Purdy
@Jon - Anladım, ama yazım alışkanlıklarının şu ana kadar oldukça güçlü bir şekilde programlandığını düşünüyorum - değişim zor bir iş olacaktır. - Steve314
-1: Alternatif klavye düzenleri ile deneyime dayalı gibi gelmiyor; Onlarla olan deneyimlerime karşı geliyor. Konunun ötesine geçme yolu. Somut eylem öğeleri sağlamaz. Tamir edilemez. - Evgeni Sergeev


Şu anda Colemak düzeninin bir varyantı ile şu anda sembollerin ağır değişimleri ile oynuyoruz:

SHIFT olmadan:

`- {} []; <> () _ =
 q w f p g j l u y * / # \
a r 'a
z x c v b k m,. !

ÜSTKRKT ile:

~ 1 2 3 4 5 6 7 8 9 0 & +
Q W F P G J L U Y @ ^ $ |
BİR SÜRÜM
Z X C V B K M%:?

Belki / anahtarını geri yüklerim ...

Ancak bu herhangi bir ses araştırmasına dayanmıyor ve kaynak kodlu bir yazılımla optimize edilmiş bir düzen (El değişikliği gibi şeyler de dahil olmak üzere Optimizasyon, ayrıca ZXCV koruma, ...) yapmayı da çok isterim çünkü tüm bu düzenler sadece düzyazı için optimize edilmelidir. Örneğin, 'f', C için çok yaygın bir harftir (eğer, için).

Güncelleme: Şu anda kullanıyorum

`- {} [] @ <> () _ =
q w k r g y u l p *; #
a s f t d h n e 'o
\ z x c v b j m,. /

ÜSTKRKT ile:

~ 1 2 3 4 5 6 7 8 9 0 ^ +
Q W K R G Y U L P &! $
BİR SÜRÜCÜSÜNDEN DAHA |
| Z X C V B J M%:?

Bu, 6 anahtarlık takas kısmi optimizasyonuna dayanmaktadır. Carpalx olağan Kesim / Kopyala / Yapıştır / Geri Al kısayollarının korunması ile ve normal programlama karakterlerine daha iyi erişim sağlamak için değiştirilmiştir.


9



Karakterleri sayılar üzerinde varsayılan yapma fikri hoşuma gidiyor. yani: 1'i almak için shift + 1 ve 1'e basmak size verir! - Ray


Klavye düzenini değiştirmek kötü bir fikirdir çünkü bir klavyede yazım hızınızı artırabilir, ancak diğer klavyelerde veya özel klavye düzeniniz olmadığı bilgisayarlarda yazma hızınıza ciddi şekilde zarar verir. Her zaman onları değiştirmek zorunda kalmadan, varsayılanlara kendinizi ayarlamak genellikle daha iyi olduğunu buldum. (Şahsen, parmaklarım yoğun bir şekilde Emacs taraftarıdır, bu da her yerde başka bir sürü sürtünme sürtünmesine neden olur.)


-4



İki düzen arasında geçiş yaparım. Jon "bir ya da iki yıl" olduğunu bildirdi ve ileri geri gitme konusunda hiçbir problemi yok. YMMV, temel olarak. - T.J. Crowder
Klavyeler ve klavye düzenleri arasında, farklı dillerde konuşma arasında geçiş yapmak kadar kolay / zor olarak değiştirebiliyorum. Eğer bunları iyi biliyorsanız, birkaç dakika sonra tam bir düşünce hızına kavuşursunuz. - liori
@liori: iyi, her ne kadar dakika ya da saniyelik sıralarda olsam da, ne kadar yorgun olduğuma bağlı. : P - Jon Purdy
@liori "birkaç dakika sonra..." Görünüşe göre (çokuluslu) şirketler ve uluslar, birkaç amaca yönelik olarak dilleri standartlaştırıyorlar. 1) İletişimin hızı. 2) iletişimin doğruluğu. Klavye düzenlerini standartlaştırdığından şüpheleniyorum. - Jason D
@ Jason D: Geçerli noktalar, ama bana uygun olmadıklarına sevindim ... Nadiren başkalarının bilgisayarlarını kullanıyorum. - liori