怎么从零开始学编程

友情提醒:全文 8600 字,仔细阅读需要 15 分钟。

看书、看视频学编程很可能是错的!野生程序员并不靠这些学会编程的。内容整理自新生大学张越的分享,一位15年编程经验摸爬滚打,告诉你地道的程序员怎么编程!

0.什么是新手?

很多人接触编程两个字,会觉得编程是一门很复杂的玄学。自己在编程面前都是所谓的小白、新手,对编程本身充满了恐惧。

我在这里对小白做一个简单定义,当你满足以下两种情况算是小白:

自己没有给电脑下载安装过软件

没有给 Windows 电脑安装过系统

如果你连软件都没装过,可以尝试安装一下 QQ 或者其他软件,从安装开始到安装完成,你其实见证的是独立一个程序从压缩包里解压的过程,最终安装你的电脑上,使其变的可用。

QQ PC版下载:http://im.qq.com/pcqq/

QQ Mac版下载:http://im.qq.com/macqq/

如果你只安装过软件,没有安装过系统,你可以先试着给电脑安装一次系统。

当然安装系统会清理掉你以前某一个磁盘的数据,利用 Vmware fusion 或 Parallels Desktop 的虚拟机软件,可以在虚拟机上安装一款 Windows 系统。

关于安装系统的补充:安装系统本身就像是安装一个特别霸气的软件,这个软件需要一个干净的(格式化)磁盘,然后需要一次次点击 即可。

然后,简单开始一个类似程序的应用吧:

这里以 Win 10 为例

1.右键点击 Windows 图标,弹出的窗口选择「运行」

2.在「运行」窗口输入「msconfig」

msconfig 的意思:ms代表 Microsoft 微软的简称 config 表示配置,即打开微软的系统配置

3.在「系统配置」切换到「启动」操作界面

4.在打开的任务管理器上,你就能管理「开机启动项了」,不需要的软件及服务可以通通可以禁用

以上其实就是编程的过程,你在输入一串简单的文字,最后获得一些来自系统内部的内容,最后你修改了和电脑不同的设置。

这是你编程的第一步,你后面做的事:输入更长的文字,调用一些系统的软件、服务、功能,最后实现一个效果。

就这么简单~~

1.学编程,第一步为什么是找目标

好的程序员学习编程的过程,可能不是通过阅读 PPT 及相应课堂学会的,那么学习编程并不一定跟着网上所谓的 PPT 教程一步一步实现一个功能。

PPT 讲解编程课的两个问题:

对课程的依赖性极强:没有下一节课,就无法深入到更难的内容;

课程很冗长:对于程序猿本身而言,对于 JS 内部的 jQuery ,程序猿本身可以通过找到合适的资源,一个小时学会;而大部分网站只是功能介绍,就可能需要三个小时的时间去学习,更别说学懂其内部的结构了。

所以,学习编程的第一步,不是找到一个网站,或者给自己报一个什么编程班,而是,你必须给编程这件事定一个足够明确的目标,去解决问题。

以下都是比较好的目标的例子:

我要做一个能够实时显示股价的软件

我要做一个能够展示商品的卖家网页

我要做一个可以注册用户并收集用户信息的平台

我要做一个能够从租赁信息网站扒取数据,然后按照我需要的信息进行筛选的租房工具

我要做一个工具,它能炒股,能查到 K 线以及走势图,但是界面要很单一,不能花花绿绿,不能让老板看到我上班在炒股

我要让自己做的 excel 表格自动计算

我要做一个最多 200 人会议能快速签到的简易签到程序

以下都是特别不好,没有针对解决问题,没有找到好目标的例子:

我要学会 语言

我要写一个网页

我要提高自己的编程能力

我要用编程思想武装自己的大脑

我要成为像 XXX 一样的编程大牛

你可以先核对自己的目标,然后开始编程,如果你的目标是错的,你更可能学不好编程。

注意,任何你现在越到的问题和需求都可以变成的目标,然后你学习的目的不是实现一个一个功能,而是解决问题!实现功能的教程太多,但是你学会的只是模仿别人的代码,而不是学会解决自己的问题,一定要编程为自己所用。

如果你的问题恰好是别人没有解决但是很重要的问题。那么恭喜你,即使你是小白,你写的东西价值也会是完全不一样的。具体的实现功能以及更好的优化迭代,一步一步来呗~~

2.学编程,你需要合适的编辑器和操作系统

2.1 一般推荐的编辑器:

