1. 日常生活中需要编程的地方有哪些
成功人生所需要知道的一切重要事情,你都能从计算机编程中学到。不相信我?那就继续往下看。
当我很小开始编程之时,还只是照搬电脑杂志上前瞻性的文字和符号,以便我和哥哥能够让带有一个双软盘驱动器的旧 Franklin 64 播放一段小巧的数字曲调。当时我们还没有太多生活经验去辨别那些神秘文本。
很多年后,在高中的Pascal课程中,事情看起来开始变得不同。了解if条件语句和for循环,开始引发出沃尔特·惠特曼和罗伯特·弗罗斯特等人都引以为傲的哲学突触联系。好吧,我说的有点夸张,但是这些见解仍然很酷。
是的,我知道,它说起来是一件很令人厌烦的事情——但事实是,在代码中,在while语句、数组、方法、对象等所有这些中,蕴含着很多智慧。事实上,我学到的很多驾驭生活的能力,通常都直接来源于我对多种编程语言的研究。
一、用流程图简化每件事情
许多程序员在开始编写单行代码之前很久就已经开始使用流程图。这样做的原因是,有时试图一下子编写出整个程序的感觉真的是压倒性的,尤其是当程序要完成一些非常复杂的任务时。
程序员将接受大的甚至巨大的软件项目,然后将它们分解为更好管理的更小的部分——有点像造一辆汽车,需要通过事先做每个所需组件,然后再将它们组合 在一起。每个部分都是一个(或几个)具有特定输入值或行为的集合、然后完成一些输出任务的代码块。在该模块内部,程序员将使用流程图描绘出从输入到输出的 逻辑。
流程图能够帮助你以一种可视化形式跟随这个逻辑,这远比你试图用文字把它写出来或者想当然地狂写代码来解决这一问题更加容易理解。程序员没有找出这 样的“动态”逻辑的原因是,后面的逻辑通常在很大程度上取决于你对如何处理程序中早前的逻辑做出的决定。早期决定错了,你将会把自己编入死胡同。
生活中也是如此。当你正在做一个关于如何去还清债务、买房子,或者如何处理任何其他复杂的生活状况,甚至如何管理工作中 的一个项目的决策。在你坐下落笔绘制出在这个过程或决策中每一步的创意流程图时,所有那些看似不可逾越的任务都能够得到更好的处理。这将帮助你在每一个 阶段为你所有可能的选择作出决定,或者预测所有可能性然后追踪各种情景。就像编程,了解早期的选择会如何影响后面的结果将帮助你及早地做出更好的决策。
二、每件事物都有它的位置
当你组织你的生活时也是如此,无论是你的房子还是办公室,你根据要存储事物所需空间的多少来选择空间的大小。小而透明的塑料盒用于盛放干货,一个贴 好标签的香料架盛放香料以节省空间。在办公室,你会将日常工作文档放在办公桌抽屉里,而将敏感的商业文档存放进一个锁柜中。每件物品都有合适的容器,并且 都有它适当的位置——这是组织良好生活的座右铭。
三、重用程序模块以节省时间
任何一个优秀的程序员最终都知道特定的代码块(或称为“函数”)可以在多个程序中重用。例如,一个将华氏温度转换成摄氏温度的函数,它可以用于你创 建的任何需要完成这一任务的程序中。这个函数是一个简单的模块,它以华氏温度为输入,然后输出对应的摄氏温度。这个函数可以包括一定行的代码,然而当你本 可以将它们保存为一个程序模块,然后再直接将其嵌入到未来任何需要它的程序中去时,你为什么非要为所编写的每一个程序都重建这些代码呢?
每当你开始编写一个脚本或程序时,第一步总是创建你的变量。在编程中,包含有很多不同类型的变量。有支持文本表示的字符串类型,支持非十进制数表示 的整数型,用于处理更大数字的双精度型或其变体,还有数组类型、结构体类型等等。我们的想法是,定义一个适用于手头任务的变量。例如,如果一个函数的输出 是一个人的名字,那么你需要的是一个字符串变量。
四、记录每一件事
有时,对于一个程序员来说,只是飞速编写代码而不记录单独的事情是非常诱人的。之所以诱人是因为,任何时候你都准确地知道你想要程序做什么以及你想 要怎样去实现它。记录一个程序需要时间。你必须描述每一步怎样做以及为什么这样做。这看似毫无意义,但几个月后当你决定重用这段代码或为另一用途修改它 时,这就体现了奋力挣扎想起你的每一行代码到底是在做什么,与迅速回退去了解你逻辑背后的整个意图之间的区别。
五、始终给自己留一条退路
一个业余程序员最常犯的错误之一是无限循环。这是一种打破循环所需的条件从未发生的情况,程序会留在循环里并且永远不会结束——这占用100%的电脑CPU资源,几乎相当于锁定了电脑,直至你终止这一过程。
业余程序员需要从中学习的教训是,每当你创建一个需要消耗大量CPU资源的循环来执行某种任务时,引入各种各样的跳出机制是非常重要的。换句话说, 相比基于一个判断你的计算结果是否超过一定值的While循环(在某些情况下它可能永远不会达到),引入一个非常基本的循环计数然后添加一个次要终止条件 的方法是更可取的。如果循环次数超过某个极大的数值,循环必须结束,而如果在一切正常的情况下,这个条件应该是永远不可能达到的。
2. 编程在日常生活中的应用有哪些
做为一个有着计算机专业学历,但现在连手机都玩不明白的专业人士来说,编程在日常生活中多少还是有些用处的。
先说比较直接的,就是和编程有关的东西吧,比如我上学的时候虽然也学过些编程,但只是一些基础知识而已,根本没有能力去做一个系统之类的东西,然后上班以后,我的工作和编程又一点关系都没有,编程是编出来让人用,而我的工作是用别人已经做好的东西。
那么除了实际的应用外,其实编程的思想我认为是更重要的一种能力,我当然也没学过什么高深的东西,甚至连学校学的那点基础都忘差不多了。但是我还是认为程序设计的一些思想对于日常生活中遇到的很多问题还是有着非常不错的指导意义的,比如不论遇到什么问题,都把它看成一个需求,那么一点点的把这个大的需求拆分成小块之后,再看起来这事儿可能就没刚开始想象中的那么不可完成了。
编程的用处有多少,就看你能把它和日常生活做出多大的关联度了。