零基础向:为什么要学习编程&如何入门编程

今天本来没有更新,结果收到了微信邀请开通原创和赞赏,遂赶工一篇文章。

这篇文章回答以下几个问题:

我们为什么要学习编程?

非计算机学生,如何对编程产生兴趣?

零基础,如何入门编程?

第一个问题:我们为什么要学习编程?

如果说和编程有关的最经常收到的提问,莫过于如何(零基础)入门编程/Python/爬虫。刚开始收到这种问题,还会认真地写点回答给些建议,后来见得多了,发现绝大多数都是只说不做的伸手党,渐渐地也就懒得回答了。

我们为什么会既热衷于“学习”,又热衷于放弃呢?

其实说起来,我是很热衷于号召乃至帮助大家学习编程的,虽然我正处于并且将长期处于编程的入门水平,但是我实在是有太丰富的入门经验了,以至于我已经很久没有在市面上买到、读到我理想中的入门文章了。了解我的朋友都知道,我经常会拉着他们忽悠他们学编程,其实最初是因为义务帮忙太多,想着教会徒弟闲了师傅。结果皇帝不急太监急,往往是虎头蛇尾。

在我自己的观察里,现在很多人患上了知识恐慌症(包括我自己),进而衍生出了“马克党”和“收藏夹党”,每每看到精品文章、入门教程,评论区“Mark”之,再往收藏夹一丢,从此相忘于江湖,知道某天翻起,已经忘记当时想看什么想学什么。如此循环往复,给自己一种每天都在接受新知识的错觉,殊不知轻飘飘的马克和再满的收藏夹,都不会把知识塞进你的脑子里。

说白了,在这个信息爆炸的社会,我们需要给自己一种时刻不停地学习的错觉。看到别人会这个懂那个,就往自己身上套,无怪乎如今智商税越收越多,割完一茬又一茬,不全是知识恐慌闹的吗。

但是,在许多无用的努力和浪费里,我却始终坚定:人人都应该懂点编程!

理由很简单,套用现在流行的时髦说法,现在是IT(信息技术)时代,以后是DT(数据处理技术)时代,而未来是AI(人工智能)时代。编程,则是迈入新时代必不可少的一块敲门砖。我们一直讲,编程语言编程语言,语言语言,你不学会和机器对话的语言,又如何使用乃至掌控机器呢?

编程是生产力,可以帮人节约非常多的重复劳动。举个栗子,上周末回家,接到我哥的电话,帮他在职介所的两张Excel表里根据身份证号的比对结果自动填表,学过Excel的同学都知道,一句VLOOKUP的事嘛。但是在没有学会这个公式之前,人工比对几百人的表格就要花去一下午的时间。节约下来的时间,不就是你的财富吗?再直白一点,学点编程,技能傍身,混不下去了也能养活自己,技术不断精进,收入也会随之增长,这或许也是最实在的收获。

有人又要说,我不跟数据打交道,也不靠编程养活自己,为什么要学编程?知乎大V ze ran在回答“你会为什么喜欢上编程?”时说:

编程是最容易习得的超能力。

何意?当你看到别人可以轻松搞定重复性工作,当你看到别人轻松抓取到导师布置的数据工作,当你看到人工智能切实改变自己的生活,你可能会高呼:Magic!殊不知,编程这种“雕虫小技”,实在是最容易习得的超能力了。这件事情,真的不难,但却可以改变很多很多。你可以不学习,但不可以不了解;你可以不认同,但未来可能不得不去……拥抱变化。

第二个问题:非计算机学生,如何对编程产生兴趣?

于是有人要问了,我不是学计算机的,甚至不是理科生,二指禅敲键盘,看见字母就眼花,看代码如天书,如何才能对编程产生兴趣?

兴趣是最重要的老师,没有兴趣,没有目的导向,是很难有效学习的。关于获得兴趣这件事,其实有些通法,然而矛盾之处在于:我们究竟是因为有兴趣而去做一件事,还是因为做一件事的成就感而对它感兴趣?

