InfoQ编辑们的推荐书目

最近我们InfoQ编辑小组进行了一次交流,内容是关于我们最想推荐给InfoQ读者的,且在我们看来对程序员,架构师和管理人员最有影响力的书籍。下面是我们最终商议的16本书,其中还包括一些其它技巧,以及来自推荐这些书的编辑们的一些评论。

\

Alex Blewitt

解析极限编程(Extreme Programming Explained)(Kent Back)是一本不错的极限编程(XP)入门书,它能够让你即使在从未了解过任何敏捷方法的情况下,也能够很好地进行阅读。但是,还不能将它作为一本参考书来看。

\

我的参考指南是《算法导论(An introduction to algorithms)》(Cormen/Leiserson/Rivest/Stein),它是一本非常详尽和值得阅读的书籍。

\

可能你没听说过John Smith写的《麻烦的IT项目(Troubled IT Project)》,但是实际上它介绍了许多在管理项目时可能出错的事情。不仅如此,它还可以用来充当你手头所做项目的记分卡……

\

虽然我推荐的书籍可能要由你的经验水平和喜爱(或者说应该被推荐)的书籍类型来决定,但是我想它们还是非常值得一读的。Kent的XP书籍非常适合新手以及不熟悉敏捷的朋友,而Cockburn的书则更加适合于用经验的人。同样地,我不会硬把《算法导论》塞给一个什么都不知道的新手,但是如果你想知道怎样实现B树或者想了解如何衡量算法时间复杂度,那就绝对是必要的了。

\

Deborah Hartmann

\在高度协作的敏捷编程开发环境下,Jean Tabaka的著作《协作精解:软件项目领导的改进技巧(Collaboration Explained: Facilitation Skills for Software Project Leaders)》为疑难管理问题提供了解决之道,这些疑难管理问题诸如冲突(conflict)、人际沟通(interpersonal communication)和时间约束(time constraint)等等。如果你厌恶开会或者相信开会应该改进,不论是否参与敏捷项目,都应当阅读这本书!

\

Charles Humble

\《计算机程序语言编译与设计(Structure and Interpretation of Computer Programs)》,作者为Harold Abelson,Gerald Jay Sussman,和Julie Sussman:一年前我在和一个朋友谈起我的代码能力停滞不前时,他向我推荐了'SIC-P'。这不是一本特别容易的书,如果你正在为某个问题寻找快速的解决方案,那么它不是你要找的。相反它是一本有益的,且需要精读的书。它对我编程上的影响要远大于其他任何书籍。

\

设计模式(Design Patterns)》,作者为 Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides:这是继SIC-P后又一本好书,虽然我得承认在第一次阅读的时候并不是很喜欢它。但是无可否认,这本书包含了丰富的面向对象设计专业知识,在我起初阅读的时候,只是觉得这些是有趣的理论,它们不会被真正使用到。但是随着时间的推移,我越来越多地体会到其中的思想,并且当我在进行设计工作时我仍然会不断地参考它。强烈推荐。

\

Mark Levinson

敏捷软件开发:合作的游戏(第二版)(Agile Software Development: A Cooperative Game)》,作者Alistair Cockburn:这是我读过的关于敏捷软件开发的最有趣的书。Alistair在书中并没有讨论任何一个方法,反而分析了形势运筹(game play),个体交流(individual communication)以及团队合作(team cooperation):这些都是软件开发中核心的元素。该书还包含了部分软件之外的敏捷,以及对各种方法的综述等等。

\《团队的智慧》作者:Jon Katzenbach 和 Douglas Smith:书中 Katzenbach 和 Smith 通过研究许多行业中的真实团队,对“是什么为这些团队带来了成功”这个问题给出了一些真实并且严格地分析。书的末尾处你会发现“没什么能够确保创建高绩效的团队。你能做得最好的事情就是在合适的环境下来帮助形成这样的团队”。这本书和我的为什么Scrum可行系列异曲同工。

\

Srini Penchikala

\《企业应用架构模式(Patterns of Enterprise Application Architecture)》,作者Martin Fowler:我之所以喜爱这本书,是因为它涵盖了软件开发项目中架构师或开发人员碰到的大量设计问题。它可能是最好的模式书籍(连同四人组的《设计模式》),书中覆盖了像领域逻辑、表现层、会话状态管理,以及对象关系结构行为模式的主题。不管你现在是仍然使用之前的EJB3 J2EE技术,JEE,还是在使用轻量级的像Hibernate和Spring的框架,抑或是使用一个.Net应用程序,这本书中讨论的模式都是相关且有效的。这是一本每一个开发人员都必须阅读和拥有的书籍。

