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

看板Soft_Job (軟體人)作者 (西亞加拉)時間15年前 (2011/02/15 00:54), 編輯推噓23(2303)
留言26則, 25人參與, 最新討論串7/7 (看更多)
我覺得自學最困難的地方,在於搞清楚自己想做的東西在做什麼,以及需要什麼 尤其是你之前其實跟「寫程式」這件事情並不熟... 假設入門書你看完了,語法你好像應該都看的懂了 你已經進入「某個單字都知道,但合起來不知道在幹嘛」的地步 然後你想寫個程式 [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」這樣的關鍵字丟搜尋,然後有什麼看什麼 不過英文也是要好就是了... 當然,有個好老師會事半功倍,甚至老師會告訴你這樣做不好,應該先打好基本知識 不過如果你要靠自己的話,胡搞硬幹還是必須的... 是說我的好老師都不是花錢找來的...所以也沒辦法告訴你補習班值不值得 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.73.175.49

02/15 00:58, , 1F
推薦這篇文章
02/15 00:58, 1F

02/15 01:00, , 2F
推!
02/15 01:00, 2F

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

02/15 01:22, , 4F
推這篇
02/15 01:22, 4F

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

02/15 03:14, , 6F
推!
02/15 03:14, 6F

02/15 03:53, , 7F
02/15 03:53, 7F

02/15 08:22, , 8F
推!
02/15 08:22, 8F

02/15 08:46, , 9F
推!!
02/15 08:46, 9F

02/15 08:48, , 10F
推~
02/15 08:48, 10F

02/15 09:39, , 11F
推 有divide and conquer的感覺
02/15 09:39, 11F

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

02/15 10:03, , 13F
然後, 可以偷偷講你的好老師是哪幾位嗎 XDD
02/15 10:03, 13F
學校老師、朋友、同事、Google先生…XD

02/15 10:32, , 14F
推!!!!!
02/15 10:32, 14F
補充一些昨天太晚就沒寫的 其實大部分的入門書,如果真的看通了就已經能做不少事情。 最少,要會寫程式印出排成菱形的星星 * *** ***** *** * 當然寫程式印這種圖案在現實生活中幾乎是一點用都沒有。但是能夠自力解決 這個問題,表示你已經有這個程度的能力。把星星排成這個形狀的用處,就跟 高中生要學三角函數一樣… …重點不在問題本身,而是學會用這種方式思考,用這種方式解決問題。 寫程式是個瑣碎的工作。我很喜歡一個比喻: 敘述程式的功能就像是說出「走路」這兩個字 撰寫程式則像是描寫雙腳的每一條肌肉怎麼施力 拆解的過程就是在確認某一條肌肉應該怎麼運動 也有一點 divide and conquer 的感覺,因為每個問題都單純化了 照原文,原PO的問題並不是語法看不懂,而是不知道怎麼用這種方式解決問題。 但一切的精進都是在這之後才有可能 不過如果能找到人半年一年的長時間來帶的話,我倒不會建議這麼蠻幹,反而會推薦 從最基礎的東西開始,(簡單的)計算機結構啊、基本資料型態的結構啊,甚至是某 些 OS 課本裡的東西 這些東西對很多寫程式的人來說可能一輩子都不會直接用到,但是卻能幫助人更瞭解 自己的程式的每一行到底在幹甚麼。 我很偏激的認為不明白指標的人,沒辦法寫出「好」的 Java 程式,但理解指標其實 就需要不少背景知識了。 ※ 編輯: Hiigara 來自: 211.75.193.250 (02/15 11:33)

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

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

02/15 13:21, , 17F
好文推
02/15 13:21, 17F

02/15 14:27, , 18F
好文好文!!
02/15 14:27, 18F

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

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

02/15 22:05, , 21F
好文好文~~ 推推推!
02/15 22:05, 21F

02/15 23:01, , 22F
好文推
02/15 23:01, 22F

02/16 15:46, , 23F
好文 推一下
02/16 15:46, 23F

02/16 20:10, , 24F
pointer 還是c好用
02/16 20:10, 24F

02/16 20:42, , 25F
02/16 20:42, 25F

02/22 00:15, , 26F
好文哪!!!!!謝謝
02/22 00:15, 26F
文章代碼(AID): #1DMLv9wr (Soft_Job)
文章代碼(AID): #1DMLv9wr (Soft_Job)