这也是我的一个主要观点,我在这里不再赘述如何把编程联系工作生活,也不再赘述如何坚持一份热爱,虽然这些都是有效的做法。但是如前文所述,学习编程,已经是这个时代你不得不去面对的一件事情,而培养兴趣,只是让你在这条不归路上走的更加心甘情愿而已。

兴趣和获得感,是相辅相成的一件事情。你很喜欢去做一件事,但是这件事却无法带给你丝毫的长进、收获或者新鲜感,那么你的兴趣会一点一点消失;某件事你虽然很陌生,但是你总能看到自己做出的成果,你每天活在进步中,也自然会对这件事越来越感兴趣。

学编程亦是如此。在我看来,很多人对编程畏难,很多人连入门都摸不着方向,实在是因为指导方针出了问题。编程难吗?难,学到精深处,需要大量的数学基础和推导,需要投入大量的精力,学好了能轻松月入X万;编程简单吗?简单,零基础成为一位“hello world”程序员也不过半天工夫。这并不矛盾,这就好像你是初入江湖的小虾米,偏偏要拿着木棍去挑战最终BOSS,BOSS打不过,小兔子小猴子小熊小野猪你还打不过吗……

所以,如何培养兴趣,这个问题的答案在我这里便是,选对正确的入门方向以后,不断依靠获得感、成就感和虚荣感(没错就是虚荣感,要敢于show off)提供给自己正反馈,进而巩固自己的兴趣。

第三个问题:零基础,如何入门编程?

那么,对于零基础的朋友,究竟如何入门编程才算做正确的方向?

首先要明确一点,编程之所以被成为超能力,在于其无所不能。学到深处,你自然可以跳脱限制,随心所欲;入门之时,你却处处碰壁,像蹒跚学步的孩童。其实如同学习外语一样,学的好了可以斗酒诗百篇,学的差者也能勉强日常读写。

单单讨论入门编程,我为大家指两个方向:一是写网页,二是写爬虫。

大家觉得编程很难,编程很神秘,却对Office不是那么畏惧,其实在于Office套件属于WYSIWYG(所见即所得)的软件。而大多数情况下的编程都是面对枯燥的代码,经历了艰深的入门,却很难看到代码的实际效果,更不要提理解其内部原理和运行过程了。

但是也有例外,网页和爬虫这对相爱相杀的孪生兄弟,就是学习编程中所见即所得的代表。

先说网页。我们日常浏览的网页是HTML格式,其本质是一个文本文档,和txt是没有差别的。我们之所以能看到页面中各式各样的图片、视频、动画效果,其实依赖于浏览器对HTML中标签的渲染。这就意味着,你只需要打开一个.txt的文档,写上几行简单的字母,拿到浏览器中打开,就能直接看到最终效果。进而你不停地学习更多标签、更多知识,不停地在浏览器中看到其效果,就能在这种反馈感中持续地学习下去。

学习网页,推荐给大家一个网站,时间关系,就不再写更详细了:

https://www.freecodecamp.org/

至于爬虫。什么是爬虫呢?爬虫可以说是写网页的逆向过程了,如同加与减乘与除一般。网络爬虫(Web Spider)源于搜索引擎,它像一只整天挂在“网”上的蜘蛛一样,把网络数据爬取下来,留作处理。而在现在的海量信息时代和未来的大数据时代,网络爬虫自然成为获取网络公开数据的一项必备基本技能(在此不讨论爬虫的道德困境)。

如同写网页文档的所见即所得,写爬虫程序时你也很容易能看到自己每一步程序的输出结果,当你有一个具体需求(一般是批量抓取一系列有规律网页的有规律数据)时,这样的输出结果带来的反馈可以激励你一点一点完成一个复杂的程序。

至于学习爬虫的建议嘛,本来想说跟我学习就够了,毕竟中文环境的几本书我看过以后觉得不甚满意(并非写的不好,只是章节体系和一些具体例子我不喜欢),而外文语境的书翻译过来已经略显过时,不翻译过来对一部分朋友又有语言障碍。但是我实在是一个怠惰的人,虽然最近勤奋笔耕,指不定何时就又咕咕咕地放大家鸽子。