Sublime改写单一文件,轻量级,比较适合编写单一的文件,譬如孤立的 Python 文件

Visual Studio Code是微软出的一款编程软件 改写文件目录,编写整个项目、做项目管理,譬如一个安卓、iOS 项目、移动 APP 等

Sublime 官网:https://www.sublimetext.com/)

Visual Studio Code 官网:https://code.visualstudio.com/

2.2 关于操作系统

没必要因为一个操作系统而买一台新电脑,固然 Mac 的系统基于原生 lunix ,内部已经集成不少代码编辑器,也确实能提高效率。但是在学习之初,即使你对其他操作系统有需求,推荐优先使用虚拟机软件实现。但是虚拟机电脑内存大,选购电脑考虑内存是很有必要的。

当然,长期需要某个系统,可以通过长期计划的方式购买电脑,以下为常见的虚拟机软件:

Parallels / VirtualBox (免费) / VMWare

第三步,从维基百科开始,为什么?

找准目标以后,选择好合适的编辑器后,下面根据目标找到合适的解决问题的程序,这里以 为例,你需要借助谷歌搜索来找到一些必要的信息。

PS : 国内无法使用 Google 怎么办?你可是立志成为程序猿的人,「科学上网」是你必备的搜索能力之一。为了安全起见,这里不能谈及太多。给你一点点提示:必应搜索 sss + 科学上网 ,你会得到一些信息。同时,我相信,天下没有免费的午餐,付费的服务比免费的服务更有效。

PPS : 如果你真的没办法使用谷歌,Bing也是一个特别好的替代品,但是,最好还是使用谷歌。

Bing 的官网:https://www.bing.com

Google 一下 ,我得到了以下内容:

是 的官网

是维基百科的内容

是一个 的项目,是利用虚拟环境来跑 的

是一个排名很靠前的个人项目,那么这个个人项目很有参考意义,可以后面利用它作为我们最初始的教材

首先,进入 ,找一些对我们目前有用的信息:

可以找到:

Python 是怎样的一种语言?

为什么创造这门语言?

这两个问题可以回答,在创造之初 是为了解决什么问题,我们遇到什么问题还可以找这个语言。

这门语言和其他语言的不同?

这个问题能回答什么时候选择这门语言。

小作业:认真阅读以上内容,你觉得 Python 在解决什么问题上更有优势?

注意:当你阅读完内容,并开始逐步回答问题时,你已经开始学习编程了,以下是我自己阅读后,通过自己之前对 Python 理解写的答案,仅供你参考。

我的作业提交

Python 更适合学编程的新手。因为Python 语言相对其他语言,更加容易理解。相对于与机器交流的模式,它体现为更偏向于人类说话的方式 ,而更利于不懂编程的人了解编程背后再干什么;

Python 主要用于现有程序的调试。因为能和其他语言做到很好的配合,又容易掉用,所以检测其他语言的程序在运行过程的问题;

Python 使用的人群多,容易找到解决问题的答案/就连 Google 工程师都在使用这种语言,相对应的问题和社区能比较快的找到好的解决方案;

Python 自己运行的比较慢。在对速度要求不高,但是容易阅读的程序上,性能占优。

继续阅读,应用范围这部分简单解释一下:

Web 部分的 Web 框架,其实是我通过什么框架实现之前的 Web 应用和 Python 之间能进行有效互动。使用这些之外的框架,可能 Python 压根就不搭理你,这种情况需要你调整的是框架内步的结构。

对学习者而言,如果你学完基础内容,要想进阶,你需要了解的是基于自己的目标,选择合适的应用(用 Web 还是 GUI 等)实现你的目标,去了解深入的框架的第三方库。

这句话包含的意思还有 : 排行第一的 Django 可能是 Web 框架使用最广泛的第三方库,值得学习 Web 框架实现目标的人第一时间学习。

操作系统:可以在原生 Mac 及大多数 Linux 发行版直接使用,安装好 pywin32 后就可以在 Windows 的COM服务及其它 Windows API 都能用。

其他中 NumPy 、SciPy 、Matplotlib 这三个库很可能非常值得了解。

这部分内容告诉你,如何写一个简单的 Python 程序,请注意:这块可以直接跳过

因为在学习 Python 的路上,维基百科只是为了介绍 Python 能干什么,我并不想依赖它来学习具体的语法实现,因为我知道,学习编程的语法,维基百科说的不够清楚,它只是介绍,而不是实现结果!

