看板 PHP 關於我們 聯絡資訊
※ 引述《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