如何練習編程的手速?

看到另外的一個問題(為了提高演算法為什麼有些大牛說搞acm的性價比很低? - 互聯網)的一個答案:

如果意欲在cs深造,不管選哪個方向,數據結構與演算法運用熟練對學習速度,編程手速乃至生活質量都會有質的提高。我是非競賽黨,也沒有打
topcoder/codeforces的習慣,寫演算法程序(尤其是看點paper現學現賣)手速極慢,折磨死人了。所以題主儘管刷題吧!

於是比較好奇什麼是編程的手速,如何提高編程的手速


可以使用經典的 TT 來測試你的打字速度,注意是包含數字和符號的文章(Menu-&>Test-&>All key)

軟體很簡單,按照箭頭指著的位置,快速輸入上面的單詞即可,輸入完會有評分的。

TT是比較好的打字練習程序,直到今天,公司內都用作給新人練習打字速度用。不當能測試,還有比較詳細的課程,教你從純單詞打起,逐步到數字,標點符號等。

我做過一個 DOSBOX版本的 TT (tt.exe 是 DOS下的程序),雙擊 TT.BAT 即可在 Win7/8 啟動

http://www.skywind.me/mw/images/e/eb/TT-Dosbox.7z

我當時用 TT 測試 All Key 的時候,已經寫過好多年程序了,自己覺得自己打字不慢,英文可以流利盲打,數字和符號需要看一下,結果 TT 測試下來,打字速度只有 31 WPM ,屬於墊底的角色,丟死人了。

於是開始用 TT的課程進行練習,每天練習的不多,每天兩次,每次15分鐘,主要是先打10分鐘的課程,然後做5分鐘的測驗,不能練多,練多了手麻,但是要堅持每天都練習兩次左右。一開始純英文的指法挺簡單乏味,覺得沒意思,因為我本身可以流利的盲打英文,覺得自己主要是被數字和符號拖累了。但是堅持了一段時間練習純英文速度後,我發現純英文速度從 42WPM提高到 55WPM。

後來開始繼續練習數字和符號,這就比較痛苦了,就是單調乏味的重複練習,這部分手指動作跨度大,即便記得住在哪裡,經常手指過去就按錯了,但是一旦數字和符號分實現了盲打,整體 WPM的提高是非常大的。

TT 有專門練習數字和符號的的課程:

幾個星期後,All Key的打字速度 WPM 終於從31 提高到 45 了,通過了打字測驗。這時候我回來輸入程序,我發現對自己編程幫助確實比較大。以前碰到數字和符號經常要低下頭去看在哪裡,指法也不標準,比如按shift組合鍵的時候是比較山寨的打發,現在糾正了一下實現全鍵盤盲打了,感覺寫程序順暢了很多。

很多人覺得程序主要是思考,你思路對了,打字只是小事,經常聽到說某某高手打字是二指禪。以前我也這麼認為,但是專門抽時間練習了以後,發現真正打字流暢的人,打字的 cpu佔用很低,不會因為打錯字而影響思考,更不會因為要低下頭去看數字元號打斷你的思路。

到了 45的 WPM 以後,再往下提高就比較難了,經常一個多星期沒啥提高,我後來發現我的指速不夠,就是即便全部盲打,手指不夠熟練,靈巧度不高,再怎麼盲打也是白打。因此買了一個機械鍵盤來專門練習指速。

先單純練習從 A打到 Z,最開始是15秒,慢慢熟練到10秒,最後到5秒。又從最基本的單詞開始,不斷的重複同一節 TT的課程,同一個動作重複 300次,肌肉就會有記憶,而同一個動作重複600次,脊柱就會有記憶。別人打字要經過大腦,大腦一個字母一個字母,一根手指一根手指的指揮,是比較費腦的,而你打字如果真正進入了脊柱反應的條件反射時代,那麼看到一個單詞或者一串數字,大腦只需要下一個指令,脊柱這個協處理器就自動完成了,根本不需要過大腦。

所以實現全盲打後,又經過一段時間的指速練習,從 45 WPM 不斷的提高到 50 WPM,55 WPM,60 WPM 最後到 65WPM (TT的 All Key模式),單純打英文的速度也從原來的 35 WPM提高到 71 WPM,整整翻了一倍:

雖然 TT 是 DOS 時代的軟體了,現在市面上出過很多打字練習軟體,但是說道科學性和系統性,還是沒有超過 TT的。現在偶爾抽空還是會拿出 tt 來練習一下,就當打遊戲。但是自己手指的靈巧度感覺還是不夠,可能這是先天的,因為即便我達到了 65 WPM,公司內還是有很多70,75以上的同事打的比我快多了。

現在再看到那些諸如某大牛隻用二指禪來敲代碼的言論,我都會嗤之以鼻了,字都打不好還寫啥程序呀?不管有多牛,即便寫代碼的思路再好,但是手速跟不上,打字還要費大腦的話,還是有所局限的。

