神回答:编程到底难在哪里?
点击上方蓝色“程序猿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. 难在思路的构建 你学了很多语法,很多 API,但是当给你一个实际问题,让你通过编程实现,不是简单地罗列 API 即可完成,而是需要你对问题进行分析,理清解决问题的逻辑,然后再通过各种算法. ...
- 编程到底难在哪里? 从一个美国实习生的故事说起
记得之前组里来了一个美国实习生小伙子,很极客的那种,干活快,一天能给你写2000行代码(我复查的速度跟不上他写的速度),让做什么东西,上午告诉做个这个功能,下午就能在测试环境跑起来演示了.跟他单独开会 ...
- python编程到底难不难_养成下面几个编程习惯,学习python并不难!
大家好,我是咿哑呀.随着Python在国内的发展,特别是在自动化运维领域,运维开发者99%使用python开发自动化运维平台.使用python编程语言的公司会越来越多,那么在学习Python的过程中需 ...
- 自学app难不难 有c语言,软件编程入门自学到底难不难 零基础自学软件编程的方法...
很多人想知道软件编程入门自学到底难不难,零基础怎么自学软件编程呢?下面小编为大家介绍一下! 软件编程入门自学到底难不难 对编程有一定了解的人一定知道--编程是简单劳动,好学与不好学在于你是否能吃得了这 ...
- 什么都不懂的学java难不难_零基础转行学java到底难不难
不少零基础的新手想要转行学习java可是不知道难度,南京学码思下面就给大家详细的说一说转行java的难度,希望能帮助到各位想要了解java的同学. 零基础转行学java到底难不难 新手转行学java到 ...
- python几岁开始学比较好_少儿编程到底几岁开始学合适?
在回答这个问题之前,首先需要明确,学编程到底学的是什么:1. 适用于解决任何问题的"编程思维" (分解思维就是它的核心理念之一) 2. 各种编程语言(Python.C++等) 3. ...
- 为什么编程这么难?!
大数据文摘作品 作者: Erik Trautman 编译:Shan LIU .Niki.新知之路.笪洁琼.亭八 对每一个决心学习编程的程序员来说,入坑之前,你也许只是一个"穿着正装在办公室里 ...
- HighNewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡。但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系?
High&NewTech:来到了21世纪的第3个十年,各行业数字化迫在眉睫,全民编程也势不可挡.但,问题来了,编程,一定需要写代码么?那么,传说中的iVX工具,与编程到底又有什么暧昧关系? 导 ...
最新文章
- 人月神话阅读笔记07
- 现实给了梦想多少时间
- C#编程(四十五)----------格式字符串
- 一个人最重要的是跌倒了爬起来的能力
- FILE 结构体的定义,inode ,软链接和硬链接的理解
- 反问疑问_句子练习大全(反问、疑问、设问、病句等练习)
- Python-按照list中dict的某个key进行排序
- SAP Fiori Elements原理介绍之类型为Value Help的Smart Field工作原理
- how is Fiori launchpad host name and port number determined
- 第十七期:2019人工智能统计数字和一些重要事实
- XenServer 6.5实战系列之六:Creating a Storage Repository (CIFS)
- 模拟定位工具gps mock
- 双层玻璃窗的功效模型matlab,《数学模型》课程设计--三层玻璃窗的保暖功效.doc...
- 网易云音乐Mac上传云盘
- 仿淘手游交易平台网站源码
- ESP12F模组-USB转TTL模块-Arduino下载程序
- Python 爬虫批量爬取网页图片保存到本地
- phpexcel导出excel无法打开,提示文件格式或文件名无效,文件损毁,解决办法
- zabbix 报警	Lack of free swap space on Zabbix server 处理
- Ford-Fulkerson 标号法求网络最大流
热门文章
- linux 空文件 sed 不能写入数据
- 内存分配函数 ExAllocatePool ExAllocatePoolWithTag
- 学习LOWORD、 HIWORD、LOBYTE、HIBYTE
- WinDbg演示IA-32 CPU下的Windows 分页机制下的地址转换过程
- java操作xml文件--修改节点
- Linux C编程--进程间通信(IPC)2--信号处理函数
- 申请阿里云服务器并远程登录
- Java学习之switch语句
- insight-vmi 编译中的问题
- 绝地求生服务器延迟高低排序,绝地求生:延迟不可怕,大神教你如何高ping吃鸡!...