以前實在很難看得懂的原因,在於當時的文章是用「機器翻譯」的,所以明明寫的就是漢字,但就是牛頭不對馬嘴,不該翻的一直翻,該翻的又不翻好來,一整個就是火星文。那時的MSDN對我來說不過是「工具書」,既然MSDN工具書來自於火星,那麼參考坊間的工具書籍就好了,那個時候的坊間工具書比較實務點,看了直接就用得上了。
現在的MSDN好多了,我看了蠻多文章,都不再是機器翻譯,而是人工翻譯,不過才疏學淺,好多的程式基礎詞彙還是看不太懂,同一篇文章往往要看個四五回才能抓到一點重點…對我來說有時還是「火星文」。現在的MSDN對我而言是「學習書」,除了學習程式方法怎麼用,最重要的是看看說明來學習程式的基礎,看看範例來學習人家的邏輯。相較於MSDN,現在坊間的工具書倒是一窩蜂的抄MSDN的資料,感覺就是沒有誠意,不過世態炎涼,現代人閱讀習慣不同加上資訊分享媒介轉換,電腦書的銷售也難倖免,現在能拿來當學習書的真的比較少了。
所以讀MSDN是一件很重要的事情,它不只是工具,是一個學習 .NET 程式的必經之路,雖然我一開始閱讀MSDN的陣痛期很長 ( 我這一個月算是鎮日埋首在MSDN裡,每天的頭都很痛 ) 不過自已有感覺,慢慢的,不知道是自已離火星的距離比較近了還是怎樣,逐漸能熟悉這些火星文了。
閱讀MSDN這件事情,如果我能克服的話,我想誰會比DNOWBA我還豬腦,只要有毅力,一定能克服閱讀火星文的障礙。今個兒就分享一下我在MSDN的取經之路。
◎ MSDN 的首頁
看起來只是個入口,但想學基礎要看這兒…如果是新手,不要錯過。
介紹可以開發的平台有桌面、WEB、雲端、手機,還有什麼技術和工具,可以掌握一些最新資訊…重點在上面的「文件庫、學習園地…其他的站台」、「Bing搜尋」不過其實這裡有工具軟體操作的基礎的課程(選擇某一個平台就會有),個人認為很值得新手一看,就是從影片學習軟體操作,會比自已摸軟體摸個半天還快上手,也比看書的STEP BY STEP 還容易理解,這裡的影片多半是英語,不過還好有CC字幕,不過不知道是silverlight技術,感覺影片跑起來不是那麼的順暢。
◎ 茶餘飯後挖寶去…學習園地
學習園地的內容很廣,有的談「工具軟體操作」,有的談概念,內容幾乎都是台灣的PRO級高手寫的文章,所以不大會有閱讀障礙,這裡的資源不會很多,但主題很鮮明不會太通識,通常我都當作茶餘飯後的挖寶區。其中還有一個書籍專區,不知道買什麼專書的話可以看看(不是網羅所有的書籍)
◎ 每日養成看社群的習慣
就當看報紙新聞那樣…
其實應該說是用「社群中心」裡的MSDN 論壇,裡頭有很多的實務Q和A,從這裡可以看到目前最常被談到的應用,然後有大內高手會幫你指點迷津。我最常在ASP.NET 與 AJAX(ASP.NET and AJAX)、資料存取(ADO.NET與LINQ)、資料庫與程式開發(SQL Server Development)、Silverlight、Expression設計師專區
裡潛水…這類的資訊比較零亂,所以我都依預設的資料排序,依「最近的往來文章」來閱讀,通常討論愈多的就是比較關注的技術…
再來就是「使用者群組與社群網站」裡的點部落了,這裡可以學到比較主題性的資訊,臥虎藏龍的地方,微軟MVP都會在這裡發表個人的文章。我是利用「技術團隊」的分類來看文章,像是ASP.NET 團隊、資料庫應用團隊、Silverlight 開發團隊、HTML 5 技術團隊發表的文章。
這裡的資訊量是很大的,初期我都強迫自已閱讀,像看報一樣,慢慢的讀報習慣就會出來,所謂三日不出門,能知天下事,靠的就是社群,但像MSDN 論壇形式的QA內容有時未經佐證,切勿囫圇吞棗。點部落的高階文章也不是用蛇吞大象的貪心心理,妄想一次就讀完全部的。所以後來我乾脆全部都弄到「Google 閱讀器」裡,
像這樣的資訊型態,我真的很建議用RSS閱讀器的方式來讀,多看多得…
像我會規定自已閱讀「最長不超過2小時…」
有新的文章的時候就看一下看一下,中午挑有興趣的「觀念型」文章看個3-5篇,約0.5小時。晚上挑喜歡的「技術型」內容,看5-7篇約1小時半。
久而久之,「熟讀MSDN社群,不會實務也能吟」。
如果你沒有使用閱讀器的習慣,建議可以看看我寫的關於Google 閱讀器的文章…或許能幫助你紓解一些資訊閱讀效率。
◎你準備要到火星了嗎?
請到MSDN 文件庫-MSDN Library
哈哈,前面只是小小的提一下MSDN整個網站的地圖,MSDN Library 才是「一般人說的我看不懂MSDN上的火星文」的發源地,它是微軟技術的參考文件,雖然微軟因非開源程式碼被人詬病,但是 MSDN文件庫的建立至少開放了使用層,和同為非開源程式碼的Flash比較起來,至少在大量技術文章的提供下,顯得比較容易獲得學習管道。對於微軟技術的推廣,MSDN Library功不可沒。不過這個通道真的太大了(就好像前面幾個站台一樣),有時候讓人望之卻步,有時候踩進去後一不小心又迷途不知返…
別的技術我不是很了解,但是.NET程式設計這塊,我覺得在透過「市面書籍領進門後,修行看個人,個人就一定要看MSDN」。這裡就分享閱讀MSDN Libray的幾種方法…
1、不管你是不是新手,我都建議你一定要做的事:「傳統」方式檢視畫面和愛用IE瀏覽器
這是進入火星前強烈建議一定要做的事,檢視畫面一定要切換成「傳統」,微軟把這個功能按鈕做的很小很小…它就在右上方…進入「偏好設定」後選擇檢視畫面,把預設「輕量型」改成「傳統」預設的「輕量型」檢視畫面和「傳統」檢視畫面到底有什麼不同?最重要的就是在傳統畫面中,「階層明確」而且有「中英對照」
至於用傳統檢視畫面的好處是什麼?我想這個後面才提。
此外也強烈建議看MSDN Libray用IE看,我知道用Chrome看網頁速度比較快,但是IE怎麼說對自家的Framework支援度還是比Chrome好,有些東西用Chrome 開功能無法顯示。(It’s true,不要不信邪,有時候錯過的功能偏偏是好用的功能那就會讓你扼腕。
2、善用傳統檢視下的樹狀階層圖
所謂的階層明確,比起預設畫面中的假樹狀,傳統的畫面樹狀結構完整,適時的用加號(+)來展開/收合畫面,你可以很容易知道你身在何方。我覺得這個檢視方式對我來說用途最大的是在查詢.NET Framework類別庫,你可以從完整的樹狀地圖來了解整個程式設計的架構。比方說我要想完成資料讀取的功能,也許從書上範例教的是用System.IO.StreamReader ,那麼我們就可以舉一反三,或許資料寫入等和資料處理的功能也都會在同個命名空間System.IO下,當書上的內容無法滿足我們的胃口時,查查大份量的MSDN Librayr吧。
查之前得先確定一下我使用的版本是Framework 2 還是Framework 4 (版本不同,.dll 組件內容可能會改變),然後要找到相應的「命名空間」System.IO,然後就會一堆「類別」跑出來了,微軟在空間、類別、乃至於底下的成員的名稱都有自已的規則,所以光從收合樹狀階層中,你很容易就可以找到你要的方法了。例如我找到了System.IO.StreamReader,一看底下的成員有「建構函式」就可以判斷這個類別是非靜態宣告…在寫程式的時候多半是要在使用前加個 NEW 來實體化的。
這就是樹狀階層的好處。預設畫面中的假樹狀只是為了減輕瀏覽器負擔的產物,比方我們應用都是用「類別」下的「方法」這個成員,在假樹狀中找到System.IO命名空間後呢,底下的方法哩…沒有就是沒有…最慘的是怎麼連「類別」都列表不完整,不知道的人真的以為System.IO命名空間下的類別只有一滴滴,輕量級也太輕了吧,看了以後會讓你霧裡看花…看攏無。
3、善用傳統檢視畫面下的中英對照
中英對照也是有絕對的好處…預設的檢視畫面,微軟算是貼心,在中文網站上,也可以透過指標來檢視原文,但是有時候新的技術,就算是人工翻譯非機器翻譯也會有語意上的不清,在英語原文教程中,雜入一堆的電腦專業術語本來就不好翻,如果又加上一些程式語言那就有翻好還是不翻好的窘況…像下圖中的函式StreamReader(Stream) 肯定是不翻的,但在函式說明的部分,像我就認為把「Initializes a new instance」翻成 「初始化…的新執行個體」、把「class」翻「類別」沒要必要,不如不要翻(不要翻,不是說翻不好),因為Initializes和new 意思本來就相近,instance就可以聯想到是Class的Instance宣告,我就知道要new了…中文有時候太咬文了。
所以傳統的檢視畫面,採用中英相對照的方式,在我看Framework 介紹類別下的成員時特別有用處。通常我都是先看「原文」,看不懂再看「中文」,相輔相成。這個畫面下微軟也是用心,滑鼠在中文翻譯上游移,會出現高亮提示然後自動對應到原文,這個功能在左右參照的時候很有幫助(IE才有,Chrome上顯示不出highlight)。對於寫程式的人來說,英語絕對是基本功…電腦語言本來就是英語為基底,所以根本不能排斥,不過你也不用太擔心,學好英語是指程式這個領域的英語,你不用去補習班再學什麼生活美語然後拿個托福證照…像DNOWBA就是典型的,每次爬MSDN時看得津津有味,老婆覺得我很HERO,英文應該一把罩,結果到國外旅遊時,吃飯點餐還是用一指神功點點點,我的生活英語根本是ZERO。
這種檢視畫面分割了二個畫面,一開始會不大習慣甚至讓你埋怨自已的螢幕太小,如果你本錢夠厚的話,再敗一台螢幕搞個延伸顯示器就可以「雙贏」了。「怎麼樣,就如大家知道的,身為一個程式設計師,桌上有個二台螢幕是很合理的事情。」就用這句話來說服你的馬祖婆吧。
如果你「變更不了顯示器的外觀」,那麼請「變更你自已的內在修養」
下面的截圖是當DNOWBA 參照MSDN 寫程式的時候…
那真的是修養要很好了,千萬壓抑住砸螢幕的衝動,沉住氣來…我的螢幕還是19吋(4:3)算是不幸中的大幸,後來修養到了一定境界的時候,有時出門在外,連10吋小筆電我也是拿出來這樣硬幹蠻幹。
4、請確定你現在站對位置了
比方說你在開發網站時,可能要系統的學習的話,你就得站在Web 開發上,若想觸類旁通的話,有時候去逛逛.NET 開發也不錯,但你得搞清楚自已在哪裡?又比方說我們查BUTTON控制項的使用方法,就可能會查到二個不同命名空間內都有Button類別,System.Web.UI.WebControls 和 System.Windows.Forms… 前者是webform後者是winform,二個按鈕控制項還是有不同的地方…
站對地方外,切記還要「站穩」…不要亂動…這是不二法則,不要把一堆的連結給撼動了,集中精神、集中火力在你要研究的內容上。我自已每次看的時候真的每個都「好想看一下」,但是「峰峰相連到天邊,連來連去真的會看到你升天」,所以我常常提醒自已集中火力。集中火力在某個控制項上的使用,比方說就web開發的話,我會找成員最多、最複雜的來下手,通常有其他控制項上便會有共用的方法或是相似的方法,集中火力的話反而更能深入了解。
5、主要頁面的說明…
如果是要研究的話,對於查找到的MSDN文件庫資料,光是一個類別就要消化很久了。所以對於主頁面的熟悉度要夠,可能眼光要精準一點才不容易失焦,像底下是Stream 類別…現在是節點完全收起來,看起來短短幾行,但是展開的時候就不是這樣了,不過我建議剛進去的時候,節點收起來頭比較不會痛。下面針對主要頁面下的幾個節點做簡單說明。
開頭提供了類別說明、命名空間、組件,像下面說道Stream類別是…提供位元組順序的一般觀點…什麼跟什麼…這不是火星文是什麼。這個時候中英對照就會讓你看了比較舒服。
「繼承階層架構」節點讓我們明瞭此一類別的上下階層關係,例如System.IO.Stream的父階是是System.MarshalByRefObject,Microsoft.JScript.COMCharStream…等是System.IO.Stream徒子徒孫…族繁不及備載的情形下…我通常只瞄一下他老爸是誰(通常我都不認識= =)
「語法」節點:這個節點不是使用範例喔,只在說明如何宣告以這個類別為參考的物件,這個地方我覺得蠻可惜的,因為不只是類別,方法下的「語法」節點也只看得到宣告,看不到執行個體…期待有一天微軟佛心來的公佈一下。比方說下面的System.IO.ReadAllText方法,我就很想知道,他的執行個體裡面有沒有給我偷用StreamReader…
「範例」節點,這個算是精華了,建議一進來就先閱讀的地方就是這裡,提供的範例有些是理論型有些是實務型,有些是片段有些是完整,不管怎樣,官方在提供範例這一塊的誠意十足,範例前會說明一下這些程式碼的用途,程式碼又包含VB、C#等多種程式語言,程式碼裡還常常會有註解說明每一段寫法…好物,程式碼裡頭其實很多是寫了A就要配B的方法串連才能得到一個比較完整的功能。所以從A方法的範例,你可以馬上知道下一步要學的B是什麼,對學習上很有幫助。
6、若要搜尋某個函式的使用方法的話,建議用 BING 來取代 GOOGLE搜尋
GOOGLE的範圍太大了,我知道可以自訂範圍,那何不用MSDN裡的BING搜尋就好了,左側的條件式搜尋更符合期待,你可以單找點部落、也可以找論壇、文件庫…比GOOGLE大海撈針還有準頭。7、如果要下載安裝單機版的話…
我其實不太建議啦,網路上的MSDN 文件庫,功能很健全了…不過如果碰到沒網路的時候可以應急 (萬不一沒網路,我通常選擇去做其他的事情,連程式也不寫…)8、請你不要這麼做…
不要一直開…開分頁不要開太多分頁,分頁維持一定量可以避免你失焦太多,當你分頁開到連標題文字都看不到的時候,就是提醒你「學海無涯,回頭是岸」了。
不要忘記…忘記你的家人
就因為學海無涯,所以我知道我無法完全擁抱,況且生不帶來死不帶去的,也許它是證明我活著的價值之一 … 但你二腳開開之時,你期待誰緬懷你?家人好重要的…
(上面這段話是我最常最常警惿自已的話,因為我常常忽略他們,真該死)
我記得有一次,我叫我那5歲的兒子不要再穿尿布了
他竟然回我,那你可以不要再打電腦了嗎?不行啊…
6、7、8未完,但是CODA用完了…休息…路漫漫其修遠兮,吾將上下其手,喔不!是…路漫漫其修遠兮,吾將上下而求索
沒有留言:
張貼留言