Re: [請益] 自學軟體設計的方法錯誤

看板 Soft_Job
作者 Hiigara (西亞加拉)
時間 2011-02-15 00:54:30
留言 26則留言 (23推 0噓 3→)

我覺得自學最困難的地方,在於搞清楚自己想做的東西在做什麼,以及需要什麼 尤其是你之前其實跟「寫程式」這件事情並不熟... 假設入門書你看完了,語法你好像應該都看的懂了 你已經進入「某個單字都知道,但合起來不知道在幹嘛」的地步 然後你想寫個程式 [quote] 至少要能隨心所欲寫出一些工作上的小工具 1.例如讀出一個IP清單檔 對一百多台XP台電腦拷貝檔案 2.每60秒監控檔案是否有異動,若異動則發Email通知 [/quote] 然後你慌了,不知道該怎麼做。 那,這樣的程式到底在做什麼呢? 我的話,會先做這樣的拆解 1.讀取ip清單檔(文字檔?)的資料 2.讀懂資料,把資料變成ip列表 for(很多台電腦){ 3.連線到那台電腦上copy某個檔案 4.如果檔案異動則寄信 } 這樣的話,你就可以列出你需要哪些能力 1.會讀文字檔裏面的好多行文字 2.會把好多行文字變成ip...恩,要「變」嗎? 3.會連線到某台指定的IP的電腦copy 4.會比對檔案有沒有異動過 5.會寄信 然後每一項如果可以的話,繼續做細分。例如說: 3.1 連線到某台電腦 3.2 copy遠端的檔案 有時候甚至可能要重新釐清原本所想的是什麼意思,例如說 3.A 連線到另一台電腦複製檔案的「連線」是什麼?要怎麼做? 至少對我來說,知道如何把想要做的事情一路拆解成看起來好像能做到的小部份 才是「會寫程式」跟「不會寫程式」的差別 所以先練習拆解問題,什麼都可以 好比說 把計算機程式拆解成 輸入數值->選擇加減乘除->計算->印出結果 把出門買便當拆解成 出門->移動->點餐->付款->取菜->移動->回家門 然後儘量確保每個步驟都是你確切了解的東西 學會這一步之後,把每個小步驟的關鍵字丟入 Google ,或是把某個拆解完成後 你還是想不通的步驟丟到 Java 版去問,通常會有所收穫 甚至又會冒出一堆不認識的關鍵字出來,然後這些關鍵字丟 Google 又冒出更多 關鍵字.... 但有看不完的東西準備要看,總比完全不知道該看什麼好 然後,硬幹,寫吧。 一開始寫一定很醜很蠢,甚至貼到PTT上會因為太好笑而被轉joke版 不過大多數人都是這樣過來的,差別只是一開始 code 是被誰笑而已 開題目、拆解、寫Code & google,就這樣一直循環 寫一陣子之後,你也許會驚訝的發現「原來我的程式會動」 甚至一直寫,兩個月後回來看自己的舊code你會想拆掉重寫。那就表示你走上正途了 到這裡之後,回去看書吧。挑一切你以前看不懂的專有名詞看 甚至是把「java programing」這樣的關鍵字丟搜尋,然後有什麼看什麼 不過英文也是要好就是了... 當然,有個好老師會事半功倍,甚至老師會告訴你這樣做不好,應該先打好基本知識 不過如果你要靠自己的話,胡搞硬幹還是必須的... 是說我的好老師都不是花錢找來的...所以也沒辦法告訴你補習班值不值得 -- ◆ From: 211.73.175.49 學校老師、朋友、同事、Google先生…XD 補充一些昨天太晚就沒寫的 其實大部分的入門書,如果真的看通了就已經能做不少事情。 最少,要會寫程式印出排成菱形的星星 * *** ***** *** * 當然寫程式印這種圖案在現實生活中幾乎是一點用都沒有。但是能夠自力解決 這個問題,表示你已經有這個程度的能力。把星星排成這個形狀的用處,就跟 高中生要學三角函數一樣… …重點不在問題本身,而是學會用這種方式思考,用這種方式解決問題。 寫程式是個瑣碎的工作。我很喜歡一個比喻: 敘述程式的功能就像是說出「走路」這兩個字 撰寫程式則像是描寫雙腳的每一條肌肉怎麼施力 拆解的過程就是在確認某一條肌肉應該怎麼運動 也有一點 divide and conquer 的感覺,因為每個問題都單純化了 照原文,原PO的問題並不是語法看不懂,而是不知道怎麼用這種方式解決問題。 但一切的精進都是在這之後才有可能 不過如果能找到人半年一年的長時間來帶的話,我倒不會建議這麼蠻幹,反而會推薦 從最基礎的東西開始,(簡單的)計算機結構啊、基本資料型態的結構啊,甚至是某 些 OS 課本裡的東西 這些東西對很多寫程式的人來說可能一輩子都不會直接用到,但是卻能幫助人更瞭解 自己的程式的每一行到底在幹甚麼。 我很偏激的認為不明白指標的人,沒辦法寫出「好」的 Java 程式,但理解指標其實 就需要不少背景知識了。
※ 批踢踢實業坊(ptt.cc)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1297702473.A.EB5.html

xnzhang:推薦這篇文章 02/15 00:58

dsmwang:推! 02/15 01:00

r7689103:推 他這目標讓他越拆越多不懂問題 非短時間能得到成就感 02/15 01:08

Mewra:推這篇 02/15 01:22

juriolegend:推! 這好像結構化分析設計xd 02/15 03:11

awashharp:推! 02/15 03:14

diamondivy:推 02/15 03:53

qsss:推! 02/15 08:22

art1:推!! 02/15 08:46

Joxz:推~ 02/15 08:48

piadoro:推 有divide and conquer的感覺 02/15 09:39

ericinttu:把要做的事情拆成許多小單元是好方法, 推一個! 02/15 10:03

ericinttu:然後, 可以偷偷講你的好老師是哪幾位嗎 XDD 02/15 10:03

forthewill:推!!!!! 02/15 10:32

Kz:感謝...受益良多>^^< 02/15 12:24

prag222:來寫按鍵精靈比較簡單拉 02/15 12:51

elase2000:好文推 02/15 13:21

kkssffaa:好文好文!! 02/15 14:27

qowerasman:不過還蠻怕網路上的資訊錯誤~結果一錯再錯... 02/15 14:36

CavalryTseng:錯了才知道對~這樣反而更不會忘,加油! 02/15 16:22

laiis:好文好文~~ 推推推! 02/15 22:05

Aquatics:好文推 02/15 23:01

resamond:好文 推一下 02/16 15:46

poiu1234:pointer 還是c好用 02/16 20:10

conanist:推 02/16 20:42

balagowla:好文哪!!!!!謝謝 02/22 00:15

您可能感興趣