如何构建程序

img_draw_horse

一、如何才是好的构建方式?

应该如何设计软件?是一开始就周密的向好,还是边做边看。

这是一个开放问题,结果可能因人而异。刚学习编程的时候也十分迷茫。

但是经过一些弯路和阅读,我得到了我自己的看法。

二、软件构建的过程

我倾向于《黑客与画家》的这段:

你把整个程序想清楚的时间点,应该是在编写代码的同时,而不是编写代码之前。这与作家,画家,建筑师的做法完全一致。不要太早决定一个程序应该怎么做。 编程语言首要的特性应该是允许动态扩展。编程语言是用来帮助思考的,而不是用来表达你已经想好的程序。我们需要的是可以随意涂抹,擦擦改改的语言。 …… 创作者如何学习:

  1. 画家学习绘画的方法主要是指动手去画,黑客学习编程也应如此。不是通过大学课程,而是从实践中学习。定期从头开始,像画家一样多画画,而不是长年累月在一个项目上涂涂改改。
  2. 学习范例

一幅优秀的绘画作品必须比它应该有的样子更好,优秀的软件也要求对美的狂热追求。对代码极端认真,包括缩进和变量名。普通黑客与优秀黑客的重要区别:会不会换位思考。时刻考虑用户的人性需要。

三、编程 == 绘画

软件工程和建筑工程的部分特性十分相似。都具有设计性,施工性,还有数据周密。不同的是软件的重来的成本比较低,相对来说只要投入时间。 但是是现代工程,也通过软件建模的方式,一遍一遍的重演设计,这和下面要讨论的异曲同工。

反复修改,涂涂改改的设计方式,和绘画极其类似。

我个人的经验就是,设计搭一个大的框架。然后精雕细琢,涂涂改改。这个过程会促进你的思考。

编程是一个设计和平衡的艺术。

相对的,我不喜欢静态的语言以及他们的开发方式,他们强迫你一开始就想好很多细节。然后不断地纠缠这种细节。这种方式不利于创作。

有过绘画经验的同学,应该知道,绘画存在 —— 构图、草图、描线、打明暗/上色 …… 等诸多步骤。 每个步骤就像一道工序,逐渐一层一层的完成作品。

编程也应该如此类似。

Mark24

Everything can Mix.