1. 搜尋:真正的挑戰#

1.1 問題不在於找到結果#

搜尋引擎的真正挑戰不是「找到包含關鍵字的頁面」——那是相對簡單的技術問題。真正困難的是排序與排名:在數百萬筆結果中,把使用者最想要的結果放在最前面。

1.2 Google 的突破#

Google 的 PageRank 演算法是一個真正的突破,因為它用了一個巧妙的洞察:一個網頁被多少其他網頁連結,可以作為該網頁重要性的指標。這本質上是利用整個網路的「集體智慧」來進行排序。

搜尋引擎的價值不在於能搜到多少結果,而在於第一頁的十筆結果中有多少是你真正想要的。

2. 反鋸齒文字:可讀性的迷思#

2.1 歷史背景#

反鋸齒(Antialiasing)技術自 1972 年開始被應用於文字渲染,目的是讓螢幕上的字體看起來更平滑、更接近印刷品質。

2.2 問題所在#

反鋸齒讓單一字元看起來更漂亮,但可能損害整段文字的可讀性。原因在於:

  • 反鋸齒會讓字元邊緣變得模糊
  • 在小字體下,模糊的邊緣會讓字母難以辨認
  • 大段文字閱讀時,清晰的邊緣比平滑的邊緣更重要

2.3 ClearType 的嘗試#

Microsoft 的 ClearType 技術利用 LCD 螢幕的子像素排列來改善文字清晰度,但仍然存在問題:

  • 在某些螢幕上會出現彩色邊緣(color fringing)
  • 效果因螢幕類型與角度而異
  • 某些字體在沒有反鋸齒的情況下反而更清晰

選擇字體與渲染方式時,應以實際的段落閱讀測試為準,而非單一字元的美觀度。

3. 網路透明性:有缺陷的概念#

3.1 理想與現實#

網路透明性(Network Transparency)的理想是:讓遠端資源的存取「看起來」跟本地資源一模一樣。RPC(Remote Procedure Call)和 DCOM 等技術都試圖實現這個目標。

3.2 為何行不通#

將遠端呼叫偽裝成本地呼叫,忽略了三個根本差異:

  • 可用性:本地資源幾乎永遠可用,遠端資源可能隨時斷線
  • 延遲:本地函式呼叫是奈秒級,遠端呼叫是毫秒到秒級——差距達百萬倍
  • 可靠性:本地呼叫不會「部分失敗」,但網路請求可能在任何階段中斷

3.3 正確的方向#

與其假裝遠端跟本地一樣,不如正面面對差異:

  • 使用非同步操作(asynchronous operations)處理遠端呼叫
  • 實作完善的錯誤處理與重試機制
  • 在 API 設計中明確區分本地與遠端操作
  • 設計能優雅降級的系統

抽象是好的,但抽象不應該隱藏本質上不同的行為。網路呼叫與本地呼叫有根本性的差異,API 設計應該反映這些差異,而非掩蓋它們。