编程入门

软件设计中的生活智慧

2018-11-12  本文已影响0人  杨小伟的世界

有不少朋友觉得软件是个神秘的东西,好像就一个程序员在屏幕前敲敲键盘,一切就跑到了眼前。而现在软件的种类和数量已经非常多了,据说Github上仓库的数量已经超过了一亿。这些软件,使用不同的语言、有着不同的背景和用户,当然也运用着不同的技术。别说小白,连专业人士想要了解所有的门道都不太现实。

那软件设计就真的这么神秘,这么毫无章法可循?

正所谓,大道相通。虽然在细节上,因为场景和技术的不同,软件设计呈现着千变万化的样子,但是如果我们抽丝剥茧则会发现,某些软件设计中的思想同我们生活中的智慧不谋而合。

最近在学习内核中内存管理相关的模块,在阅读的过程中发现:

设计软件时可以从生活智慧中借鉴,安排生活或许也能从软件设计中汲取养分

看到这里,你是不是有点迫不及待想了解一番呢?

分类

相信大家在生活中,分类这个技能是非常常用的。

当然,在日常生活中,我们可能常常忽略分类这个技能。因为我们保有的物品数量并不多,偶尔错放、乱放也不会带来太多的不便。但是下面这种情况如果不分类妥当,估计会让人抓狂。

米兰达可儿衣橱揭秘:裙子几千条鞋子几百双

作为鞋子不超过两位数的小编,无法想象要这么多鞋子干啥。更不能想象的是名模出门的时候得花多久挑鞋子。但是有一点能想到的是

她一定分类摆放了她的鞋子。

那我们就来看一下名模的鞋柜。

鞋柜

个人觉得这只是她所有鞋子的冰山一角,因为没有长筒靴!视频拍摄时正值夏季,所以鞋柜中都是夏天的鞋子。这里其实隐藏了将要说的第二种智慧,我们在此先跳过。

第一眼看这个鞋柜的分类其实不是那么清晰,不过仔细看一下摆放还是能看出一点点分类的规律。

总体来看米兰达可儿在鞋子的整理上还算是井井有条的。

那分类的智慧在软件设计中如何运用呢?其实在内存管理模块中运用得非常多。

怎么样,现在看是不是感觉就那么回事儿?不过是按照不同的属性分类,方便使用和归还。以后自己设计软件,是不是也可以尝试这招?

预取

上一小节中我们卖了个关子

米兰达可儿冬季的鞋子在哪里?

当然我也不知道她放在了哪里,也不确定是不是她每年都重换一批。就我们日常生活的经验来讲,我们自己是怎么做的呢?

通常到换季的时候,我们会把当季的衣物整理出来放在鞋柜衣橱,而过季的衣物则收纳到箱子中。

怎么样,这个方法是不是很简单,而且大部分人都用过?这么好用的方法当然在软件设计中不会错过,而这个方法在计算机界就叫做预取

把常用的资源取出多份,而不用每次都取一个

日常生活中除了衣物整理,还有很多地方都用到这个思想。

我想大家在这方便比我更有经验和智慧。

那再来说说内存管理中这个思想的运用。

这两者在设计上都可以理解成一个钱包。每次想要买包子,但是钱包里钱不够了。我都是从银行取一百或者几百放钱包里,而不是就取个几块钱买个包子。这样做的目的就是减少去银行取钱的时间。能理解到这点也就理解了软件设计中,为什么要这么做了。

PS:现在都手机支付了,估计这个场景马上就不适用了。所以看出,我们这一代不是互联网的原住民。

专有

这个智慧主要运用在规模增大的情况下,虽然平时我们不多见,但是仔细想想也是会发生的。

遇到这种情况有两个办法:满足其中一个、再买一个。

第一种方法通常我们称之为排队。这个情况在日常生活中也是非常常见的,而在计算机系统中也有非常多的排队理论。这里我们暂且不说。主要看第二种土豪的方法,

可能有的人会觉得这个方法太土,没有什么技术含量。但是在某一方资源充足的情况下,这个方法却是非常直接有效的。现实中为了争一个电视机、卫生间、车子的例子貌似也不少,只不过钱是我们现实生活中很大的障碍。

但是在软件中,情况就会有所不同。比如在内存管理中,为了提升系统的性能,就可以牺牲一些内存空间,为每一个cpu分配专门的队列管理内存。

还是这两者,内核设计中就是通过给每个cpu分配专属队列,来保证每个计算资源能够尽量的发挥自己的能力,而不用因为没有电视机、卫生间或者车子而等在那里,发生不必要的矛盾。这也是提升系统扩展性的方式之一。

好了,小编的叨叨今天就到这里。

希望本文不论是对专业的软件从业者,还是对软件的爱好者,甚至是热爱生活的人,都有一点点的帮助和启发。

PS:对内存管理感兴趣,想了解更多的朋友,可以访问我的文章(http://t.cn/Ev3UwoG)中内存管理部分。欢迎交流。

上一篇 下一篇

猜你喜欢

热点阅读