核心概念#

務實的程式設計師操縱文字的方式,就像木工塑造木頭。在前面幾節中,我們討論了一些特定工具——shell、編輯器、除錯器。這些類似木工的鑿子、鋸子和刨刀——專門做好一兩項工作的工具。但時不時,我們需要執行一些基本工具組無法輕易處理的轉換。我們需要一個通用的文字操作工具

文字操作語言之於程式設計,就像木工的路由器(router)之於木工。它們嘈雜、凌亂,有些粗暴。使用不當可能毀掉整個作品。有些人認為它們不該出現在工具箱中。但在正確的手中,文字操作語言可以極其強大和多用途。

Tip 35 - Learn a Text Manipulation Language(學習一種文字操作語言)

可用的工具#

Unix 開發者(包括 macOS 使用者)經常使用命令列 shell 的威力,搭配 awksed 等工具。偏好更結構化工具的人可能選擇 Python 或 Ruby。

這些語言是重要的賦能技術(enabling technologies)。使用它們,你可以快速地拼湊出工具程式和原型想法——這些工作如果用傳統語言可能要花五到十倍的時間。這個倍數因子對我們所做的實驗性工作至關重要:花 30 分鐘試一個瘋狂的想法,比花 5 小時好得多。

實際應用範例#

以下是作者使用 Ruby 和 Python 在製作本書時完成的一些工作:

應用情境說明
建置書籍Pragmatic Bookshelf 的建置系統是用 Ruby 寫的
程式碼引入和語法高亮用 Ruby 腳本從原始檔案中擷取命名的程式碼片段,進行語法高亮,轉換為排版語言
網站更新用簡單腳本進行部分書籍建置、擷取目錄並上傳
引入方程式用 Python 腳本將 LaTeX 數學標記轉換為格式良好的文字
索引產生索引標記在文字本身中,Ruby 腳本負責整理和格式化條目

如果你遵循將東西保存在純文字中的建議,那麼使用這些語言來操作文字將帶來大量好處。

相關章節#

  • Topic 16,純文字的威力
  • Topic 17,Shell 遊戲