\《领域驱动设计(Domain-Driven Design)》,作者Eric Evans:自从该书在2004年面世以来,它已经成为了软件开发社区的一个极好的参考书。它强调协调软件设计和开发中的业务领域的重要性。书中讨论的一些概念,如通用语言(Ubiquitous Language),模型驱动设计(Model-Driven Design),界定上下文(Bounded Context)和防护层(Anti-Corruption Layer),可用于任何大中型业务领域以管理领域模型的复杂性。读完该书后,我开始在我的项目中尽可能地使用DDD准则,并且我已经可以成功地消除贫血模型(Anemic Domain Model)和用一种更加面向对象的方法来处理领域逻辑了。书中讨论的概念都是独立于技术和框架的,因此它们可以应用在任何基于Java,.Net或者其他技术的软件开发项目中。此外,该书还促使我在去年发表了“领域驱动设计与开发实践”的文章。这本书是从事创建和管理业务领域的软件开发人员的必读之书。

\《企业集成模式:设计、构建及部署消息传递解决方案(Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solution)》,作者Gregor Hohpe 和 Bobby Woolf:在我2004年第一次阅读该书的时候,就喜欢上了它。作者很好地组织并介绍了企业应用程序中平时用到的一些有用的异步设计模式,特别是那些涉及多系统集成的模式。该书主要讨论了各种集成风格,包括异步传递模式的核心“Messaging”技术。书中的例子包括了流行的借贷经纪人管理应用程序,该应用程序在当前的好几个ESB框架中都有实现。这本书对当前的SOA集成和ESB框架(像ServiceMixMuleSpring Integration)是一个不错的响应,因为这些框架均能支持书中提到的集成模式。

\《人件(Peopleware - Productive Projects and Teams)》,作者Tom DeMarco 和 Timothy Lister:去年在一个朋友的推荐下阅读了该书。我不得不说它是我读过的最具影响力的书。书中作者借助了工业界的例子,调查和统计,说明了软件开发中的主要问题在于人(因此书名为人件(Peopleware)),而不是技术(像硬件或是软件)。他们认为开发人员,设计人员和其他脑力劳动者在达到了一个叫做“流”的境界后,可以在解决复杂问题上取得重大进展。而任何的打扰,不管是一封Email,一个电话,或者是一次起身走动,都会打破这个流,并且需要时间(根据统计平均需要15分钟)来重新回到流中。根据作者的观点,一个管理人员的工作不是让他的小组成员去工作,而是让他们有可能地去工作。该书距首次出版已过去了20多年,但是书中提到的概念仍然是相关且有效的,纵使它之后出现了许多新的软件开发方法和框架,以及敏捷项目的管理方法。这本书对于每一个管理人员和团队领头人都是必读之书,因为他们的职责就是管理小组人员。我不止一次地向每一位软件经理强烈推荐此书。

\

Werner Schuster

\《Pragmatic Thinking and Learning: Refactor Your Wetware》,作者Andy Hunt:这本书将实用主义程序员的观点带到了其应许之地:它扎根于我们的大脑之中。对于那些使用Dreyfus学习模式的人们,书中提供了大量方法,可以帮助他们更好地阅读,工作等。

\

Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture》,作者Jon Stokes:这本书收集了Ars Technica上多年来关于CPU和其他技术的文章。Jon Stokes('Hannibal')揭开了CPU的黑盒,道出各种玄机——包括现代CPU,如当前的X86和Power处理也不例外。了解指令融合(instruction fusion)如何帮助改善重排序缓存(reorder buffer)效率,对于讨论饮水冷却器(water cooler)是大有裨益的,而了解存储器层次结构(memory hierarch)和缓存行为(cache behavior )如何影响现代CPU的性能只能帮助你优化皮毛。

\再来看看HOPL会议的论文集。大多数论文都能在线查看,当然也有打印版本。似乎与C语言一样具有单调命令式和括号的语言都可以使用不同的范式形成。随着这些东西的不断变化:未来的语言或是思想在十年里形成。HOPL的论文是许多语言的详细历史,其中既包括了曾经令人瞩目或者将要令人刮目相看的语言,像 Smaltalk,Erlang,Lua,Lisp或者其他语言。

\

