英文原文:6 Life Habits That Programming Could Teach You Today

  成功人生所需要知道的一切重要事情,你都能从计算机编程中学到。不相信我?那就继续往下看。

  当我很小开始编程之时,还只是照搬电脑杂志上前瞻性的文字和符号,以便我和哥哥能够让带有一个双软盘驱动器的旧 Franklin 64 播放一段小巧的数字曲调。当时我们还没有太多生活经验去辨别那些神秘文本。

  很多年后,在高中的 Pascal 课程中,事情看起来开始变得不同。了解 if 条件语句和 for 循环,开始引发出沃尔特·惠特曼和罗伯特·弗罗斯特等人都引以为傲的哲学突触联系。好吧,我说的有点夸张,但是这些见解仍然很酷。

  是的,我知道,它说起来是一件很令人厌烦的事情——但事实是,在代码中,在 while 语句、数组、方法、对象等所有这些中,蕴含着很多智慧。事实上,我学到的很多驾驭生活的能力,通常都直接来源于我对多种编程语言的研究。

  用流程图简化每件事情

  许多程序员在开始编写单行代码之前很久就已经开始使用流程图。这样做的原因是,有时试图一下子编写出整个程序的感觉真的是压倒性的,尤其是当程序要完成一些非常复杂的任务时。

  程序员将接受大的甚至巨大的软件项目,然后将它们分解为更好管理的更小的部分——有点像造一辆汽车,需要通过事先做每个所需组件,然后再将它们组合在一起。每个部分都是一个(或几个)具有特定输入值或行为的集合、然后完成一些输出任务的代码块。在该模块内部,程序员将使用流程图描绘出从输入到输出的逻辑。

  流程图能够帮助你以一种可视化形式跟随这个逻辑,这远比你试图用文字把它写出来或者想当然地狂写代码来解决这一问题更加容易理解。程序员没有找出这样的“动态”逻辑的原因是,后面的逻辑通常在很大程度上取决于你对如何处理程序中早前的逻辑做出的决定。早期决定错了,你将会把自己编入死胡同。

  生活中也是如此。当你正在做一个关于如何去还清债务、买房子,或者如何处理任何其他复杂的生活状况,甚至如何管理工作中的一个项目的决策时。在你坐下落笔绘制出在这个过程或决策中每一步的创意流程图时,所有那些看似不可逾越的任务都能够得到更好的处理。这将帮助你在每一个阶段为你所有可能的选择作出决定,或者预测所有可能性然后追踪各种情景。就像编程,了解早期的选择会如何影响后面的结果将帮助你及早地做出更好的决策。

  每件事物都有它的位置

  每当你开始编写一个脚本或程序时,第一步总是创建你的变量。在编程中,包含有很多不同类型的变量。有支持文本表示的字符串类型,支持非十进制数表示的整数型,用于处理更大数字的双精度型或其变体,还有数组类型、结构体类型等等。我们的想法是,定义一个适用于手头任务的变量。例如,如果一个函数的输出是一个人的名字,那么你需要的是一个字符串变量。

  当你组织你的生活时也是如此,无论是你的房子还是办公室,你根据要存储事物所需空间的多少来选择空间的大小。小而透明的塑料盒用于盛放干货,一个贴好标签的香料架盛放香料以节省空间。在办公室,你会将日常工作文档放在办公桌抽屉里,而将敏感的商业文档存放进一个锁柜中。每件物品都有合适的容器,并且都有它适当的位置——这是组织良好生活的座右铭。

  重用程序模块以节省时间

  任何一个优秀的程序员最终都知道特定的代码块(或称为“函数”)可以在多个程序中重用。例如,一个将华氏温度转换成摄氏温度的函数,它可以用于你创建的任何需要完成这一任务的程序中。这个函数是一个简单的模块,它以华氏温度为输入,然后输出对应的摄氏温度。这个函数可以包括一定行的代码,然而当你本可以将它们保存为一个程序模块,然后再直接将其嵌入到未来任何需要它的程序中去时,你为什么非要为所编写的每一个程序都重建这些代码呢?

  亨利·福特关于他著名的T型车曾经说过,“任何顾客都可以拥有一辆他想要的任意颜色的汽车,只要它是黑色的。”

  原因是福特已经想出了如何组装汽车,并且如果每制造一辆新车都能够重用相同的设备(和相同的颜色漆)而无需重现该过程会让它们更快地上市。这催生了流水作业,它彻底改变了汽车工业。同样的方式,你可以将这一原则应用到你生活中需要重复性工作的各个领域。自动化是成功的关键,所以如果你能找到方法来自动化工作中需要重复完成的任务,——你就可以使你的一天更有效率以节省时间。

  首先,阅读我们的网站自动化指导。

  记录每一件事

  有时,对于一个程序员来说,只是飞速编写代码而不记录单独的事情是非常诱人的。之所以诱人是因为,任何时候你都准确地知道你想要程序做什么以及你想要怎样去实现它。记录一个程序需要时间。你必须描述每一步怎样做以及为什么这样做。这看似毫无意义,但几个月后当你决定重用这段代码或为另一用途修改它时,这就体现了奋力挣扎想起你的每一行代码到底是在做什么,与迅速回退去了解你逻辑背后的整个意图之间的区别。

  这种细致的文档在生活中的每个领域都有帮助,从跟踪生日和纪念日,到保持日常商务交易日志以及进行这些交易的原因。随着很多决策像风中的树叶一样来来去去,日常生活会变成每一个模糊的日子。只依靠记忆去记住你为什么出席某些会议或为什么做出某些购买的做法是幼稚且低效的。每日日记或日志对解放你的思想去做更重要的事情有很大帮助。

  始终给自己留一条退路

  一个业余程序员最常犯的错误之一是无限循环。这是一种打破循环所需的条件从未发生的情况,程序会留在循环里并且永远不会结束——这占用 100% 的电脑 CPU 资源,几乎相当于锁定了电脑,直至你终止这一过程。

  业余程序员需要从中学习的教训是,每当你创建一个需要消耗大量 CPU 资源的循环来执行某种任务时,引入各种各样的跳出机制是非常重要的。换句话说,相比基于一个判断你的计算结果是否超过一定值的 While 循环(在某些情况下它可能永远不会达到),引入一个非常基本的循环计数然后添加一个次要终止条件的方法是更可取的。如果循环次数超过某个极大的数值,循环必须结束,而如果在一切正常的情况下,这个条件应该是永远不可能达到的。

  这会如何应用到现实生活中呢?它恰恰说明,即使你认为已经有了完美的计划,事情仍然可能出错。一个例子可能是,计划了为期一周的在最美丽、放松的热带天堂的家庭度假,不料竟会因为下了一整周的雨而结束它。生活中“退路”的理念就是,要考虑到“最坏情况”,然后想出如果它真的发生了你要如何避免或者如何尽量去利用好它。

  生活并不总是可以预测的,即使一些你认为根本不可能会出错的最周密的计划,也可以很容易地被破坏。为最糟的意外事件做好计划,这将能确保当意想不到的事情发生时你不会以彻底失败而告终。

  完成任务时要释放内存

  从编程中得出的最后一个生活经验是,及时清理自己。在一个程序中,你将需要开放一个流到一个输出文件,创建一个充满数据点的大数组,以及其他一些占用计算机内存和资源的事情。一个干净的程序,是能够及时关闭输出流并清空已经用完的数组的程序。这里的理念是,要避免写出一个带有被称为内存泄漏的常见问题的应用程序。

  例如,在一个简单的 VB 应用程序中,你会这样删除一个数组:

  Erase ArrayDin

  或像下面这样关闭一个输出文件流:

  FileClose (1)

  这听起来像是你在更年轻的时候可能听到妈妈说过的一些事情,对吗?打扫你的房间,把你的衣服收好,洗净你的碗。然而,更进一步,收拾好你完成手头任务所使用的工具,不仅会使你的家和工作区整洁,它还能够留下足够的空间让你更快地完成下一个项目。把东西随意乱放只会浪费空间,而且当你之后找不到所需要的东西时还会浪费你的时间。

  底线

  事实上,你能从编程艺术中学到的生活经验并不只有这六个,还有更多。当涉及到组织、规划、制定策略和节约资源时,计算机程序员已经理解了它。你能够从花费时间学习一门编程语言的过程中学到很多东西,而不仅仅是编程本身。事实上,这就是为什么每个孩子在学校都至少应该学会一种编程语言,因为一旦你抓住了它的诀窍,那么它很快会变得明显,你可以在你生活的其他领域使用这些诀窍。

  你从编程的世界中发现了哪些其他类似的生活经验呢?

  图片来源:本文所有图片均来源于 Shutterstock 图片库。

  原文链接: Ryan Dube   翻译: 伯乐在线 - yixingqingkong

  译文链接: http://blog.jobbole.com/60816/