好在以前有所积累,我以前写东西都在知乎,在知乎的三年里,风向变了很多。以前很多人热衷于写入门文章,后来大概是自己进步了,入门文章不写了,反过来抨击入门文章泛滥破坏社区生态;14年的时候知乎上鲜有人关注Python和爬虫(这真的是两个东西,虽然经常连在一起),我随便写上一些,也会被人惊呼大神,拥有一些粉丝,颇有种山中无老虎,猴子称大王的感觉。而如今爬虫文章都快人人喊打了。也就只有我这种三年了还没什么长进的人,依然停留在入门水平,乐得写些入门文章,乐得继续搞搞爬虫吧。

知乎、简书、博客等等平台,实在不缺入门爬虫的文章,虽然良莠不齐,至少学习资料充足。究其原因,无非是极其容易量产,相似的代码,换个网站就是新的数据,换个数据就是新的结论与文章,炮制热点文章简直不要太容易。

如果一定要推荐的话,《Python网络数据采集》是一本不错的入门书籍,只是书中示例都是国外网站,具体实战可以自己找其他例子。

零零散散写了许多,其实其中很多观点都可以拉出来单独成文。时间仓促,文展开不多,不够丰富,以后会多记多写。

原文发布于微信公众号 - 不二小段(rose-fun)

原文发表时间:2017-12-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏知晓程序

这款小程序,帮你捡回「失散多年」的英语

懒癌患者们,是时候改过自新好好学英语了!知晓程序(微信号 zxcx0101 )本期推荐的这款小程序,就能做你英语学习路上的好帮手。

6910
来自专栏大数据挖掘DT机器学习

腾讯,百度,阿里面试经验

腾讯面经 本人IT屌丝一枚,毕业4年,5年经验(大四在腾讯实习一年,实习生工资,工作内容同正式员工一样)。非常幸运,先后收到过腾讯、百度和阿里的offe...

1.5K40
来自专栏华章科技

扼杀工作效率的12个坏习惯

习惯定义我们的人生。为了过上平衡的富有成效的生活,从事长期的满意的职业,摆脱你那效率低下的习惯是种重要的投资。

11740
来自专栏云计算D1net

“云”领生活:触手可及的云计算

有一个楚国人出门远行.他在乘船过江的时候,一不小心,把随身带着的剑落到江中的急流里去了.船上的人都大叫:“剑掉进水里了!这个楚国人马上用一把小刀在船舷上刻了个记...

46840
来自专栏大数据文摘

经济学人:Python为什么是编程语言中最skr的?

Python的出现让计算机编程语言不再是生僻的专业技能,而是常人都能学习和使用的万金油。

22900
来自专栏码神联盟

千万不要和程序员说这些

这篇文章的初衷是想要澄清跟程序员打交道的错误方式和禁忌。 1不要“一遇到问题就去找程序员” 通常,技术问题通过阅读使用说明就可以解决。比如你刚买了一个新的播放器...

34650
来自专栏机器人网

不要以为会点设计就是合格的机械工程师了

普通机械设计和机械工程师远远不是一个级别的,在我看来能配得上机械工程师的称号的绝不仅仅是画画图而已,从方案到出机都能独立完成,具有丰富设计经验,这其实相当不容易...

30150
来自专栏ThoughtWorks

开发者技能修炼的五个等级

第一阶梯:Typer,打字员 每一位开发者在正式踏上开发道路之前,都需要经过毫无编程经验的“第一阶段”。 这时他们对于程序的理解仅限于照着书本或记忆进行有规律的...

35160
来自专栏PHP在线

程序员鸭梨为什么这么大

一: 任务多,精神紧绷 调研发现86%的程序员认为“近1~2 年压力越来越大”,还有一部分程序员表示“因为工作太多,情绪总处于紧绷状态,所以精...

38080
来自专栏ThoughtWorks

技术雷达是如何建立的?

ThoughtWorks一年发布两次技术雷达,在每次雷达的准备期,TAB(ThoughtWorks技术顾问委员会)成员都会全力以赴的投入其中,以至连睡觉都会变成...

29370

扫码关注云+社区

领取腾讯云代金券