Alan Kay的关于《Smaltalk早期历史(The Early History of Smalltal)》的论文包含了许多丰富的信息。每年我都会读这篇文章,并且每次读完后都会发现一些新的东西;上次阅读之后我意识到了Smaltalk最初是基于Actors模型的。

\

HOPL的论文显然主要关注的是历史——但是我发现许多开发人员都不知道发生的这些事件和之前形成的技术,哦,1995。当把一个有着40年历史的技术展现给‘经验丰富的’开发人员,而看到他们半信半疑时,确实有点令人不安(这就像是Prometheus赋予的新礼物,尽管它们会很快令人乏味)。

\

Ryan Slobojan

\《Effective Java》,作者Joshua Bloch:这本书已经成了Java开发中的圣经宝典之一。它让读者理解的不仅仅是语言本身(很多其他书籍都仅仅如此),还包括如何最高效的使用Java语言和API来创建快速,可靠,可扩展以及可维护的软件。书中的许多准则对其他编程语言也同样适用,正如优秀软件设计的大量理念都是通用的。读完该书后,我发现我写的代码有些不一样——阅读它们变得很容易,总共的代码行数减少了,并且在我隔段时间回过头来修复bug时变得很轻松。我觉得这本书对于使用Java语言进行开发的任何人都是一个必读之书——它告诉的不仅仅是那里是什么,它还告诉你何时怎样来最有效的使用它。

\

Stefan Tilkov

\近些年我读的最好的一本书就是Michael Nygard的《Release It!》——涵盖了来自多位管理人员的实际建议。该书还包含了许多大规模系统失效的故事,并且Michael利用他丰富的经验提取出了一些通用的反模式 (anti-patterns)和问题,这些问题在原始设计中反反复复出现。他接着说明了如何使用恰当的模式来解决这些问题。我觉得这本书由于包含了许多实际生活中的趣闻轶事,以及构建可用的系统时需要的实际建议,而极具娱乐性。

\

查看英文原文:InfoQ Editors' Recommended Reading List

\

感谢霍泰稳对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。

成都市作为中国西部地区具有战略地位的核心都市,其人口的空间分布状况对于城市规划、社会经济发展及公共资源配置等研究具有基础性数据价值。本文聚焦于2019年度成都市人口分布的空间数据集,该数据以矢量格式存储,属于地理信息系统中常用的数据交换形式。以下将对数据集内容及其相关技术要点进行系统阐述。 Shapefile 是一种由 Esri 公司提出的开放型地理空间数据格式,用于记录点、线、面等几何要素。该格式通常由一组相互关联的文件构成,主要包括存储几何信息的 SHP 文件、记录属性信息的 DBF 文件、定义坐标系统的 PRJ 文件以及提供快速检索功能的 SHX 文件。 1. **DBF 文件**:该文件以 dBase 表格形式保存与各地理要素相关联的属性信息,例如各区域的人口统计数值、行政区划名称及编码等。这类表格结构便于在各类 GIS 平台中进行查询与编辑。 2. **PRJ 文件**:此文件明确了数据所采用的空间参考系统。本数据集基于 WGS84 地理坐标系,该坐标系在全球范围内广泛应用于定位与空间分析,有助于实现跨区域数据的准确整合。 3. **SHP 文件**:该文件存储成都市各区(县)的几何边界,以多边形要素表示。每个多边形均配有唯一标识符,可与属性表中的相应记录关联,实现空间数据与统计数据的联结。 4. **SHX 文件**:作为形状索引文件,它提升了在大型数据集中定位特定几何对象的效率,支持快速读取与显示。 基于上述数据,可开展以下几类空间分析: - **人口密度评估**:结合各区域面积与对应人口数,计算并比较人口密度,识别高密度与低密度区域。 - **空间集聚识别**:运用热点分析(如 Getis-Ord Gi* 统计)或聚类算法(如 DBSCAN),探测人口在空间上的聚集特征。 - **空间相关性检验**:通过莫兰指数等空间自相关方法,分析人口分布是否呈现显著的空间关联模式。 - **多要素叠加分析**:将人口分布数据与地形、交通网络、环境指标等其他地理图层进行叠加,探究自然与人文因素对人口布局的影响机制。 2019 年成都市人口空间数据集为深入解析城市人口格局、优化国土空间规划及完善公共服务体系提供了重要的数据基础。借助地理信息系统工具,可开展多尺度、多维度的定量分析,从而为城市管理与学术研究提供科学依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值