translations
一些不错英文资料的中文翻译。
Chinese translations for classic IT resources.
自己想到去做些翻译,一是促进自己的深入学习,二是能为大家带来便利,三是兴趣。
遵循原则:『信』为本、力求『达』、不妄追『雅』。
# 信:译文忠实表达作者**;达:让读者轻松地阅读;雅:让读者愉悦地阅读。详见信达雅 - 百度百科。
文章分类
思考/思维
- 提问的智慧
说明了作者所认为一位发问者事前应该要做好什么,而什么又是不该做的。作者认为这样能让问题容易令人理解,而且发问者自己也能学到较多东西。此文在网络上受到欢迎,被广泛转载而广为人知甚至奉为经典。著名的两个缩写STFW
(Search the fxxking web
)以及RTFM
(Read the fxxking manual
)就是出自本文。
设计原则
Python
Philosophy(Python
哲学)翻译及简析
既有指明大是大非的理念,又有指导细节操作的准则;既有谆谆教导的推荐,也有声色俱厉的禁止。- Codehaus宣言:技术管理与开源项目运营之道
Codehaus
:协作构建开源项目的社区,强烈强调现代语言,并开发聚焦于满足实际需求的高质量组件。Groovy
、Jetty
、Gradle
、XStream
、Jackson
、Drools
、jMock
、EasyMock
、Grails
、XDoclet
、QDox
、Esper
、Mule
、Janino
、JBehave
、Stomp
以及其他数以百计开源项目,都得感谢Codehaus
社区。很多项目听起来都是如雷贯耳吧,而这份精小的Codehaus
宣言是Codehaus
多年在技术管理与开源项目运营上的思考、总结与领悟,相信非常值得一读!向Codehaus
致敬!! Java
的通用I/O
API
设计
给出了一个通用Java
IO
API
设计,更重要的是给出了这个API
设计本身的步骤和过程,这让API
设计有些条理。文中示范了从 普通简单实现 整理成 正交分解、可复用、可扩展、高性能、无错误的API
设计 的过程,这个过程是很值得理解和学习!设计偏向是艺术,一个赏心悦目的设计,尤其是API
设计,旁人看来多是妙手偶得的感觉,如果能有些章可循真是一件美事。在艺术工作中,真的艺术性工作量也只是一部分,而给出 方法 以 减少艺术工作之中艺术性工作量 的人是 大师。API
设计原则 -Qt
官网的设计实践总结
Qt
的设计水准在业界很有口碑,一致、易于掌握和强大的API
是Qt
最著名的优点之一。此文既是Qt
官网上的API
设计指导准则,也是Qt
在API
设计上的实践总结。虽然Qt
用的是C++
,但其中设计原则和思考是具有普适性的(如果你对C++
还不精通,可以忽略与C++
强相关或是过于细节的部分,仍然可以学习或梳理关于API
设计最有价值的内容)。整个篇幅中有很多示例,是关于API
设计一篇难得的好文章。GUI
&CLI
原则
文中列出的GUI
和CLI
的原则:说明了两种Interface
适合的场景和优劣;进而引导你去思考,面向用户或作为程序员的你,交互/操作 如何才能是高效的。
系统设计实例
- 重叠实验设施:更多、更好、更快地实验
Google
这篇10年前2010年的关于『实验基础设施』设计的论文,现在看来仍然是关于这个领域最有深度和体系的资料。不单说明了,实验设施的系统设计,还包含实验的进阶主题如:实验可信度、敏感度、围绕实验数据驱动的整体流程。对于了解Growth Hacking
/ABTest
的同学,可以有效的学习实验设施的系统设计,尤其是重叠实验设施要考虑多方面的需求、维度,如何建模是很复杂的;对于不了解Growth Hacking
/ABTest
这个领域知识的同学,可以通过这篇文章,学习一个复杂系统整体的思考和设计的模式,包含需求、场景、模型设计、产品流程、落地关键。
分布式系统/大数据
- 日志:每个软件工程师都应该知道的有关实时数据的统一抽象
这篇文章是LinkedIn
的Kreps
发表的一篇博文,被称为 程序员史诗般必读 文章。可以作为大数据/分布式系统领域一份导论式的资料。作者对整个领域的理解和实战精深广博,抓出并梳理了这个领域的核心:日志。 - Paxos Made Simple
该论文给出描述一致性问题的概念、术语、算法,从复杂中抓取出了核心,给出了如此简单的描述。另言简意赅地说明了多实例Paxos
(Multi-Paxos
),这是真正实践中使用的Paxos
。可以说不读这篇论文你就不知道你还不知道如何有效地描述和交流一致性算法。 PaxosLease
:实现租约的无盘Paxos
算法
可以说是最简单且可以实际使用的Paxos
算法变种。
并发
- 理解
Kotlin
协程:自底向上的视角
Kotlin
的协程应该是Java
生态中最好的协程实现,在生产环境(Android
/ 后端场景)也有比较多实际应用。 无论是Kotlin
语言还是Kotlin
协程,都非常注重务实与开发者友好,Kotlin
协程以大家习惯的命令式/过程式的编程方式写出非阻塞的高效并发程序。 但并发编程是计算机最复杂的主题之一,即使是用协程的编写方式;再者Kotlin
协程的友好使用方式,对于使用者理解协程背后的运行机制其实反而是个障碍。而真正的理解协程才能让使用协程做到心中有数避免踩坑。这篇文章自底向上视角的讲解方式,正是有意于正面解决这个问题:如何有效理解Kotlin
协程的运行机制。 Java
Fork/Join
框架
Doug Lea 大神关于Java 7
引入的他写的Fork/Join
框架的论文。反应式编程(Reactive Programming
/RP
)作为一种范式在整个业界正在逐步受到认可和落地,是对过往系统的业务需求理解梳理之后对系统技术设计/架构模式的提升总结。Java
作为一个成熟平台,对于趋势一向有着稳健的接纳和跟进能力,有着令人惊叹的生命活力:Java 7
提供了ForkJoinPool
,支持了Java 8
提供的Stream
,另外Java 8
还提供了Lambda
(有效地表达和使用RP
需要FP
的语言构件和理念);有了前面的这些稳健但不失时机的准备,在Java 9
中提供了面向RP
的官方Flow API
,实际上是直接把Reactive Streams
的接口加在Java
标准库中,即Reactive Streams
规范转正了。Reactive Streams
是RP
的基础核心组件,Java
提供了Flow API
标志着RP
完成了由 集市式的自由探索阶段 向 教堂式的规范统一阶段 的转变。通过上面这些说明,可以看到ForkJoinPool
的基础重要性。
FP
/Clojure
/Lisp
- 务实的函数式编程(by Bob大叔)
Bob
大叔的短文,FP
在软件开发优点上务实的思考,引导大家理解、学习和使用FP
,文章后半篇还用FP
语言Clojure
简约演示了一番。在文末不忘呼吁学习FP
,并推荐Clojure
语言。 - 手把手介绍函数式编程:从命令式重构到函数式
本文是一篇手把手的函数式编程入门介绍,借助代码示例讲解细腻。但又不乏洞见,第一节中列举和点评了函数式种种让眼花缭乱特质,给出了『理解函数式特质的指南针:函数式代码的核心特质就一条,无副作用』,相信对于有积极学过挖过的函数式同学看来更是有相知恨晚的感觉。希望看了这篇文章之后能在学习和使用函数式编程的旅途中不再迷路哦,兄die~ - Successful Lisp 中的
Lisp
书籍推荐Lisp
书籍推荐和点评,由于Lisp
与其它语言从基本概念就开始的差异,已有的语言经验反而是个学习阻碍,深入浅出的巧妙讲解对入门太重要了。- 特别提这篇好文【转】学习
Lisp
的书籍推荐
Git
Git
工作流指南
关于Git
工作流主题,也许这是目前最全面最深入的说明。这篇指南以大家在SVN
中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的Pull Request
功能,体系地讲解了各种工作流的应用。行文中实践原则和操作示例并重,对于Git
的资深玩家可以梳理思考提升,而新接触的同学,也可以跟着step-by-step操练学习并在实际工作中上手使用。Git
2.1
有哪些新特性?
Erlang
/Elixir
Erlang
之父学习Elixir
语言的一周
作为Erlang
之父 Joe Armstrong,对Erlang VM
上的新语言Elixir
做了很精彩的评论和思考。『特定领域专家的专业直觉』、『编程语言设计的三定律』、『管道操作符避免恶心代码』、『Elixir
的sigil
引出的程序语言如何定义/解释字符串』等等问题的讨论,个性鲜明又幽默诙谐的行文风格,都能强烈感受到 Joe Armstrong 深入广博的老黑客风范。
Java
- 关于
Java
你可能不知道的10件事
作者是个Java
老鸟,行文风趣幽默,娓娓道出Java
的诡异和难点时不忘着给出用心良苦的提点。
软件测试
Stubs
和Mocks
的区别
翻译自《Programming Groovy》,讲得言简意赅。