软件开发之零基础启蒙

212 阅读6分钟

对从零基础开始的人来说,最重要的是能够对编程有兴趣,而要对编程有兴趣,就要有成就感。

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

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

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

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

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

编程入门

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

入门语言 Python

如果你想更为系统地学习一下 Python 编程,我强烈推荐你阅读下面这两本书。它们是零基础入门非常不错的图书,里面有大量的更为实用的示例和项目,可以快速给你正反馈。

  • Python 编程快速上手
  • Python 编程:从入门到实践 第一本偏文本处理,包括处理 Word、Excel 和 PDF,第二本中有一些 Web 项目和代码部署方面的内容。如果可能的话,你可以把两本书中的示例都跑一遍。如果你时间有限的话,我推荐你看第二本。

入门语言 JavaScript

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

操作系统入门 Linux

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

编程工具 Visual Studio Code

这里主要推荐时下最流行也是最好用的 Visual Studio Code,这个工具潜力十足,用它开发 Python、JavaScript、Java、Go、C/C++ 都能得心应手(教程) 。

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 现学现用够了)。

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

实践项目

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

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

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

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

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

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