Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

组合软件:书 #6832

Merged
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 39 additions & 39 deletions TODO1/composing-software-the-book.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,67 +2,67 @@
> * 原文作者:[Eric Elliott](https://medium.com/@_ericelliott)
> * 译文出自:[掘金翻译计划](https://github.com/xitu/gold-miner)
> * 本文永久链接:[https://github.com/xitu/gold-miner/blob/master/TODO1/composing-software-the-book.md](https://github.com/xitu/gold-miner/blob/master/TODO1/composing-software-the-book.md)
> * 译者:
> * 译者:[zoomdong](https://github.com/fireairforce)
> * 校对者:

# Composing Software: The Book
# 组合软件:书

![Smoke Art Cubes to Smoke — MattysFlicks — (CC BY 2.0)](https://cdn-images-1.medium.com/max/10302/1*uVpU7iruzXafhU2VLeH4lw.jpeg)

> **Note:** This is part of the [**“Composing Software” book**](https://leanpub.com/composingsoftware) that started life right here as a blog post series. It covers functional programming and compositional software techniques in JavaScript (ES6+) from the ground up. [“Composing Software” is also available in Print](https://www.amazon.com/Composing-Software-Exploration-Programming-Composition/dp/1661212565/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=eejs-20&linkId=eee1371063c82dea4c2fc72c097868c6&language=en_US).
> **注意:** 这是[**“组合软件”**系列丛书](https://leanpub.com/composingsoftware)的一部分,它最初是以一个博客系列出现。它从头到尾地包含了 JavaScriptES6+)中的函数式编程和组合软件技术。[“组合软件”同样也有印刷版本](https://www.amazon.com/Composing-Software-Exploration-Programming-Composition/dp/1661212565/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=eejs-20&linkId=eee1371063c82dea4c2fc72c097868c6&language=en_US)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

**“组合软件”**系列丛书 => **“组合软件”系列丛书**

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

它最初是以一个博客系列出现 => 它最初以一个博客文章系列的形式出现在这里


"Composing Software”, the hit blog post series on functional programming and software composition in JavaScript is now a [best selling book on Leanpub](https://leanpub.com/composingsoftware). Also available [in print](https://www.amazon.com/Composing-Software-Exploration-Programming-Composition/dp/1661212565/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=eejs-20&linkId=eee1371063c82dea4c2fc72c097868c6&language=en_US).
“组合软件”是一个热门的博客文章系列,介绍了 JavaScript 中的函数式编程和软件组合,现在是 [Leanpub 上最畅销的书](https://leanpub.com/composingsoftware)。同样可以[印刷](https://www.amazon.com/Composing-Software-Exploration-Programming-Composition/dp/1661212565/ref=as_li_ss_tl?ie=UTF8&linkCode=ll1&tag=eejs-20&linkId=eee1371063c82dea4c2fc72c097868c6&language=en_US)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

同样可以印刷 。 => 也有印刷版本


On February 18th, 2017, I started writing a blog post on functional programming. [“The Rise and Fall and Rise of Functional Programming”](https://medium.com/javascript-scene/the-rise-and-fall-and-rise-of-functional-programming-composable-software-c2d91b424c8c) was to serve as an introductory article for a series of articles on software composition. I had no idea when I started writing that it would attract more than 100,000 readers, or that the articles that followed would attract over a million aggregate reads, or that it would become [a book](https://leanpub.com/composingsoftware) and jump up the Leanpub best sellers list the week it was announced.
2017 年 2 月 8 日,我开始写一篇关于函数式编程的博客文章。[“跌宕起伏的函数式编程”](https://medium.com/javascript-scene/the-rise-and-fall-and-rise-of-functional-programming-composable-software-c2d91b424c8c) 作为有关软件组合一系列文章的介绍文章。当我开始写作的时候,我并不知道它会吸引超过 10 万的读者,也不知道接下来的文章会吸引超过 100 万的总阅读量,更不知道它会成为[一本书](https://leanpub.com/composingsoftware),并在发布的一周内跃升到 Leanpub 畅销书排行榜。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

更不知道它会成为一本书 => 更不知道它能够出版

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

作为有关软件组合一系列文章的介绍文章 => 作为一系列有关软件组合的文章的介绍文章

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「也不知道接下来的文章会吸引超过 100 万的总阅读量」
=>
「也不知道接下来的文章会有超过 100 万的总阅读量」

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「作为有关软件组合一系列文章的介绍文章」
=>
「作为《软件组合》系列的介绍文章」


My sincere thanks go out to JS Cheerleader, who made the book better in too many ways to list. If you find the text readable, it is because she carefully poured over every page and offered insightful feedback and encouragement every step of the way. Without her help, you would not be reading this right now.
我衷心感谢 JS Cheerleader,他使这本书在很多方面变得更好。如果你觉得这些文章是易于阅读的,那是因为他仔细地校验了每一页,并在每一步都提供了深刻的反馈和鼓励。没有他的帮助,你现在就不会读到这些文章。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

那是因为他仔细地校验了每一页 => 那是因为她仔细地校对了每一页

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

没有他的帮助 => 没有她的帮助

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他使这本书在很多方面变得更好 => 她让这本书在很多方面都变得更好


Thanks to the blog readers, who’s support and enthusaism helped us turn a little blog post series into a phenomenon that attracted millions of reads and provided the momentum we needed to turn it into a book.
感谢博客的读者,他们的支持和热情帮助我们把一个小小的博客文章系列变成了一个吸引数百万读者的现象,并为我们提供了把它变成一本书的动力。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他们的支持和热情帮助我们把一个小小的博客文章系列变成了一个吸引数百万读者的现象 => 他们的热情支持帮助我们把这个小小的博客文章系列变成了一个吸引了数百万读者的现象级文章系列

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「他们的支持和热情帮助我们把一个小小的博客文章系列变成了一个吸引数百万读者的现象」
=>
「你们的支持和热情帮助让我们一个小小的博客文章系列吸引了数百万读者」


Thanks to the legends of computer science who paved the way.
感谢计算机科学的传奇为我们铺平了道路。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

感谢计算机科学的传奇为我们铺平了道路。 => 感谢计算机科学领域中为我们铺平了道路的传奇人物们。


> “If I have seen further it is by standing on the shoulders of giants.” ~ Sir Isaac Newton
> “如果说我看得更远,那是因为我站在巨人的肩膀上。” —— 艾萨克·牛顿爵士

All software development is composition: The act of breaking a complex problem down to smaller parts, and then composing those smaller solutions together to form your application.
组合是所有的软件开发方式:将复杂的问题分解成更小的部分,然后将这些更小的解决方案组合在一起,形成你的应用程序。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
组合是所有的软件开发方式:将复杂的问题分解成更小的部分,然后将这些更小的解决方案组合在一起,形成你的应用程序
组合是所有的软件开发方式:将复杂的问题分解成更小的部分,然后将这些更小的解决方案组合在一起,组成了应用程序


But I noticed while interviewing candidates for software development jobs, almost none of them could describe what composition is in the context of software. When I asked “what is function composition?” or “what is object composition?” in interviews, I got… stammers. Crickets. Nothing.
但是我在面试软件开发工作的候选人时注意到,几乎没有人能描述软件环境中的组合。当我在面试的时候问 “什么是函数组合?” 或者 “什么是对象组合?”,得到的确实支支吾吾的回答以及没有任何实质的内容。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

几乎没有人能描述软件环境中的组合 => 几乎没有人能描述出什么是软件环境中的组合。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

得到的确实支支吾吾的回答以及没有任何实质的内容 => 得到的却是支支吾吾的或者没有任何实质的内容的回答

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

但是我在面试软件开发工作的候选人时注意到
=>
但是我在面试软件开发工作的面试者时注意到

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

几乎没有人能描述软件环境中的组合
几乎没有人能描述软件上下文中的组合

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

得到的确实支支吾吾的回答以及没有任何实质的内容。
=>
得到的确实支支吾吾的或者没有任何实质性内容的回答。


How could this be? How could 99% of professional developers — some with 10+ years’ of software development experience not know definitions or examples of the two most basic forms of composition in software engineering? Everybody composes functions and objects in the process of building software on a daily basis, so how could so many people not understand the basic foundations of those techniques?
怎么会这样呢?99%的专业开发人员 —— 有些拥有 10 年以上的软件开发经验 —— 怎么可能不知道软件工程中两种最基本的组合形式的定义或例子呢?在每天构建软件的过程中,每个人都在组合函数和对象,那么怎么会有那么多人不理解这些技术的基本原理呢?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

怎么可能不知道软件工程中两种最基本的组合形式的定义或例子呢 => 怎么可能不知道软件工程中组合的两种最基础形式的定义或例子呢

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
怎么会这样呢?99%的专业开发人员 —— 有些拥有 10 年以上的软件开发经验 —— 怎么可能不知道软件工程中两种最基本的组合形式的定义或例子呢?在每天构建软件的过程中,每个人都在组合函数和对象,那么怎么会有那么多人不理解这些技术的基本原理呢?
怎么会这样呢?99% 的专业开发人员 —— 有些拥有 10 年以上的软件开发经验 —— 怎么可能不知道软件工程中两种最基本的组合形式的定义或例子呢?每个人每天都在构建软件的过程中组合函数和对象,那么怎么会有那么多人不理解这些技术的基本原理呢?


The fact is that composition simply isn’t a subject that people pay attention to, or teach well, or learn. It occurred to me that maybe this is why [overcomplicating things is the single biggest mistake software developers make every day](https://medium.com/javascript-scene/the-single-biggest-mistake-programmers-make-every-day-62366b432308). When you don’t know how to fit lego blocks together, you might break out the duct-tape and crazy glue and go nuts… to the detriment of the software, your teammates, and your users.
事实上,组合根本不是一门人们关注、教得好、学得好的学科。我突然想到,也许这就是为什么过度复杂化是软件开发人员每天犯的最大错误。当你不知道如何把乐高积木拼在一起时,你可能会弄坏胶带和胶水,然后变得烦躁......损害软件、你的队友和用户。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

也许这就是为什么过度复杂化是软件开发人员每天犯的最大错误。 => 也许这就是为什么这篇文章说“过度复杂化是软件开发人员每天犯的最大错误”的原因。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

损害软件、你的队友和用户。 => 同理,你也将会损害软件、你的队友和用户。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
事实上,组合根本不是一门人们关注、教得好、学得好的学科。我突然想到,也许这就是为什么过度复杂化是软件开发人员每天犯的最大错误。当你不知道如何把乐高积木拼在一起时,你可能会弄坏胶带和胶水,然后变得烦躁......损害软件、你的队友和用户。
事实上,组合根本不是一门人们关注、教得好、学得好的学科。我突然想到,也许这就是为什么[过度复杂化是软件开发人员每天犯的最大错误](https://medium.com/javascript-scene/the-single-biggest-mistake-programmers-make-every-day-62366b432308)。当你不知道如何把乐高积木拼在一起时,你可能会弄坏胶带和胶水,然后变得烦躁......对于软件开发来说,你也会损害软件、你的队友和用户。


You can’t get away from composing software — that’s how software comes together. But if you don’t do it conscientiously, you’ll do it badly, which leads to a lot of wasted time, wasted money, bugs, and even critical human safety issues. I wrote this series — and book — to change that.
你无法摆脱组合软件 —— 软件就是这样组合在一起的。但如果你不认真去做,你会做得很差,这将导致大量的时间浪费、金钱浪费、漏洞,甚至严重的安全问题。我写了这个系列和这本书来改变这一点。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

但如果你不认真去做,你会做得很差,这将导致大量的时间浪费、金钱浪费、漏洞,甚至严重的安全问题。 => 但如果你不认真组合软件的话,你会做得很差,浪费大量的时间和金钱,造成漏洞,甚至导致严重的人类安全问题。


The trouble with the blog posts is that they never had an official index. Welcome to the official blog post index for “Composing Software: The Blog Posts”.
博客文章的麻烦在于它们从来没有官方索引。欢迎使用“组合软件:博客文章”的官方博客文章索引。

* [Composing Software: An Introduction](https://medium.com/javascript-scene/composing-software-an-introduction-27b72500d6ea)
* [The Dao of Immutability](https://medium.com/javascript-scene/the-dao-of-immutability-9f91a70c88cd)
* [The Rise and Fall and Rise of Functional Programming](https://medium.com/javascript-scene/the-rise-and-fall-and-rise-of-functional-programming-composable-software-c2d91b424c8c)
* [Why Learn Functional Programming in JavaScript?](https://medium.com/javascript-scene/why-learn-functional-programming-in-javascript-composing-software-ea13afc7a257)
* [Pure Functions](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976)
* [What is Functional Programming?](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0)
* [A Functional Programmer’s Introduction to JavaScript](https://medium.com/javascript-scene/a-functional-programmers-introduction-to-javascript-composing-software-d670d14ede30)
* [Higher Order Functions](https://medium.com/javascript-scene/higher-order-functions-composing-software-5365cf2cbe99)
* [Curry and Function Composition](https://medium.com/javascript-scene/curry-and-function-composition-2c208d774983)
* [Abstraction and Composition](https://medium.com/javascript-scene/abstraction-composition-cb2849d5bdd6)
* [Functors & Categories](https://medium.com/javascript-scene/functors-categories-61e031bac53f)
* [Monads](https://medium.com/javascript-scene/javascript-monads-made-simple-7856be57bfe8)
* [The Forgotten History of OOP](https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f)
* [Object Composition](https://medium.com/javascript-scene/the-hidden-treasures-of-object-composition-60cd89480381)
* [Factory Functions](https://medium.com/javascript-scene/javascript-factory-functions-with-es6-4d224591a8b1)
* [Functional Mixins](https://medium.com/javascript-scene/functional-mixins-composing-software-ffb66d5e731c)
* [Why Composition is Harder with Classes](https://medium.com/javascript-scene/why-composition-is-harder-with-classes-c3e627dcd0aa)
* [Composable Custom Datatypes](https://medium.com/javascript-scene/composable-datatypes-with-functions-aec72db3b093)
* [Lenses](https://medium.com/javascript-scene/lenses-b85976cb0534)
* [Transducers](https://medium.com/javascript-scene/transducers-efficient-data-processing-pipelines-in-javascript-7985330fe73d)
* [Elements of JavaScript Style](https://medium.com/javascript-scene/elements-of-javascript-style-caa8821cb99f)
* [Mocking is a Code Smell](https://medium.com/javascript-scene/mocking-is-a-code-smell-944a70c90a6a)
* [简介](https://medium.com/javascript-scene/composing-software-an-introduction-27b72500d6ea)
* [不变性之道](https://medium.com/javascript-scene/the-dao-of-immutability-9f91a70c88cd)
* [跌宕起伏的函数式编程](https://medium.com/javascript-scene/the-rise-and-fall-and-rise-of-functional-programming-composable-software-c2d91b424c8c)
* [为什么用 JavaScript 学习函数式编程?](https://medium.com/javascript-scene/why-learn-functional-programming-in-javascript-composing-software-ea13afc7a257)
* [纯函数](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-pure-function-d1c076bec976)
* [什么是函数式编程?](https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0)
* [函数式程序员的 JavaScript 简介](https://medium.com/javascript-scene/a-functional-programmers-introduction-to-javascript-composing-software-d670d14ede30)
* [高阶函数](https://medium.com/javascript-scene/higher-order-functions-composing-software-5365cf2cbe99)
* [柯里化与函数组和](https://medium.com/javascript-scene/curry-and-function-composition-2c208d774983)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
* [柯里化与函数组和](https://medium.com/javascript-scene/curry-and-function-composition-2c208d774983)
* [柯里化与函数组合](https://medium.com/javascript-scene/curry-and-function-composition-2c208d774983)

* [抽象与组合](https://medium.com/javascript-scene/abstraction-composition-cb2849d5bdd6)
* [Functor 与 Category](https://medium.com/javascript-scene/functors-categories-61e031bac53f)
* [JavaScript 让 Monad 更简单](https://medium.com/javascript-scene/javascript-monads-made-simple-7856be57bfe8)
* [被遗忘的面向对象编程史](https://medium.com/javascript-scene/the-forgotten-history-of-oop-88d71b9b2d9f)
* [对象组合中的宝藏](https://medium.com/javascript-scene/the-hidden-treasures-of-object-composition-60cd89480381)
* [ES6+ 中的 JavaScript 工厂函数](https://medium.com/javascript-scene/javascript-factory-functions-with-es6-4d224591a8b1)
* [函数式 Mixin](https://medium.com/javascript-scene/functional-mixins-composing-software-ffb66d5e731c)
* [为什么类中使用组合很难](https://medium.com/javascript-scene/why-composition-is-harder-with-classes-c3e627dcd0aa)
* [可自定义数据类型](https://medium.com/javascript-scene/composable-datatypes-with-functions-aec72db3b093)
* [Lenses:可组合函数式编程的 Getter 和 Setter](https://medium.com/javascript-scene/lenses-b85976cb0534)
* [Transducers:JavaScript 中高效的数据处理 Pipeline](https://medium.com/javascript-scene/transducers-efficient-data-processing-pipelines-in-javascript-7985330fe73d)
* [JavaScript 样式元素](https://medium.com/javascript-scene/elements-of-javascript-style-caa8821cb99f)
* [模拟是一种代码异味](https://medium.com/javascript-scene/mocking-is-a-code-smell-944a70c90a6a)

---

****Eric Elliott** is a distributed systems expert and author of the books, [“Composing Software”](https://leanpub.com/composingsoftware) and [“Programming JavaScript Applications”](https://ericelliottjs.com/product/programming-javascript-applications-ebook/). As co-founder of [DevAnywhere.io](https://devanywhere.io/), he teaches developers the skills they need to work remotely and embrace work/life balance. He builds and advises development teams for crypto projects, and has contributed to software experiences for **Adobe Systems,Zumba Fitness,** **The Wall Street Journal,** **ESPN,** **BBC,** and top recording artists including **Usher, Frank Ocean, Metallica,** and many more.**
****Eric Elliott** 是一名分布式系统专家,并且是 [“组合软件”](https://leanpub.com/composingsoftware)和[“组合 JavaScript 应用程序”](https://ericelliottjs.com/product/programming-javascript-applications-ebook/)这两本书的作者。作为 [DevAnywhere.io](https://devanywhere.io/)的联合创始人,他教开发人员远程工作和实现工作以及生活平衡所需的技能。他为加密项目的开发团队提供建设和建议,并为 **Adobe 系统、Zumba Fitness、华尔街日报、ESPNBBC** 以及包括 **UsherFrank OceanMetallica** 等在内的顶级唱片艺术家的软件经验做出了贡献。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

“组合 JavaScript 应用程序” => “编写 JavaScript 程序”

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

****Eric Elliott** 是......贡献。 => ****Eric Elliott** 是......贡献。**

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他为加密项目的开发团队提供建设和建议, => 他创建了加密项目的开发团队,并为他们提供建议。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

并为 **Adobe 系统、Zumba Fitness、华尔街日报、ESPN、BBC** 以及包括 **Usher、Frank Ocean、Metallica** 等在内的顶级唱片艺术家的软件经验做出了贡献。 => 他还在软件体验上为 **Adobe 系统、Zumba Fitness、华尔街日报、ESPN、BBC** 以及包括 **Usher、Frank Ocean、Metallica** 等在内的顶级唱片艺术家做出了贡献。


**He enjoys a remote lifestyle with the most beautiful woman in the world.**
**他和世界上最漂亮的女人过着遥远的生活。**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

他和世界上最漂亮的女人过着遥远的生活。 => 他和世界上最漂亮的女人一起享受着远程(工作)的生活方式。


> 如果发现译文存在错误或其他需要改进的地方,欢迎到 [掘金翻译计划](https://github.com/xitu/gold-miner) 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 **本文永久链接** 即为本文在 GitHub 上的 MarkDown 链接。

Expand Down