Building Robust Systems an essay -翻译(GJ Sussman)

https://www.researchgate.net/publication/237249977_Building_Robust_Systems_an_essay

Abstract

It is hard to build robust systems: systems that have acceptablebehavior over a larger class of situations than was anticipatedby their designers.

建立强大的系统是很困难的:比架构师原本预期下可以接受更多情况下行为的系统。

The most robust systems are evolvable: they
can be easily adapted to new situations with only minor modification.How can we design systems that are flexible in thisway?

最健壮的系统是可演变的:它们可以轻而易举地适应新的情况,只需要微小的修改。我们如何才能使用一种方法去设计灵活的系统呢?

Observations of biological systems tell us a great deal abouthow to make robust and evolvable systems. Techniques originallydeveloped in support of symbolic Artificial Intelligence canbe viewed as ways of enhancing robustness and evolvability inprograms and other engineered systems. By contrast, commonpractice of computer science actively discourages the constructionof robust systems.

生物系统的观察告诉我们很多如何制作健壮而可演化的系统的方法。 最初开发支持符号计算和人工智能的技术可以被视为增强程序和其他工程系统的鲁棒性和可演进性的方法。 相比之下,计算机科学的习惯做法实际上阻止了健壮系统的建设。

Robustness 抽象

It is difficult to design a mechanism of general utility that does any particular job very well, so most engineered systems are designed to perform a specific job. General-purpose inventions, such as the screw fastener, when they appear, are of great significance. The digital computer is a breakthrough
of this kind, because it is a universal machine that can simulate any other information-processing machine. We write software that configures our computers to effect this simulation for the specific jobs that we need done.

设计一个通用实用程序的结构很难很好的去做任何特定的工作,所以大多数工程系统被设计为执行特定的工作。 一般的发明,如螺丝紧固件,当它们出现时,具有重要意义。 数字电脑是这种发明的一个突破,
这是因为它是可以模拟任何其他信息处理机器的通用机器。 我们可以编写配置我们计算机的软件,以对我们需要完成的特定工作进行模拟。

We have been designing our software to do particular jobs very well, as an extension of our past engineering practice. Each piece of software is designed to do a relatively narrow job. As the problem to be solved changes, the software must be changed. But small changes to the problem to be solved do not entail only small changes to the software. Software is designed too tightly for there to be much flexibility. As a consequence, systems do not evolve gracefully. They are brittle and must be replaced with entirely new designs as the problem domain evolves.1 This is slow and expensive.

我们一直在更好的设计我们的软件来做特定的工作,进而扩展我们过去的工程实践。 每个软件都是设计的做一个相对有限的工作。 随着待解决的问题的变化,软件必须更改。 但是要解决小问题的改变不意味着对软件进行小的更改。 软件设计的太紧,以至于失去很大的灵活性。 因此,系统不会优雅地发展。 它们很脆弱,必须被全新的替代设计作为问题领域的演变.1这是缓慢而昂贵的。

1注解Of course, there are some wonderful exceptions. For example, EMACS [26] is an extensible editor that has evolved gracefully to adapt to changes in the computing environment and to changes in its user’s expectations. The computing world is just beginning to explore “engineered frameworks,” for example, Microsoft’s .net and Sun’s Java. These are intended to be infrastructures to support evolvable systems.

当然有一些奇妙的例外。 例如,EMACS [26]是一个可扩展的编辑器,它适时演进以适应计算环境的变化以及用户期望的变化。 计算世界刚刚开始探索“工程框架”,例如微软的.net和Sun的Java。 这些是旨在支持可演进系统的基础设施。

Our engineered systems do not have to be brittle. The Internet has adapted from a small system to one of global scale. Our cities evolve organically, to accommodate new business models, life styles, and means of transportation and communication. Indeed, from observation of biological systems we see that it is possible to build systems that can adapt to changes in the environment, both individually and as an evolutionary ensemble. Why is this not the way we design and build most software? There are historical reasons, but the main reason is that we don’t know how to do this generally. At this moment it is an accident if a system turns out to be robust to changes in requirements.

我们的工程系统不一定要脆弱。 互联网有
就可以从小型系统过渡为全球规模。 我们的城市有组织的演变,以适应新的商业模式,生活方式和交流,交通运输。 的确,从观察生物学我们看到是可以构建适应多种环境的系统 。在环境中,既是个人的,也是一个进化的组合。 为什么这不是我们设计和构建大多数软件的方式吗? 有历史原因,但主要原因是我们同行不知道如何做到这点。在这个时刻,如果系统对要求的变化是稳健的,这是一个意外。