跳过代码介绍的部分,再下面的这个内容做一个短暂的停留:

进阶内容的目录表,不需要了解所有库,但是能了解你的库能做什么。

第四步,怎么开始学,找到学习路径

在开始学习前,非常建议你先去自学一下的课程,而不是直接报班,这样在学习过程中,才能提出更有价值的问题。

在哈佛和斯坦福大学的课程中,都是学生自学完,然后再听老师上课并提出自己的问题的,有价值的问题都产生在学习后的思考,而不是学习时的疑惑。

如果想实现 Python 数据分析的目的,那么下一步的检索「 Python 数据分析」

分析文章标题,简书的文章更可能帮我解决问题,因为它更可能解决学习路径找到答案:

在简书的文章找到了这张图,其实给出了学习过程,不用更多解释了吧。

史上最全Python数据分析学习路径图: http://www.jianshu.com/p/14017390e05b

点开廖雪峰的学习网站看看:

哇!好赞,完整的课程体系、完善学习路径、及完备学习资源,是不是可以和打怪升级一样,直接刷副本开始学习呢?大侠莫慌,我们比对一下两个重要教程到底谁更强!

第五步,官方教程 PK 学习路径

我们 Google 一下 Python 找到它的官网:

就是 Python 的官网,然后找到入门者向导

Beginner’s Guide 就是入门者向导。

英语不好没关系,点击中文翻译版本的 :

小作业:是你的话,你会选择谁的教程?你选择的理由是什么?

我的作业提交

中文教程为加分项:在教程质量相同的情况下,我会选择中文教程,因为我的阅读速度更快,学起来更高效。

学习教程最初的难度:廖雪峰的教程最开始从易到难,最开始从安装开始,每一课的内容都很简单,但是在原有内容拓展,更容易学懂和理解;

学习成果更好:从教程的开始到结尾,廖雪峰的教程学完以后,能学到更多更好的程序案例,而且能学会更高级的功能,更可能实现我的目标。

相比官方的教程,我还是选择廖雪峰的教程, PK 结束。

注意:有的冷门语言,在教程完善之前,很可能官方文档写的是最全面的。如果把官方文档的初学者部分和开发者部分汇总,类似于教科书。而你看到的具体的个人教程,更类似于参考书。

初学者肯定参考书能更好的帮助你了解程序的内部结构,但是,教材的话,你如果属于测试开发者,你更应该读教材。

给新学者的说明:

真正的程序猿学习一门新程序的时候,并不是买最新、最难的教材,一般都是从最容易理解,更好的初学者向导开始学习。

譬如,nodeJS的官方给初学者的向导就很适合初学者入门,只有对程序的理解越来越深,才会真正使用通用甚至于高深的进阶教材。

最后,可以借助的资源还有 W3C school,这里给出的例子是 W3C school 的 Python教程

第六步,开始编辑

6.1 整理你的桌面

整理好你编程的桌面,只留下必要的文件夹,实现代码管理。

6.2 高速实现代码

阅读窗口、代码编译窗口和运行窗口,通过大小合理的布局,能快速实现代码的管理和实现,以上是一种比较好的方式,当然,如果你有多个显示器屏幕,那么通过分屏投影,也能极大的提高你的效率。

6.3 敲就是了

为了让你能记住代码的写法,既是代码可以复制粘贴,也要逐行逐行键入,保证通过肌肉记忆来实现对代码函数和内容的理解,同时能准确处理报错信息。

6.4 学习计划

每周三小时,六个小时后的老师学习成果:

实际图:

6.5 学习求助 Stackoverflow / Dash

英文的寻找答案的最有效的地方

中文搜索问题:如何用Python画三角函数

英文搜索问题:Python draw sin wave

第一份答案就来自于 Stackoverflow ,一般一篇能来自 Stackoverflow 的文章,也说明这个问题几乎被很好的解决。同时,Dash 也可以作为库的查询入口。

Dash 的工作界面,可以看出:Dash 能下载并管理代码,是一个查询文档的窗口器。

第七步,如何制定合适的计划 + 执行

等我实施了再说……挖坑待填

第八步,结语

你学的越早,收获也会越早!也能更早的产生价值。好的程序员不仅仅会学习新的语言,而是喜欢根据自己的需求,有有意识的话时间进行某些配置(环境变量),通过一点点小工具,来提高自己工作的效率。

用 NIKE 的广告词结尾:Yesterday you said tomorrow , Just Do It!

参考资料:

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180104G06U4A00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券