Re: [請益] 這樣學寫程式的作法對嗎?

看板Soft_Job作者 (重出江湖)時間13年前 (2011/10/03 09:21), 編輯推噓8(808)
留言16則, 11人參與, 最新討論串2/3 (看更多)
※ 引述《RAVANA (雷瓦納)》之銘言: : 很久前請教大家自學程式方法 : 照各位作法 動手下去寫後 有了很多進步 : 假設今天遇到一個題目: : 資料庫dataset撈出電腦IP清單,到各電腦抓畫面,並把畫面及狀態回傳 : 我腦中就拆成3段 : 1.Dataset抓資料 寫資料 搜尋資料 : 我的作法: : 背不太起來 沒法從無到有默寫出來 但從範例貼過來我會改 且能完全掌控 : 請問寫程式的人 正常工程師是要能整個默寫出來嗎? : 還是你們也是抄抄貼貼改改? 貼多以後就熟了? : 2.抓圖模組 : 我的作法: : google 找到一段抓圖語法 貼過來用 改一改 : 還是背不起來 以後要用再調出來 複製貼上改一改 也不打算背他 : 請問正常的工程師寫程式也是這樣嗎? : 不用背 要用再調出來 複製貼上 修修改改這樣嗎? : 3.通訊傳送模組 : 我的作法: : 從書上的範例抄過來 修修改改 能動就好了 知其然不知其所以然 : 請問正常的工程師 若這段較弱非強項的狀態下 也是這樣做嗎? : 先貼範例 能動結案就好了 知其然不知其所以然 : 以後再慢慢研究 或甚至也不想懂 程式能動就好了 : 以上是我目前作法 請問我這樣正常嗎? 我覺得非常不正常 提供一下我的想法給您參考看看 我認為寫程式就跟寫文章是一樣的 差別只在於文章是要寫給人看的 程式碼是要寫給電腦看的 程式本身就是為了要解決某些問題而存在 你寫文章(程式碼)首先必須要先知道你寫這篇文章的目的 知道目的之後在想想我這篇文章的架構 我這篇文章中會遇到哪些問題 我又該如何解決這些問題 這邊應該把問題個別拆解成小問題 當你把這些小問題一一解決並串連起來就是一篇完整的文章了 而且即便文章目的地相同 但每個人寫出來的內容必定不同 這跟個人經歷、功力、思考模式種種有關 你在拆解分化問題模組的能力也是跟上面有關 就像一篇文章有些人寫了一大堆字表達某件事 但就是有人可以兩三行就簡單明瞭的敘述完畢 當你的文章架構規劃好之後 就可以開始想每個段落實際的內容要怎麼寫 當然這部份還是有可能可以繼續分解下去 但要分到多細這個要看當時需求以及問題複雜度 你把問題分解到最小單位時 你的目標會比較明確 而且每個小問題之間要怎麼配合也可以用模組的方式畫出來 這相當於起承轉合吧 之後在寫某些小段落時 你就可以思考我這段落是要闡述我怎麼解決哪些問題 有些敘述我是不是可以用成語(方法、函數)來取代 來避免我寫出又臭又長的文章 用這樣的方式不斷地解決小問題 所有小問題解決了大問題自然也解決了 寫程式沒有在用背的 就像你背了某篇文章 可是你這篇文章可能一字不漏的copy到另一個主題嗎? 就像這個程式碼是要解決A問題 他絕對不可能跟解決B問題的程式碼一模一樣 你在寫文章的時候應該要先瞭解每個字、詞的意義 譬如說有這些字詞︰題目、高興、簡單、困難、寫、看、我、你、他、程式 你至少要先知道每個字詞的意思與用途 才能知道要使用他的時機以及要怎麼把他串連成一篇文章 譬如說 你要寫敘述一個題目的難易句子 那麼可以想到的是我可能會用到題目、困難、簡單三個詞 簡單造出「題目簡單」或「題目困難」 之後當你遇到要你敘述程式難易的句子 經過上面的經驗你就可以知道困難或簡單的前面可以放名詞 而且為了加強形容詞的意義中間還可以加上一些字 所以我只要修改掉「題目」換成「程式」 名詞與形容詞中間再加上個「很」來強調 就變成「程式很簡單」「程式很困難」 在繼續修改增加的話就可以延伸出 「我覺得寫程式很簡單」 「你覺得寫程式很簡單,你天生下來就是要來寫程式」 「他覺得寫程式簡單,他生下來就是要來寫程式,為什麼他會寫程式呢?」…(下略三千字) 用這樣的思維慢慢的就能寫出屬於自己的文章 就像小時候老師要你寫造句跟背解釋是一樣意思 每個字詞的存在都有他的意義 程式碼也一樣 就像你英文學到How are you? 你必須要能夠知道什麼情況下要用到這一句 為什麼要用這一句? 別人或你該怎麼應對? 都知道了才能算學會 當然我的等級頂多只能寫出白話文 相信板上一堆可以寫出新詩、散文甚至絕句、律詩、宋詞的高手一堆 就有請他們出來教我們怎麼寫了XD 背程式碼我認為只是權宜之計 你如果只是暫時要解決某些問題也許用這方法無可厚非 (說真的背程式碼我還真是第一次聽過 我頂多聽過copy程式碼) 但以長遠來講你還是得先從每個字每個詞開始認識 再思考可以延伸出怎樣的文章架構 不然就像你練了速成版的九陰真經 威力雖強但也只是權宜之計 目的達成後還是得要回到九陰真經的基礎穩紮穩打的練內功 不然到時候像周芷若練的速成九陰真經(Java、C、C#…)練成邪裡邪氣九陰白骨爪 看起來很強 結果被黃衫女子光明正大的九陰神爪瞬間秒殺 練功有很多方法 除了看真經(程式書)上的解說 親自自己演練一遍之外 也可以看看別人是怎麼寫的 主要是看看別人遇到同樣的問題是怎麼思考的 你的方法比他好嗎?差嗎?好在哪裡?差在哪裡? 不過這部份程式碼取得可能沒那麼容易就是 武功分成內功跟外功兩種 我也覺得程式上的鍛鍊也可以分成內功跟外功兩種 內功就是資料結構跟演算法 外功是指程式語言本身與應用還有架構規劃 通常內功很強的人學習外功都是輕而易舉(內功強學什麼都超快 個人感覺) 因為在鑽研資料結構演算法的過程中本身就會遇到很多程式上的問題 而且程式學久了其實觀念就是那些 萬變不離其宗 這些夠強的人基本上寫程式對他們來說已經不是問題 寫程式對他們來說只是解決問題的必須過程 他們只需要想想要怎麼有效率的解決這問題就行 想通了其他就是手到擒來 有些人則是屬於外功很強 也許他的方法流程並不夠好也不夠有效率 但他總是可以用各式各樣的工具解決不同問題 以結果論的話這種人也沒什麼不好 而且這種外功強的人搞不好佔業界的主流 當你外功練到某個境界時就能夠依據經驗把問題規劃成不同架構交由適合的程式來解決 就像獨孤九劍練到最後連內力高的人照樣可以幹掉 當然這兩種人無高低好壞差別 不然光有架構沒效率程式跑起來一定費時費力 光有效率沒有架構程式搞不好bug一堆無從找起 維護上也很困難 當然一個九陽真經(內功)跟獨孤九劍(外功)兼具的人 我相信一定是殺遍天下無敵手 我建議你應該在空閒之餘專注學習一個程式語言 因為以目前你的狀況 我覺得你還沒跨過寫程式這道門檻 程式本身對你來說就是一個問題了更別說要寫程式解決問題 就像你連認字都有問題 更別說要造句 你應該先學著精通一門絕招(程式語言) 就像江湖上有降龍十八掌(C)、六脈神劍(C#)、天山六陽掌(Java)、黯然銷魂掌(C++) 你至少先學會一樣 因為很多基礎的東西都是通用的 你某個語言精通了要切換到其他語言會容易許多 至少基本功的部份你都會了 之後有興趣的話看你要鑽研內功還是繼續修煉到獨孤九劍的等級也行 以上想法未必完全正確 歡迎板上高手指教:D -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.131.148

10/03 12:11, , 1F
推~ 但事實上很多人都是屬於 九陰白骨爪 型的
10/03 12:11, 1F

10/03 12:14, , 2F
修習內功會很強,可卻很難練,對現今講求"速度"的年代中
10/03 12:14, 2F

10/03 12:20, , 3F
會想練"內功"的人是少之又少了...
10/03 12:20, 3F

10/03 12:27, , 4F
為什麼C++是銷魂XD
10/03 12:27, 4F

10/03 13:06, , 5F
好想知道其他武功對應的語言呦。
10/03 13:06, 5F

10/03 13:09, , 6F
不過光是降龍十八掌就有好多的風格 >"<
10/03 13:09, 6F

10/03 15:23, , 7F
因為風格多.. 所以才"十八"掌?
10/03 15:23, 7F

10/03 18:18, , 8F
看下來我是外功類型的 比較速成 形容的不錯阿
10/03 18:18, 8F

10/03 19:51, , 9F
VB.RUBY.PHP.ASP...不知道對應哪種武功?
10/03 19:51, 9F
各位~武功只是比喻而已 沒有特別對應的武功阿XD

10/03 19:55, , 10F
據說先修煉九陽神功再練其他武功會特別快
10/03 19:55, 10F

10/03 20:15, , 11F
總歸一句...無招勝有招...
10/03 20:15, 11F
我覺得到達這種境界人的 可以算已經是內外功均到達極致的境界 只要拿隻木劍(筆)劃一劃 就能夠在效率與架構之間取得平衡 並且可以利用每種語言的特性讓自己的程式發揮到淋漓盡致 問題也跟著灰飛煙滅 無招是已經把每種武功內化到大腦中 出手根本不用想要選哪招 因為你知道你的這招一定是解決當前問題最好的一招 甚至都已經預想好幾招之內就可以解決對手(問題) 就像你吃飯喝水一樣 根本就已經不需要想要怎麼動作了 一切都是自然反射動作 無入而不自得~

10/03 20:31, , 12F
真是太黯然 太銷魂了..
10/03 20:31, 12F
※ 編輯: aoksc 來自: 124.8.144.170 (10/03 20:56)

10/03 20:55, , 13F
我是認為語法查就有,只是大架構真的是功力
10/03 20:55, 13F

10/05 10:53, , 14F
那...我可以學蛤蟆功嗎? XD
10/05 10:53, 14F

10/14 02:04, , 15F
完全大推這篇文章 寫程式就像是寫作 是自己產出的東西
10/14 02:04, 15F

10/14 02:06, , 16F
剪剪貼貼都用別人的class卻不懂意涵 絕非正道
10/14 02:06, 16F
文章代碼(AID): #1EYGuplM (Soft_Job)
文章代碼(AID): #1EYGuplM (Soft_Job)