懂编程|从你家的衣柜,理解软件编程的「架构」

我是霖哥,一个因兴趣入行的商学院毕业的程序员。总有不少不是做IT的朋友,来问各种各样的科技概念性的问题。所以,我想在「商学院毕业的程序员」中,把我对一些科技概念的认知,毫无保留的分享出来。

事情是这样的,霖哥是一个商学院毕业的程序员嘛,大部分的同学,都是读商科的。其中一个好基友,一个金融公司的职员,觉得互联网未来很有发展,于是找到了一个云计算公司,进行面试。

可是他完全不懂技术,所以就跑来咨询霖哥各种问题。 其中一个问题,着实让我很深思,他问:

「软件编程里,什么是架构?」

所谓架构,即软件架构,在软件工程中,经常会出现架构一词,甚至还有专门的职位,叫“架构师”。 架构是什么?我们看看百度百科怎么说的:

软件架构(software architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计。
软件架构是一个系统的草图。软件体系结构是构建计算机软件实践的基础。

嗯,看完了霖哥也看不懂!看完了百科,霖哥也不知道怎么给朋友进行讲解。

只好,从一个女人开始说起。

从衣柜收纳看架构

日本有一个“收纳女王”,名叫近藤麻理惠,被英国媒体称为日本整理女王,而且被美国《时代周刊》评选为“2015全球最具影响力的100人”之一,上榜理由是——特别会做家务。

女王有什么本事?她能把家里每一寸空间的效用发挥到极致,比如,给你的衣柜,来一个变身:

想一想,我们自己的衣柜是怎么样的?

我们的衣柜,用普通随意的折叠方式,堆放衣服,大概放置100件衣服。

女王呢?同样的衣柜,经她处理,却可以容得下200件衣服。怎么做到?

这就要讲究方法与技巧了,比如女王的做法:

衣服折叠后不平放,而是垂直放置。

衣服还可以按颜色摆放,从左到右从重到轻,颜色从深到浅。

...................(省略各种套路)

一系列的方法、技巧、套路,就能让原本有限的空间里,收纳更多的物件。

换句话,用更好的整理方法,调整了衣柜的衣服摆设的“架构”,就能让衣柜变得更好。

在霖哥的心中,“架构师”可能是一个每家妇女都在做的事情,一点都不复杂——为一个杂乱无章的家,通过有规律的方法、技巧,来让我们的家变得更加的整洁,这就是“调整架构”

当某一天,发现之前的整理和摆设,不太满足需要了,翻箱倒柜地把衣服、物件翻出来,重新整理。这重新整理的过程,就叫“重新整理架构”。(刚好这对应了软件工程中的一个词,叫“重构”)

对此,我们甚至可以把日本的“收纳女王”,给她一个很程序员的称谓——家庭架构师

当出现“重构”的时候,家里的其他人可就着急了,明明一个家好好的,干嘛要把它整乱了,重新布置?“家庭架构师”可有着他们自己的理由,说这样可以让家变得更好、更实用、blah blah blah说一堆。

每一个家庭,总有那么一个妇女或妇男,是家里的架构师。

在这里,为方便理解,霖哥斗胆,想重新定义“架构”这个概念:

把大量东西进行排列组合的技巧和方法,就叫架构。

软件架构

在霖哥的上一篇文章「想自学编程?霖哥建议从JavaScript开始!」中,提到一个函数思维的概念,里面提及到:

所谓函数,学术上来定义,是一个统一的代码块;而霖哥的理解,函数就像一个别人生产好的工具。

理解“函数”至关很重要,程序开发当中,几乎90%的代码都在不断地调用函数。当程序员想做一件事的时候,第一个要想到的,是“找函数”,而不是写具体的函数。

大量的代码和函数促使软件工程领域,产生了一个职位,叫做架构师。架构师的工作,一般就是对大量的编程代码,给出优秀的整理方案,指导程序员团队更好的工作。

我们也听说过类似的写代码的新闻,比如“一个女兵90天编40万行代码”,这听起来特别的牛逼。

可是我们仔细想一想,40万行代码,是什么概念?我们估算一下:一本书里的一行,我们算少一点,大概20字,那么40万行代码,接近800万字。而一本200页的书,大概是30万字,那么800万字,已经可以写成一本大概5000页的书了。

上面只是一个估算,精确性霖哥这里不多追究。一个人写出40万行代码,确实有点夸张,但是实际的大型商业软件项目中,几十个程序员互相协助,这个代码规模有时候还是挺常见的。这里面,用“函数思维”来想,也有着成千上万的代码和函数。把他们管理好,这就是架构师的工作。

细思一下,把家里的上百件衣服,塞到一个衣柜里,就有着无数的方法和技巧。更何况,整理40万行编程语言代码、近5000页的书?!

回到霖哥上一段的定义:

把大量东西进行排列组合的技巧和方法,就叫架构。

大量的编程语言代码,需要架构师进行管理和收纳,好的架构师,就像好的家庭收纳女王,让一个家的效能放大几倍:

写1万行代码,就能实现别人10万行代码的功能;

用1台电脑的运算资源,就能发挥出别人用100台电脑所能达到的效果;

现实的软件开发中,最常见的现象莫过于,当老板提出各种新的需求时,好的软件架构,用1小时的就能完成改动,而差的架构,则需要加班加点,整整花上半年,甚至一年,才能完成改动。

这可是现实软件工程师里非常常见的现象,不然,加班干嘛?软件开发中的大量时间,有时都耗在了架构调整上,而不是编程语言本身。

这种对架构的改动,就像我们之前所说的家庭妇女的“重构”。从这个角度我们思考,我们就能理解家庭妇女为什么要翻箱倒柜的,对家里的衣服和摆设进行重构,还诸多理由。程序员也就能谅解,软件架构师们为什么要把成熟的软件产品,加班加点进行大幅度的修改了。

“软件架构师”跟“家庭架构师”,他们的工作是非常的类似的,他们都负责把大量无序的东西,变得井井有条、更有扩展性,让事物变得更好。

(图:常见的Windows操作系统的软件架构,是非常复杂的,不必细看,可跳过)

淘宝网的架构演化

在实际的软件开发中,把架构玩得出神入化的,非大型网站莫属了,如淘宝网。

我们知道12306网站,经常动不动就无法访问,而一些大型商业网站,如淘宝网,几亿用户同时在里面购物,却一直能保持快速的浏览,这是为什么?

因为架构设计的不同!

首先,我们知道,我们访问一个网站,其本质,就是访问一台电脑,我们把这样的电脑,叫作服务器;当访问这台电脑时,就会返回给我们网页信息,显示在浏览器上。

(图:最简单的网站架构,摘自《大型网站技术架构》)

如图,这是我们平常最简单的网站应用服务器架构了,它主要有应用程序、文件、数据库,一般它们都是安装在同一台电脑上。

我们自己用过电脑都知道,一台电脑,当运行的软件非常多,它就会变得很慢,甚至直接死机,无法操作。

同理,如前所说,访问一个网站的本质,是访问一台电脑。当大量的人同时访问一台装有网站的电脑,电脑就会不堪重负,无法访问了(比如,12306)。

最初的淘宝网,其实也是这样一个简单的架构,而随着他们业务的发展,10多年过去了,他们的架构已经演变成类似这样了:

(图:现在常见的大型网站技术架构,摘自《大型网站技术架构》,太复杂,我建议你不要点开看)

把大量东西进行排列组合的技巧和方法,就叫架构。

嗯,可以看到,为了应付海量的用户访问网站,大型网站的架构师们可以说使出浑身解数,把各种各样的编程代码组成软件服务,通过各种各样的技巧和方法,形成一个复杂而高效的架构。

发展到今天,淘宝网的网站架构已经变得一个非常非常复杂的巨无霸了。

结果,你也知道了,在这样的一个架构下,今天的淘宝网能够同时容纳几亿人的访问,这是因为它的架构,了不起;普通的架构,却可能经不起几千用户的考验。

这不是跟我们的收纳女王,“家庭架构师”很相似吗?同样的一个衣柜,人家可以整得井井有条,收纳大量的衣物;而很多人的衣柜,却衣物四散、混乱不堪。

总结

霖哥今天用了日本整理女王作为类比,介绍了什么是软件编程中的架构,并且妄自下了一个定义:

把大量东西进行排列组合的技巧和方法,就叫架构。

在上一篇《想自学编程?霖哥建议从JavaScript开始!》中,霖哥提及到,软件工程,90%的代码都在不断地调用函数;用牛逼的方法和技巧,对大量的函数调用进行整理,成就了软件开发中的“架构”。

我们不妨脑洞大开,“函数”就像砖头,“架构”就像建筑结构,软件编程是不是很像造房子?下一篇文章,霖哥想说说造房子与编程的关系。

最后,霖哥呼吁,请珍爱你生命中的家庭架构师——你的妈妈、你的爱人、或者,你自己。

作者相关系列简书文章:

我是如何用10天自学编程,改变一生

想自学编程?霖哥建议从JavaScript开始!


我是霖哥,一个商学院毕业的程序员,通过自学编程成为一家大型上市公司的资深软件工程师。

在《商学院毕业的程序员》专栏中,我想持续分享我自学编程的经验和心法,用通俗的话提炼我的技术思维和对科技世界的理解,希望可以帮助到你。

如果觉得有用就分享给你的朋友,转载请注明出处《商学院毕业的程序员》。

如果在了解或学习编程的过程中有迷惘、或对一些生涩的科技概念的不解,用力留言!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容