设计心得——简单在计算机设计中的重要性

一、简单

这些天看了不少的资料,发现了一个有趣的问题,简单。同时,在坐地铁时,又看到了一个装修的广告,内容是:“简约而不简单!”。如果想一下的话可能是装修的是一种简约的风格,可不是简单忽悠人的意思。转念就想到了资料中的计算机设计中的简单性的问题。设计师和开发者追求的是简单还是简单背后的一些东西呢?
首先,要搞清楚简单是什么?简单就是对大多数人说不需要特别的学习,即可了解明白甚至操作。简单就是对多数人来说,这不是一个需要努力才可能掌握的知识。其次,简单是一种快速沟通的手段,也就是人们常说的简单直白。
那么简单在计算机中有什么作用呢?开发者都明白,一个简单的代码实现的功能,维护成本和出Bug的机率相对要低很多。但反过来,实际情况往往不可能都以简单的方式呈现出来,这就是一个矛盾的两个方面。所以说,简单一定是相对的,而不是绝对的。绝对的简单是不可能应对复杂的实际环境的。
也可以这样说,简单是内在向外面暴露出来的便于认知性。

二、简单的重要性

回到计算机设计中,就是要把复杂的不易理解的部分封装起来,而向外面暴露尽可能简单的部分,也就是常说的接口。所以简单的重要性就在于,能够使应用更便于实现。这种便于的实现是级联的,可能从一个函数,到一个类,再到一个模块,一个框架…逐层都要实现这个目的。
这种便于实现同样也包括维护的便于实现,凡此种种。
但简单会不会是没有技术含量呢?这可未必。在面对一些初级功能,简单的确可能没有什么技术含量。但对于一些复杂的功能,想实现的简单,那就需要设计开发人员的经验和技术思想了。举一个比较容易理解的例子,一个好的算法可能比一个差的算法,快很多。那么上层应用再调用此算法功能时,就可能简单很多。这个简单指的是需要的CPU资源少,内存少,时间少;对应用开发者来说,接口少,参数清晰明了。体现在外在的表现可能是一台普通的PC机就解决了大型服务器可能一周的工作量。
而这往往需要很强的设计开发能力。同样,体现在设计上更是如此,一个好的设计,可能会把很多冗余的部分去除,大大减少开发的工作量和开发成本。尽量使用现有的条件而不是引入外部的条件,也就是盘活存量,不引入增量。一个比较经典的例子就是美苏在宇航员在太空中如何书写的问题上,美国就专门研究了可以在太空中书写的自来水笔,费钱费时;而苏联则使用了铅笔,解决了问题。
另外还有一个广为传播的笑话,一外资的日化厂,偶尔会出现包装后空盒的现象,即没有把物品装到盒子中。他们请来了一大堆的博士硕士开发专门的硬件和软件,利用光电传感器和各种算法进行图像识别,花费上千万元,终于解决了问题。但广东一同样的老板给部下下命令,解决这个问题,解决不了,明天就滚蛋。结果,这个工程师采用了用风扇吹的方式,装好的沉吹不动,没有装好的就吹飞了。
例子可能不太恰当,但确实是可以说明问题。
需要强调的是,做任何事情,都要有度。追求简单,并不是为简单而简单。爱因斯坦的说的:“尽可能简单,但不要过于简单”。这句话的意思,见仁见智 。但总体都是一个方向,凡事不能走极端。道家的阴阳之说也大抵是这个意思。
《人月神话》中强调:“优秀的设计在于简洁 ——不是简单,而是无复杂。” 其实这句话恰恰说明了简单的重要性。简单是一种表面现象,简洁是一种设计实现的内在过程。所有的设计和开发,都是尽可能向着简单方向前进,而不了为了简单而简单。这就是《人月神话》中简洁的内涵。

三、实际的例子

在计算机领域,简单从而发展起来的事情很多。先看看编程语言,从机器码到汇编到C到C++。如果说这些很多后来开发者可能没有感觉,那么举一个明显的例子,一个是JS脚本语言,一个是Python语言,这两个语言崛起速度之快,应该都知道吧。JS据说才用了几天的时间写出来的,单纯从感官上,它就不可能有多复杂,这就是简单的威力。这也是C/C++逐渐退化成一个小众语言的重要原因。
再举一个反面的例子,现在大火的Rust,各个平台各个大佬,各类大公司,甚至美国政府都推荐使用。而且其确实优点很多,但几年过去了,大家可以看一下其在编程市场所站的份额。如果大家没有一个直观的认识,可以看一看GO语言从出道到现在的发展,就明白了很多。Rust仍然是一种复杂的语言,它不是给小白们普及的一种语言。
这也注定RUST不可能成为一门流行的编程语言,至少在可预见的三五年内,不可能成为。
但正如前面所讲,简单是一种表象,简洁才是内涵。仍然是以JS为例,为了实现JS与C/C++的效率的平齐,各种手段倍出,包括前几年很火的Webassembly。但做为前端的开发者,又有几个知道或者学习过呢?
我们再回首看一看计算机语言发展的历程,无一不是如此!

四、总结

简单和复杂是相对的。简单是外在的,复杂是内在的。所以开发者要有追求简单的目标,但不能为了简单而舍弃所有,也不可能舍弃所有。总说的一句话,简单是王道,就是这个意思。无论是开发还是设计,都要善于从复杂走向简单,抽丝剥茧,实现从混沌到清晰!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值