The Architecture of Open Source Applications——阅读笔记part 1
Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.
Our goal is to change that. In these two books, the authors of four dozen open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to these books provide unique insights into how they think.
If you are a junior developer, and want to learn how your more experienced colleagues think, these books are the place to start. If you are an intermediate or senior developer, and want to see how your peers have solved hard design problems, these books can help you too.
Introduction
Amy Brown and Greg Wilson
Carpentry is an exacting craft, and people can spend their entire lives learning how to do it well. But carpentry is not architecture: if we step back from pitch boards and miter joints, buildings as a whole must be designed, and doing that is as much an art as it is a craft or science.(木工是一个严格的工艺,人们可以花他们的整个生命去学习如何做得很好。但木工不是建筑,建筑必须整体设计,这样做是一个艺术,因为它是一个工艺或科学。)
Programming is also an exacting craft, and people can spend their entire lives learning how to do it well. But programming is not software architecture. Many programmers spend years thinking about (or wrestling with) larger design issues: Should this application be extensible? If so, should that be done by providing a scripting interface, through some sort of plugin mechanism, or in some other way entirely? What should be done by the client, what should be left to the server, and is "client-server" even a useful way to think about this application? These are not programming questions, any more than where to put the stairs is a question of carpentry.(编程不是软件架构)
Building architecture and software architecture have a lot in common, but there is one crucial difference. While architects study thousands of buildings in their training and during their careers, most software developers only ever get to know a handful of large programs well. And more often than not, those are programs they wrote themselves. They never get to see the great programs of history, or read critiques of those programs' designs written by experienced practitioners. As a result, they repeat one another's mistakes rather than building on one another's successes.
This book is our attempt to change that. Each chapter describes the architecture of an open source application: how it is structured, how its parts interact, why it's built that way, and what lessons have been learned that can be applied to other big design problems. The descriptions are written by the people who know the software best, people with years or decades of experience designing and re-designing complex applications. The applications themselves range in scale from simple drawing programs and web-based spreadsheets to compiler toolkits and multi-million line visualization packages. Some are only a few years old, while others are approaching their thirtieth anniversary. What they have in common is that their creators have thought long and hard about their design, and are willing to share those thoughts with you. We hope you enjoy what they have written.
Contributors
Eric P. Allman (Sendmail): Eric Allman is the original author of sendmail, syslog, and trek, and the co-founder of Sendmail, Inc. He has been writing open source software since before it had a name, much less became a "movement". He is a member of the ACM Queue Editorial Review Board and the Cal Performances Board of Trustees. His personal web site is http://www.neophilic.com/~eric.
略
相关文章
- Mysql 的异常:The last packet successfully received from the server was 90 milliseconds ago. The last packet sent successfully to the server was 43,603,303 milliseconds ago. is longer than the server con
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(四)
- ≪统计学习精要(The Elements of Statistical Learning)≫课堂笔记(二)
- Coursera台大机器学习课程笔记6 -- The VC Dimension
- 【异常】The dependencies of some of the beans in the application context form a cycle
- 使用wifi网卡笔记2----概念及工具iw(STA模式)
- The nodes should be added to the underlying vendor clusterware before adding them to the CRS cluster
- Python学习笔记之常用函数及说明
- ObjectArx学习笔记-acedGetXXX
- nginx图片过滤处理模块http_image_filter_module安装配置笔记
- The data replication requires the processing of single BDoc instances
- One order OPPORT_H read的学习笔记
- 【操作系统笔记04】操作系统之内存管理方式(分页、分段、段页式)、虚拟存储技术、页面置换算法
- 【Android笔记10】Android基本的UI控件(DatePicker、DatePickerDialog、TimePicker、TimePickerDialog)
- 【MyBatis笔记12】MyBatis中二级缓存相关配置内容
- 【SpringMVC笔记14】SpringMVC集成Jackson和FastJson两种方式处理json数据
- The specified Android SDK Build Tools version (29.0.0) is ignored, as it is below the minimum suppor
- NLP:LSTM之父眼中的深度学习十年简史《The 2010s: Our Decade of Deep Learning / Outlook on the 2020s》的参考文献
- 什么是 Web3?解读未来的去中心化网络:The Decentralized Internet of the Future Explained
- [TroubleShootin]The backup set holds a backup of a database other than the existing 'xxdb' database.
- The encryption certificate of the relying party trust identified by thumbprint is not valid
- 问题解决:The connection to the server xxxxx:6443 was refused - did you specify the right host or port?
- `Warning: The default method for RunUMAP has changed from calling Python UMAP via reticulate to the
- macOS The bottle needs the Xcode CLT to be installed
- Andrew NG机器学习课程笔记系列之——机器学习之逻辑回归(Logistic Regression)
- 【2023年4月美赛加赛】Z题:The Future of the Olympics 思路、建模方案、数据来源、相关资料
- 存在隐患 : 3 racks are required for the erasure coding policies: RS-6-3-1024k. The number of racks is on
- 深度学习笔记:使用预训练模型之在线特征提取+数据增强
- C/C++学习笔记 资源获取是初始化 (RAII) 理解