資夢

搜尋資源

在這個旅程中,搜尋將會是一個很重要的能力。這份教材的篇幅無法涵蓋所有的學問,但透過網路能夠取得豐富的學習資源。而這些資源,很難全部讀完,因此得透過搜尋找出其中想要的資訊。懂得搜尋,就不再受到教材的侷限,而可以自己找出學習的路。而有時遇到一些難解的問題時,身邊的人都沒有經驗,你也沒有時間仔細鑽研,但這個世界這麼大,很可能有另一個人遇過同樣的問題,並把解法寫在網路中的一篇文章。此時只要能找到那篇文章,眼前的難題就能迎刃而解。

搜尋引擎

想要尋找網路上的文章,最常使用的就是搜尋引擎,所謂的搜尋引擎,指的是可以讓妳尋找網路上資源的一種系統,例如:

  • Google (en)

    萬用搜尋引擎,若想搜尋英文資料,使用英文版 Google 通常能得到較好的結果。尤其程式語言的資訊在網路上多以英文居多,Google 為必備網站之一。

  • Google 中文

    中文版 Google,搜尋中文資料時可以使用。

  • Bing

    微軟開發的搜尋引擎。

  • Yahoo! Search

搜尋引擎的最基本原理,是使用輸入的「關鍵字」和文件中的文字配對,以找出最相關的結果。所以,通常如果要找出一個問題的答案,應該要輸入答案文件中可能出現的字,而不是問題本身。例如,如果你想問的問題是:「要怎麼學程式設計?」,那麼你可能要用兩個關鍵字來搜尋:「程式設計 教學」。如果想問的問題是:「交大校長是誰?」,那可能就得用:「交大 校長」來搜尋。

當然,有時候網路上會有人在討論區問了一個問題和其他人討論,並一起研究不同的答案。此時搜尋問題的標題,也有可能找到這種討論文章以及其中的答案。例如搜尋「我應該讀理科嗎」。就很有可能會找到在人生中徬徨的朋友發問,和眾人熱心的回答。

由於搜尋技巧的優劣,常會決定能不能快速找到有用的資源,但搜尋技巧的培養,有部份只有透過經常搜尋才會慢慢找到感覺。所以在本教材的不同課題中,會明確指出想搜尋某些議題時可以用哪些關鍵字,並用「」標示,直接連結到搜尋引擎,筆者也鼓勵讀者可以多嘗試不同的關鍵字組合,看看會有什麼結果。

更詳細的教學可以搜尋「搜尋技巧」,以及下列文章,本章節接下來則會列舉幾個情境當實際的例子,其中如果有看不懂的名詞不要在意,重點在於使用的方法。

搜尋教學資源

要搜尋教學,通常只要配合幾個關鍵字就可以達到目的。例如,你想學習 Python(一種程式語言),則可嘗試以下關鍵字:

搜尋問題解法

有時在編譯或執行程式時會發生錯誤,此時你多半會得到錯誤訊息,透過這錯誤訊息,我們往往可以在網路上找到他的成因以及解法。但在做這種搜尋時,最重要的就是關鍵字的選法了。透過輸入重要的關鍵字,能過濾出真正想要的資訊。例如以下是編譯 C++ 程式時可能會遇到的錯誤訊息,其中 source.cpp:10 是檔名和行數,不太可能跟其他人相同:

source.cpp:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result ignoring return value of scanf

所以搜尋時,應該要擷取重要關鍵字:

網路上也有像 Stack Overflow 等專門發問與回答的網站。除了可以直接到這種網站搜尋外,其實也可以直接把他們的名稱加到關鍵字中,例如用「foreign key sqlite stack overflow」、「最短路徑 yahoo 知識」之類的關鍵字,直接將 stack overflow、yahoo 知識等等插入搜尋之中。

搜尋程式碼

有時對程式的實做細節較不熟悉,想要參考前人作法,要怎麼辦呢?透過網路搜尋,一樣可以找到公開的程式碼。以 SHA-1 這種演算法為例,你可以嘗試以下關鍵字:

另一種方法則是直接在程式碼網站上搜尋,知名的如 Google CodeGitHub 等等。

資工系:搜尋習題解答

如果你自學資工系的課本,寫完了習題卻無法確定答案,總會讓學習效果打折。若你想搜尋課本的解答,可以透過課本名稱加上 solutions解答等關鍵字,如以《Introduction to Algorithms》這本書為例,若搜尋「Introduction to Algorithms solutions」,就會發現官方釋出的習題解答。

有時官方並不會釋出習題解答,這時也沒有關係。如果是英文書的話,通常在全球都有使用。這時很可能有某些人會把習題解答放在網站上,我們只要想辦法找到這些解答就行了。這種情況下,我們通常得針對特定題目進行搜尋:

整句搜尋

想找特定題目,最重要的就是找出題目獨特的文字,以演算法概論中的題目為例:

Let X[1..n] and Y[1..n] be two arrays, each containing n numbers already in sorted order. Give an O(lg n)-time algorithm to find the median of all 2n elements in arrays X and Y.

我們可以以其中較有特色的句子,配合 Google 的完全符合,用「"find the median of all 2n elements in arrays X and Y"」(注意加上雙引號)來搜尋,便可輕易發現一模一樣的題目以及參考解答。有時候,在題目中會有一些特殊符號,導致用完全符合來搜尋可能不會有好結果。這時可以刪除特殊符號後,用一般搜尋方式:

Let X and Y be two arrays each containing n numbers already

英文?中文?

資訊領域裡有很多資料都以英文撰成。若是透過中文搜尋沒有好結果時,往往可以用英文找出答案。例如在計算機網路概論中,有一個跟 Ethernet 和 ARP 有關的實驗,其開頭語如下:

本次實驗主要是讓同學瞭解 Ethernet Protocol 和 ARP protocol,透過 Wireshark 的使用,來觀察兩個 protocol 的詳細資訊。

若是使用之前的整句技巧來搜尋,恐怕很難找到結果。但若將中文語句刪除,並增添 lab 關鍵字,以「Ethernet Protocol ARP protocol Wireshark lab」來作搜尋,輕易的便找到英文版的 lab 以及其 solution。

誠然,視題材的不同,也不盡然都得透過英文搜尋,有時甚至可能在簡體中文網站較易發現。讀者若無法輕易判斷時,可多試幾次不同找法。

但小心:有時你會發現找到的解答(即使是官方釋出)是錯誤的!無論如何,都得用自己的思考小心判斷。

搜尋考古題

考古題的取得通常是同學相傳或者老師公佈,但在少數的情況裡,其實透過搜尋還是能取得考古題的,舉例來說:

使用 site 是要限定在交大網域裡搜尋。在這兩個例子裡,妳都可以找到官方釋出的考古題。

其他網站

  • Wikipedia

    線上百科全書,由網友編撰。你可以發現每個條目都寫的非常詳細,有時甚至比書籍寫的更為完整。

  • The Free Dictionary

    整合各大字典,查定義和解釋時可以使用。

  • Amazon.com

    線上書店,使用她倒不見得是為了購書。在 amazon.com 上,每本書幾乎都有豐富的讀者評價,加上相關書籍的推薦,使得 Amazon 變成一個協助我們判斷該使用哪本書的參考來源。