编程魔法师之路要怎么开始

Author :欧剃

图片来自 pixabay 自由版权图片库

我想试一试,但我要怎么开始才好?

从一门简单易学的编程语言开始

在这里,我郑重跟各位推荐 Python ,大家别被这个名字吓到,这门语言的创造者 Guido van Rossum 是根据英国广播公司的搞笑节目 “蟒蛇飞行马戏”( Monty Python’s Flying Cirecus )来命名这个语言的——并非他本人特别喜欢蛇缠起它们的长长的身躯猎杀动物觅食的样子。(笑)

为什么推荐 Python 呢,据《 A Byte of Python 》概括,主要有以下几大理由足以说服我们去使用它:

  • 简单 : Python 是一种代表简单主义思想的语言。阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格! Python 的这种伪代码特质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
  • 易学 :用过之后你就会发现, Python 极其容易上手。前面已经提到了, Python 有极其简单的语法。
  • 免费、开源 : Python 是 FLOSS (自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。 FLOSS 是一个基于团体分享的概念。这是其中一个让 Python 如此优秀的原因:它是由一群希望看到一个更加优秀的 Python 的人创造,并经常改进着的。
  • 高级语言 :当你用 Python 语言编写程序的时候,你无需考虑如何管理你的程序使用的内存之类的底层细节。
  • 可移植性 :由于它的开源本质, Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有 Python 程序无需修改就可以在下述任何平台上面运行。这些平台包括 Linux 、 Windows 、 FreeBSD 、 Macintosh 、 Solaris 、 OS/2 、 Amiga 、 AROS 、 AS/400 、 BeOS 、 OS/390 、 z/OS 、 Palm OS 、 QNX 、 VMS 、 Psion 、 Acom RISC OS 、 VxWorks 、 PlayStation 、 Sharp Zaurus 、 Windows CE 甚至还有 PocketPC !

有人说, Python 是一种非常适合初学者驾驶的好车。你可以不要驾驶证就开它上路。一般来说你不需要其它车,除非你想要开得飞快或者经过非常危险的地带。

Q: Python 有两个不同的版本,我该选择 2 还是 3 ?
A: Python 2.x 是已经进入稳定状态的 Python 版本,Python 3.x 是开发更加活跃的面向未来的版本。它们在语言的特性上有略微的不同,但还不至于相差太大。
至于选择哪个版本,要根据你未来的使用方式而定。一般来说,大部分的Linux和MacOS设备都默认预装了Python2,而且旧版本支持的第三方库也更多;但Python 3 更新,提供了更舒服的字符编码处理机制。
所以,如果你需要处理中文文本,或者你并不需要用到某些只有在Python 2上才能运行的库,那你或许应该从 Python 3 开始你的学习之旅。

磨刀不误砍柴工,选择趁手的工具

为了编写存储程序代码的文本文件(所谓源代码、源文件),我们需要一个趁手的编辑器。

《 A Byte of Python 》的作者 Swaroop C. H. 对初学者的建议是:

“挑选一个编辑器确实是极其重要的。你挑选一个编辑器就如同你挑选一辆你将购买的轿车一样。一个好的编辑器会帮助你方便地编写 Python 程序,使你地编程旅程更加舒适,帮助你更加快捷安全地到达目的地(实现目标)。”

对于编辑器的基本要求之一是 语法高亮 功能,利用这一功能,你的 Python 程序的不同部分能被标以不同的颜色,这样你可以更好地 看清楚 你的程序,使它的运行显得形象化。

如果你使用 Windows ,那么我建议你使用 IDLE 。 IDLE 具备语法加亮功能,还有许多其他的功能,比如允许你在 IDLE 中运行你的程序。特别值得注意的是: 不要使用 Notepad ——它是一个糟糕的选择,因为它没有语法高亮功能,更重要的是,它不支持文本缩进。开始编程后你会发现文本缩进是极其重要的。一个好的编辑器,比如 IDLE (还有 VIM )将会自动帮助你做这些事情。

如果你使用 Linux/FreeBSD ,那么你有很多种选择。如果你是一个初学编程的人,那么你可以使用 GEdit / Kate 。倘若你是一位有经验的程序员,你一定已经在使用 VIM 或者 Emacs 了。勿庸置疑,它们是两个功能最强大的编辑器。使用它们编写你的 Python 程序,你将从中受益。我个人使用 VIM 编写我的大多数程序。只要你愿意花时间学习使用 VIM 或 Emacs ,那么我强烈建议你一定要学习两者之一,因为从长远看来它们对你是极其有帮助的。

选择适合你的教程

目前初学者比较容易接触到的 Python 教材大致有以下两类(文末有具体推荐):

一类是文字材料,例如实体书、电子书、网络教程和程序文档等。文字教程的好处在于信息密度大,学习中遇到不懂的内容可以随时翻出来查阅,书中的文字材料/代码段可以直接复制出来运行,方便看到运行结果。

另一类是多媒体教材,例如 MOOC 课程、视频课程、自学 APP 等。多媒体资料的好处在于直观、互动性强,能清楚明了的通过动画、视频的演示了解教学内容的关系,一些课程在视频的中间还夹有小问题等元素,方便立刻复习刚讲授的内容。

不管选哪个,结合教材中的实例代码,反复修改、运行把玩,通过修改和不同的输出来了解代码的执行原理,都是非常重要的环节。多动手吧!

那么,入门的时候要怎么做?

懂得查

啊,我明明按照教程做的,怎么跳出这么多红字?

Python 程序在运行时遇到的错误,通常都会显示详细的行号和错误信息,方便用户查找修正。遇到自己不认识的错误信息时,别慌,先仔细看看错误信息的描述,再打开你的文件,找到出错的行号。

如果靠自己弄不明白出错在哪,首先建议对照 Python 入门指南或 Python 官方文档(见文末),查找错误信息的意思(善用 Ctrl+F 页面内搜索),对照修改自己的代码。

如果问题过于诡异,就要好好利用 Google 或 Bing 的搜索引擎,搜索你遇到的具体问题和错误信息,通常情况下,基础性的语法和逻辑问题还是比较容易解决的。

懂得想

假如经过上面的步骤,依然没有解决我的问题,该怎么办呢?

耐心一点,不要指望 Google 搜索几秒钟就能解决一个复杂的问题。如果你第一次搜索没有结果(或者结果太多),也不要抛出一堆问题,回答者对有针对性的问题更容易给出切实可行的答案。在真正开始提问之前,先稍微放松一下,再深入地思考一下问题。

值得注意的是,思考并不是盯着屏幕上的代码发呆,你要动起手来,通过搜索得到的信息,尝试修改你的代码中 “可能有问题” 的部分,并观察它的输出结果,逐步定位问题产生的原因;或是通过修改从网上搜到的别人代码,研究它的运行情况,来了解别人是如何解决特定问题的——思考的方向往往会成为解决问题的关键。

通过思考,尝试描述自己遇到的问题的具体细节,往往也是解决问题的关键。

懂得问

可我想破了脑袋还是搞不明白,救救我啊!

这点我放到最后来说,因为如何提出一个好问题,往往是解决问题的一半。

当然,对初学者来说,大家会比较宽容,不用担心你提的问题太简单或 “太傻” ,但务必表示出你的认真和用心,不要做伸手党。

除了学习 QQ 群和一些在线课程的讨论区之外,这里推荐几个问答网站:

国内:段错误 https://segmentfault.com/

国外:爆栈网 https://stackoverflow.com/

在真正在这些网站上提问题前,请最后再在这两个网站上搜索一遍你要问的问题的关键字——毕竟很多新手容易遇到的问题,在这些网站上可能早就已经有人回答过了。

那么,当你排除了以上的一切,要准备开始询问时,应该怎么组织自己的问题呢?这里有几点建议:

话不在多而在精

你需要提供精确有内容的信息。这并不是要求你简单的把成堆的出错代码或者资料完全转录到你的提问中。第一,表现出你为简化问题付出了努力,这可以使你得到回答的机会增加; 第二,简化问题使你更有可能得到有用的答案; 第三,在你精炼自己问题的过程中,你很可能就自己找到了解决方法。

描述错误信息,不做猜测

向别人陈述你的猜测是没有用的(如果你的诊断理论真的那么有用,你还会向别人求助吗?)。所以,你只需要告诉他们问题的原始状态,而不是你的解释和理论,让他们来解释和诊断。

描述目标而不是过程

如果你想知道如何做某事,但按照你的理解去实现的过程中卡住了,你需要在开头就表明你的目标,然后再陈述你遇到问题。

(以上三点建议来自 Eric S. Raymond 的《 How To Ask Questions The Smart Way 》,译者: Ryan Wu ,建议初学者抽空阅读中文版全文,必有收获)

学习中会遇到的困难

当你选择了学习编程,在之后很长一段时期内,你的业余时间都会被它所占据,而且在头几天过后,学习曲线会逐渐变陡,你将感受到枯燥、迷茫、自卑以及脑汁耗竭的痛苦。

这是非常正常的情况。许多人(包括我自己)在学习一门新技术的时候都会遇到类似的问题。对此,我个人的解决办法有:

1、找点乐子。

当你看完了基础的语法,对继续往下挖掘感到枯燥时,不要勉强自己,翻一翻书本,找一些有趣的练习题(例如这本书中每个章节背后都有一些实例和习题)练练手,或者编写、修改一些简单而有趣的小项目,甚至尝试跟你的朋友讲述你学到的新内容,给自己找点成就感。

2、专注在当前的学习目标上。

没有技术背景的人学习编程很容易被错综复杂的技术体系吓到,网上的教程中也经常会出现 “一定要读这本书,非常经典” 、 “最好先有 XX 基础再看这篇教程” 之类的警告,结果有时候会出现这样的情况:本来你只打算学习编写网页 ,结果几天后莫名其妙地开始苦读《精通正则表达式》。

别担心,你不需要掌握所有这些分支才能继续往下走,很多时候你只要知道在需要某个知识点的时候,能从这类复杂的教程中找到对应的用法即可。

3、习惯无知。

无论学习什么东西,往往越深入就越觉得自己无知。这样的无知本身并不是坏事,它可以让你保持谦虚,但千万不要被它吓得不敢继续前进。

觉得自己做的不好?觉得写出来的代码就像一坨屎?很正常,这是因为你看过的例子和学到的知识增进了你的眼界,但编程技能和编程思想需要在练习中成长,所以暂时跟不上你的眼界。千万不要因此而自卑,继续尝试,相信自己的能力。

4、注意休息。

人的认知能力是会随着时间流逝而耗竭的,别逞能,站起来走动走动,呼吸一下新鲜空气吧!

分享一些学习资源

文字教材

适合自学者阅读参考,也适合在学习视频教程的过程中翻看查阅。

0. 简明 python 教程,如果你对电脑知识的了解仅限于如何保存文本文件的话,那这本书就是为你准备的。

Python2 版: http://www.ttlsa.com/docs/jianming-python/python/

Python3 版: https://bop.molun.net/

1. 《 Think Python 》,非常浅显易懂,把很多概念用非常朴实的话进行了解释,同时,这本书还引导你慢慢习惯从程序员的角度去思考并解决编程中遇到的问题。

Python2 版: https://github.com/carfly/thinkpython-cn

Python3 版: http://codingpy.com/books/thinkpython2/foreword.html

2. Python 官方入门指南中文版:

Python2 版: http://www.pythondoc.com/pythontutorial27/index.html

Python3 版: http://www.pythondoc.com/pythontutorial3/index.html

3. Python 官方文档(英文,方便速查)

Python2 版: https://docs.python.org/2.7/

Python3 版: https://docs.python.org/3

视频教材

适合互动教学和系统性地学习。这里分享几个我本人学过,而且觉得不错的课程吧!

Python 编程入门课程:面向对象编程导论

Python 交互式编程导论

人人都懂的编程课( Python )

自学 App

Sololearn – Python3

https://www.sololearn.com/Course/Python/

通过简洁的语言介绍 Python3 的基础语法,每一小段都自带 Quiz ,适合出门在外用来复习语法基础。

编程一小时 – 在线小游戏,边玩边学

https://hourofpython.trinket.io/ke3-shi4-hua4-python-jian3-jie4

网页版 Python 命令行,不需要真正安装软件,就可以在这里尝试运行许多命令:

Python 2.7: https://www.pythonanywhere.com/try-ipython/

Python 3.6: https://www.python.org/shell/

在线 Python 游乐场,你可以将代码粘帖在这里,直观地看到运行情况:

Python 2.7: https://repl.it/languages/python

Python 3.6: https://trinket.io/python

最后,祝各位新晋魔法师学习顺利,给这个世界创造出更多美好和便捷!

本文是 LinuxStory 柴米油盐计划的投稿文章,由 LinuxStory 整理发布。

原作者署名为:文/欧剃 图/pixabay自由版权图片库

转载请注明出处,否则必究相关责任。

本文链接: https://linuxstory.org/introduction-start-coding/

Linux Story稿源:Linux Story (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 后端存储 » 编程魔法师之路要怎么开始

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录