看板Soft_Job
我覺得自學最困難的地方,在於搞清楚自己想做的東西在做什麼,以及需要什麼
尤其是你之前其實跟「寫程式」這件事情並不熟...
假設入門書你看完了,語法你好像應該都看的懂了
你已經進入「某個單字都知道,但合起來不知道在幹嘛」的地步
然後你想寫個程式
[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