搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 朵朵老师说 > 编程是什么?

编程是什么?

朵朵老师说 2018-02-28

有一家饭店的大厨,烧得一手好菜,经过口碑相传,客人从五湖四海闻名而来。然而这对饭店的老板来说,并不单纯是一个好消息。因为客人不是奔着饭店,而是奔着大厨的手艺来的。老板必须想办法留住这位大厨,否则他一旦被别人挖走,饭店的生意就会一落千丈了。然而即便老板不惜血本保证了大厨的忠诚度,风险也依然存在:

大厨休息或请假的时候,菜品的口味就无法让顾客满意;

大厨只有一个,如果想在多个地方开分店,那口味也就不能保证了;

大厨再厉害,同时也只能炒一个菜,而顾客越来越多,输出总是供不应求;

大厨年纪大了总是要退休的,如果收徒的话,怎么继续保证徒弟的忠诚度呢?

有一天,老板突然悟到,决定菜品口味的是大厨烧菜的过程,而不是大厨本人。如果大厨愿意把自己每个菜的菜谱都写出来,那不就可以请别的厨师来操作了吗?虽然别人按照菜谱烧出来可能达不到原味的100分,但90分总是能达到的,而这样的差距是一般的食客无法分辨的。这样只要菜谱在,饭店菜品的质量就能得到保证,扩张店面、开分店什么的就都不成问题了。

 

于是老板和大厨谈了一个晚上,说服了他用菜谱技术入股。几年后,饭店生意越来越好,开了无数家分店,老板赚了很多钱,大厨也得到丰厚的分成,不用再天天靠手艺吃饭了。

什么是编程?

在洗衣机出现之前,人们只能用手来洗衣服,需要经过浸泡、揉搓、漂洗、拧干的一系列流程。而全自动洗衣机的发明使洗衣服的工作人人都可以轻松完成,从而可以将原本用来洗衣服的时间解放出来去做其他事情。随着洗衣机的不断迭代升级,洗衣服的整个流程最终会被人们遗忘,只有设计洗衣机的工程师们了解流程,因为他们负责对其进行优化和改进。

 

所谓程序,就是为了实现一个需求而设计的逻辑流程。大厨的菜谱和洗衣机的工作流程都是程序,只不过前者由人来执行,后者由机器来执行。正是因为有程序作为媒介,我们才可以分离设计者、调用者和执行者的角色。虽然程序的执行效果未必能让其设计者满意,但它已经可以脱离设计者的时间和空间局限而存在,可以被其他人执行、验证和改进。

 

所谓编程,就是指编写程序。将烧菜的过程写成菜谱,本质上就是在编程。通过编程,我们更加透彻地理解并阐述了事物的本质,让曾经专属于某个人、某个团体、某个地方甚至某个时刻的东西,得以独立的存在和发展。从这个角度来讲,说编程是在创造生命也不为过。

 

编程可以说是一种标准化的写作。标准化保证了服务和产品的质量,也使大规模复制和扩张成为可能。KFC正是依赖其详尽到炸薯条的油温秒数的食品加工手册,才将分店开满世界各地的。陶华碧如果不能将她的豆瓣酱配方和制作过程清楚地描述出来,交由标准化生产线去制造的话,那么今天"老干妈"最多只是一个小乡村里的作坊级产品,不可能走上我们的餐桌。

 

我们每天的生活,都在和各种技术产品和服务打交道,比如导航、搜索引擎、聊天软件……你可曾想过,这些产品和服务背后的原理是什么?相信除了程序员群体之外,绝大多数人不会去想这些问题,因为:

这跟我没有关系啊!我又不去干这行……

应该只有专业人士才能搞懂吧,我可不行!

能用就行了,想那么多干啥,多累呀!

他们这么想并没有错,因为编程的本质就是:设计一个逻辑流程来实现指定的需求,使调用者无需了解实现细节即可达到目的。

由于程序和编程的广义概念太过笼统,为不导致概念混淆,下文中提到的"程序""编程",特指使用计算机编程语言编写,由机器来运行的程序。

解放时间和注意力

假设你已经在某岗位工作了一段时间,根据经验总结出来每天下班前有下面三件事需要做:

A、在公司内网系统查询某业务当天的数据(约10分钟)

B、整理成日报表并存档(约15分钟)

C、把几个核心数据用电子邮件发送给领导(约5分钟)

你可以在认真梳理过之后,将这个流程写下来,贴在办公桌前,或者记在脑子里。这自然比那些不知道流程的人要强得多,你可以确保每个步骤都不被遗漏地执行到(然而这并不能完全保证)。虽然你已经花了时间认真思考过,但每天这样枯燥乏味的流程都需要自己执行一遍……等等,这活我不可以找个秘书来干吗?

 

当然可以,雇佣他人是一种用金钱换时间的解决方案。但是这同时又引入了许多新的问题:

你需要花钱(废话)

