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

2023-11-20

cfda9f8f42c98d5c6586f9d5c4487cae.jpeg

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

翻译 | 杨小爱

最近,我的一个朋友来找我,他跟我说,他想学编程,但不知道自己是否适合这个职业,于是,他问了我一个问题:在思维模式上,程序员和非程序员的人有区别吗?

我知道他以前从来没有学过编程,向没有编码经验的人介绍编程思想是相当困难的。我想了想,打算换一种方式来解释这个问题。

我问他:如果你现在买两斤苹果,你会怎么做?

他说:直接去水果店买。

我说:如果我们要以编程方式表达买苹果的过程,可能是这样的。

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

  • 我打算买两斤苹果。

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

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

9a638e37a3f1962237ffbad92ac18817.png

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

  • 在上述过程中,我们需要记录周边的水果店,所以需要定义变量 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 斤,你该如何选择?

朋友:嗯,还是有点难。

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

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

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

学习更多技能

请点击下方公众号

4404e03ced69418e03cd6472356fbee3.gif

5917f73d5340118755663a5839f4eaca.jpeg

f0b9131dbf26ddf03adee7e8674f2406.png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