核心概念#
務實的程式設計師操縱文字的方式,就像木工塑造木頭。在前面幾節中,我們討論了一些特定工具——shell、編輯器、除錯器。這些類似木工的鑿子、鋸子和刨刀——專門做好一兩項工作的工具。但時不時,我們需要執行一些基本工具組無法輕易處理的轉換。我們需要一個通用的文字操作工具。
文字操作語言之於程式設計,就像木工的路由器(router)之於木工。它們嘈雜、凌亂,有些粗暴。使用不當可能毀掉整個作品。有些人認為它們不該出現在工具箱中。但在正確的手中,文字操作語言可以極其強大和多用途。
Tip 35 - Learn a Text Manipulation Language(學習一種文字操作語言)
可用的工具#
Unix 開發者(包括 macOS 使用者)經常使用命令列 shell 的威力,搭配 awk 和 sed 等工具。偏好更結構化工具的人可能選擇 Python 或 Ruby。
這些語言是重要的賦能技術(enabling technologies)。使用它們,你可以快速地拼湊出工具程式和原型想法——這些工作如果用傳統語言可能要花五到十倍的時間。這個倍數因子對我們所做的實驗性工作至關重要:花 30 分鐘試一個瘋狂的想法,比花 5 小時好得多。
實際應用範例#
以下是作者使用 Ruby 和 Python 在製作本書時完成的一些工作:
| 應用情境 | 說明 |
|---|---|
| 建置書籍 | Pragmatic Bookshelf 的建置系統是用 Ruby 寫的 |
| 程式碼引入和語法高亮 | 用 Ruby 腳本從原始檔案中擷取命名的程式碼片段,進行語法高亮,轉換為排版語言 |
| 網站更新 | 用簡單腳本進行部分書籍建置、擷取目錄並上傳 |
| 引入方程式 | 用 Python 腳本將 LaTeX 數學標記轉換為格式良好的文字 |
| 索引產生 | 索引標記在文字本身中,Ruby 腳本負責整理和格式化條目 |
如果你遵循將東西保存在純文字中的建議,那麼使用這些語言來操作文字將帶來大量好處。
相關章節#
- Topic 16,純文字的威力
- Topic 17,Shell 遊戲