首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 美食 > 如何在一天内快速学会编程(会做菜就会编程)
如何在一天内快速学会编程(会做菜就会编程)
更新时间:2024-07-04 03:04:17

平时工作之余,很多蚂蚁技术同学也乐于分享技术心得和经验感悟,我们会不定期精选其中的优秀文章,分享给大家。

不少同学对于编程感到好奇,但一看到厚厚的教程就打退堂鼓,我就曾经被问过:“外行需要多长时间才能学会这玩意儿呀?”这个问题不知道该如何回答,因为我并不认同“外行”这个词。我始终认为,在编程这件事情上,每个人都是内行,每个人也都是外行。

学会编程没有你想象中的那么复杂。

编程是什么?

编程,说得简单一点,就是通过一系列逻辑将你想做的事情或者想描述的物体表达清楚,然后让它展现出来,或者运动起来。说得专业一点:

编程 = 算法 数据结构

什么是算法?就是解决问题的办法,或者说通过几个步骤来解决一个问题的过程描述;那么什么是数据结构呢?咱们在解决问题的时候经常需要去放置一些物件,比如把书放到书架上,那么书架就是一种数据结构,把书放到柜子里,柜子就是一种数据结构,书架和柜子就是数据的不同呈现/储存方式。

其实,每个人对编程都不陌生,你进过厨房吧,17:00 回到家,怎么让家人在 18:30 之前吃上饭?这里头的算法就多了去了,你可以先煮上饭然后去买菜,也可以买完菜再回来煮饭,那么哪种方式更好呢?下面我们用程序语言来分析这道题:

编程问题:17:00 回到家,怎么让家人在 18:30 之前吃上饭? 算法一:先煮上饭然后去买菜 算法二:买完菜再回来煮饭

这里的做饭是一个程序实体,它包含了煮饭、买菜、切菜、做菜,这个程序实体的表达方式是:

做饭 = { 煮饭() {}, 买菜() {}, 切菜() {}, 做菜() {}, }

把中文换成英文不就是你平时看到的程序代码么?所以说呀,编程对你其实并不陌生,它也没你想象中的那么复杂。

编程的核心是什么?

为什么人跟人之间编写出来的代码有这么大的差异,或者说,为什么存在小白和专家的区别?编程确实不复杂,复杂的原因是很多人不能把问题思考周全,我举个例子你就知道了:

做饭 = { 开始() { 煮饭(); 买菜(); 切菜(); 做菜(); }, 煮饭() {}, 买菜() {}, 切菜() {}, 做菜() { if (家里没有油了) { 买油(); 炒菜(); } else { 炒菜(); } } } 做饭->开始();

我们定义了一个程序实体叫做「做饭」,包含了几个步骤,开始、煮饭、买菜、切菜和做菜,在编程语言里头,我们把「做饭」称之为对象,这几个步骤称之为方法,「做饭」这个对象拥有 5 个方法,我们可以一个个地调用它。首先我们调用了「开始」方法,在这个方法里,又依次调用了「煮饭」、「买菜」、「切菜」和「做菜」。

在「做菜」方法里,我们看到了一个细节,那就是“家里没油了”,咋整,这个人是这么考虑的:先去「买油」,然后回来「炒菜」。很显然,这人不靠谱,你看,菜都要下锅了,才想起没有油。但是下面这个人就不一样了:

做饭 = { 开始() { 煮饭(); 检查结果 = 检查(); 买菜(检查结果); 切菜(); 做菜(); }, 检查() { if (家里没有油了) { 买菜的时候要买油 } if (家里没有辣椒了) { 买菜的时候要买辣椒 } }, 煮饭() {}, 买菜() {}, 切菜() {}, 做菜() {}, } 做饭->开始();

他的程序里多了个步骤叫做「检查」,在出门买菜之前,先在家里扫一眼,缺了什么,用小本本记下来,然后「买菜」的时候,带上这个小本本,这样「买菜」就不会有遗漏了。

你看,这就是我们所谓的小白和专家,他们的区别就是后者能够把事情想得更加周全,在解决问题的时候,不遗留任何细节,并且呢,能够让事情可以更流畅、更快、更好地得到解决,消耗的资源最少,解决的问题最多。

编程的复杂性

不要以为我上面写的东西不是代码,稍微调整下细节,这串代码是可以在电脑上真实跑起来的,是不是特别简单啊?你还敢说自己不懂编程么?还会惧怕编程么?

但是也不要把编程想的太简单了,上面的程序表达的只是一个十分粗略的做饭过程,或者说一个做饭的思路,真正要把做饭的程序实现出来,还要考虑很多的问题,比如如何在程序中表达我要做辣椒炒肉、红烧狮子头、剁椒鱼头等等好几个菜呢?这里就涉及到“抽象”的概念,我们需要把很多相似的步骤都抽象成一种行为,然后不断重复这种行为:

做饭 = { 开始(菜单) { 煮饭(); 买菜(菜单); 菜单->逐一(做菜); }, 买菜() {}, 煮饭() {}, 做菜(菜品) { 洗菜(菜品); 切菜(菜品); 炒菜(菜品); } } 菜单 = 辣椒炒肉、红烧狮子头、剁椒鱼头; 做饭->开始(菜单);

好了,上面的代码相信也不是很难理解,我们把做饭分为三个事情,「煮饭」、「买菜」和「做菜」,首先我们想好了一个“菜单”,然后抽象了一个「做菜」的方法,这个方法里面包含了「洗菜」、「切菜」和「炒菜」三个步骤,每一道菜都会执行这三个步骤。

如果没有这层抽象会有什么问题?你会发现你的代码是这么写的:

做饭 = { 煮饭() {}, 买菜() {}, 洗菜() {}, 切菜() {}, 做菜() {}, } 做饭->煮饭(); 做饭->买菜(); 做饭->洗菜(辣椒炒肉); 做饭->切菜(辣椒炒肉); 做饭->炒菜(辣椒炒肉); 做饭->洗菜(红烧狮子头); 做饭->切菜(红烧狮子头); 做饭->炒菜(红烧狮子头); 做饭->洗菜(剁椒鱼头); 做饭->切菜(剁椒鱼头); 做饭->炒菜(剁椒鱼头);

代码本身没有什么问题,但是看起来会十分冗长,如果你今天要做 10 个菜,那么代码就得写 10 遍;可如果你用到了抽象思维,你就只需要去扩展“菜单”就行了,因为在程序里有一个叫做 「逐一」的逻辑。

程序里面涉及到的逻辑并不多,诸如「条件判断」、「循环」、「遍历/逐一」等,很少,但是也就是这么几个少量的逻辑,构筑了丰富多彩的网络世界。

小结

好了,本文并不是想教会你如何编程,而是想告诉你,编程是一件十分简单的事情,但是想写出好的程序却是一件无比有难度的事情,这需要你想出足够好的算法,同时也需要你对程序的执行环境有基本的了解,知道怎么写程序跑的快、怎么写程序会很卡,等等。

当然,作为程序员最苦恼的事情,并不是编程本身,而是需求的变化。比如当你做好了这顿饭,却发现家人在外面吃过了,此时的你就只能含着泪,一个人吃完这桌难以下咽的饭菜了。

来源:阿里云开发者社区

如何在一天内快速学会编程(会做菜就会编程)1

,
相关推荐RECOMMEND
牛肚怎么炖汤才好吃(牛肚炖汤好吃做法)
牛肚怎么炖汤才好吃?食材:牛肚250g、油适量、盐适量、葱适量、姜适量、香菜适量,我来为大家讲解一下关于牛肚怎么炖汤才好吃?跟着小编一起来看一看吧!牛肚怎么炖汤才好吃食材:牛肚250g、油适量、盐适量...
荷兰松饼怎么做松软(好吃到模糊的荷兰宝贝松饼)
还在发愁早餐吃什么?让这份零卡糖版本的荷兰宝贝松饼开启你的美好一天吧,做法也很简单哦!By爱乐甜用料黄油10g低筋面粉20g牛奶66g鸡蛋1个爱乐甜零卡糖10g爱乐甜白桃糖浆1勺蓝莓草莓薄荷叶杏仁片等...
炖牛肉的步骤(炖牛肉的方法)
炖牛肉的步骤?切好的牛腩放入锅内加水煮去血沫后,重新放入干净的锅内,同时加入料酒、酱油、葱结、姜片、十三香、豆瓣酱、料包大火烧开最后转小火焖炖30分钟左右,牛肉炖熟软烂后撒盐调味,美味的炖牛肉就完成了...
尖椒做法大全家常炒菜(尖椒炒鸡蛋的做法)
By枭笑用料草鸡蛋2个小尖椒3个盐、十三香适量油适量生抽少许葱花适量白砂糖1.5g做法步骤1、鸡蛋敲碗里,加入葱花,用筷子打散。尖椒去根,去籽切丝。2、锅中加入适量油,油温七成时加入蛋液,中小火煎鸡蛋...
新鲜蕨菜的做法凉拌(凉拌蕨菜多做这一步)
我家夏天经常吃凉拌菜,几乎一个星期会有三天吃凉拌菜。凉拌木耳,凉拌海带丝,凉拌黄瓜,凉拌蕨菜换着来。我喜欢凉拌菜的爽脆可口,喜欢酸甜可口的凉拌汤汁,尤其吃之前冰镇一下,太滋味真的太美了。有一阵子,传闻...
西红柿炖牛肉(西红柿炖牛肉怎么做)
西红柿炖牛肉?牛肉切块冷水下锅,水开后撇去浮沫,血沫干净之后捞出沥干,我来为大家科普一下关于西红柿炖牛肉?下面希望有你要的答案,我们一起来看看吧!西红柿炖牛肉牛肉切块冷水下锅,水开后撇去浮沫,血沫干净...