本文作者:叶锐
指导老师:小萨老师
本文是小萨老师国际学校 100 讲的第 042 讲
我是叶锐,是一名起步很晚,本科时才开始学编程的程序员。大学毕业后,我加入了学霸山丘,负责公司小程序、网站、数据的开发和维护。
最近几天事情有点多,又要准备和小萨老师去深圳参加一个人工智能+教育的学术会议,又要忙本单位官网和题库系统的建设。
有天吃午饭时,我无意在新浪微博财经热搜发现一则讯息,“56 岁的潘石屹宣布进军编程语言”。
短短的标题让我先是错愕,又慢慢变成敬佩,都说程序员是吃青春饭,潘老师在这个年纪选择学习计算机语言,的确是一件需要勇气与决心的事。
和我很多初中就开始学编程,高三时就有 10+ 个程序开发经验的同学相比,我选择学习计算机科学时,年龄也已经偏大了(至少按现在的标准是这样的)。
我高中时是理科生,但不算是什么学霸,也一直没想好大学要读什么专业。高三下学期,我下定决心在大学时学计算机科学 (CS) 。
我大学在美国印第安纳大学(伯明顿)就读,在大一修第一门 CS 课时,我只有高三暑假时的一点 Codecademy 学习基础。
由于编程基础差,我在本科前两年踩了很多编程学习的坑。
因此,为方便潘老师避开学习 Python 遇到的坑,我单写了一个Python 简明学习指南:从入门到不放弃。
1 Python 是初学者的正确选择吗?我也是飘了,都敢教潘总如何学习了。
飘归飘,普及编程学习,我是认真的。如果读到这篇文章的你也是 56 岁左右,你要相信,你可以学会编程的——没你想得那么难。
而且,有了 Python ,你的编程学习之路将会变得更简单。因此,学习 Python 对于潘老师是一个妥当的选择。
为什么这么说呢?
作为非计算机科学专业出身的新手,面对代码的语法结构往往会两眼发昏。就像刚学英语不久的人,也会很害怕虚拟语气、状语从句、独立主格之类的语法结构。
许多“学习 XX 语言从入门到放弃”,其实是在调侃新手面对陌生的语言结构时,无法沉下心记住复杂的语法。
但在 Python 里,我们可以快速上手它的语法结构。而语法结构正是我接下来要谈到的 Python 两大优点的第一个。
Python 好处一:语法结构简单在 Python 的世界,编程者不需要纠结于严谨的语法结构,Python 是最符合平时人说话方式的计算机语言。
只有亲自感受过例如 Racket 这类(连加减乘除都没有的)语言,才会明白 Python 的温柔。
在 Java 和 C 这类较为著名的基础语言里,需要非常严谨的语法结构,例如在给一个物体取名字的同时,需要先声明这个物体是固态还是液态。
而在 Python里,Python 会很贴心地自动根据你创造的东西去声明它的类型。以上是 Python 的优点一。
Python 好处二:像搭积木一样编程Python 的内置方程非常友好,名字取得通俗易懂,并且方程用不够、程序包来凑,开发者可以下载各类程序包来轻松实现各类功能,较为出名的是 Tensorflow 。
举例来说,潘老师看上一处适合写字楼建设的风水宝地,但潘老师自己一个人肯定没法在短时间内就让一座写字楼拔地而起。
虽然潘老师可以通过学习土木工程,以及学习建筑学相关知识来打造地基和设计写字楼,但完全没有必要——这些工作完全可以交给外包的建筑事务所或施工单位来完成。
他们完成后,会交付给潘老师一块块标准化的,像乐高一样的积木,潘老师拿着这些积木,按照特定的组装方法,就能搭出他想要的大楼了。
在这个例子中,程序包就好比外包的事务所,潘老师完全可以不用学习程序包内的知识就可以靠里头的方程实现自己的程序,原本上千行的代码,在程序包的助攻后,或许只要十几行就解决了。
不过话说回来,有了程序包的助攻,程序员的确是省事了,但省事一定是好事吗?那可不一定。
这也是为什么在我的大学教授眼中,Python 并不是计算机专业新手最好选择,因为它的“温柔溺爱”很难引导程序员培养出合格严谨的逻辑思维能力。
但是,如果只是想要进入计算机了解这个世界的构架,并且通过代码实现一些小目标取得成就感,Python是最好的选择,因为它学习成本相对低、功能实现广泛。
这些优势也让 Python 成为人工智能、大数据处理、以及商业分析最爱的语言工具。
就好像英语,它之所以能成为通用的商业语言,除了因为当年英国长期作为海上贸易霸主的影响,还因为英语真的语法结构很简单,比欧洲其他强国的语言,如法语、德语、西语、葡萄牙语要简单得多。
好的潘老师,选完了语言,接下来是什么?
2 Python开发者工具的选择接下来肯定不是一条坦途。Python 的语法再简单,掌握它还是要战胜一路上的很多困难。走一条充满困难的路,最好还是带一件趁手的工具。
在 Python 编程中,这个工具就是开发者工具。
每一门语言都有属于自己的开发者工具,但开发者工具可选的“品牌”有很多。
不同的程序员或许会用不同的开发者工具,这就好像不同的登山者会购买不同的登山装备,不同的木匠会购买不同的工具箱。面对市面上五花八门的开发者工具,初学者往往头疼该如何选择。
潘老师作为企业老板,平时事务繁忙,最先考虑的应该会是学习效率问题。但即便“新手友好”如 Python ,它系统自带的开发者工具也不是很趁手,因此如何找一个趁手的开发者工具是潘老师会面临的一个问题。
效率同样是判断一位开发者优不优秀的标准之一,选对适合自己的开发者工具就离优秀不远了。
潘老师入门最先接触到的开发者工具可能会是 Python IDLE ,朴实无华的用户界面、堪比备忘录的脚本页、以及粗暴显示错误的控制台,怎么看都不符合开发人员理应”高大上“的开发环境。
此外,Python IDLE 在安装程序包的过程里对初学者也是十分不友好。
因此,我推荐潘老师使用 Pycharm:
下载地址:(https://www.jetbrains.com/zh/pycharm/promo/?utm_source=360&utm_medium=cpc&utm_campaign=cn-360-br-core-ph&utm_content=brand-pycharm&utm_term=jetbrains%20pycharm)
这款开发者工具,也是我自己用起来最高效的工具。它的界面如下,我来简单介绍一下:
Pycharm 用起来真的很高效。那高效体现在哪呢?
首先,潘老师在刚开始学习 Python 时,或许需要不停的切换页面,边看教辅边写代码来实践一些算法理论。将控制台和脚本页整合在一个界面,会大幅度节省潘老师不停切换页面的时间。
其次,在编写代码时,潘老师在打出“.”时,工具会自动识别“.”前的名字,并弹出该名字有联系的方程,潘老师这时就可以浏览有哪些方程可以用于这个名字,点击键盘上的 Tab 按钮就可以快速填充自己想要的方程。
再次,如果用户想要使用新的程序包,可以通过点击最上面的条找到文件里的设置,搜查,并下载添加自己想要的程序包。
下载成功后就可以在脚本页导入该程序包并使用程序包内的所有方程。
以图中的代码为例,原本自己写需要上千行的图片识别程序,通过下载合适的、功能对应的方程包,只需要几行代码就可以实现。
最后,Pycharm 还能根据开发者输入判断输入内容是否符合程序员规范,在图中例子就提示了下标黄色波浪线行前有太多空行(3行空行),规范的代码会使整体脚本页看起来干净整洁,方便自己以及别人浏览,正如同简洁干净的 PPT 更好在演讲开会上更好传达自己观点。
当然,每个程序员都有自己的习惯,这里就比较有争议了。
Pycharm 如此高效的开发环境,能使潘老师编程思路更加清晰顺畅。
3 def 自学 (“老师”, “教辅”)万事俱备,只欠东风。在我们确定自己学习 Python 的目的与方向,并且设置好适合自己的学习环境后,只需要找到一个适合自己的学习方式,我们离掌握 Python 就不远了(要有信心呀)。
学习Python有必要找专职辅导老师吗?
答案是没有必要的。潘老师作为一名企业管理者,一定有着出色的自学能力,这与程序员最重要的能力是一样的。
感谢我的老师,我在大学时期自学能力大涨。
比起传授计算机理论或者代码知识,很多老派作风的教授更注重培养我们的自主学习能力,这些教授的课往往是课堂演讲内容非常简单,但上课传授的知识对平时布置的作业以及项目,用处并不大。
课后,学生需要自己去翻阅文献、在论坛里发帖求助、或者是到助教办公室寻求帮助。
因此,计算机学生在课后花费的时间基本是课堂时间的十倍之多。
虽然自主学习过程经常会自己踏进深坑,但在靠一己之力解决难题后,我的知识储备比原先更上一个档次,并且对学习的知识印象,会比一个老师手把手带自己学习要深得多。
自学肯定需要教材。具体来说,潘老师在初学编程时,需要学习基础的代码或者内置方程,市面上有很多书都有讲解,不用刻意地去选择这些教科书,大多数都是大同小异。
最直白的学习方式,是到 Python 官网的开发文档(https://docs.python.org/3/tutorial/index.html)翻阅学习。
从某种角度来说,自学掌握 Python 比通过老师手把手教学掌握 Python 效率要高得多,毕竟自学能使我们在学习过程中,就开始不停地巩固完善自己对知识点的理解,在长时间里对一个知识点有很深刻的印象。
相反,纯听课则只能为我创造一个短期记忆,需要我们不停地回顾复习巩固知识。
但学习 Python 完全不需要有人帮助吗?当然是需要的。自学不等于将自己与外界孤立起来,善于运用已有的资源对自学相当重要。我会推荐给潘老师自学路上几样法宝。
第一件法宝,Stack Overflow 论坛论坛网址是 (https://stackoverflow.com/) 。这个网站是编程界的Google,自己代码运行出现错误看不懂怎么办?复制下错误提示信息往论坛上粘贴搜寻就完事了。
95% 的错误解决方案论坛里都有,毕竟以我们初学者的水平,脚下的坑也是别人先前踩过的。剩下的 5% 可以选择发帖求助,一定会有编程大佬来回答的。
不熟练英语没关系,毕竟初学者的 Python 只要找到错误信息与代码哪里对应就好了,在解答内容里,回答者都会很贴心的标出代码位置。那实在看不懂重要信息的话,就用有道翻译吧。
第二件法宝,LeetCode网站中文名叫力扣,地址是 (https://leetcode-cn.com/)。比起Stack Overflow,LeetCode 有国内自己的网站(力扣),这对不熟悉英语的初学者就十分友好了。
力扣最为出色的是它的题库,目前 1,268 道题,每周都有 2 题左右的更新,提供的问题品质含金量都非常高,它的题库也经常被用来当作程序员技术面试的试题,所以才会流传有点夸张,但也很有道理的一句话,“只要刷完 LeetCode,随便一家 IT 公司任你进。”
除了问题水平高,LeetCode 还提供优秀的做题环境,我们可以在做提前选择开发环境,提交自己的代码让其快速验证自己答案是否正确。
就算有些题我们绞尽脑汁也做不出来,还可以查看他人的解决方案或者解决思路。
力扣也有属于自己的论坛,但论坛内一般都是水平较高的程序员讨论,对于初学者还是建议到 Stack Overflow 解决基础难题。
第三件法宝,Github该网站的网址是(https://github.com/),专门为开发者量身定做的平台,有成千上万的优质开源项目。
在 GitHub 里,我们可以下载对自己项目有用的开源项目,但同时也是要注意尊重别人的劳动成果,在使用时标明引用代码片段是属于哪位大佬就行啦。
优质的开源项目往往会有详细的使用说明,在使用前一定要先看清楚代码的使用说明书,以防出现自己无法解决的错误。
在 Github 上,推荐潘老师注册一个账户,可以用来发表自己引以为傲的开发项目,相信一定会有其他大佬来围观并且提出善意的建议,“房地产大亨在 Github 上第一个开发项目”,应该会带来不小的轰动吧。
至少我觉得任志强老师会来围观。
4 总结写到这,我真的觉得自己是飘了,但看见每一位刚进入计算机世界初学者,我都会情不自禁想尽我所能去帮助他(她),也许是害怕他(她)走进我曾走过的弯路而放弃吧。
万事开头难,有了一个良好的开头,之后学习 Python 的路就会畅通起来。
不过,Python 绝不是指向计算机科学世界唯一的一根手指,它不能代表整个计算机科学的语言,但潘老师选择它成为自己计算机科学的母语,一定有自己的理由。
最后,希望潘老师能通过学习 Python ,领悟到计算机科学世界的美丽,带领国内房地产开发商用人工智能降低运营成本。这样,我们年轻人就能买得起房,我们的创业公司也能以更低的成本,租到更好的办公室。
潘总,就拜托你了。
往期推荐 点这里,让潘总看到 ⬇️