英文原文:6 Life Habits That Programming Could Teach You Today相关推荐

  1. mysql数据库英文句子翻译_MySQL文档翻译(八)附英文原文---性能优化概览

    优化概述 数据库性能表现依赖于数据库级别的几个因素,比如表,查询和配置设置.这些软件在硬件级别通过CPU和IO操作构筑结果,你需要尽可能的使用最少的资源达到最大的效果.当你专注于数据库的性能表现时,你 ...

  2. 外文翻译原文附在后面_本周作业是翻译外文文献摘要,电子版,回复到作业中,提交附件,格式按照外文文献翻译模版,先中文再附上英文原文,只需要摘要_学小易找答案...

    [多选题]自动变速器按汽车驱动方式分( ). [单选题]无意想象的极端形式是 [其它]使用DBUtils 完成对user表的CRUD [其它]学号尾号为8的同学下列作业选一样提交即可 1)提纲 ;2) ...

  3. 案例:用python将中文翻译的和英文原文合成新的word文档

    案例:用python中文翻译的和英文原文合成新的word文档 一 问题的形成 需求的描述:一个英语翻译专业的研究生同学有一个期末作业.老师给了一个英文的文档,需要同学们翻译成中文.老师给的文档是格式如 ...

  4. Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(二)

    Paper:自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语的分类和定义>官方英文原文翻译与解读(二) 目录 自动驾驶领域SAE标准之<道路机动车辆驾驶自动化系统相关术语 ...

  5. 介绍一个成功的 Git 分支模型——终于知道如何管理git分支了(好文章!!强烈建议看本文的英文原文)

    本文翻译转载自:https://www.oschina.net/translate/a-successful-git-branching-model 英文原文在2020年3月5日有更新(强烈建议看英文 ...

  6. 2021年 美国大学生数学建模竞赛 赛题发布!【英文原文 中文翻译】

    原文链接[微信公众号:校苑数模   ]:2021年美国大学生数学建模竞赛赛题发布! 原文链接[微信公众号:校苑服务号]:[中文翻译]2021年美国大学生数学建模竞赛赛题! [2021美赛赛题(英文原文 ...

  7. 2023年美国大学生数学建模竞赛赛题发布【英文原文 中文翻译】

    英文原文 & 中文翻译 2023年美国大学生数学建模竞赛赛题发布! 2023年美国大学生数学建模竞赛赛题已发布在公众号~ 检查文件格式 美赛论文提交有严格的格式,例如:2212345(队伍控制 ...

  8. Paper:自动驾驶领域SAE标准之《道路机动车辆驾驶自动化系统相关术语的分类和定义》官方英文原文翻译与解读(一)

    Paper:自动驾驶领域L级别SAE标准<道路机动车辆驾驶自动化系统相关术语的分类和定义&Taxonomy and Definitions for Terms Related to Dr ...

  9. Apache License Version 2.0, January 2004 英文原文与中文翻译

    由于对合作规则的了解对于开发者们非常重要,为了让大家更加清晰地了解OpenHarmony开源协议,更好进行参与及获得各项发展机会,我们整理本协议的英文全文和邀请好友程佳璇进行了全文中文翻译便于国际国内 ...

最新文章

  1. sqoop连接hive和mysql_用Sqoop进行Hive和MySQL之间的数据互导
  2. ueditor1.4.3配置过程(包含单独上传文件以及图片的使用)
  3. 机器学习——01、机器学习的数学基础1 - 数学分析
  4. redux 和 mobX对比
  5. gRPC真要取代WebApi了,你还学得过来吗?
  6. java 日期 年数_java 日期加减天数、月数、年数的计算方式
  7. 一些常见的iOS面试问题,一眼就能看出 初级和高级工程师的区别
  8. django.template.exceptions.TemplateSyntaxError: ‘staticfiles‘ is not a registered tag library. Must
  9. CDH5 Hadoop如何支持读写OSS
  10. c#控制IE浏览器自动点击等事件WebBrowser,mshtml.IHTMLDocument2 .
  11. windows7配置java环境变量
  12. CSS3效果 光斑动画(渐变)
  13. 天牛须和贪心算法_天牛须算法
  14. 燕山大学软件测试,工程技术研究期刊版面费_软件测试期刊_燕山大学学报版面费...
  15. NLP 语义匹配:经典前沿方案整理
  16. php固定红包 + 随机红包算法
  17. 高数:第四章(同济大学第七版)
  18. 后端基础PHP——简介及基本函数(上)
  19. rpm方式安装redis4.0
  20. Mybatis03-封装MybatisUtil实体类

热门文章

  1. 开发版linux随身wifi,让linux下无线网卡变身随身wifi
  2. kubectl认证 授权 准入控制
  3. ipad浏览器安装java_在桌面浏览器中调试iphone、ipad等设备上的网页
  4. 从头开始设计我的网游
  5. sap系统中的batch_SAP 批次管理(Batch management)配置介绍
  6. android手机用多久会卡机,你知道Android手机用久了会卡,而iPhone则不会是为什么吗?...
  7. 如何利用小程序布局社交电商?
  8. 文本关键词的提取算法实验
  9. 用python输出圣诞树_教你怎样用Python画了一棵圣诞树,赶紧来学习
  10. Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(环境搭建)