只有很流暢的打字了,讓打字變為一種不經大腦的條件反射,你的注意力才能完全集中在思考你的程序上。我把自己的打字速度從 30 WPM 提高到 65WPM的過程中,對這一點感觸是比較深的。因為先天手指笨拙,我好像要比同事們練習的更多才能有他們同樣的提高,但是我還是能夠感受到提高手速對編程的改變,所以有空我都還是會拿出 TT 來練習一下,全當打遊戲了,希望有一天 All Key 的 WPM能上 70。

-------------------------

PS: TT 下載地址(DosBox版本)http://www.skywind.me/mw/images/e/eb/TT-Dosbox.7z

整合了 DOSBOX + TT,運行 「TT.BAT" 就可以在 Win7/Win8下啟動,運行"TT放大版.BAT",就可以設置 DOSBOX放大兩倍顯示(如今高分屏看起以前低解析度的文字有點累,放大兩倍後效果比較好)。

Ubuntu / OS X下,先安裝 DOSBOX,把上面的 tt 下載下來,再用 ubuntu的 dosbox 啟動 tt.exe 即可。

-------------------------

不要用《金山打字通》:

金山打字通測試文章中,符號和數字偏弱,標點就是逗號和句號,比起TT的 All Key (每篇文章至少包含一定數量的電話號碼,門牌號碼,各種符號)

金山打字通測試是:每秒鐘敲下多少字母,不是 WPM(每分鐘敲下多少個單詞),比字母的話,我最快5秒鐘可以從 A-&>Z,應該是 312字母/分,沒啥意義呀。


typing.io

與 @韋易笑 老師提到的 TT 類似(給原句跟打),樣本是知名開源項目的源碼片段,比起普通文本也更接近編程練習。

雖然有的語言並不適合手打,而且只是為了儘快打完肯定也顧不上仔細閱讀,再者有的源碼 style 也並不理想,不過只是為了刷手速那是再合適不過了。

完成一段之後會有統計與錯誤標記:


我覺得吧,我用筆記本渣渣鍵盤的情況下這個手速反正是夠用了

以前特意跟同事暗暗比較,「改」代碼無人能出我右,當然,那完全不是因為我打字快。

打字測試 Simplified-chinese


手速太快沒用,腦子會跟不上的。

如果編程速度瓶頸在打字速度,要麼是寫代碼不經腦子,寫出來的代碼像貼膠帶一樣修修補補,要麼是抽象層次太低,大量的重複邏輯,要麼是編輯器沒配好,連補全都沒有,要麼是連打字都不會,就直接上手學編程了,要麼是。。。容我再想想

「在2000年末的時候,Jeff Dean 寫代碼的速度突然增長了40倍,原因是他把自己的鍵盤升級到了USB 2.0。」


看了 @韋一笑 說的TT,我想再補充一些。

同樣是命令行下的打字練習,我推薦使用 GNU Typist - GNU Project,不止是因爲它原生支持跨平臺,而且它的課程設計得十分完整。同時還提供 Dvorak 和 Colemak 佈局的專門練習,我的 Colemak 就是用它練習的。

另外還有一個能夠直接在瀏覽器上跑的練習:

Learn typing at the speed of thought! Typing lessons that work.

個人覺得這個比 Tipp10 要舒服,我的 QWERTY 一開始也是在這裡練習的。

其次就是佈局的選擇,如果你已經熟練了一種佈局,要去學新的則需要一段時間。程序員裡面用 Dvorak 的多一點,不過我覺得 Colemak 的設計更加簡單直接。這個就憑藉個人喜好了,不過如今大部分操作系統都默認支持 Dvorak,然而 Colemak 在配置上就相對麻煩一些。

還有就是鍵盤的選擇,能夠買得起機械的最好嘗試一下,差距是很明顯的。如果有條件入手一件人體工程學鍵盤就更好了,連續敲幾個小時都不會累。


手速跟得上思考速度就可以了,又不是打字員,練手速幹啥。


發現一個小軟體

