`
helloyesyes
  • 浏览: 1316066 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

程序员应该学开车

阅读更多
说实在的,过去从来也没有想到这辈子还会学会开车。没学会开车之前,有时做梦开车,只不过更像开飞机。现在学会开车了,结果经常做梦找不到车,或者找不到地方停车。:)
闲话少说,这会儿想说说开车和编程之间的关系。用我外公(抗战前就开车了,开了50年了)说:开车很简单,两分钟就能学会。但是要开好车,则需要一辈子。
几年前我学了开车,尽管不是两分钟就学会,但在同组的几个人中,学的是最快的(如果再早十年,就更快了,年纪小学东西快)。开车实际上是一个颇为复杂的并发操作,刚开始的时候总是让人手忙脚乱的(挨师傅骂,是非常正常的事)。
举个例子,开车到一个路口,打算右转弯。首先开方向灯,然后减速。但是不能随随便便地马上就能打把转向了。作为驾驶员,保证行人和自行车的安全是非常重要 的。于是,在打把之前,先得从右反光镜里观察右侧的非机动车。同时眼睛还要扫视车头右侧的人和自行车。在右前方没有阻挡的情况下,开始转弯。但这还没完, 因为减速,必须换档。如果垂直方向的道路是绿灯,那么还必须注意避让那个方向的车和人。还有一个小麻烦,驾驶室左前方的挡风玻璃立柱往往会影响视线,形成 盲区。有经验的驾驶员会不停地前后摇动头部,以避开立柱的遮挡。
综合起来讲,当你驾车在一个繁忙的十字路口右转的时候,往往是:左脚踩着离合器,右脚带着刹车,左手打方向,右手抓着排挡,头不停地转动,或前后摇动,视 线在右反光镜、车右侧和右前方、正前方、左前方这几个方位间不断地扫视。脑子当然不能闲着,高速运转,寻找车流和人流中的空隙,以便快速穿入。此时的司 机,就像一台跑着多线程的笔记本。
通常,人脑一个时刻只能处理一项任务。因此,我们初学的时候,基本上会把车开得七歪八扭。但随着练习时间的增加,这些动作慢慢地会融入我们的潜意识,渐渐地成为反射性的动作。于是,我们便学会了并发地开车。
当一个程序员编程的时候,有很多与开车相似的地方。比如我们编写一个程序,在一个窗口中绘制一些曲线图,我们实际上需要同时处理很多方面的问题。首先,我 们得对付语法,尽可能地回想起语法要点,以便编写出有用的代码。然后,我们必须调用系统服务,我们必须回忆起每个参数的类型、次序和含义。并且需要明确每 个参数和返回的约定。必要时还得对某些异常作出必要的处理。我们要尽可能多地回忆起预定义的常量、枚举或宏。我们还要竭力避免破坏代码的软件工程性,尽可 能做到DRY。为了实现程序,我们还必须明确图形构建的算法,以及色彩线条的设定。最重要的,还要尽力避免编写引发错误的代码。
在很多情况下,我们几乎同时处理着这些问题,时常让脑子超负荷。这也就是编软件累人的地方。
我们通过编程练习和开发活动不断地操练这些工作,最后就像开车那样把编程的基本技巧作为本能存储在大脑中,在未来的开发活动中使我们驾轻就熟。
至于为什么程序员应该学开车,那就很容易理解了。因为编程,还可以把某些不是顶顶要紧的工作放一放,比如DRY、错误处理等等,先完成功能再说。但开车, 只要疏忽了哪一项,便会引发事故。开车有助于训练人并发处理问题的能力。对于程序员,就更容易处理诸多相互混杂的编程要领了。
分享到:
评论

相关推荐

    神级程序员python知识框架

    Python 编程,Python 要...曾经我们以为不需要每个人都会读书写字,但随着人们读写能力的提高,人与人之间的沟通变得更好学习Python,做数据分析,跟语文、数学、游泳、开车一样,是通用技能,现在打好基础,以后学什么都轻松。

    XNA开发2D开车范例

    《XNA开发2D开车范例》是一款专为初学者设计的编程实例,它利用微软的XNA框架,为开发者提供了一个2D游戏——开车游戏的实现基础。在这个实例中,我们将深入探讨XNA框架的核心概念,游戏循环,以及如何在2D环境中...

    android真正入门的教程-基础的基础

    2. **规范有序**:随着经验的积累,程序员应该学会编写规范的代码,注意变量命名、文档编写以及提高程序效率。 3. **用户体验**:开发应用时应重视用户体验,确保界面友好、操作简便。 4. **学无止境**:成为一名...

    《汇编语言课程设计案例精编》源代码.rar

    在计算机编程领域中,汇编语言因其与机器代码紧密相关而占据了特殊地位,它允许程序员对硬件进行直接控制和优化。《汇编语言课程设计案例精编》源代码.rar提供了一个宝贵的资源,使学习者能够通过具体的编程实例,...

    MBA经典故事(四).pptx

    在软件开发中,程序员可能过于追求代码效率或功能实现,而忽视了用户体验和团队合作的过程。 “体谅”故事教导我们,换位思考的重要性。在团队协作中,理解他人的角度和感受可以避免不必要的冲突,提高团队效率。...

    高德地图图层效果.zip安卓程序项目源码资源下载

    这个项目源码旨在帮助学生进行毕业设计、程序员进行学习研究,以及小型公司快速换肤以创建新的地图应用项目。 在Android开发中,高德地图API是开发者常用的地图服务工具,它允许开发者在应用程序中集成地图功能,如...

    java心得分享技术文章总结.docx

    - "WebView 开车指南"、"Android 录音功能"、"Android NFC 技术解析"分别涉及Web视图集成、音频录制和近场通信的使用。 - "Android 手机 全面屏(18:9 屏幕)适配指南"针对屏幕适配问题提供了解决方案。 10. **...

    英语优质公开课PPT课件.pptx

    计算机程序员、工程师、飞行员、科学家、钢琴家、小提琴家、大学生、确保(make sure),以及一些具体的职业描述,如喜欢跳舞、为他人烹饪美食、穿制服在街上帮助司机、篮球打得出色、使病人康复、擅长写作、种植...

    地图定位地点交通选择导航lite程序源码.zip

    不过,从【压缩包子文件的文件名称列表】来看,“地图定位地点交通选择导航lite程序源码.zip”应该是包含了上述所有知识点的相关源代码文件,开发者可以通过研究这些源代码,深入理解上述概念的实际应用和实现细节。

    高德地图标注 路线规划.zip安卓程序项目源码资源下载

    这个项目源码对于不同类型的用户具有很高的价值,包括学生进行毕业设计、程序员进行学习研究以及小公司开发新项目时快速启动。以下是对该项目源码中涉及的关键知识点的详细说明: 1. **Android开发**:作为一款安卓...

    初中语文文摘生活改变人生的五个问题

    没有编程经验的人很难成为一个优秀的程序员,同样,不懂网络原理的人难以成为成功的网络管理员。在IT行业,深入理解和实践经验对于解决问题和取得成功至关重要。 3. **成本效益分析**:在IT项目管理中,我们需要...

    牡丹江一中2015-2016年高一英语上学期期中试题及答案2精选.doc

    1. 高中生就业:文章提到,David Jones在16岁时就已经成为一名电脑程序员,并在一家公司工作,这反映出高中生提前进入职场的情况。通常,大多数同龄人还在寻找工作或继续学业。 2. 信用卡申请限制:David由于年龄未...

    佛山市南海区业余体育学校2019年招聘模拟试题及答案解析.docx

    - 软件分类:语言编译器是一种系统软件,它将程序员编写的源代码翻译成机器可执行的指令,是编程过程中不可或缺的一部分。 2. 法律法规知识: - 人口政策:中国实行计划生育政策,但自实施以来,全国总人口数量...

    基于百度地图实现的定位功能.zip安卓程序项目源码资源下载

    这个项目源码可以作为学生进行毕业设计的参考,也可以供程序员学习研究,甚至可用于小型公司快速构建新的定位功能项目。 首先,我们要了解的是百度地图API在Android应用中的使用。百度地图API提供了丰富的地图、...

    mapbar地图编辑器

    "Mapbar地图编辑器"是一款专为程序员设计的高效地图集成工具,深受用户喜爱。它提供了丰富的地图数据处理和展示功能,使得在编程过程中集成地图功能变得更加便捷。这款软件主要适用于Web开发,尤其是那些需要在应用...

    QQMap地图API.zip

    这个包主要针对的是开发者,尤其是那些想要在自己的应用或网站中集成地图功能的程序员。通过使用QQMap地图API,开发者可以实现诸如地图展示、定位、路径规划、兴趣点搜索等一系列地图服务。 地图定位.html和地图...

    湖北省荆州2018 2019学年高一英语12月月考试题.doc

    第10至12题可能与旅行目的地(如城市名称)、交通方式(如开车)以及会面安排(如在市中心见面)相关;第13至16题可能涉及到工作目的(如商务旅行)、职业身份(如教师、学生或导游)以及当前所在地(如澳大利亚、...

    百度地图接口程序

    这个程序能够提供基础的地图展示、定位、路径规划等多种功能,对于想要涉足地图应用开发的程序员来说,是一个宝贵的参考资料。 在深入探讨之前,我们先理解一下“接口”这一概念。接口是不同系统之间交互的桥梁,它...

Global site tag (gtag.js) - Google Analytics