寫程式其實跟學外語沒啥兩樣
只是一個是跟人溝通一個是跟電腦溝通
我假設你是真的基本的程式語法都沒問題
看別人的code也真的是看得懂
那麼你欠缺的應該是如何在什麼時候該用什麼語法的能力
就像是多數人看原文文件爬英文文章都看得懂阿
但要live talk的話一堆人還不是字擠在嘴巴噴不出來
因為多數人沒有受過全英文環境的訓練
自然你沒辦法做到內化並無意識的使用
寫程式也是一樣
因為每個問題的解法都是不一樣的
就算是一樣的問題十個人來寫可能也會有十種解法
這也顯示寫程式本來就是一種創作行為並沒有固定答案
頂多只是差在效能好不好code好不好讀的差別
跟你講話一樣你會用的字彙跟你過往的經驗有關
我猜你八成沒受過寫題目的訓練
因為我覺得就我看過的人裡面會有這障礙的人基本上都沒經過這段歷練
寫題目的過程中其實你就已經在訓練自己解讀問題
並且把你腦袋中的演算法翻譯成流程
再依照流程把相對應的敘述翻譯成程式碼
所以如果你很熟練這過程
當別人敘述完問題
你也真的理解問題後
可能當下你就已經想完你的程式碼要怎麼寫了
就算沒細到程式碼詳細內容
但大概也知道程式碼的整個架構為何
那些ACM比賽或是其他資訊競賽的選手一定都受過這段訓練
所以當他們看到題目就可以在很短的時間內判斷這問題應該是怎麼解(假設沒陷阱的話)
頂多就是大賽的題目可能會有組合解法而非只有單一解法
所以要解決這問題最好的方法還是多練習解題目
思考的過程中自然能訓練你把演算法流程翻譯成程式碼的步驟
當你題目做的越多自然把流程翻譯成程式碼的速度也會越快
但也不表示你一定要做到很難的
你大概一般常見easy等級的題目全部都能靠自己解的出來其實大概就有這能力了
其實就是基礎語法組合應用能力而已
再上去就是追求寫code樂趣跟速度極限所追求的領域了
※ 引述《guccinan (nan)》之銘言:
: 各位前輩們
: 小弟接觸程式設計有段時間了
: 但我有一個問題
: 就是會讀程式碼
: 也看得懂最終執行結果
: 但是要我憑空寫出來卻寫不出一個所以然
: 請問該如何搶救
: 謝謝各位先進