編寫Linux實用程式的藝術(轉)
Linux 和其他類 UNIX 系統總是附帶了大量的工具,它們執行從顯而易見的到不可思議的廣泛功能。類 UNIX 程式設計環境的成功很大程度上歸功於工具的高品質和選擇,以及這些工具之間相互銜接的簡易性。
作為開發人員,您可能會發現現有實用程式並不總是能夠解決問題。雖然能夠透過結合使用現有實用程式來容易地解決許多問題,然而解決其他問題卻至少需要一些實際的程式設計工作。這些後面的任務通常是建立新實用程式的候選任務,結合現有實用程式來建立新實用程式可以透過做最少的工作來解決問題。本文考察優秀實用程式所具有的品質,以及設計這種實用程式所經歷的過程。
優秀的實用程式具有哪些品質?
Kernighan & Pike 所著的 The UNIX Programming Environment 一書中包含了對此問題的精彩討論。優秀的實用程式是把自己的工作做得儘可能好的實用程式。它必須與其他實用程式配合融洽;必須能夠容易地與其他實用程式結合使用。無法與其他實用程式結合使用的程式不是實用程式,而是應用程式。
實用程式應該允許您根據手邊的材料廉價而容易地構建一次性的應用程式。許多人認為實用程式就像是工具箱中的工具。設計實用程式的目標不是為了讓單個工具來做所有事情,而是為了擁有一組工具,其中每個工具都儘可能好地做一件事情。
有些實用程式自身就是相當有用的,而其他實用程式則必須與一系列實用程式配合使用。前者的例子包括 sort 和 grep。另一方面,xargs 除了與其他實用程式(最常見的是 find)配合使用外,很少單獨使用。
使用什麼語言來編寫實用程式?
大多數 UNIX 系統實用程式都是用 C 語言來編寫的。本文中的例子使用 Perl 和 sh。應該使用恰當的工具來做恰當的事情。如果您對某個實用程式使用得足夠頻繁,那麼用編譯型語言來編寫它的成本也許能透過效能提升來獲得回報。另一方面,對於程式的工作負荷很輕這種相當普遍的情況,使用指令碼語言也許會提供更快的開發速度。
如果無法肯定,您應該使用自己最瞭解的語言。至少當您在對某個實用程式進行原型化,或在弄清它是如何有用時,程式設計師效率將優先於效能調整。大多數 UNIX 系統實用程式都是用 C 編寫的,這只是因為這些實用程式使用得足夠頻繁,以致考慮效率比考慮開發成本更加重要。Perl 和 sh(或 ksh)可能是用於快速原型化的很好語言。對於與其他程式配合實用的實用程式,使用 shell 來編寫它們或許要比使用更傳統的程式語言來編寫它們要容易一些。另一方面,當您希望與原始的位元組互動時,C 或許就是最好的選擇。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-940248/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 『No22: 編寫可讀程式碼的藝術(1)』
- 編寫小而美函式的藝術函式
- 掌握編寫有效的GitHub提交資訊的藝術Github
- 編寫可讀性程式碼的藝術--萬字總結,看到即學到
- 愛奇藝網路協程編寫高併發應用實踐
- 編排的藝術|K8S中的容器編排和應用編排K8S
- Linux下的 sniff-andthen-spoof程式編寫Linux
- Linux驅動實踐:如何編寫【 GPIO 】裝置的驅動程式?Linux
- 用PHP編寫Android應用程式PHPAndroid
- 編寫友好的命令列應用程式命令列
- linux用什麼編輯器寫python?LinuxPython
- 如何在Ubuntu/Debian Linux編寫C程式UbuntuLinuxC程式
- 程式碼複用:DDD視角下的平衡藝術
- 編寫優雅程式碼的最佳實踐
- 用Rust編寫的快如閃電的程式碼編輯器:lapceRust
- 編寫執行緒安全的JSP應用程式執行緒JS
- 用js實現小寫金額轉大寫的方法JS
- 如何學習用Java編寫程式碼?Java
- Redux中的程式設計藝術Redux程式設計
- Michael Feathers:程式設計的藝術程式設計
- [譯] 編寫函式式的 JavaScript 實用指南函式JavaScript
- Linux系統程式設計【3.1】——編寫ls命令Linux程式設計
- 用Java編寫一個最簡單的桌面程式Java
- Blazor流程編排的藝術:深入Z.Blazor.Diagrams庫的使用與實踐Blazor
- 編寫高效能 Java 程式碼的最佳實踐Java
- 【翻譯】編寫程式碼註釋的最佳實踐
- 如何在 Linux 上用 Markdown 編寫電影劇本Linux
- Java程式編寫Java
- Python技法:實用運維指令碼編寫(程式/檔案/目錄操作)Python運維指令碼
- Linux C++ 開發2 - 編寫、編譯、執行第一個程式LinuxC++編譯
- [轉] 如何實現 React 寫小程式-1React
- PHP 編寫基本的 Socket 程式PHP
- 請用js編寫一個紅綠燈程式JS
- 使用rust編寫dwm status-bar應用程式Rust
- 用藝術的眼光探索資料之美
- 前端開發中的程式碼藝術(精要)前端
- QT QML模組的程式設計藝術QT程式設計
- Linux 查詢佔用磁碟IO讀寫很高的程式方法Linux
- 用python語言寫程式有什麼好用的編輯器?Python