如果你从来没有接触过程序语言,这里给你两个方面的教程,一个偏后端,一个偏前端。对从零基础开始的人来说,最重要的是能够对编程有兴趣,而要对编程有兴趣,要有成就感。而成就感来自用程序打造东西,所以,我推荐下面这份不错的入门教程。

第一份入门教程,主要是让你体会编程是什么。

  • 与孩子一起学编程 这本书以Python语言教你如何写程序,是一本老少咸宜的编程书。其中会教你编一些小游戏,还会和你讲基本的编程知识,相当不错。
  • 两个在线编程入门的网站:Codecademy: Learn PythonPeople Can Program ,你也可以在这两个网站上学习Python,只不过是英文的。

然后,你可以到 CodeAbbey 上去做一些在线编程的小练习。

第二份入门教程,主要是让你做点实际有用的东西。嗯,做个网页吧。

  • MDN的 Web开发入门 MDN全称是Mozilla Developer Network,你可以认为是Web方面的官方技术网站。这个教程会带着你建立一个网站。然后,你可以把你的网页发布在GitHub上。

这两份教程都很不错,都是从零开始,带着你从环境准备开发,一点一点地从一些简单而有意的东西入手,让你感觉一下编程世界是什么样的,相信这两个教程可以让零基础的你喜欢上编程。

# 编程入门

在这时,我们使用Python和JavaScript作为入门语言。Python就不用多说了,语法比较简单,有大量的库和语法糖,是零基础的人学习编程的不二之选。而JavaScript则是前端的语言,为了让你更有编程的成就感,所以,这也成了一门要学习的语言。(注意:对于计算机专业的学生来说,一般会使用Pascal做为入门的编程语言,但我觉得编程入门还是要以培养兴趣为主,所以,还是选一些能让人有成就感的语言会更好)。

# 入门语言Python

如果你想更为系统地学习一下Python编程,我强烈推荐你阅读一下下面这两本书。它们是从零基础入门非常非常不错的书,里面有大量的更为实用的示例和项目,可以让你有会编程会有超能力的感觉。

这两本书除了编程语法方面的讲述有所不同之外,其他都差不多,主要是通过书中的示例来强化你对编程的学习。第一本偏文本处理一些,包括处理Word、Excel和PDF,第二本中有一些Web项目和代码部署方面的内容。如果可能的话,你可以把两本书中的示例都跑一遍。如果你时间有限的话,我推荐你看第二本。

编辑植入:极客时间上也有Python入门的视频课程。

# 入门语言JavaScript

如果想入门学习JavaScript,我主要推荐以下在线教程。

# 操作系统入门Linux

学习编程你还需要会玩Linux,虽然Windows占据着更多的桌面市场,但是你还是要了解Linux。这里,你可以看一下,W3CSchool上的在线教程 Linux教程

# 编程工具Visual Studio Code

这里主要推荐时下最流行也是最好用的Visual Studio Code,这个工具潜力十足,用其开发Python、JavaScript、Java、Go、C/C++都能得心应手(教程 - 本文发布时还基本没怎么翻译完)。

# Web编程入门

如果玩到这里,你觉得有趣的话,可以学习一下Web方面的入门知识。为什么是Web而不是别的什么呢?因为你正身处于第三次工业革命的信息化浪潮中,在这个浪潮中,Web互联网是其中最大的发明,所以,这是任何一个程序员都不能错过的

关于Web编程,有下面几个方向你要学习一下。

  • 前端基础。要系统地学习一下前端的知识,也就是CSS、HTML和JavaScript这三个东西。这里还是给出MDN的相关的技术文档页面 CSS文档HTML文档文档很大,你要学习的并不是所有的东西,而是了解CSS和HTML是怎么相互作用来展示数据的,然后,不用记忆文档中的内容,这两个文档是用来查找知识的。 另外,你可以简单地学习使用JavaScript操纵HTML元件。理解DOM和动态网页(可以参看 W3Schools的JavaScript HTML DOM的教程)。

  • 后端基础。如果你想省点事,不想再学一门新的语言了,那么你可以直接用Python或者Node.js,这两个技术在前面提到的廖雪峰的那个教程里提到过。当然,如果你想试试另外一种脚本型的也是比较主流的编程语言,那么可以搞搞PHP,它也是很快就可以上手的语言。学习PHP语言,你可以先跟着 W3School的PHP教程 玩玩(其中有连接数据库的MySQL的教程)。然后,以 PHP的官网文档 作为更全的文档来学习或查找相关的技术细节。

