选自Medium

作者Jeff Hale

机器之心编译

善始者实繁,克终者盖寡,这句话用来学习编程的过程也很合适。在成为顶尖选手之前,总会遇到很多困难,甚至想放弃。本文作者 Jeff Hale 是 Medium 社区中非常有名的人工智能和技术领域的专栏作家。在这篇文章里,他给所有的编程者提供了 10 个真诚而且实用的建议以及快速解决编程错误的5个步骤。

在我下决心将编程进行到底之前,大概经历了四次放弃又捡起的过程,而且我观察了一些数据科学的学生,这种事不光是我一个人做过。

缓慢且乏味的学习过程,随之而来的挫折感,这些都是造成半途而废的原因。因此,我开始思考如何消除那些本不必要但确实阻碍了人们成为合格程序员的困难。学习都会有困难的,但是我们至少要减少一些没有必要的障碍。

这里有 10 个技巧可以帮助你更快地跨越障碍,获得更多的成就感。如果你已经写了很多年的代码,这里的许多技巧可能显得用处不大,但是对新手来说就是另外一回事了。而且就算你是个编程老手,也可能会看到一两个节省时间的小窍门呢!

1

分屏

在大多数情况下,我建议你在学习编程的时候把屏幕分成两个并排的面板——一个给你的 Jupyter notebook,另一个放浏览器,浏览器用来查看文档、Stack Overflow 和一些教程。如果你的屏幕很小,建议在负担得起的前提下换个大点的显示器。在美国,你可以花 100 多美元在亚马逊 (Amazon) 上买到一台 25 英寸的显示器。等你越来越熟练的时候,你就会想要专注于一件工作——这时候可以用键盘快捷键在分屏和全屏之间切换。在 Mac 上,我喜欢用 BetterSnapTool,如果你的系统是 Windows,可以到这篇文章(https://www.excelcampus.com/tips/split-screen-view-windows-mac/)上看看。

2

屏蔽干扰

让电脑和手机静音。如果可以的话,把手机拿开。如果你在一个嘈杂的地方,播放一些安静的纯音乐或者使用降噪耳机。你越能集中注意力,你就能学得越快。

3

亲手把示例代码写一遍

你不可能读一遍教程就能记住这些内容,复制粘贴没有什么实际价值,你必须先自己写一遍,然后想想怎么扩展一下,最后根据记忆打出来。「理论上,理论和实践之间没有区别。但实际上是有的。」——本杰明·布鲁斯特(不是约吉·贝拉最先说的)。

4

温故知新

学习一个新概念之后,在几天内再测试一下自己。研究表明,需要长期记住一件事时,每隔一段时间重复一次比直接死记硬背更有效。

5

通过教别人来学习

能教会别人,说明自己彻底懂了。向别人清楚地解释一个概念(口述或是书面都行)会迫使你理解这个概念的本质,建立关系,并创建类比,使得头脑中的联系得以巩固。这个技巧是 Feynman 学习技巧的一部分。

6

打好语言基础再调库

在使用编写好的程序库之前,要充分理解一门编程语言。学习变量类型可能很无聊,调用带有属性和方法的类似乎比较高级。但是一旦你很好地理解了一门语言,这个库的使用会容易得多。这样可以减少错误,节省大量时间。

7

一次只学一个东西

不要试图同时学习两个东西,这样你学习的时间不只是变成两倍,而是变成十倍。同理, 不要分心于闪闪发光的东西。找个地方,把那些诱人但和你正在学习的东西不相关的 url 保存一下,Chrome 的插件 One Tab 就很好用。

8

睡觉,锻炼,保持复原能力

让你的大脑处于最好的状态,保持神经连接的活跃。如果想要了解更多帮助你保持好状态的技术,可以看一下 Memorable Python 这本书。

9

加快打字速度

你打特殊符号的次数越多,你打字速度就越快。然而,你只要做一件小事就能很大程度上加快这个过程——学习好的触摸打字方式。这个网站(http://www.speedcoder.net/lessons/py/1/)里是一个 SpeedCoder 的相关练习。

10

学会使用快捷键

这里整理了二份快捷键使用方法:

  • Chrome 浏览器:https://support.google.com/chrome/answer/157179?hl=en

  • Mac :https://support.apple.com/en-us/HT201236

如果你是数据科学家或数据分析师,我在 Github 中对 Jupyter Lab 的快捷键做了整理 (https://gist.github.com/discdiver/9e00618756d120a8c9fa344ac1c375ac)。通过在~/的 Bash 配置文件中添加 ~/.bash_profile:alias gs="git status"就可以为 Mac 或 Linux 终端创建快捷方式。然后重新启动你的终端,这时候你需要键入的就是两个按键而不是两个单词了。

最后:如何快速解决代码中的错误

这个话题太大了,但是却并没有得到足够的重视,我也因此在考虑是否需要写一篇。这部分算是福利:「一个快速解决错误的五步法」。

每一个程序员都会碰到很多错误。当你有经验时,碰到错误大概就只会耸耸肩,因为你可以在一分钟内解决它们。

但是对于新手来说,一个错误可能会耗费 20 倍甚至更多的时间去解决。对于初学者来说,错误会让你觉得正在脚踝深的泥浆中跋涉。

这五个步骤可以帮你快速解决 95% 的错误。

1.看看是不是代码打错了

有可能少括号,或者是变量或函数拼写错误。所以一定要在提供代码高亮显示的软件中进行输入,以避免错误或是快速修复缩进、少括号和类似错误。有很多好的代码编辑器可供选择。如果你是新手,我建议你使用 VSCode——它拥有最大的市场份额,而且是免费的,并且有很多方便的功能。

2.先读错误信息里的开头和结尾

相比于开头和结尾,错误信息的中间部分没那么有用。之后再看你的代码,看看你是否能够根据错误消息中的提示找出问题所在。如果无法快速解码错误信息,请将信息的最后一行复制并粘贴到谷歌中(如果使用的是 Python),其他语言可能在这之前也有错误消息)。新手最大的错误是没有尽快用谷歌来查询错误信息。

3.对网络资源进行筛选以分清良莠

这一部分列举一些快速找到高质量资源的启发性方法吧。Stack Overflow、Medium、Reddit、Hacker News、Dev 和其它的线上社区会有反馈机制(如赞等)来显示哪些答案是高质量的。这些方法并不完美,但是通常效果也挺好的。大部分解决方案都是在 Stack Overflow、 Towards Data Science、GitHub 中对应问题的 issues 板块中找到的。

在谷歌的搜索结果中,博客的质量是成败的关键。如果你用的是 Python,我可以根据我的经验推荐一些好的网站:

  • Real Python (https://realpython.com/)

  • Data School (https://www.dataschool.io/)

  • Dataquest Blog (https://www.dataquest.io/blog/)

  • DataCamp Blog (https://www.datacamp.com/community/blog)

  • Practical Business Python (https://pbpython.com/)

  • Chris Albon (https://chrisalbon.com/#machine_learning)

4.过滤旧资源

对于大多数问题,你需要的是近几年的资源。因此当在谷歌上搜索一个错误的解决方案时,你可以过滤掉旧的结果,比如在搜索条件里设置时间限制,或者在查看结果片段时通过大体扫一遍来肉眼过滤等。

就比如说,如果你刚开始接触 Python, 2009 年有关 Python 2 的内容可能对您没有帮助。

API 在不断发展,过去使用的方法通常在现在并不适用。你更有可能在相对近期的结果中找到一个适用的答案。

5.读懂错误信息

这个网站(https://inventwithpython.com/blog/2012/07/09/16-common-python-runtime-errors-beginners-find/)记录了常见错误信息在 Python 中的含义,这个网站(https://pythonforbiologists.com/29-common-beginner-errors-on-one-page)则可以帮助你解决常见的 Python 错误。

如果在用 Python 的 pandas 库来做数据处理,有很多常见的错误。这个网页(https://gist.github.com/discdiver/2f8df1c3f1c66f47129568a82c0666e5)里是我用 Jupyter notebook 整理的常见错误及其解决方案。

总结

只要有正确的心态、一些指导和大量的实践,任何人都可以学会编程。这个过程可能没那么快也不算简单,但希望这篇文章能使这个过程变得不那么令人沮丧。

原文链接:https://towardsdatascience.com/ten-tips-to-save-you-time-and-frustration-when-programming-1f5a4b61f390

文为机器之心编译,转载请联系机器之心获得授权

✄----------------------------

AI学习路线和优质资源,在后台回复"AI"获取

迈出编程第一步!必知必会的10个编程技巧及查错方法相关推荐

  1. 脑残式网络编程入门(三):HTTP协议必知必会的一些知识

    为什么80%的码农都做不了架构师?>>>    本文原作者:"竹千代",原文由"玉刚说"写作平台提供写作赞助,原文版权归"玉刚说&q ...

  2. tensorflow 按维度相加_人工智能 TensorFlow 必知必会编程概念整理

    内容概括: 学习 TensorFlow 编程模型的基础知识,重点了解以下概念: 张量 指令 图 会话 构建一个简单的 TensorFlow 程序,使用该程序绘制一个默认图并创建一个运行该图的会话 概念 ...

  3. 程序员必知必会之blog篇

    程序员必知必会之blog篇 网易广州       赖勇浩(http://blog.csdn.net/lanphaday) 本文最初发表于恋花蝶的博客(http://blog.csdn.net/lanp ...

  4. linux 系统管理基础,【必知必会】你绕不过的 Linux 系统管理基本功

    第一阶段:  使用虚拟机软件搭建学习环境 1门课程 5小时30分钟 学习 vmware workstation 和 virtualbox 等虚拟机软件的使用方法,虚拟机是后面进一步学习的工具,务必熟练 ...

  5. SQL必知必会-笔记(完善版):第1课

    文章目录 SQL必知必会 一.了解数据库 1.1 数据库基础 1.1.1 数据库 (补充)数据库管理系统: 注意1: 1.1.2 表 1.1.3 列和数据类型 1.1.4 行row 1.1.5 主键 ...

  6. 《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录

    ----------------------------------------------------------------------------分割线--------------------- ...

  7. 必知必会的设计原则——迪米特原则

    概述 迪米特法则(Law of Demeter )又叫做最少知识原则,即一个对象应该对另一个对象有最少的了解. 迪米特法则的目的在于降低类之间的耦合.由于每个类尽量减少对其他类的依赖,因此,很容易使得 ...

  8. php7.2 开启mcy扩展,phper必知必会(二)

    1.说说你对进程,线程以及协程的理解 进程:是系统进行资源分配和调度的基本单位,是基本操作系统结构的基础.进程是程序基本执行的实体.进程与进程之间是独立的,拥有完全独立的地址空间,进程的切换只发生在内 ...

  9. 风控成长之路---必知必会工具与业务

    关注 "番茄风控大数据",获取更多数据分析与风控大数据的实用干货. 偶然翻开多年前的笔记,当时踏入数据行业就是从人生的第一条select的代码开始.还好多年前做的笔记,网络云盘还为 ...

最新文章

  1. NBIOT-NPSS/NSS/NPBCH的资源位置
  2. php跳转app,小程序支持跳转app么
  3. Linux的文本字段统计方法
  4. while和for循环读取大文件三种读取文件方式
  5. OpenKruise v1.1:功能增强与上游对齐,大规模场景性能优化
  6. python fpga chips_FPGA实现USB2.0同步读数据传输且用chipscop抓取波形(3)
  7. mysql 大小写问题—20161102
  8. 【车牌识别】基于matlab投影模板匹配车牌识别【含Matlab源码 1359期】
  9. vbs返回结果给java_返回vbs脚本
  10. 通信技术发展的自然辩证法
  11. 机器学习基础:台大李宏毅的线性代数视频公开课
  12. 基于centos搭建reviewboard
  13. 记一个bug:ImportError: cannot import name ‘comb‘
  14. mac安装ffmpeg遇到的坑
  15. 24年前他被余承东招入华为,现在掌舵第四大事业群,对垒阿里张建锋、百度王海峰,腾讯汤道生...
  16. 图卷积神经网络4-空域卷积:空域卷积局限性分析和过平滑解决方案
  17. 设置Excel单元格行宽列高
  18. OC textField键盘弹起事件
  19. 开源大数据技术社区召集令
  20. 一站式智能运维解决方案,企业系统的隐形守护者

热门文章

  1. Oracle Mutex 机制 说明
  2. 青少年电子信息智能创新大赛 -- 图形化编程挑战赛初赛试题说明
  3. 【青少年编程】黄羽恒:平行空间
  4. 数据结构与算法:12 数组与稀疏矩阵
  5. MOG2 成员函数参数设定
  6. util.sh 脚本
  7. 【ACM】杭电OJ 2050
  8. 用 Python 实现答题卡识别!
  9. 生于俄罗斯的 Web 服务器王者 Nginx,现宣布俄罗斯禁止贡献!
  10. 联手中科大、浙大、华科大等高校,阿里研发4项最新AI安全技术