软件下载站,为您提供安全的软件下载!

当前位置:首页 > 电脑专区 > 应用软件 > 电子阅读 > 代码之美pdf高清文字完整版

代码之美pdf高清文字完整版

分享到:
代码之美2009年01月由机械工业出版社出版,是一本讨论代码之美的经典电子书籍。美除了让人欣赏,还能带来金钱。因北京奥运的成功,博尔特的速度之美估计价值上千万美元。美丽的软件也一样。美丽的软件带来的经济利益也是很可观的。小编分享的这本发行代码之美介绍了人类在一个奋斗领域中的创造性和灵活性:计算机系统的开发领域。在每章中的漂亮代码都是来自独特解决方案的发现,而这种发现是来源于作者超越既定边界的远见卓识,并且识别出被多数人忽视的需求以及找出令人叹为观止的问题解决方案。代码之美33章,有38位作者,每位作者贡献一章。每位作者都将自己心目中对于“美丽的代码”的认识浓缩在一章当中,张力十足。38位大牛,每个人对代码之美都有自己独特的认识,现在一览无余的放在一起,对于热爱程序的每个人都不啻一场盛宴。虽然本书的涉猎范围很广,但也只能代表一小部分在这个软件开发这个最令人兴奋领域所发生的事情。这本书适合所有感兴趣的程序员们,除了完成任务以外让自己手上的代码更具美感,也算是每个作为程序员梦想的小小坚持吧。
代码之美

免责声明:

来源于网络,仅用于分享知识,学习和交流!请下载完在24小时内删除。
禁用于商业用途!如果您喜欢《代码之美》,请购买正版,谢谢合作。
爱学习,请到3322软件站查找资源自行下载!

代码之美目录:

第1章 正则表达式匹配器
第2章 subversion中的增量编辑器:像本体一样的接口
第3章 我从未编写过的最漂亮代码
第4章 查找
第5章 正确、优美、迅速(按重要性排序):从设计xml验证器中学到的经验
第6章 集成测试框架:脆弱之美
第7章 美丽测试
第8章 图像处理中的即时代码生成
第9章 自顶向下的运算符优先级
第10章 追求加速的种群计数
第11章 安全通信:自由的技术
第12章 在bioperl里培育漂亮代码
第13章 基因排序器的设计
第14章 优雅代码随硬件发展的演化
第15章 漂亮的设计会给你带来长远的好处
第16章,linux内核驱动模型:协作的好处
第17章 额外的间接层
第18章 python的字典类:如何打造全能战士
第19章 numpy中的多维迭代器
第20章 nasa火星漫步者任务中的高可靠企业系统
第21章 erp5:最大可适性的设计
第22章 一匙污水
第23章 mapreduce分布式编程
第24章 美丽的并发
第25章 句法抽象:syntax-case 展开器
第26章 节省劳动的架构:一个面向对象的网络化软件框架
第27章 以rest方式集成业务伙伴
第28章 漂亮的调试
第29章 把代码当作文章
第30章 当你与世界的联系只有一个按钮
第31章 emacspeak:全功能音频桌面
第32章 变动的代码
第33章 为“the book”编写程序
后记
作者简介

精彩书摘:

第3章 我从未编写过的最漂亮的代码
Jon Bentley我曾经听一位大师级的程序员这样称赞到,“我通过删除代码来实现功能的提升。”而法国著名作家兼飞行家Antoine.deSaint-Exupéry的说法则更具代表性,“只有在不仅没有任何功能可以添加,而且也没有任何功能可以删除的情况下,设计师才能够认为自己的工作已臻完美。”某些时候,在软件中根本就不存在最漂亮的代码,最漂亮的函数,或者最漂亮的程序。
当然,我们很难对不存在的事物进行讨论。本章将对经典Quicksort(快速排序)算法的运行时间进行全面的分析,并试图通过这个分析来说明上述观点。在第一节中,我将首先根据我自己的观点来回顾一下Quicksort,并为后面的内容打下基础。第二节的内容将是本章的重点部分。我们将首先在程序中增加一个计数器,然后通过不断地修改,从而使程序的代码变得越来越短,但程序的功能却会变得越来越强,最终的结果是只需要几行代码就可以使算法的运行时间达到平均水平。在第三节将对前面的技术进行小结,并对二分搜索树的运行开销进行简单的分析。最后的两节将给出学完本章得到的一些启示,这将有助于你在今后写出更为优雅的程序。
3.1 我编写过的最漂亮代码
当GregWilson最初告诉我本书的编写计划时,我曾自问编写过的最漂亮的代码是什么。这个有趣的问题在我脑海里盘旋了大半天,然后我发现答案其实很简单:Quicksort算法。但遗憾的是,根据不同的表达方式,这个问题有着三种不同的答案。
当我撰写关于分治(divide-and-conquer)算法的论文时,我发现C.A.R.Hoare的Quicksort算法(“Quicksort”,Computer.Journal5)无疑是各种Quicksort算法的鼻祖。这是一种解决基本问题的漂亮算法,可以用优雅的代码实现。我很喜欢这个算法,但我总是无法弄明白算法中最内层的循环。我曾经花两天的时间来调试一个使用了这个循环的复杂程序,并且几年以来,当我需要完成类似的任务时,我会很小心地复制这段代码。虽然这段代码能够解决我所遇到的问题,但我却并没有真正地理解它。
我后来从NicoLomuto那里学到了一种优雅的划分(partitioning)模式,并且最终编写出了我能够理解,甚至能够证明的Quicksort算法。WilliamStrunkJr.针对英语所提出的“良好的写作风格即为简练”这条经验同样适用于代码的编写,因此我遵循了他的建议,“省略不必要的字词”(来自《TheElements.of.Style》一书)。我最终将大约40行左右的代码缩减为十几行的代码。因此,如果要回答“你曾编写过的最漂亮代码是什么?”这个问题,那么我的答案就是:在我编写的《ProgrammingPearls, SecondEdition》(Addison-Wesley)一书中给出的Quichsort算法。在示例3-1中给出了用C语言编写的Quicksort函数。我们在接下来的章节中将进一步地研究和改善这个函数。
【示例】 3-1 Quicksort函数void quicksort(int l, int u)
{int i, m;
if (l >= u) return;
swap(l, randint(l, u));
m = l;
for (i = l+1; i <= u; i++)
if (x[i] < x[l])
swap(++m, i);
swap(l, m);
quicksort(l, m-1);
quicksort(m+1, u);}
如果函数的调用形式是quicksort(0,n-1),那么这段代码将对一个全局数组x[n]进行排序。函数的两个参数分别是将要进行排序的子数组的下标:l是较低的下标,而u是较高的下标。函数调用swap(i,j)将会交换x〔i〕与x〔j〕这两个元素。第一次交换操作将会按照均匀分布的方式在l和u之间随机地选择一个划分元素。
在《ProgrammingPearls》一书中包含了对Quicksort算法的详细推导以及正确性证明。在本章的剩余内容中,我将假设读者熟悉在《ProgrammingPearls》中所给出的Quicksort算法以及在大多数初级算法教科书中所给出的Quicksort算法。
如果你把问题改为“在你编写那些广为应用的代码中,哪一段代码是最漂亮的?”我的答案还是Quicksort算法。在我和M.D.McIlroy一起编写的一篇文章("Engineering.a.sort.function,"Software-Practiceand.Experience,Vol.23,No.11)中指出了在原来Unixqsort函数中的一个严重的性能问题。随后,我们开始用C语言编写一个新排序函数库,并且考虑了许多不同的算法,包括合并排序(MergeSort)和堆排序(HeapSort)等算法。在比较了Quicksort的几种实现方案后,我们着手创建自己的Quicksort算法。在这篇文章中描述了我们如何设计出一个比这个算法的其他实现要更为清晰,速度更快以及更为健壮的新函数——部分原因是由于这个函数的代码更为短小。GordonBell的名言被证明是正确的:“在计算机系统中,那些最廉价,速度最快以及最为可靠的组件是不存在的。”现在,这个函数已经被使用了10多年的时间,并且没有出现任何故障。
考虑到通过缩减代码量所得到的好处,我最后以第三种方式来问自己在本章之初提出的问题。“你没有编写过的最漂亮代码是什么?”。我如何使用非常少的代码来实现大量的功能?答案还是和Quicksort有关,特别是对这个算法的性能分析。我将在下一节给出详细介绍。
……

下载说明:

方法一:
1、下载并解压,得出pdf文件
2、如果打不开本文件,别着急,这时候请务必在3322软件站选择一款阅读器下载哦
3、安装后,再打开解压得出的pdf文件
4、以上都完成后,接下来双击进行阅读就可以啦,朋友们开启你们的阅读之旅吧。
方法二:
1、可以在手机里下载3322软件站中的阅读器和百度网盘
2、接下来直接将pdf传输到百度网盘
3、用阅读器打开即可阅读
展开更多

软件截图

扫描二维码,手机下载APP

软件下载站本地下载

相关文章