`
dengkane
  • 浏览: 40450 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

想写程序吗?远离你的计算机!

阅读更多

  我最近想明白了一些事情。最好的写程序的地方不是在你的计算机前,不是使用你的编译器、IDE或其它一些工具。这最好的地方是一个远离这些工具的场所 —— 是某个能让你认真的思考的地方。对于一个你很熟悉的编程语言,你很容易把你脑子里已经构思好的程序转换成编译器/解释器可以编译/解释的程序 —— 难就难在如何在脑子里先把程序编好。

  有一天我乘火车旅行。我带了笔记本,但没有网络。不幸的是,我使用的是一种商业编程语言(IDL,真不巧),这种语言需要使用我大学网站上的许可证。因为不能连上互联网,我拿不到许可证,于是我的编译器和IDE就跑不起来。你可能会喜欢使用一个需要昂贵的许可证的商业编程语言,但它的确使我不能在编辑器里写任何的代码。而你猜这么着 … 这让我开始思考!

  我想这篇博客正好印证了Does Visual Studio rot the mind?这篇博客的内容,它里面说道:

  我从我的第一个老板那里学到的最大的一个教训是:“当你的程序运行异常时,不要使用debug工具,用你的大脑。”

  这就是远离电脑后会迫使你去做的事。通常你很容易进入这样一种编程习惯:

  1. 写一些程序(乱糟糟的)

  2. 编译,运行

  3. 使用简单的测试用例进行测试

  4. 发现有问题

  5. 小改一下程序,也许能解决这个问题

  6. 重复 …

  这当然会导致程序最终乱糟糟的,无法阅读理解,很有可能问题多多,没有很好的测试。

  远离计算机能迫使你在大脑里周全的思考所有的问题 —— 这跟你抱着计算机编译、运行你的程序相比可能会花更长的时间(至少对于小程序是这样)。可是,这样做后,你就不会去一点一点的改动程序、一遍遍试着运行它们了,你是真正的思考这些代码是做什么的。在那天、在火车上之前,我还从没有在纸上规划过任何的程序。

  而从此之后我努力在写程序之前会把思路画在纸上,思考它,一步一步的用代码实现,做出高质量的,高效的,没有问题的程序,多去思考,最后才在编译器上运行。程序是最后才从纸上拷贝到编译器里。

  任务完成的很好 —— 我自认为,希望这是一个有用的建议。

 

  英文原文:Want to write some code? Get away from your computer! 翻译:vaikan

分享到:
评论

相关推荐

    远离隐私泄露!17大安全工具保你上网无忧

    别搞错了:专业的网络犯罪岔子和政府撑腰的网络犯罪分子在试图危及你的身份――如果在家里,窃取你的钱...安全精英人士在运行众多程序、工具和专门的硬件,确保其隐私性和安全性尽可能高。我们在本文中分析了这一组工具

    GiliSoft Exe Lock一款简单实用的应用程序加密软件.rar

    一款简单实用的应用程序加密软件,当用户不想其他人使用电脑上的应用程序,用户就能够使用该软件将其应用程序进行加密处理,这样就能在两个或两个以上的人使用与你同一台计算机时,保护其中需要加密的隐私。...

    ActivityWatch是一个自动时间跟踪软件,帮助你跟踪你所做的事-python

    我们通过创建一个用于在用户本地计算机上安全存储数据的应用程序以及一组记录数据的观察者来实现这一目标,例如: 当前活动的应用程序及其窗口的标题 当前活动的浏览器选项卡和它是标题和 URL 键盘和鼠标活动,用于...

    声卡常见故障分析

    2.最头痛的问题莫过于Windows9X下检测到即插即用设备却偏偏自作主张帮你安装驱动程序,这个驱动程序偏是不能用的,以后,每次当你删掉重装都会重复这个问题,并且不能用“添加新硬件”的方法解决。笔者在这里泄露一...

    create-magento-app:零配置工具链,可在数分钟内部署Magento 2应用程序!

    零配置工具链,可在数分钟内部署Magento 2应用程序! –如何创建一个新的应用程序。 –了解如何使用创建Magento应用程序引导的应用程序。最重要的功能无冲突设计 :handshake: 该应用程序将自动选择空闲端口。 它将...

    计算机拆装实验报告.doc

    计算机拆装实验报告 一、实验概述 【目的及要求】 1、了解计算机配置原理和方法 2、掌握计算机拆卸方法和注意要点 3、掌握计算机安装方法和注意要点 4、学会组装电脑 【基本原理】 计算机几个主要部件通过计算机主板...

    奥鹏东北师范大学计算机应用基础在线作业2-0003满分作业参考3.docx

    0003 内存和外存相比,其主要特点是 选项A是:能存取大量信息 选项B是:能长期保存信息 选项C是:存取速度快 选项D是:能同时存储程序和数据 正确选项:C E-mail是指 选项A是:利用计算机网络及时地向特定对象传送...

    Computer_Management:简单的计算机管理应用程序

    Computer_Management:简单的计算机管理应用程序

    磁共振的一般经典和量子力学描述:在电偶极矩实验中的应用

    介绍了磁共振的一般理论描述。 该描述对于详细分析存储环中电偶极矩实验中的自旋动力学是必要的。... 这种差异的存在对于在分析派生和计算机仿真之间建立共识以及检查自旋跟踪程序至关重要。 考虑了主要的系统误差。

    activitywatch:最好的免费开放源代码自动时间跟踪器。 跨平台,可扩展,注重隐私

    我们通过创建用于在用户本地计算机上安全存储数据的应用程序以及一组记录数据的观察程序来实现此目标,例如: 当前活动的应用程序及其窗口标题 当前活动的浏览器选项卡及其标题和URL 键盘和鼠标活动,以检测您...

    Linux循序渐进的基础学习

    他的目的是想设计一个代替Minix(是由一位名叫Andrew Tannebaum的计算机教授编写的一个操作系统示教程序)的操作系统,这个操作系统可用于386、486或奔腾处理器的个人计算机上,并且具有Unix操作系统的全部功能,...

    shake-to-switch:我们希望人们使用手势与他们的计算机进行交互

    摇动切换 当您坐在舒适的笔记本电脑上看电影,有人打扰您并且必须伸手键盘来暂停/倒带电影时,您难道不觉得有点挣扎吗? 或者,也许您正在VLC / youtube在后台运行的情况下完成... 将设备朝自己或远离你的方向(Z轴)

    会计理论考试题

    A、高级语言编译程序 B、生物病毒 C、操作系统 D、计算机程序 4.把高级语言的源程序变为目标程序要经过 ___D__ 。 A、编译 B、编辑 C、汇编 D、解释 5.声音与视频信息在计算机内是以 ___D___ 表示的。 A、模拟信息 B...

    chromeExtRecordRTCDesktop

    chromeExtRecordRTCDesktop 它将录制并上传您的视频答案 与社区分享您的视频答案 想象一... StackOverTube 团队已在 Google 商店中提供此应用程序,让您可以对计算机屏幕进行截屏。 您可以在以下位置找到扩展程序: :

    反黑安全卫士2015 v1.0.176

    8、购物保护当你在网上购物时,保护您的计算机系统及个人敏感信息9、反黑客禁止任何远程访问,拦截黑客攻击或者删除执行任务,保护您的计算机免受黑客的侵扰。 10、24/7技术支持反黑技术支持团队在线提供每天24小时...

    grocery-list-reactjs:这是使用ReactJS构建的对初学者友好的杂货清单应用程序

    第2步 :people_with_bunny_ears: 将此 repo 克隆到您的本地计算机。 第 3 步远离! :hammer: :hammer: :hammer: 可用脚本 在项目目录中,您可以运行: npm start 在开发模式下运行应用程序。 打开在浏览器中查看...

    CareUEyes护眼

    CareUEyes - 用于改变计算机屏幕上图像的色温和亮度,此外还能提醒用户休息一下并远离显示屏。该程序专为要求不高的用户而设计,不会强迫初学者使用大量的选项和设置。用户有机会为其余眼睛及其持续时间选择适当的...

    stm32的USB-DFU上位机工具源码(MFC),基于ST官方DfuSe-v3.0.4 ,实现了hex转dfu+源代码+文档说

    可以提前告诉你这是基于C++的MFC程序,如果你没玩过MFC那就尽量远离吧,避免溅你一身血。。。 - "keilkill.bat": 这是dos的脚本程序,因为编译代码后会生成很多链接库或者中间文件之类的东西,很占用存储空间。所以...

    游戏拦截专家2011

    软件内置数以万计的游戏、色情网址,可以有效保护您的孩子远离网络黄赌毒的侵害。 5、网址白名单和网址黑名单功能:可以自定义要屏蔽/放行的网站。 三、先进的时间控制功能:通过我们的时间管理模块,您可以为您的...

    Computer Vision:计算机视觉的最佳实践、代码示例和文档-开源

    近年来,我们看到计算机视觉领域出现了非凡的增长,在人脸识别、图像理解、搜索、无人机、地图绘制、半自动和自动驾驶汽车等方面都有应用。 许多这些应用程序的关键部分是视觉识别任务,例如图像分类、对象检测和...

Global site tag (gtag.js) - Google Analytics