系统设计师之路·第三节·一花一世界,一叶一菩提——无处不在的设计思想

      在第一节的“Coder or Designer”当中,我提出了,从一开始就要从设计师的高度来进行学习的观点。在跟大家探讨的过程中,发现了两方面的质疑:1、在最初的基本功学习当中,并没有多少设计思想可以讨论。2、一开始就引入设计思想,是否太难了?

      于是,本节的题目便涌上心头。由于近期的时间关系,一直没有成文,今天终于有了一些时间,赶快写下来,都快要忘记自己想要讲什么了。

      先回答第一个问题:

      正如佛语所说,“一花一世界,一叶一菩提”,每一件事,只要你愿意分析,总会有无穷无尽的内容可以被分析出来。这与我们对自然的理解也非常类似,从宏观世界到微观的无穷无尽的分析中,始终没有找到物质的尽头。分子、原子、夸克、弦……没有人能证明,这无穷的微观世界的尽头是什么……

      再举个例子:在计算机组成课程当中,我们仅仅学习了最精简的计算机如何构成的。但是,当我们对整个流程的细节熟记于心的时候,我们对于真实世界中的计算机的构成形态的大体框架有了认识。这些思想足以辅助我们快速理解现代越来越复杂的计算机系统的原理,万变不离其中。

      我的第一个结论是:无论多小的问题,都蕴含着最核心的思想,认为小的事物没有设计,仅仅是因为,还不懂设计的真谛;

      由此,我提出一个近一步的问题,大规模问题当中蕴含的设计思想,是否一定比小规模问题中蕴含的更多?

      在我读书的时候,自己写的第一个程序,是一个命令行运行的日历程序。这个程序后来成为了我组织的社团的标准入门课程。在大学时期,我一直在一次次的教大家如何写好这个C语言程序,但都是面向过程方式的。在教大家写过上百次后,我认为,这个程序已经被我优化的不能再修改了。

      但是,当我毕业后三年,一次偶然的机会,让我重新审视这个程序的时候,从设计师的视角,从面向对象分析建模的视角,我发现,原来的程序,一直都是面向过程的思维,完全没有考虑设计问题。从设计师视角来看,这个程序完全应该是另外一个形态,可以将大量的设计思想融汇于这小小的程序当中。

      这次偶尔的发现,促使我对计算机专业学习方法进行了全新的思索,也成为了《系统设计师之路》编写的思想萌芽。

      回到问题,我的结论是:设计思想无处不在,部分大小,用心体会,一切尽在其中。并且,有些时候,越简单的东西,想用理论解释清楚,反而越困难。就像我们想说明,为什么1+1=2?大概会难住绝大部分人吧。

      

     下面回答第二个问题:

     思想,其实是一种思考问题的方式,并不存在难易的问题,我所提倡的是,从一开始就去培养一种设计师的思维习惯。

     在传统的学校教育当中,一直保留了先教授大家C语言,之后在讲C++/Java语言,讲述了语言的发展历史。看似是由简入繁,但从思想问题的角度来讲,却给大家埋了一个大坑。大家是先形成了面向过程的思维方式之后,又转而学习面向对象的思维方式。这个转换过程,让很多人花了非常大的精力,才转过来。自己认识的同事当中,有受面向过程思维“毒害”太深的人,想要转换思维方式,花掉了好多年的时间,甚至一直转不过来,最终无法理解很多新兴的事物。

     从另外一方面,我曾经给我的一位好朋友(学生物工程的)身上做了实验。从零开始学习编程,我采取了从面向对象设计思想入手的方式。经过几个月的时间,他在程序设计上的感觉,要远好于同时期,从C语言学起的那些同学们。最重要的是,他的程序写起来,从一开始就是面向对象思路的。而很多计算机专业的学生,在学习编程2年之后,还在用C++、Java等语言,写着面向过程的程序……

     我想,上面的例子,应该是对于问题二的最好回答了吧。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值