在好例子网,分享、交流、成长!
您当前所在位置:首页Others 开发实例一般编程问题 → Unix编程艺术

Unix编程艺术

一般编程问题

下载此实例
  • 开发语言:Others
  • 实例大小:2.94M
  • 下载次数:24
  • 浏览次数:107
  • 发布时间:2021-03-06
  • 实例类别:一般编程问题
  • 发 布 人:好学IT男
  • 文件格式:.pdf
  • 所需积分:2
 

实例介绍

【实例简介】
本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。
第一节谁应该看这不书 是摇头反对。 本书中用到人称“我们”时,我并不是虚张声势,仅以此说眀这是整个社样都清 楚明了的事实 因为本书着力传递文化,因此加入了很多野史和坊间传说,这在技术书中并不多 见。希望你喜欢,这些东西其实是Unⅸx程序员的教养。须弥不重,芥了不轻。我们 希望以这种方式更好地讲述故事。了解Unⅸx的由来和变迁,会培养你对Unix风格 的直觉 同样地,基于此,我们不打算使用回述历史的腔调。你会发现木书参考了众多时 下信总。我们不希望给你种错觉:书里说的都是亘古不变的终极真玨。参考吋下的 信息这一做法,也提醒读者,三十年河东,三十年河西,眼前所见,也许过不了多久 就会过时,而需要重新检省。 另外,本书不是C教程,不是Unix命令和API的手册,不是 sed/yacc/Perl/ Python的语言参考,也不是网络编程入门,更不是巨细靡遗的令人 费解的Ⅹ指南。本书也不打算带你巡游Unix内幕和体系。有很多其它的好书涵盖这 些领域,本书会在适当的时候告诉你该看哪些 在这些技术细节外,Unⅸx文化有一个未见诸笔端的行工传统,以熟练工的考量, 它已经有几百万人年的发展3。本书即立足于这样一个信念:领会此传统,并将它的设 计于法应用到于边,你将成为更好的程序员和设计师。 构成文化的是人,一直以来,获知文化的方式大约是口口相传、潜移默化。本书 不打算取代人际的文化传播,但可以促进这一过程,使你能俯耳倾听他人的心声。 0.1谁应该看这本书 如果你是个Unⅸx编程老手,经常教导菜鸟,或者与人进行操作系统论战时无法 阐明使用Unix方案所带来的好处时,可以看看这本书。 3从1969到2003年,35年时间可不算短。以这期间Unx站点数量的年度曲线计算, 人们在Unix上耕作了约有5000万人年。 第二节如何使用这不书 如果你是个C、C++或者Java橾序员,有其它操作系统的开发经验,现在轮到 你开展一个Unix项日时,可以看看这本书。 如果你是个初级或者中级水平的Unx用户,但是没什么开发经验,想学习在 Unix下如何高效地设计软件时,可以看看这本书。 如果你不在Unⅸx下编程却发觉Uniⅸx的传统给你带来某种启迪,那你就对了 Unⅸⅹ哲学适用于其它的操作系统。因此我们会花比其它Uniⅸx书籍更多的篇幅关注非 Unⅸx环境(特别是微软的操作系统);当所用到T具或者案例可用于其它操作系统 时,我们会告诉你。 如果你是一个系统架构炯,正为通用市场或垂直应用准备平台方案或实现策略时 可以看看这本书。本书将帮助你了解Unⅸx作为开发平台的强大功能,以及开放源码 这个Uniⅸx的传统所带来的开发方式。 如果你想学到C编程的细节或者想知道怎么用Unix内核API,本书可能不适合 hko Advanced Programming in the Unix Envirortment [ Stevens92]是探究 Unix api的经典名著; The Practice of Programming Kernighan-Pike99]是每个C程序员的必读书目(任何语言的程序员都该看看这木 书) 0.2如何使用这本书 这本书既重实践,更富理念:既包含警世格言,又不忘检点Unix开发中的特殊 案例。在每个警句前后,都有生动实例阐明其山来,这些例子绝不来自小儿科式的示 例程序,而均出自真实世界满眼所见的运行代码 我们着力避兔以大量代码或者规范文件来胡乱凑数,当然这么做会让本书的写作 轻松许多(某些地方或许读起来也更轻松)。绝大多数编程书籍只授你以鱼,而本书 避兔这种做法,力求培养读者“探求事情何以如此”的感知力。 正由于此,本书会时常请你阅读代码与规范文档,它们中极少量的内容会附在书 中,其余部分我们会在举例时告诉你如何从网上获取。 从这些范例中汲取养分,将有助你将所学原则消化变为疸丁之技。如果你能就着 一部跑在Unⅸx系统上的网页浏览器米读书,是再理想不过的了。任何Unix系统都 第三节相关引文 适合,但是我们将要研究的案例人多都会预装在、或者可以从 Linux系统上获得,书 中会提示请你浏览或亲身感受它们。这些提示通常是按部就班的,跑开玩一会儿并不 会打散整个讲述过稈的连续性。 注意:我们虽力求,但无法给你打保票,声称我们所引用的URLs稳定可用。如 果你发现某个引用连接已陈旧过时,来点常识,用你喜爱的搜索引擎来个短语溲索。 如有可能,我们会在所引用的URLs附近给出如何搜索的提示。 大多数缩写形式会在首次出现时伴随其全称。为方便起见,我们在附录中提供了 名词对照表。 交叉索引通常以作者名宇为主导词。带编号的脚注是那些可能会扰乱你阅读正 文,或者是易变的URLs;也可能是旁征博引的战争故事或者笑话4。 为了使这本书不至于让非技术人员太过难读,我们邀请了一些非程序员试渎,并 指出一些晦涩但起贯穿作用的词汇。我们把那些编程老手不太会需要的名词鮮释也放 在脚注中。 0.3相关引文 些Uniⅸx早期拓荒者的著名论文和书籍,比如 Kernighan和Pike的《The Unix Programming Environment》[ Kernighan-Pike84]就是其中佼佼者,被世 人尊为主桌。而今看来此书廉颇老矣,它没提到 Internet、力维网以及诸如Perl、 Tc和 Python这些鮮释型语言的新秀。 写作本书的中途我们借鉴了 Mike gancarz的《 The Unix Philosophy [ Gancarz]。这本书在它的覆盖范围内极其优秀,但是我们觉得需要更多内容才能反 映岀事情的全貌。尽管如此我们仍对此书作者心存感激,他愈发使我们知道最简单的 Unix设计于法就是最持久耐用的。 The Pragmatic Programmer》[ Hunt -Thomas]是一本关于良好设计的 书,文风机智诙谐,它与本书相比,偭向于软件设计工艺的另一个层面(更江重编 这个特别的脚注献给 Terry Pratchett,他对脚注的用法简直是……绝了。 第四节本书的习俗约定 码,而少着墨于高层面的问题划分)。作者的哲学是其Unⅸx领域耕耘的成果,也是 本书内容极好的补充。 The Practice of Programming》[ Kernighan-Pike99]包含了一些与《The Pragmatic Programmer》共通的内容,但更钻入Unix传统的深处 最后(明知道会激怒你),我们推荐《 Zen flesh, Zen bones》 [ Reps-Senzaki],部重要的佛教禅宗本源的合集。对禅的引用书日遍布全书。我们 将这些书目包含进来,是因为禅为表达某种想法提供了丰富的语汇,而在软件设计中 很难烂熟于心。信奉宗教的读者,请您不要禅当成宗教,它是一种心灵鸡汤似的 东西,纯净而没有神灵的干扰一一此即是禅。 04本书的习俗约定 术语“UNIX”技术上和法律上讲,是 The Open group的商标,并且应该仅 限于那些通过 The Open group严格的“符合标准”认证的澡作系统。本书中我们 使用其较宽松的定义,即大多数程序员所指的,Bell实验室Unx代码的后裔或旁 支。在这个意义下, Linux(大多数例了都举自它)也算是一种Unix 本书也使用了Uniⅸx手册页( manual page)的传统,即以括号括起来的手册节 号来标记Unⅸx设施。通常月于强调一个Unix命令首次出现。比如“ munger(1) 可解读为“ munger程序加入存在于你的系统中,其文档位于Unix手册页的笃1 节”。第2节是C的系统调用,第3节是c的库函数凋用,第5节是文件格式与协 议,第8节是系统管理工具。其它节号本书未曾用到,其定义在各个Uniⅸx系统各有 不同。在你的Unix外壳提示下输入man1man(老式的 System UNix系统可 能要输入man-s1man)以获得更多信息。 有时我们会提及某个Uniⅸx程序(比如 Emacs),后面没有手册节号而且首字母 大写。这意味这个名字代表一族Unix程序,其基本功能相同,而我们将讨论其通用 特性。比如 Emacs,就包含了 Xemacs 本书很多地方我们同时给出了老式( old school)和新式( new school)解法。 new- school和rap音乐一样,开始于1990年前后。在这个含义下,我们往往把它 与脚本语言、图形用广界面、开放源码的Unix和万维网联系起来。Old- school指代 1990年以前(特别是1985年以前)的世界:昂贵的共用计算机、专属的Unix, 第五节所用案例 shell脚本和无所不在的C。值得指出这些差异,机器越来越便宜,内存多了起来, 这些有如暗流,渐渐影晌着Unⅸx编程的风格。 0.5所用案例 很多编稈书籍为证眀某一观点而特地造出一个范例,你手中这本书不这么干。我 们的案例研究均来白真实世界,在生产环境中工作已久。下面是一些主要案例: cdrtools/ xcdroast这两个独立的项目通常被一并使用。 cdrtools是一组刻盘工具 (用关键字” cdrtools"可以在网上找到)。 xcdroast是 cdrtools的图型界而 前端,其项目网站在这里。 fetchmail fetchmail用于从远程邮件服务器上收信,支持POP3和IMAP邮箱协 议。这是它的主页,也可以用关键字“ fetchmail从网上找到。 GIMP GIMP( GNU Image Manipulation Program,GNU图像处理程序)是 一个全特性的绘画和图像处理程序,可对多种图像格式进行复杂处理。其源码可 从GIMP主页获得(也可以通过关键字"GIMP”从网上搜到)。 mutt mutt邮件客户端是目前各类基于文本的邮件客户端程序中的翘楚,提供对 MIME( Multipurpose internet Mail Extensions)、个人隐私辅助程序,如 PGP( Pretty Good Privacy)和GPG( GNU Privacy Guard)等特性的绝佳支 持。其源仍和二进制可执行文件可以丛Mut项目主页获得 xmlto xmlto可将 Doc Book和其它ⅪML文档以多和格式渲染输出,包括 HTML、纯文本和 PostScript。其淇码和文档可在 alto主获待。 为了将读者理解本书例子所要阅读的代码量降低到最小程度,我们尽量挑选那些 可重复使用、并能体现多种不同设计原理和设计实践的案例。出于同样原因,很多示 例来自于我本人的项目。我没想说这些例子最为恰当,只是我觉得它们对阐述我的观 点非常有用。 VI 第六节作者致谢 0.6作者致谢 各位客串贡献者( Ken arnold, Steven m. Bellovin, Stuart feldman,jim Gettys, Steve Johnson, Brian Kernighan, David Korn, Mike Lesk, doug McIlroy, Marshall Kirk McKusick, Keith Packard, Henry Spencer, and Ken Thompson)为本书增添极大价值。特别是 Doug mcllroy,给予本书恪尽职责、鞭 辟入里的评注的冋时,也展现了他在30年前管理最原始的Uniⅸx研究组时鞠躬尽瘁 的高风亮节。 我要对 Rob Landley和我的妻了 Catherine Raymond致以特别感谢,他们都 不厌其烦地逐行对本书手稿进行审阅。Rob的深富洞察力的细致评述激励我在最终 稿中加入了一整章内容,他为本书的组织结构和取材范围贡献极多。如果他把所给予 的改进意见落在笔端,那他无愧于本书的合著者。 Cathy代表读者中非技术人员的 群,如果那些非程序员渎者觉得本书并不难读,那全是她的功劳。 写作的五年间,木书从不少人的讨论意见中获益良多。 Mark m. Miller使我对 线程有了更深的认识。 John Cowan教给我不少接口设计方式,并起草了wiy和 VM/CMS的学习案例。 Jef Raskin告诉我 the Rule of least Surprise的由来 The UIUC System Architecture Group对前几章给出的反馈弥足珍贵,What Unix Gets Wrong和 Flexibility in Depth两节是他们直接激励的结果。 Russell J. Nelson提供了 Bernstein chaining的素材。第三章中MVS学习案例大部分材 料来自 Jay maynard。 Les hatton对语言一章给出很多有益的建议,并健使我写成 第4章中 Optimal Module size的部分内容。 David a. Wheeler贡献了很多发人 深省的批判,以及一些学习案例(特别是设计部分中的)素材。 Russ cox帮助我对 Plan9的调查。 Dennis ritchie纠止了我的一些错误的C历史观念。 成百上千的Unx程序员,人数太多以至于无法在此列出他们的名字,在2003 年1月到6月间的公开审阅过程间给了我建议和评论。开放的同级复牢这一过程让我 觉得紧张刺激而回报极多。当然,任何最终书稿中残臀的锖误都是我自己的责任 把事情说透”的风格,以及其它一些考虑因素,是受到了“设计模式运动”的 影响;说实话,我对到处堆砌Unⅸx设计模式这种做法深不以为然。我对此运动的 中心教条不敢苟同,并且没觉得把设计模式严格付诸实用有什么必要,也不想背上 这种思想的包袱。尽管如此,我的行事方法仍然受到 Christopher Alexander工作 第六节作者致谢 成果5(特别是《 The Timeless Way of Building》和《 A Pattern Language》两 文)的影响。 Gang of Four和他们的信徒为我展示了如何用 Alexander的思想 站在较高层面上,抛夫含混不清的对设计通则的空话,来谈论软件设计,这一点我心 存感激,永志不忘。对设计模式有兴趣的读者可以看看这本书《 Design Patterns: Elements of Reusable Object-Oriented Software[GangofFour] 本书标题毫无疑问是借鉴了 Donald knuth的《 The Art of Computer pro gramming》一书的书名。 Knuth和Unix传统文化没什么联系,但他影响了我们每 个人 有先见之明和丰富想象力的编辑不多,好在 Mark Taub就是一个,他从并不看 好的项目中发现了闪光点,并极富技巧地促成了这本书的写作。文字编辑中,文笔好 而又能帮助别人提高文笔的更少了,所幸 Mary Lou nohr是其中之一。 Jerry Votta 的封面设计领会了我的意图,而且做得比我的想像还要漂亮。 Adisson- Wesley的编 辑们让审稿和岀版这一过程不再枯燥无味,我天生怕被人管,但是他们仍然极力配合 我,使得文字、版面、图片和市场工作都达到极高的水准。 5一篇对 Alexander工作成果的肯定文章,包含具部分重要成果的在线链接,可以参 考 Some Notes on Christopher Alexander文。 V11 月录 目录 前言 0.1谁应该看这木书,,, 11 0.2如何使用这木书 0.3相关引文 04木书的习俗约定 0.5所用案例. 0.6作者致谢 目录 I Context 1哲学 1.1文化?什么文化. 1.2Unix的生命力 13反对学习Unx文化的理由 14Unix之失 1.5Unix之得 1.51开源软件 12235577788 1.5.2跨台可移植性和开放标准 15.3 Internet和万维网 1.54开源社区 1.5.5从头到脚的灵活性 156 Unix hack之趣 1.5.7Unix的经验别处也可适用 10 1.6Unix哲学基础 11 【实例截图】
【核心代码】

标签:

实例下载地址

Unix编程艺术

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警