你需要把要做的事解释给秘书听,并确保他能听懂(沟通成本)

秘书下班或休假时,这些事你还得自己做(有时间限制)

你要为秘书犯的错误承担责任(质量得不到保证)

每次秘书犯了错误,你都需要进行教育(培训成本)

秘书会直接接触业务数据和信息,难保有泄密的可能(安全隐患)

换一个秘书,以上的事情都得再来一遍……

这不是把事情搞复杂了吗?人的成本太高,提供的服务又不可靠。而如果你会编程的话,也许你可以:

编一个小程序来完成查数据、做报表、发邮件的流程,再配置一个定时任务每天自动执行;

谨慎一点的话,可以让程序先发到自己的邮箱,检查没有问题后再转发给领导;

必要的话,还可以让程序在运行出现意外时给你的邮箱或手机发报警通知;

如果你愿意,甚至可以给内网办公系统直接加上邮件报表这个功能……

假设你原本手工做完ABC流程需要30分钟,那么你的程序每执行一次,就为你节省了30分钟的时间。假如你写程序用了三个小时,那么一周就能收回成本,以后全部都是净赚的。如果程序运行的时间足够长,那么单次运行的均摊成本将趋近于零。可以看出,编程是一种用时间换时间的解决方案

 

当然,你需要将要做的流程写成机器能读懂的程序;如果需求发生变化,你需要对应地修改程序;如果运行时出了BUG,你需要调试修复……但更重要的是:程序不拿工资,不可能辞职,不需要休息,不会闹情绪,不可能犯错,只要你的流程正确,依赖的资源不出问题,它就可以7*24小时一直运转下去。

 

每当我们写程序实现了一个需求,就好比造出了一把锤子。今后你遇到类似的问题,都可以拿这个锤子来解决。当然有时会遇到锤子不称手的情况,需要持续地升级和优化。但在大多数情况下,这个锤子都是可以直接拿来用的。也就是说:完全相同的问题,你只需要解决一次就好,不会浪费时间在重复的工作上。

 

通过编程,你可以将那些枯燥无味的重复性工作中的部分甚至全部,交由机器来接管,这样就可以将你的时间和注意力从具体的事务中解放出来,去做更有价值的事情。比如研究和优化工作流程,或者陪伴家人,又或者去读一本书……

体验"开挂"的人生


当我们说某个人"开挂"时,其实是在说他的表现(数量、速度、精确度……)明显超出正常的范畴。当原始土著人碰到使用着各种科技产品的现代人时,大概就是一种"这哥们开挂了吧?"的感觉。

 

要知道,身体并不强壮的人类之所以能征服地球,就是因为我们会创造并使用工具来突破生理的局限,做到原本不可能做到的事情。在即将到来的全信息时代,编程将是创造工具,甚至使用工具的主要方法。我们天天都在使用的软件和APP,不管是文字处理,K歌软件还是搜索引擎,都已经和我们的生活融为一体,成为我们生命的延伸。通过使用这些软件,我们可以不断突破自己经验和能力上的局限,我们随时都在给自己"开挂"

 

然而大多数人都是在被动地等待别人来满足自己的需求。他们会使用通过朋友推荐、广告宣传等各种渠道推送给自己的软件,然后感慨一下:"哇,居然还可以这样!"他们只会使用已有软件提供的标准功能,而一些个性化的特殊需求就只能因为软件不支持放弃掉了。这就和穿衣服一样,大多数人只会买标准尺寸穿,如果这里紧那里松,这里长那里短,也就只能忍了。

 

还有少部分人会主动考虑如何去满足自己的特殊需求。他们会想:"如果有XXX功能就好了……"他们会主动去寻找能满足自己需求的软件,研究软件的个性化配置,或者给软件的开发者提功能建议。同样,追求个性的人可能会找裁缝为自己量身订做或者修改衣服,使其尽可能地适合自己。

 

只有极少数的人有能力自己去实现那些别人不能满足的需求。他们能在原有软件的基础上开发插件,对软件进行二次开发,甚至写出一个全新的软件。同样,追求完美的人可能会亲自设计衣服,并把一件衣服不停地改来改去,直到自己彻底满意为止。

 

如果说学好英语能为你的世界打开一扇门,让你拥有更多的选择的话;那么学好编程就能让你有机会以"上帝视角"来认识和改造这个世界,并拥有几乎无限的可能性。因为在现实中的一切最终都会被信息化,而你可以通过编程来对信息做任何形式的加工和处理,只要你想得到,就能做得到。


节选《为什么你应该开始学习编程了?》



版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《编程是什么?》的版权归原作者「朵朵老师说」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注朵朵老师说微信公众号

朵朵老师说微信公众号:gh_4a623be1e470

朵朵老师说

手机扫描上方二维码即可关注朵朵老师说微信公众号

朵朵老师说最新文章

精品公众号随机推荐