Kothing
Author of Kothing, a Bootstrap Medium styled template available for WordPress, HTML, Ghost and Jekyll. You are currently previewing Jekyll template demo.

软件设计的哲学

Writing computer software is one of the purest creative activities in the history of the human race. Programmers aren’t bound by practical limitations such as the laws of physics; we can create exciting virtual worlds with behaviors that could never exist in the real world. Programming doesn’t require great physical skill or coordination, like ballet or basketball. All programming requires is a creative mind and the ability to organize your thoughts. If you can visualize a system, you can probably implement it in a computer program.
编写计算器软件,是人类历史上最纯洁的创造性活动之一。程序员不会被现实中的条条框框所束缚(比如物理法则),我们可以创造振奋人心的、超脱于现实的虚拟世界。编程不需要类似于芭蕾舞或者篮球运动那样特殊的身体技巧或者群体配合,只需要充满创造力的思维和组织想法的能力。如果你能让一个系统可视化,那大概也能用程序去实现它。

This means that the greatest limitation in writing software is our ability to understand the systems we are creating. As a program evolves and acquires more features, it becomes complicated, with subtle dependencies between its components. Over time, complexity accumulates, and it becomes harder and harder for programmers to keep all of the relevant factors in their minds as they modify the system. This slows down development and leads to bugs, which slow development even more and add to its cost. Complexity increases inevitably over the life of any program. The larger the program, and the more people that work on it, the more difficult it is to manage complexity.
这意味着,编写程序最大的限制,就是理解当前创造中的系统的能力。当程序进化并获得更多的特性,它就变得复杂,与它的组件之间保持着微妙的相互依赖。随着时间推移,复杂性积累,在需要调整系统的时候,要让程序员记住这些相关因素就会越来越难。这样就让开发变得缓慢,并产生更多的 BUG,这些 BUG 又回减慢开发,恶性循环让开发成本增加。任何程序的开发周期中,复杂性都是逐渐增加的。越大的程序,需要越多人开发,控制复杂性也就越难。

Good development tools can help us deal with complexity, and many great tools have been created over the last several decades. But there is a limit to what we can do with tools alone. If we want to make it easier to write software, so that we can build more powerful systems more cheaply, we must find ways to make software simpler. Complexity will still increase over time, in spite of our best efforts, but simpler designs allow us to build larger and more powerful systems before complexity becomes overwhelming.
好的开发工具能帮我们控制复杂性,近十年来也诞生了不少这样的好工具。但是光靠这些工具,能做到事情也是有限的。如果想要让软件开发变得简单,从而让开发强大的系统变得方便,那么我们就必须让软件开发变得简单。复杂性仍在与日俱增,尽管我们已经尽力去把控了。更简单的设计,能让我们建造更大更强的系统。