朋友问我,程序员和非程序员的思维模式有什么区别?

共 1937字,需浏览 4分钟

 ·

2022-07-09 16:04

英文 | https://javascript.plainenglish.io/what-is-the-difference-in-thinking-model-between-programmers-and-normal-persons-8ff8e2e9e94b

翻译 | 杨小爱


最近,我的一个朋友来找我,他跟我说,他想学编程,但不知道自己是否适合这个职业,于是,他问了我一个问题:在思维模式上,程序员和非程序员的人有区别吗?
我知道他以前从来没有学过编程,向没有编码经验的人介绍编程思想是相当困难的。我想了想,打算换一种方式来解释这个问题。
我问他:如果你现在买两斤苹果,你会怎么做?
他说:直接去水果店买。
我说:如果我们要以编程方式表达买苹果的过程,可能是这样的。

首先,我们必须明确我们的需求,例如:

  • 我打算买两斤苹果。

  • 我能接受的价格是每斤低于 1.5 美元。

那么,我们可以设计如下流程:

程序员需要以严谨和准确的方式考虑问题。

  • 在上述过程中,我们需要记录周边的水果店,所以需要定义变量 friutShops。

  • 我们需要依次访问不同的水果店,这叫做遍历。

  • 然后我们需要判断边界条件,比如水果店不开门怎么办?如果苹果的价格超出我的预期怎么办?

  • 我们在买苹果时,需要不断地把苹果放在袋子里,直到超过两斤,这个过程叫循环。

这些是程序员考虑问题时最基本的步骤。

如果我们用代码来表示这个过程,可能是这样的:

Query surrounding fruit shops to get fruitShops;for(fruitShop in fruitShops){  if(fruitShop.isOpen == false){    break;  }  if(fruitShop.apple.price > 1.5){    Ask the shop owner whether he is willing to lower the price;    if(the shop owner does not agree){      break;    } else {      fruitShop.apple.price = newPrice;    }  }
Take a bag; Start picking apples; while(the weight of the apples in the bag is less than two pounds){ Pick an apple from the pile of apples; Put the apple in the bag; } Calculate the total price of apples in the bag; Total price = (weight of apples in the bag) * (unit price of apples); Pay money; Leave the shop; return;}Take apples home;

朋友听了我的描述后说:嗯,你解释的很好,看起来很简单。

然后,我接着说:过程其实并不复杂,但是在实际开发中,我们要考虑的东西很多。

例如,在上述情况下,只要我们找到一家苹果价格低于 1.5 美元/斤的商店,我们就会立即购买苹果。但是如果现在,我们想要找到一家苹果最便宜的水果,我们应该做什么?

朋友说:那很简单呀,直接去每个水果店询问价格,然后我们就可以找到苹果价格最低的水果店了。

我说:可是我们很懒,不想走太多路。现在我们周围有10家水果店,分布在不同的位置。如果我们想遍历这 10 家水果店的同时还要尽量少走路,那我们如何安排关顾水果的顺序,并且尽量减少总路程?

想了半天,朋友回答:嗯,这个问题听起来很复杂,我不知道。

我说:没关系,这实际上是编程中的经典算法问题,现在你不会想到答案是正常的。程序员在编程开发时,不仅要正确解决问题,还要尽可能高效地解决问题。在开发过程中,我们正在逐一解决类似的问题。

然后,我接着继续说:而当我们选择苹果的时候,我们都希望买更大更红的苹果。现在你需要从一堆苹果中选择 N 个苹果。你需要确保它们是最好的苹果,并且它们的质量总和刚刚超过 2 斤,你该如何选择?

朋友:嗯,还是有点难。

我说:有些人会先把苹果堆按质量分拣,然后再挑选最好的苹果,但如何快速分拣苹果,这又是另外一个问题。

朋友:好了,别说了,我脑子有点晕,看来我还是不适合做程序员。

我说:哈哈,没关系,我现在有点饿了,我们先去买些苹果充饥吧,^_^^_^。



学习更多技能

请点击下方公众号

浏览 37
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报