点击上方蓝色“程序猿DD”,选择“设为星标”

回复“资源”获取独家整理的学习资料!

来源 | https://www.zhihu.com/answer/141334678

前言:

知乎上有个问题:编程到底难在哪里?知乎网友 DJ Hitori 的回答获赞无数。

这篇回答并不是讲述在生活中程序员如何买苹果,而是以买苹果为例说明程序员如何解决问题。程序员需要对问题进行透彻的分析,理清其涉及的所有细节,预测可能发生的所有意外与非意外的情况,列出解决方案的所有步骤,以及对解决方案进行尽量全面的测试。而这些正是编程难的地方。任何一点遗漏都会成为bug,轻则导致挨骂,重则导致经济损失甚至危害安全。

回答原文:

普通人:

我今天要买一斤苹果。

程序员:

我今天要买一斤苹果。

因为我只喜欢红富士苹果,所以我只买红富士苹果。

我能接受的最高价格是10元/斤。

正常情况下一斤苹果用一个袋子能装下,但是为防万一,我会带两个袋子。 我知道附近的3家水果店,所以我会依次访问这3家水果店。

根据上述条件,我设计出以下的买苹果的流程:

这个流程怎么样?我来设计一些测试样例,测试一下这个流程。

测试发现一个问题:如果水果店0和水果店1都有红富士苹果并且价格都低于10元/斤,而且水果店1的价格比水果店0更低,那么我希望买水果店1的苹果,但我设计的流程会让我买水果店0的苹果。

为了解决这个问题,我应该先询问所有水果店的价格,然后去价格最低的那一家买苹果。

经过修改,我重新设计出以下的买苹果的流程:

现在这个流程是不是完美了呢?不是,我还能发现很多问题。

如果3家水果店都有红富士苹果但都不到一斤,但是三家店加起来能达到一斤,那么我不应该结束流程回家,而是应该把三家店的红富士苹果都买下来。

如果我向水果店询问价格的时候这家店还有红富士苹果,但我询问完所有水果店的价格后这家店的红富士苹果卖完了,那么我的流程会让我试图处理不存在的红富士苹果。

我走路的过程中可能会遇到突发事件,比如发现了新的水果店,比如袋子破掉了苹果掉一地,对于这些情况我的流程都无法进行处理。

啊问题太多了我懒得再改流程了。我还是去X宝买吧。

那么接下来我要设计一个在X宝买红富士苹果的流程……

  • 震精!Spring Boot内存泄露,排查竟这么难!

  • Elasticsearch 在互联网公司大量真实的应用案例

  • 6个接私活的网站,你有技术就有钱!

  • 知乎千万级高性能长连接网关是如何搭建的

  • 别乱提交代码了,看下大厂 Git 提交规范是怎么做的!

扫一扫,关注我

一起学习,一起进步

神回答:编程到底难在哪里?相关推荐

  1. 新手前端练手网站_编程到底难不难学?新手入门选择哪种语言好?

    以下内容适合的读者:想要学习编程的小白 一.编程到底难不难学? 对于这个问题我的回答是不知道,学会了编程的人会说好学,中途就放弃的人会说很难,任何知识想要掌握好都不是一件容易的事情.所以我决定用自己的 ...

  2. 编程到底难在哪里?学编程真的很难吗?

    困难 1. 难在思路的构建 你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法. ...

  3. 编程到底难在哪里? 从一个美国实习生的故事说起

    记得之前组里来了一个美国实习生小伙子,很极客的那种,干活快,一天能给你写2000行代码(我复查的速度跟不上他写的速度),让做什么东西,上午告诉做个这个功能,下午就能在测试环境跑起来演示了.跟他单独开会 ...

  4. python编程到底难不难_养成下面几个编程习惯,学习python并不难!

    大家好,我是咿哑呀.随着Python在国内的发展,特别是在自动化运维领域,运维开发者99%使用python开发自动化运维平台.使用python编程语言的公司会越来越多,那么在学习Python的过程中需 ...

  5. 自学app难不难 有c语言,软件编程入门自学到底难不难 零基础自学软件编程的方法...

    很多人想知道软件编程入门自学到底难不难,零基础怎么自学软件编程呢?下面小编为大家介绍一下! 软件编程入门自学到底难不难 对编程有一定了解的人一定知道--编程是简单劳动,好学与不好学在于你是否能吃得了这 ...

  6. 什么都不懂的学java难不难_零基础转行学java到底难不难

    不少零基础的新手想要转行学习java可是不知道难度,南京学码思下面就给大家详细的说一说转行java的难度,希望能帮助到各位想要了解java的同学. 零基础转行学java到底难不难 新手转行学java到 ...

  7. python几岁开始学比较好_少儿编程到底几岁开始学合适?

    在回答这个问题之前,首先需要明确,学编程到底学的是什么:1. 适用于解决任何问题的"编程思维" (分解思维就是它的核心理念之一) 2. 各种编程语言(Python.C++等) 3. ...

  8. 为什么编程这么难?!

    大数据文摘作品 作者: Erik Trautman 编译:Shan LIU .Niki.新知之路.笪洁琼.亭八 对每一个决心学习编程的程序员来说,入坑之前,你也许只是一个"穿着正装在办公室里 ...

  9. HighNewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡。但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系?

    High&NewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡.但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系? 导 ...

最新文章

  1. 人月神话阅读笔记07
  2. 现实给了梦想多少时间
  3. C#编程(四十五)----------格式字符串
  4. 一个人最重要的是跌倒了爬起来的能力
  5. FILE 结构体的定义,inode ,软链接和硬链接的理解
  6. 反问疑问_句子练习大全(反问、疑问、设问、病句等练习)
  7. Python-按照list中dict的某个key进行排序
  8. SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
  9. how is Fiori launchpad host name and port number determined
  10. 第十七期:2019人工智能统计数字和一些重要事实
  11. XenServer 6.5实战系列之六:Creating a Storage Repository (CIFS)
  12. 模拟定位工具gps mock
  13. 双层玻璃窗的功效模型matlab,《数学模型》课程设计--三层玻璃窗的保暖功效.doc...
  14. 网易云音乐Mac上传云盘
  15. 仿淘手游交易平台网站源码
  16. ESP12F模组-USB转TTL模块-Arduino下载程序
  17. Python 爬虫批量爬取网页图片保存到本地
  18. phpexcel导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法
  19. zabbix 报警 Lack of free swap space on Zabbix server 处理
  20. Ford-Fulkerson 标号法求网络最大流

热门文章

  1. linux 空文件 sed 不能写入数据
  2. 内存分配函数 ExAllocatePool ExAllocatePoolWithTag
  3. 学习LOWORD、 HIWORD、LOBYTE、HIBYTE
  4. WinDbg演示IA-32 CPU下的Windows 分页机制下的地址转换过程
  5. java操作xml文件--修改节点
  6. Linux C编程--进程间通信(IPC)2--信号处理函数
  7. 申请阿里云服务器并远程登录
  8. Java学习之switch语句
  9. insight-vmi 编译中的问题
  10. 绝地求生服务器延迟高低排序,绝地求生:延迟不可怕,大神教你如何高ping吃鸡!...