討論區快速選單
知識庫快速選單
最新Microsoft免費研討會行事曆 下載Alexa Toolbar讓你上網更有趣 程式設計俱樂部Facebook粉絲團
[ 回上頁 ] [ 討論區發言規則 ]
該如何學好〝寫程式〞?
更改我的閱讀文章字型大小
作者 : jasper(Jasper)討論區板主 程式設計甘苦談頂尖高手上班族的哈拉園地優秀好手貼文超過1000則人氣指數超過70000點
[ 貼文 1371 | 人氣 96053 | 評價 6880 | 評價/貼文 5.02 | 送出評價 40 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/7/7 上午 11:10:31
該如何學好〝寫程式〞?

這是安德魯的部落格上的一個系列的文章,這個系列總共有五篇,第一篇的原文在此http://columns.chicken-house.net/post/GoodProgrammer1.aspx。

該如何學好〝寫程式〞?文中提了三點:

1.最基本的: 計算機概論 & 資料結構
這些有助於你用正確的邏輯寫程式。要成為一個合格的 programmer 一定要有這樣的能力。

2.進階一點的系統層面,作業系統 & 系統程式
這些有助於你瞭解系統層面如何運作,如果你開發的系統需要些基礎建設,像是元件等等,這些知識很有用。成為 software engineer 就應該要有這些基礎。

3.再來就專精一點了,我推薦 OOP 理論 / Design Patterns、或是軟體工程的方法論 ( XP, TDD ... 等 )。
這個層次的知識能幫助你設計正確的架構,或是用正確的方式開發軟體,是成為 ARCHITECT 的必要技能。

文中談到了資料結構,然後在第二篇、第三篇分別講解了如何運用正確的資料結構及演算法。在第三篇提到PASCAL 之父 (Niklaus Wirth) 講的這句名言: "程式 = 資料結構+演算法"。

我自己在修資料結構這門課時,那是大二的必修課程,剛好經過了大一的計概的 Fortran 及 Pascal 的磨練,有了一點點的程式撰寫經驗,所以會對資料結構這門課程更覺得有意思、有深度。引用文中的一段話:

想到資料結構,不外忽一堆排序 (SORT) 的演算法,或是各種 TREE / LIST 等怎麼 "放" 資料,及怎麼 "找" 資料的問題,如 LINKED LIST,HASH TABLE,BINARY TREE,HEAP,STACK 等等。再來就是什麼問題可以用什麼資料結構來處理?像是走迷宮要靠 STACK,各種資料結構的特性為何?它們的時間複雜度 (Time Complexity) 為何?什麼時後該用那一種?

我自己在設計一個英文字典查詢功能上栽過一次,那時用 Binary Tree 來記載每個單字,結果耗掉的記憶體空間太多,導致程式根本無法執行,那是一個 640 KB 上限的環境。

執行的環境有時候會對程式設計的方法有所限制,我另一次的經驗是在一台手提電腦上,一個等待的迴圈增加了耗電量,那又是一個沒有 NoteBook 玩意的時代。遊戲寫慣了,偵測不到鍵盤有動作,當然會自動做一些動作,哪裡會知道硬體設計會期望沒有輸入動作就該休息,以便省電。呵!當然那個〝手提電腦〞最後一定是不了了之。

很多人都不知道資料結構這門課真正的用途何在?只覺得重要。現在程式語言已內建 Sort, LinkList, Tree 等功能,也沒必要自行開發。但如果您不懂,未必能挑對內建的物件,就像這系列第二篇提到的用錯了 List。

資料結構、演算法、資料庫表格的設計等等,多一點的思考會讓您的程式寫起來更簡潔、更有脈絡,當然啦,門外漢會很難理解其中的奧妙、玄機。

程式入門、上手是很容易的事,畫面上拉拉控件、安排事件處理,易如反掌。然而該如何進階呢?不外基礎紮根,多多加強這方面的認知才是根本。
作者 : fcwang(fortran) 程式設計甘苦談優秀好手貼文超過200則
[ 貼文 218 | 人氣 2831 | 評價 2390 | 評價/貼文 10.96 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人jasper註記此篇回應為最佳解答 2010/7/17 下午 10:54:05
如果要在這幾項基本工找出最重要的根基, 我會毫無遲疑地選擇資料結構, 因為它是讓我理解作業系統,資料庫, ...等許多電腦軟體必修課程的基礎.

個人修習資料結構可以說是自修完成的, 它讓我非常著迷, 也有相當的心得.
個人認為如果對資料結構未能修成正果, 你可能無法理解作業系統的運作. 作業系統中記憶體的管理(包含Garbage Collecvtion), Process Management, ... 等都是Link List的運用
程式設計師常呼叫副程式或Procedure, 有多少人真正理解它是 Stack 的運用. 如果你真正理解它是 Stack 的運用, 你就不會對Call by value或 Call by Reference有迷惑.
資料庫更毫無疑問地是以資料結構為主的系統.

資料結構是非常難的一門課程, 因為有許多數學觀念, 學生經常會分成 知之為知之,不知為不知的兩極化的群組. 如果資料結構能學得好, 學 Design Pattern就不會有太大問題,因為也是有許多抽象的概念
如果有興趣從事軟體設計的工作, 學好資料結構是會有相當的助益. 學習是一回事, 但是如何應用則是另ㄧ項挑戰. 這是我個人對年輕學生的建議.
作者 : seabook_liu(西布克)
[ 貼文 3 | 人氣 0 | 評價 50 | 評價/貼文 16.67 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2011/4/20 下午 03:58:17
個人經驗是...Data Structure和Compiler還有Architecture真的是基本功。
即便是工作十年,這些東西還是很重要。畢竟根基沒有打好,學再多花樣都是枉然!

不過現在的老闆倒是很喜歡很多花樣的人...

要學好最快的途徑就是,大量的翻人家寫得典範code吧...ACM上面很多可以參考。
作者 : eos33(eos33)
[ 貼文 2 | 人氣 0 | 評價 60 | 評價/貼文 30 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/4/30 上午 10:36:52
謝謝前輩們的經驗,

我現在我情況就是把程式一攤開,發現很多東西都看不懂,

只好再重新學起,真的,一些基本的觀念都沒有,是很難再進階的。
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/6 下午 05:06:26
data structure is a fundamental course. every programmer must learn it if you want to design better programs. basically ,it is a experiences learning course. you may learn wisdom from predecessors.
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 上午 12:34:06
software systems have became more large and complex. many basic data structures , such as list , tree , queue , .... ,they have been developed completely and became a part of programming languages ,such as boost ( c++ stl library) , stl , ....
to learn data structures and algorithms is a way of understanding wisdom or experiences and they may help you solve more complex problems. but they still are basic courses.
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 上午 01:06:44
basically, data structure and algorithms are some references when you encounter some problems.
作者 : doraemon(人稱阿牛)
[ 貼文 74 | 人氣 5056 | 評價 190 | 評價/貼文 2.57 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 上午 09:07:16
既然是寫程式, 當然最基本的就是要坐在電腦上敲鍵盤
上面提的觀念都很好, 但如果什麼都用看的
最後就會變成業界常出現的"看程式員"

給自己定目標, 並實際寫出程式來, 久了之後自然能學好
當然還要常常思考如何把程式寫的更好 (更精簡、更穩固、更有效率)
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 07:57:43
two popular books that provide programming skills and some experiences of developing large software systems
 http://www.amazon.com/Writing-Solid-Microsoft-Programming-Series/dp/1556155514
http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 08:31:26
http://www.amazon.com/Coders-Work-Reflections-Craft-Programming/dp/1430219483
http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073/ref=pd_sim_b_6
http://www.amazon.com/The-Readable-Code-Dustin-Boswell/dp/0596802293/ref=pd_sim_b_36
http://www.amazon.com/Code-Simplicity-Science-Software-Development/dp/1449313892/ref=pd_sim_b_4
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 10:13:42
or subscribe to some journals , such as Dr. Dobb's Journal , C/C++ users journal ( it has been merged ) , ACCU overload , SDM , ACM , IEEE software , ....
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 10:44:14
http://www.amazon.com/Cracking-Coding-Interview-Programming-Questions/dp/098478280X/ref=sr_1_16?s=books&ie=UTF8&qid=1336400775&sr=1-16
http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880/ref=pd_sim_b_6
http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047/ref=pd_sim_b_11
http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/0735611319/ref=pd_sim_b_34
http://www.amazon.com/Modern-Design-Generic-Programming-Patterns/dp/0201704315/ref=la_B001ILKI7K_1_1?ie=UTF8&qid=1336401108&sr=1-1
http://www.amazon.com/C-Templates-The-Complete-Guide/dp/0201734842/ref=pd_sim_b_3
http://www.amazon.com/Advanced-Metaprogramming-Davide-Di-Gennaro/dp/1460966163/ref=pd_sim_b_4
http://www.amazon.com/The-Boost-Libraries-Boris-Sch%C3%A4ling/dp/0982219199/ref=pd_sim_b_5
http://www.amazon.com/Introduction-Boost-Libraries-Volume-Foundations/dp/9491028014/ref=pd_sim_b_4
http://www.amazon.com/Introduction-Boost-Libraries-Volume-II/dp/9491028022/ref=pd_sim_b_5
http://www.amazon.com/Expert-Programming-Peter-van-Linden/dp/0131774298/ref=sr_1_1?s=books&ie=UTF8&qid=1336401705&sr=1-1
http://www.amazon.com/C-Traps-Pitfalls-Andrew-Koenig/dp/0201179288/ref=pd_sim_b_10
http://www.amazon.com/Programming-Windows%C2%AE-Edition-Microsoft-Series/dp/157231995X/ref=pd_sim_b_62

作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 10:52:37
http://www.amazon.com/Large-Scale-Software-Design-John-Lakos/dp/0201633620/ref=sr_1_2?s=books&ie=UTF8&qid=1336402053&sr=1-2
http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X/ref=pd_rhf_ee_shvl4
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/7 下午 11:14:49
http://www.amazon.com/Concepts-Programming-Languages-9th-Edition/dp/0136073476/ref=pd_sim_b_11
http://www.amazon.com/Programming-Language-Pragmatics-Third-Edition/dp/0123745144/ref=pd_cp_b_1
http://www.amazon.com/Memory-Programming-Concept-Frantisek-Franek/dp/0521520436/ref=pd_sim_b_19
http://www.amazon.com/Interfaces-Implementations-Techniques-Creating-Reusable/dp/0201498413/ref=pd_sim_b_6
http://www.amazon.com/Programming-Interviews-Exposed-Secrets-Programmer/dp/047012167X/ref=pd_sim_b_12
http://www.amazon.com/The-Best-Software-Writing-Introduced/dp/1590595009/ref=sr_1_36?s=books&ie=UTF8&qid=1336403455&sr=1-36
http://www.amazon.com/Things-Every-Programmer-Should-Know/dp/0596809484/ref=pd_sim_b_22
http://www.amazon.com/Beautiful-Code-Leading-Programmers-Practice/dp/0596510047/ref=pd_sim_b_48
http://www.amazon.com/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052/ref=pd_sim_b_17
作者 : fcwang(fortran) 程式設計甘苦談優秀好手貼文超過200則
[ 貼文 218 | 人氣 2831 | 評價 2390 | 評價/貼文 10.96 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/14 下午 10:59:29

>既然是寫程式, 當然最基本的就是要坐在電腦上敲鍵盤
>上面提的觀念都很好, 但如果什麼都用看的
>最後就會變成業界常出現的'看程式員'
>
>給自己定目標, 並實際寫出程式來, 久了之後自然能學好
>當然還要常常思考如何把程式寫的更好 (更精簡、更穩固、更有效率)

人稱阿牛兄 :

您的意見是正確的, 實作經驗是最重要的學習過程.

個人是在 PC 尚未存在的年代(1980年之前)學習資料結構, 當然是歷經千辛萬苦來設計資料結構 Model的程式來印證自己理解的概念.
所謂"千辛萬苦" 並非您所提的 "敲鍵盤" 而是將程式寫在 Coding Form上, 交由打卡員製成卡片.

當時的 程式語言 Fortran 或 Cobol語言 (C 語言尚未出現) 可以使用的功能, 並不包括 "Pointer". 所以 只有使用 "組合語言" 才能體驗資料結構的各種用法.

各位年輕朋友, 現在的學習環境是值得妳們珍惜的, 學習的效率應該是我這種 LKK 年代的千百倍.
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/15 下午 11:01:12
to learn data structure and algorithms is a basic concept and tool. the goal of learning it is to provide some wisdom or experiences about how to write more effective programs. it is not about programming languages and operating platforms.
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/16 下午 02:54:29
http://www-cs-faculty.stanford.edu/~uno/taocp.html
some good programming books
作者 : fcwang(fortran) 程式設計甘苦談優秀好手貼文超過200則
[ 貼文 218 | 人氣 2831 | 評價 2390 | 評價/貼文 10.96 | 送出評價 6 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/16 下午 11:24:07

>http://www-cs-faculty.stanford.edu/~uno/taocp.html
>some good programming books

Donald Knuth 大師所著 "The Art of Computer Programming" Volume 1-3.(1970年代就只出書到 第 3 冊).是 "資料結構" 與 "演算法" 的用書. 的確是這學科的 精典之作.

Knuth 大師在書中以 自創的 MIX (Pseudo Assembly Lanaguage) 程式語言寫出程式範例, 來說明 "資料結構" 與 "演算法" 的各種觀念 其程式的實作方法(Implementation).

三十多年前(1970年代末期), 個人在工作之餘花了約一年時間看完 "The Art of Computer Programming Volume 1-3" 這三本書之後, 也看懂了. 個人自信已經有足夠的能力可以 自修完成其它軟體設計方面的理論(碩士班的水平).

到現在為止, 我依舊保存這三本書在我的書櫃中. 因為它是我由非本科系進入軟體領域的 Key (關鍵所在).
 
如果年輕朋友有心要把資料結構的觀念貫通. 我推薦 Knuth 大師的書是值得你研讀, 不過要有心理準備. 大師的書著重數學觀念, 要有一些數學的根基才能領悟.
作者 : ozzy123(ozzy) 資訊類作業求救優秀好手C++卓越專家貼文超過3000則人氣指數超過30000點
[ 貼文 3412 | 人氣 37262 | 評價 8280 | 評價/貼文 2.43 | 送出評價 48 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2012/5/17 下午 09:30:07
http://www.amazon.com/Programming-Pearls-2nd-Edition-Bentley/dp/0201657880/ref=sr_1_1?ie=UTF8&qid=1337261202&sr=8-1
http://www.amazon.com/More-Programming-Pearls-Confessions-Coder/dp/0201118890/ref=sr_1_5?ie=UTF8&qid=1337261202&sr=8-5
 板主 : Jammy , Jasper
 > 程式設計甘苦談 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 程式設計甘苦談 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
程式設計甘苦談
1 Jasper 3670 
2 長長 1520 
3 青衫 1300 
4 fortran 1220 
5 weber 1080 
6 HKLN.net 950 
7 冷眼 670 
8 臭蟲 610 
9 Peter.huang 600 
10 Clier 570 
程式設計甘苦談
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.21875