Redundancy and degeneracy 冗余和退化

Biological systems have evolved a great deal of robustness. One of the characteristics of biological systems is that they are redundant. Organs such as the liver and kidney are highly redundant: there is vastly more capacity than is necessary to do the job, so a person with a missing kidney suffers no obvious incapacity. Biological systems are also highly degenerate: there are usually many ways to satisfy a given requirement.2 For example, if a finger is damaged, there are ways that the other fingers may be configured to pick up an object. We can obtain the necessary energy for life from a great variety of sources: we can metabolize carbohydrates, fats, and proteins, even though the mechanisms for digestion and for extraction of energy from each of these sources is quite distinct.

生物系统已经演变了大量的鲁棒性的特性。 生物系统的特点之一是它们是多余的。 肝脏和肾脏等器官是非常多余的:其有比必要做的工作大得多的能力,所以肾脏缺乏的人不会有明显的丧失工作能力。 生物系统也有高度的退化性:通常有许多方法可以满足给定的要求.2例如,如果手指损坏,则可能有其他手指组合为拾取物体的其他方法。 我们可以从各种来源获得生命所需的能量:即使从这些来源中消化和提取能量的机制是非常明显的,我们可以代谢碳水化合物,脂肪和蛋白质。

The genetic code is itself degenerate, in that the map from codons (triples of nucleotides) to amino acids is not one-to-one: there are 64 possible codons to specify only about 20 possible amino acids. [19] As a consequence, many point mutations do not change the protein specified by a coding region. This is one way variation can accumulate without obvious phenotypic consequences. If a gene is duplicated (not an uncommon occurrence), the copies may diverge silently, allowing the development of variants that may become valuable in the future, without interfering with current viability. In addition, the copies can be placed under different transcriptional controls.

Degeneracy is a product of evolution, and it certainly enables evolution. Probably degeneracy is itself selected for because only creatures that have significant amounts of degeneracy are sufficiently adaptable to allow survival as the environment changes. For example, suppose we have some creature (or engineered system) that is degenerate in that there are several very different interdependent mechanisms to achieve each essential function. If the environment changes (or the requirements change) so that one of the ways of achieving an essential function becomes untenable, the creature will continue to live and reproduce (the system will continue to satisfy its specifications). But the subsystem that has become inoperative is now open to mutation (or repair), without impinging on the viability (or current operation) of the system as a whole.

Engineered systems may incorporate some redundancy, in critical systems where the cost of failure is extreme. But they almost never intentionally incorporate degeneracy of the kind found in biological systems, except as a side effect of designs that are not optimal.3

Exploratory Behavior 探索行为

One of the most powerful mechanisms of robustness in biological systems is exploratory behavior.4 The idea is that the desired outcome is produced by a generate-and-test mechanism. This organization allows the generator mechanism to be general and to work independently of the testing mechanism that accepts or rejects a particular generated result.

For example, an important component of the rigid skeleton that supports the shape of a cell is an array of microtubules. Each microtubule is made up of protein units that aggregate to form the microtubule. Microtubules are continually created and destroyed in a living cell; they are created growing out in all directions. However, only microtubules that encounter a stabilizer in the cell membrane are stable, thus supporting the shape determined by the positions of the stabilizers. So the mechanism for growing and maintaining a shape is relatively independent of the mechanism for specifying the shape. This mechanism partly determines the shapes of many types of cells in a complex organism, and it is almost universal in metazoans.

Exploratory behavior appears at all levels of detail in biological systems. The nervous system of a growing embryo produces a vastly larger number of neurons than will persist in the adult. Those neurons that find appropriate targets in other neurons, sensory organs, or muscles will survive and those that find no targets kill themselves. The hand is fashioned by production of a pad and deletion, by apoptosis, of the material between the fingers. [34] Our bones are continually being remodeled by osteoblasts (which build bone) and osteoclasts (which destroy bone). The shape and size of the bones is determined by constraints determined by their environment: the parts that they must be associated with, such as muscles, ligaments, tendons, and other bones.

Because the generator need not know about how the tester accepts or rejects its proposals, and the tester need not know how the generator makes its proposals, the two parts can be independently developed. This makes adaptation and evolution more efficient, because a mutation to one or the other of these two subsystems need not be accompanied by a complementary

你可能感兴趣的:(翻译)