
用“中央厨房”和“预制菜”的概念来说说编程语言和框架 原创
掘金号:稀土掘金春
本人不是个写代码的能手,也不是个解决Bug的能手。我觉得自己这辈子最大的爱好,就是用别人能理解的东西,来和别人打比方说明一个对方不懂的概念。
献身于技能评估赛道,我出不了好题,但是爱给别人讲某个题为什么是好题。这也给我自己带来了很多麻烦——有人经常会问我,什么是编程语言,什么是框架。。。来,哪位身处IT互联网领域的哥哥姐姐弟弟妹妹叔叔阿姨爷爷奶奶们,在评论区给我的小伙伴解释一下∽😭救救我这个可怜的孩子,我都快被问麻了
我不是个技术料,让我写代码,我写不好,但我很注重沟通。对于沟通,我一直奉行的理念是,让对方能听的懂!因为对方听不懂的沟通相当于是“自娱自乐”∽当然最好的沟通是让对方秒懂。。此处与主题无关,不再展开,希望以后有机会写写关于“沟通”的文章。
关于增强沟通效果的一种方式,打比方,咳咳,怎么又在讲沟通?回来🤥
好,用“中央厨房”和“预制菜”来说说编程语言和框架之间的关系。
小时候姥姥和妈妈做饭那会儿,希望中午饭做一份红烧鱼,于是去超市买了豆瓣酱,买了酱油,买了盐,买了葱姜蒜,买了鱼。回来又是洗鱼,又是改刀,又是腌制,过了好一会儿才下锅翻炒,尝尝盐多盐少,调试半天,才出锅,忙了好一阵子,我坐那儿十分钟吃完了。
前两天我做红烧鱼,我去超市买了条老板刚刚杀死洗干净的鱼,买了一包红烧鱼的酱料,回家丢锅里,三下五初二把鱼做好了。我管他什么葱姜蒜,什么郫县豆瓣酱,通通用一包红烧鱼酱。就好像现在喝紫菜汤,谁还会买紫菜虾皮,直接买一包现成的紫菜汤小包装,水冲一下问题就解决了。那红烧鱼酱料做了什么事?就是把“重复”的过程打包成了“拿来即用”的方案,大大缩短制作时间。
框架就是一堆做鱼用的酱,可能是做酸菜鱼,红烧鱼,麻辣鱼,巧克力鱼,瓜子鱼,花生鱼的各种酱。不管你想吃什么口味的鱼,都用酱,省去了小红书,省去了《妈妈教你做美食》,省去了考虑放多少葱,还是多少姜,还是多少蒜,只用一包酱。
程序员在写产品功能的时候,不可能所有的逻辑都用最原始的代码去写,很多功能逻辑是有共性的,可以复用的。比如,排序这个功能,按着大小个排序。从小学到大学,每次站队,尤其拍合照的时候,老师就会让大家按照大小个排序,生怕个儿小的同学,在照片中“消失”,引发大家后来无限瞎想∽ 那么排序这个逻辑功能,就是很通用的。所以这一个安排方式就被写进了一本书《怎么组织合照》,以后每个班长按着这个方法来执行,就不用再去想别的办法,节省很多时间。
很多编程语言里,有一些名字叫 sort(排序的意思)的函数,就是实现了排序这个功能。每次程序员在帮老板实现,xx按照创建时间排序,按照颜值排序,按照身高排序的功能时候,只需要调用这个函数即可实现。而这个函数是怎么完成它的使命的,不用管,用就完了!大佬都帮你写好了。
框架就是类似于sort函数般的存在。开发过程中,会有很多通用的逻辑,这些逻辑被大佬都写成“自热小火锅”了。你想完成什么功能(加什么配菜、调什么口味),在你的代码中调用别人写好的逻辑就行(开锅撒上你想要的酱料,放上你想要的菜就行)。由于框架的存在,程序员不需要关注“口味、配菜”,只需要关注老板想吃什么口味和菜,拿来人家切好现成的菜,调好现成的料,配一下就行。节省大把调口味,切菜的时间(写像“排序逻辑”一样基础逻辑的时间),早点让老板看到自己实现的功能,早点向市场交付价值,早点给自己发工资∽
至于“中央厨房”和“预制菜”,我这样理解,像阿里写了Alibaba Spring Cloud 框架 用于微服务开发 ,像谷歌写了 Flutter 框架用于跨网页、安卓、iOS前端开发等等。Flutter 等框架,就像是预制菜,阿里、谷歌就像是中央厨房。而大多数程序员,都是在用这些“预制菜”在给自己的老板做饭,无论是早餐、中餐还是晚餐,招待合作伙伴的,还是和家人享用的。由于有了中央厨房和预制菜的存在,我们下厨的时间变短了,就像有了框架的存在,我们实现某个产品功能的时间变短了。
虽然,用编程语言的基本语法能实现所有的逻辑,但,还是用框架吧,早点实现功能,早点下班,早点回家陪老婆孩子。。。
总而言之,咱好好说,不比喻了,不废话了,一句话:框架是一个个通用逻辑的集合,为了能让功能开发的周期更短,或者更有条理一些,虽然所有逻辑都能不用框架,直接用编程语言的基本语法实现。框架也是拿编程语言来写的,但这点,对于非技术的友友就点到为止了,对自己的工作也没什么帮助。
谨以此文,献给天天听周围同事,或者亲朋好友说编程框架的没有从事技术研发的友友,愿你们拿我的比喻,能和身边做技术的亲朋好友,无障碍交流∽
