作者foxzgerald (O⊥M)
看板PHP
標題Re: [請益] 想寫些客戶資料管理的軟體,應從何著手, …
時間Fri Oct 24 01:14:10 2008
※ 引述《gary8912 (gary)》之銘言:
: 這些基本資料,有新增、刪除、查詢、印列等功能。
: 以基本資料為主,各種報表表格列印、及螢幕顯示為輔。
: 初以單機版、中期網路版、長期web版。
: 要達到以上的功能和目的,不管是系統程式、語言程式也好、工具軟體也好,
: 其學習的優先順序和條件為何?
: 在書店裡,茫茫大海的叢書,倒底要先看哪一本,可否介紹幾本,感謝各位先進。
學習任何領域的知識,學習者的動機、目的、以及背景知識都
會影響學習的路徑。雖然您沒有程式設計的相關經驗,但是有
非常明確的動機,這已經具備了學好一項技能的基礎能量。
不知您學習的目的為何,倘若是想寫出一套很棒的程式,那麼
可能會成天醉心在解決學習途徑上的各種疑難雜症;如果是想
快速的解決問題,那麼學習的方法和策略與前者可能會有很大
的差異。
如果想寫出很棒的程式,那麼就把重心放在追求「很棒」、「
卓越」這些目標上吧。為了追求這些目標,需要花費精神在瞭
解、釐清什麼是「好的設計」以及如何「設計好東西」。不斷
地加深加廣領域知識,是瞭解目標的必要手段。以您所問的資
料庫為例,首先您需要學習什麼是資料庫、如何設計資料庫、
以及好的設計是什麼樣子;至少前兩項可以較輕易地從教科書
上攫取答案,而『好的設計』則需要足夠的經驗才能體會。
我認為學習程式設計有兩個構面:「如何解決問題」與「如何
使用工具」;學習程式設計最重要的目的是為了解決問題、而
不是學會使用某種工具。然而我身旁學習成效不佳的的案例都
是被工具所羈絆,進而喪失學習的信心。如果您是位新手,希
望您能接納我的忠告,不要迷失學習的目的。
MySQL 與 MSSQL,或是其他如 DB2、Oracle其實都是一種資料
庫管理系統,功能殊途同歸:都是為了管理資料庫。如果您是
個初學者,其實不要太在意他們之間的差別。原因是一般初學
者會遇到的問題,通常用標準的 SQL便能解決,尚不需用到這
些不同的資料庫所提供的特殊功能。再者,這些特殊功能在沒
有太多經驗時,很難理解、也很難善用,甚至會造成錯誤觀念
而不斷誤用。
對初學者而言,具象的東西較容易被理解,所以可以找本書,
尋著書上的章節、按部就班的操作,慢慢的便會對整體有些概
念成形。對工作環境有個基礎認識之後,便能開始向上發展,
慢慢的可以開始自己規劃、撰寫應用程式或是一些小系統,最
後系統能因為學識經驗的增加而越寫越大、越寫越完善(問題
假若能被完善定義,才有可能存在完善的系統)。如何挑書?
我覺得挑本文字通暢、解釋清楚、而且主題是自己喜歡、感興
趣的,才有可能好好讀完。
稍微熟稔工作環境後、對於整體有個初步的概念時,便能開始
學習「如何設計」。我建議這個階段最好從教科書著手、而不
是工具書。所謂的工具書指介紹特定語言、或是資料管理系統
的書,像是整本都在說 MySQL或是 MSSQL的書。因為工具書對
於概念的著墨剩少,多半是蜻蜓點水的帶過、而把主要的篇幅
留給介紹特定的功能,這對初學者沒有太多益處。一來難懂、
二來很容易被特定的工具綁死。教科書多半是中性的介紹某類
型的技術,然後會稍微帶出現存的不同的解決方案之間的差異
與優劣,這對初學者取得整體的概念有相當大的益處。
技術和工具演進飛快,但是基礎概念通常根深蒂固不易動搖。
或許你可以比較一下過去十年間軟體的技術與作為基礎科學的
數學哪個經常有革命性的演進。基礎的概念是不斷被革新應用
的,千萬不要捨本逐末;不要單單追求新穎的應用而忘了基礎
知識的重要。特別是若要學通一樣事,難免要不斷溯源。
回到你所提的系統。資料庫主要負責幫能儲存、管理資料,因
此除了要具備資料庫的相關知能外,您的系統尚需一套邏輯來
運作資料,而運作的邏輯則是透過撰寫程式語言來達成。
其實您不一定要用 PHP開發,有許多的其他語言可以使用,像
是C#、Java等;但是我覺得 PHP確實是個不錯的選擇,因為程
式碼取得容易(書店就一堆了、更別提放在 sourceforge.net
等其他地方的 open sources 專案),而且語言的學習相對前
面所提的其他語言要簡單的多,而且這個版高手眾多、大家都
不吝嗇回答問題。參與積極的社群是學習的助力。
PHP 的學習方法其實不脫我上面所提到的觀念。你可以在對這
語言有些概念之後,買些工具書擺在案頭,遇到設計上的問題
時便參考書中的解決方式。這類的工具書滿多的,像是歐萊禮
就有幾本像是:PHP Cookbook、PHP Hack等,或甚至也有完整
介紹 PHP的。不過這些書的內容還是比較偏向我所說的:工具
的應用。
如果要學好軟體設計,系統分析與設計、軟體開發方法、資料
結構、演算法等也都是需要深耕的領域。如果時間精力有限,
也至少要對這些領域的知識有個概念,將來遇到問題時才知道
可以從何處著手。
x x x
以您所想要開發的系統來說,若是想獨立開發成 web版的資料
庫,那麼可能需要如下的背景知識:
1.基礎的電腦概念(包含網路大致運作的方式)
2.HTTP的概念(什麼是網站、什麼是網頁、如何透過HTTP讀
取或傳遞資料...)
3.網頁的構成:HTML、CSS、javascript...等
4.網站的構成:Apache、IIS...
5.網站上的應用程式:PHP、ASP、ColdFusion、JSP...
6.資料庫:MySQL、MSSQL、Oracle、DB2...
7.網頁應用程式的進階應用:XML、AJAX、JSON、Flex...
冒號之前的是概念、冒號之後是可選用的解決方案(工具)如
果這些概念能加上系統分析與設計、軟體開發方法、資料結構
與演算法等,可以大大增進程式的可用性與品質。
以上僅就自己個人有限的學識提供一些建議,希望有回答到您
的問題。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.175.169.7
※ 編輯: foxzgerald 來自: 218.175.169.7 (10/24 01:23)
推 a70103 :大推推推推推啊!!! 寫得真好 10/24 01:33
→ gary8912 :這個回覆,我己等了好久,一針見血、擲地有聲,謝謝 10/24 08:42
推 gary8912 :本篇回覆,經驗之談字字珠鐖,值得一讀再讀。 10/24 09:05