下面是一些学习要点。

  • 学习HTML基本语法。
  • 学习CSS如何选中HTML元素并应用一些基本样式。
  • 学会用 Firefox + Firebug 或 Chrome 查看你觉得很炫的网页结构,并动态修改。
  • 在一台Linux机器上配置LEMP - Ubuntu/Nginx/PHP/MySQL这个环境。
  • 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)。

这里,你可能会问我,入门时有三个后端语言,一个是Python,一个是Node.js,一个是PHP,你对这三门语言怎么看?老实说,Python我还看好一些,PHP次之,Node.js最后。原因是:

  • Python语言的应用面还是很多的。(当然,性能可能会有一些问题,但是用于一些性能不敏感的和运维或是一些小工具相关的,还是非常好用的。另外,Python的应用场景其实还是很多的,包括机器学习和AI也有Python的身影。用Python来做一些爬虫、简单的中间件、应用或是业务服务也是很不错的。)

  • PHP也是一个比较主流的简单的语言(PHP在目前来说还是一个比较主流的语言,但其发展潜力有限,虽然可以让你找得到工作,但是一般玩玩就行了)。

  • Node.js 号称 JavaScript 的后端版,但从目前发展来说,在后端的世界里,并不能承担大任,而且问题很多。一些前端程序员用它来做后端的粘合层,我个人觉得这样做法只是掩盖前后端配合有问题,或是接口设计思维上的懒惰,我还是希望前端程序员应该认真学习一门真正的后端语言。

当然,这里只是让你感觉一下,Web前端编程的感觉,只是为了入门而已。所以,对于这些语言你也不用学得特别精通,感觉一下这几个不同的语言就可以了,然后知道相关的文档和知识在哪里,这样有助于你查阅相应的知识点

# 实践项目

无论你用Python,还是Node.js,还是PHP,我希望你能做一个非常简单的Blog系统,或是BBS系统,需要支持如下功能:

  • 用户登录和注册(不需密码找回)。
  • 用户发贴(不需要支持富文本,只需要支持纯文本)。
  • 用户评论(不需要支持富文本,只需要支持纯文本)。

你需要从前端一直做到后端,也就是说,从HTML/CSS/JavaScript,到后面的PHP(Python/Node.js),再到数据库。这其中需要你查阅很多的知识。

这里有几个技术点你需要关注一下。

  1. 用户登录时的密码不应该保存为明文,应该用MD5+Salt来保存(关于这个是什么,希望你能自行Google).
  2. 用户登录后,对于用户自己的贴子可以有 “重新编辑” 或 “删除” 的功能,但是无权编辑或删除其它用户的贴子。
  3. 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。这里有个PHP的blog教你怎么建表,你可以 前往一读

如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事。

  • 图片验证码。
  • 上传图片。
  • 阻止用户在发文章或评论时输入带HTML或JavaScript的内容。
  • 防范SQL注入。参看PHP官方文档微软官方文档,或者你自己Google一下。

上面这些东西,不是什么高深的东西,但是可以让你从中学到很多东西。相信你只需要自己Google一下就能搞定。

# 小结

接下来,我总结下今天的内容。首先,我推荐了Python和JavaScript作为入门语言,以让你尽快上手,获得成就感,从而激发你想持续学习的热情。随后介绍了Linux操作系统、Visual Studio Code编程工具、Web编程入门等方面的学习资料,并给出了学习要点。最后,我给出了一个实践项目,帮助你理解和巩固今天所学的内容。

消化好了今天的内容,就准备好精力迎接后面的挑战吧。下篇文章中,我们将正式入门学习该如何编程。

下面是《程序员练级攻略(2018)》系列文章的目录。