[maxtype](http://www.askmesoft.com/files/MaxType_lite.zip)

這貨可以將任意代碼導入進來敲擊練習. 比如講linux0.11的源碼修改成txt格式導入進來 對著打.

ALL the touch-typing tutors! Freeware, shareware, online, direct links to download 幾十個打字練習軟體 不少可以直接導入 .cpp之類的格式的文件直接練習.

把上面的軟體簡單的接觸了下 感覺最給力的是: RapidTyping 導入各種代碼非常方便 而且不出BUG 關鍵是你看 這貨體積最大 和WIN10也適配的很好而且免費.

``````````````````2017-10-23 14:10:35 update``````````

用RaipdTyping練習了半個月的樣子 已經有這個成績了 基本從30- 提升到40+ 英文文章敲打問題不大.

然後倒入公司的代碼敲打 還是這樣的貨色

說下寫代碼的感受 還是有點提升的流暢了 一點,特別是各種括弧 下劃線 大小寫切換 提升最大的是小手指 右手區域. 開始體驗到敲代碼的時候時不時會有腦子裡還沒列舉出字母 ,手上已經給你敲打完的情況.


沒有什麼特別的技巧,多寫即可。

我們隊在暑期訓練的時候,會每天裸拍一些常見的基本演算法和數據結構。


軟體上,可以多玩玩 http://zty.pe

硬體上,買個自己喜歡的機械鍵盤吧。

當然,你還需要一個響應速度跟得上你的編輯器 / IDE。


好像哪裡不對啊....為啥你們都在探討打字速度呢?

雖然我從小就可以一分鐘打字60以上,但總覺得編程的時候全靠ctrl+c/v......(逃


編程的手速其實是腦速,當你大腦跟得上的時候,手速自然就跟上了。捷徑嘛沒有,就是多寫多思考咯,當你寫了十萬行代碼以後再回頭看今天的提問,你會覺得這個問題多麼的尷尬。


學長乃很在意這個嘛,吾輩覺得看不懂別人的代碼才是最大的效率瓶頸哎


是時候給出這個神奇的網站了:Learn shortcuts and commands

下面是回答:

題主的問題是如何提高編程的手速,首先要知道什麼影響了手速,在我看來,影響編程手速的因素有:對開發環境(IDE)或編輯器的選擇,以及對它的熟練程度,主要是快捷鍵的使用。

  1. 首先選擇一個適合自己的編輯器,推薦兩個:

  • VIM,這個不多說,最常用的文本編輯器,功能強大,高度可定製;

  • Sublime Text,現在已經是Sublime Text 3了,也是我最喜歡了編輯器,一開始學習使用vim,後來知道了這個,果斷放棄vim了。喜歡他的原因是其具有漂亮的用戶界面、海量的開源插件,可以按照你自己的需求個性化配置編輯環境。

2. 有了編輯器,當然就是練習了,這裡安利的就是上面提到的網站:Learn shortcuts and commands。專門用來練習各種工具、開發環境、編輯器的快捷鍵。

熟練的使用快捷鍵能大幅提高編程速度,因為他能幫助我們擺脫對滑鼠的依賴,看看那些牛逼的程序猿,誰還鍵盤滑鼠不停的切換,太low了,人家早都擺脫滑鼠了好嗎!

在這個網站上,可以找到你自己的編輯器或開發環境:

然後他會幫助你制定一個計劃,每天練習一些快捷鍵的使用。

練習時的界面是這樣的:

一開始會提示你快捷鍵的功能,然後就是自己的練習、記憶,對於練習過程中使用錯誤的,會在接下來的學習計劃中為你安排更多次的學習以加強記憶。跟著練習,到後面想忘記都難。

一旦學會了熟練的使用快捷鍵,你會發現你的變成速度會有非常大的提高。先回答這麼多吧,如果有人看,會繼續介紹一些關於VIM,Sublime Text等編輯器的配置方案。


只能告訴你如何打鍵盤更快的方法——程序員需要敲太多特殊字元,這些特殊字元位置一般又不好敲。那麼只有請出練習指法的神器,網上有桌面程序下載,在線網址:

TypingMaster


小學時打字全校第一,金山打字速度測試五筆超過240字每分。

雖然之後好多年沒練,現在的問題是:

腦子跟不上手速。腦子想的太慢。手速太快。

然而手速現在並沒有什麼用,代碼智能提示自動補全什麼的就差幫你寫了,腦子不夠用想不出來也白搭。

對了,我特殊符號總打錯相當影響速度。小時候手小力氣小,用小指總是按不好。。。


你用個好點的IDE,智能提示自動補全模板補全都打開,各種快捷鍵記熟練手速自然就高了。

題主要是覺得編程能力和單位時間內輸出的字元數量正相關的話就去學Java 吧,包您滿意。


編程的瓶頸不在手速而在腦速。

一般來講你拿出思路肯定沒有把它打出來快。


除非是競賽,否則手速對編程沒有任何意義。

不正確地過渡使用手指,會加速勞損。

有興趣的去搜一下RSI。


無他,手熟爾。


多練練腦速。手速只是看上去的。


推薦閱讀:

開發一款手游的工作量是怎樣的?
親戚找你做網站你是明碼標價還是送人情免費做?
程序員創立了一家公司當上了CEO之後,還會去寫代碼編程嗎?
大家有什麼讀代碼的習慣?
自學編程到何種水平可以轉行就業?

TAG:編程 | 打字 | ACM競賽 |